← 返回总目录 · 区块链技术与应用笔记(BTC)

  1. collision resistance:对于输入$x,y$,很难找到$h(x)=h(y)$,经验性的,有的hash函数比如md5后续就发现没有碰撞抵抗的性质即可以认为制造碰撞
  2. hiding:计算过程单项,可以$x→h(x)$,不能$h(x)→x$;该性质前提是输入空间足够大且分布均匀
  3. puzzle friendly(比特币要求):哈希值计算事先不可预测,仅看输入$x$很难猜出来输出$h(x)$,很难知道输出范围

比特币用的哈希函数是secure hash Algorithm256(sha-256),满足上面三条性质

asymmetric encryption algorithm(非对称加密),私钥加密(签名),公钥解密,比特币账户的创建就是在本地生成一对儿公钥和私钥,公钥公开;

发布一场交易,先用我自己私钥签名,别人再用公钥验证,就可以确定交易确实是我发起的而不是被冒名顶替;

为了避免生成同样的公钥私钥(即使概率几乎为0),需要good source of randomness(好的随即源)

比特币系统不仅公钥私钥生成用好的随机源,之后每一次签名也要好的随机源,否则可能泄露私钥

比特币一般先hash(message),然后再对哈希值签名

哈希指针(Hash Pointer)是一种数据结构,结合了哈希值和指向数据位置的指针。具体来说,哈希指针由两部分组成:

  1. 哈希值:该值是通过对某个数据块进行哈希计算而得到的。哈希值可以唯一地代表这个数据块,任何对数据块的修改都会导致哈希值的变化。
  2. 指针:指向该数据块存储位置的引用。它指示了数据的实际存储位置或位置。

Merkle树是一种树形数据结构,用于高效和安全地验证大量数据的完整性。它的叶子节点包含数据的哈希值,而每个非叶子节点则是其子节点哈希值的组合。Merkle树在区块链中也得到了广泛应用,特别是在验证大量交易数据时。

轻节点(Light Node)是区块链网络中的一种节点类型,它只存储区块链的一部分信息,通常仅存储区块头(包括Merkle根)和其他必要的元数据,而不存储完整的交易数据。