《精通比特币》学习笔记(第九章)
1、区块链的数据结构是由包含交易信息的区块按照从远及近的顺序有序链接起来的。它可以被存储为平面文件,或是存储在一个简单数据库中。
2、对每个区块头进行 SHA256 加密哈希,可生成一个哈希值。通过这个哈希值,可以识别出区块链中的对应区块。
3、区块是一种被包含在公开账簿(区块链)里的聚合了交易信息的容器数据结构。
4、区块头由三组区块元数据组成。首先是一组引用父区块哈希值的数据,这组元数据用于将该区块与区块链中前一区块相连接。第二组元数据,即难度、时间戳和 nonce,与挖矿竞争相关。第三组元数据是 merkle 树根。
5、区块哈希值可以唯一、明确地标识一个区块,并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块哈希值。
6、一个区块的区块哈希值总是能唯一地识别出一个特定区块。一个区块也总是有特定的区块高度。但是,一个特定的区块高度并不一定总是能唯一地识别出一个特定区块,两个或者更多数量的区块也许会为了区块链中的一个位置而竞争。
7、区块链里的第一个区块创建于 2009 年,被称为创世区块。它是区块链里面所有区块的共同祖先,这意味着你从任一区块,循链向后回溯,最终都将到达创世区块。
8、比特币的全节点在本地保存了区块链从创世区块起的完整副本。随着新的区块的产生,该区块链的本地副本会不断地更新用于扩展这个链条。当一个节点从网络接收传入的区块时,它会验证这些区块,然后链接到现有的区块链上。为建立一个连接,一个节点将检查传入的区块头并寻找该区块的“父区块哈希值”。
9、区块链中的每个区块都包含了产生于该区块的所有交易,且以 Merkle 树表示。
10、一个 SPV 节点想知道它钱包中某个比特币地址即将到达的支付。该节点会在节点间的通信链接上建立起 bloom 过滤器,限制只接受含有目标比特币地址的交易。当对等体探测到某交易符合 bloom 过滤器,它将以 Merkleblock 消息的形式发送该区块。Merkleblock 消息包含区块头和一条连接目标交易与 Merkle 根的 Merkle 路径。SPV 节点能够使用该路径找到与该交易相关的区块,进而验证对应区块中该交易的有无。SPV 节点同时也使用区块头去关联区块和区块链中的其余区块。
11、创世区块所在的网络,被称为主干网。
12、Testnet 是用于测试的区块链,网络和货币的总称。
13、Regtest 代表“回归测试”,是一种比特币核心功能,允许您创建本地区块链以进行测试。
评论