加载中 ...

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

2019-07-15 23:54 编辑:btc268.com 来源:区块链资讯

02——BTC-密码学原理

  BTC 主要使用密码学中的两个功能:Hash 、签名

Hash:

  Cryptographic hash function

  collision resistance:指的是没有高效方法人为制造哈希碰撞(哈希碰撞)

  即 x != y , H(x) = H(y)  ——> 可用于检测为文件是否被篡改。例如“MD5”,已经找到了人为制造碰撞的方式,于是不在安全

  hiding:哈希函数的计算过程是单向的,不可逆的,即计算后的哈希函数值不会暴露任何原始数据的内容,前提:输入空间足够大,否则可以通过蛮力求解。

  puzzle friendly

签名:

  即创建一个公私钥对(public key , private key)

  加密体系分为 对称式加密 和 非对称式加密 两种

  对称式加密:

  加密和解密操作使用是同一组密钥。

  前提:存在一种可信的方式将密钥传输给 加密、解密双方

  缺点:密钥分发不方便

  非对称式加密:公钥、私钥组

  加密用的是 公钥 ,解密用的是 私钥

  例:A 将信息发送给 B,A 用 B 的公钥对信息加密,将加密后的内容发送给 B,B接收到后,可用 B 的私钥解密。即加解密用的是同一个人的公私钥对(多为接收方)

  好处:

  公钥不需要保密

  私钥需要保密,但仅需保存在本地(不需要传输给任何人)

03——BTC-数据结构数据结构:

  1、区块链(一个一个区块构成的链表)

  特点:用哈希指针代替了传统指针

                

  新区块中的H()保存的是前一个区块中全部内容的hash值

  ——>tamper-evident log 可以防止篡改

  2、Merkle tree(附带hash函数的二叉树)

                

  由下而上层层取hash值,最终得到一个根节点hash(root hash)

  好处:由一个 root hash 就可以保存(保护)一整棵 hash tree 不被篡改

  

  轻节点、全节点 :

  全节点:保存整个区块链内容(block header、block body等都保存,即有交易的具体信息)

  轻节点:(类似手机钱包)只能保存 block header

  ——》如何向一个轻节点证明一笔交易是否写入到区块链?

Merkle proof:

                

  轻节点向全节点申请得到红色的哈希

  轻节点根据 tx 信息自行计算出对应 hash ,即图中绿色 H()

  图中 1 处根据自行计算的绿色 hash 以及向全节点申请得到的红色 hash 计算出下一个绿色 hash(图中2处的绿色 hash)

  以此类推,可逐步计算出该 Merkle tree 的根节点 hash (此 hash 值轻节点自身可查,存储在 block header 中)

  比较计算出的 根节点 hash 以及查到的 根节点 hash 就可以判断出该 tx 信息是否上链

  在证明“ proof of membership ”或者是“ proof of inclusion ”这类的问题时(存在性证明)

  算法复杂度是对数级别的O(log(n))

  但在证明“ proof of non-membership ”这类问题中(不存在性证明)

  笨办法:将整个Merkle tree 发送给轻节点,轻节点检查树的完整性,确认后再对比交易信息是否包含在该 mt 中。复杂度O(n)是线性的

  “好办法”:将 Mt 中的各个 tx 根据 hash 值排序,构成sorted merkle tree,若待检测 tx 的hash排列在某两个 tx 之间,检查这两个 tx 的完整路径,若无问题,说明待检测 tx 不在该 Mt 中。此时复杂度为O(log(n))。(btc中未用到该证明方法,因为BTC 不需要不存在证明)

  无环的指针数据结构都可以使用hash指针

  

关键词:比特币新闻 币牛牛

转载自比特币新闻网(www.btc268.com),提供比特币行情走势分析与数字货币投资炒币最新消息。

原文标题:区块链技术与应用——学习笔记-01

原文地址:http://www.btc268.com/qkl/zs/13559.html

本文来源:区块链资讯编辑:btc268.com

本文仅代表作者个人观点,与本网站立场无关。

本网站转载信息目的在于传递更多信息。请读者仅作参考,投资有风险,入市须谨慎!

'); })();