区块链技术与应用——学习笔记

              本文重点:区块链技术与应用——学习笔记

              02——BTC-密码学原理  BTC主要使用密码学中的两个功能:Hash、签名Hash:  Cryptographichashfunction  collisionresistance:指的是没有高效方法人为制造哈希碰撞(哈希碰撞)  即x!=y,H(x)=H(y)——可用于检测为文件是否被篡改。

              例如“MD5”,已经找到了人为制造碰撞的方式,于是不在安全  hiding:哈希函数的计算过程是单向的,不可逆的,即计算后的哈希函数值不会暴露任何原始数据的内容,前提:输入空间足够大,否则可以通过蛮力求解。   puzzlefriendly签名:  即创建一个公私钥对(publickey,privatekey)  加密体系分为对称式加密和非对称式加密两种  对称式加密:  加密和解密操作使用是同一组密钥。   前提:存在一种可信的方式将密钥传输给加密、解密双方  缺点:密钥分发不方便  非对称式加密:公钥、私钥组  加密用的是公钥,解密用的是私钥  例:A将信息发送给B,A用B的公钥对信息加密,将加密后的内容发送给B,B接收到后,可用B的私钥解密。 即加解密用的是同一个人的公私钥对(多为接收方)  好处:  公钥不需要保密  私钥需要保密,但仅需保存在本地(不需要传输给任何人)03——BTC-数据结构数据结构:  1、区块链(一个一个区块构成的链表)  特点:用哈希指针代替了传统指针    新区块中的H()保存的是前一个区块中全部内容的hash值  ——tamper-evidentlog可以防止篡改  2、Merkletree(附带hash函数的二叉树)    由下而上层层取hash值,最终得到一个根节点hash(roothash)  好处:由一个roothash就可以保存(保护)一整棵hashtree不被篡改    轻节点、全节点:  全节点:保存整个区块链内容(blockheader、blockbody等都保存,即有交易的具体信息)  轻节点:(类似手机钱包)只能保存blockheader  ——》如何向一个轻节点证明一笔交易是否写入到区块链?Merkleproof:    轻节点向全节点申请得到红色的哈希  轻节点根据tx信息自行计算出对应hash,即图中绿色H()  图中1处根据自行计算的绿色hash以及向全节点申请得到的红色hash计算出下一个绿色hash(图中2处的绿色hash)  以此类推,可逐步计算出该Merkletree的根节点hash(此hash值轻节点自身可查,存储在blockheader中)  比较计算出的根节点hash以及查到的根节点hash就可以判断出该tx信息是否上链  在证明“proofofmembership”或者是“proofofinclusion”这类的问题时(存在性证明)  算法复杂度是对数级别的O(log(n))  但在证明“proofofnon-membership”这类问题中(不存在性证明)  笨办法:将整个Merkletree发送给轻节点,轻节点检查树的完整性,确认后再对比交易信息是否包含在该mt中。

              复杂度O(n)是线性的  “好办法”:将Mt中的各个tx根据hash值排序,构成sortedmerkletree,若待检测tx的hash排列在某两个tx之间,检查这两个tx的完整路径,若无问题,说明待检测tx不在该Mt中。 此时复杂度为O(log(n))。

              (btc中未用到该证明方法,因为BTC不需要不存在证明)  无环的指针数据结构都可以使用hash指针  关键词:转载自(),提供比特币行情走势分析与数字货币投资炒币最新消息。

              原文标题:原文地址:。