1.1 密码学基础 哈希 范围足够大 2**256 需要符合以下三条性质:collision resistance 抗哈希碰撞能力 hiding 能够隐藏输入信息, 也就是没法从哈希结果反向推导出输入或者输入的规律 puzzle friendly 保证挖矿的难度, 除了暴力穷举没有捷径, pow 工作量证明 非对称加密 交易时 私钥签名, 公钥验证 1.2 私钥和地址 随机生成私钥, 然后通过椭圆曲线乘法可以生成一系列公钥. 比特币不直接用公钥作为地址, 而是做了一系列变换: A = RIPEMD160(SHA256(K)) A: 地址 K: 公钥 后续会再进行 base58 之类的编码. 总之公钥和地址是一对一的, 从公钥能够计算出地址, 反之不行. 1.3 核心数据结构 哈希指针: H 不光保存指向结构的地址, 还需要保存目标的哈希值. 区块链 就是使用哈希指针的区块组成的链表.区块头是 80 字节, 而区块要包含交易, 所以一般来说区块比区块头大小大成百上千倍. 可以发现每个区块头总是包含上一个区块的哈希值, 所以任何区块的修改都会导致后续区块的哈希值改变, 所以只要检查最...