第一个是比特币使用公钥的哈希作为地址,带来了不必要的复杂度和浪费,但事实上,这是深思远虑的未雨绸缪,因为可以让比特币完全免于量子计算机的威胁,这个以后会专门写文章进行说明。 第二个是比特...
精通比特币(76):构造区块头
为了构造区块头,挖矿节点需要填充六个字段。 区块头结构 区块结构中用来表示版本号的字段值为2,长度为4字节,以小端格式编码值为 0x20000000。 接着,挖矿节点需要填充“前区块哈希...
精通比特币(75):创币交易
创币交易 区块中的第一笔交易是笔特殊交易,称为创币交易或者coinbase交易。这个交易是由挖矿节点构造并用来奖励矿工们所做的贡献的。 与常规交易不同,创币交易没有输入,不消耗UTXO。它只包含一个被...
精通比特币(73):什么样的交易能通过节点校验?
每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表: ▷交易的语法和数据结构必须正确。 ▷输入与输出列表都不能为空。 ▷交易的字节大小是小于 MAX_BLOCK_SIZE 的。 ▷每一个输出值...
精通比特币(68):使用测试区块链进行开发的流程
Bitcoin的各种区块链(regtest,segnet,testnet3,以及主干网)为比特币开发提供了一系列测试环境。 无论你是开发比特币核心还是另一个全节点共识客户端,诸如钱包,交易所,电子商务...
精通比特币(67):比特币的测试区块链
2009年1月3日由Satoshi Nakamoto创建的“主要”比特币块链,即本章研究的创世区块所在的网络,被称为主干网。另外还有其他用于测试的比特币区块链:现存的有testnet,segnet和r...
精通比特币(66):Merkle树和简单支付验证(SPV)
SPV节点不保存所有交易也不会下载整个区块,仅仅保存区块头。它们使用认证路径或者Merkle路径来验证交易存在于区块中,而不必下载区块中所有交易。 例如,一个SPV节点想知道它钱包中某个...
精通比特币(65):区块中的Merkle树
区块链中的每个区块都包含了产生于该区块的所有交易,且以Merkle树表示。 Merkle树是一种哈希二叉树,它是一种用作快速归纳和校验大规模数据完整性的数据结构。这种二叉树包含加密哈希值...
精通比特币(62):区块头
区块头由三组区块元数据组成。 首先是一组引用父区块哈希值的数据,这组元数据用于将该区块与区块链中前一区块相连接。 第二组元数据,即难度、时间戳和nonce,与挖矿竞争相关。 第三组元数据是merkle...
精通比特币(61):区块结构
区块是一种被包含在公开账簿(区块链)里的聚合了交易信息的容器数据结构。它由一个包含元数据的区块头和紧跟其后的构成区块主体的一长串交易列表组成。区块头是80字节,而平均每个交易至少是250字节,而且平均...