比特币共识机制的第三步是通过网络中的每个节点独立校验每个新区块。 当新区块在网络中传播时,每一个节点在将它转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。 &nbs...
精通比特币(79):比特币中难度是如何调整的?
目标决定了难度,进而影响求解工作量证明算法所需要的时间。那么问题来了:为什么这个难度值是可调整的?由谁来调整?如何调整? 比特币的区块平均每10分钟生成一个。这就是比特币的心跳,是货币...
精通比特币(78):如何计算难度目标?
在区块中看到难度目标,其被标为"难度位"或简称"nBits",定义在src/chain.h的CBlockIndex类中。 在区块277,316中,它的值为 0x1903a30c。 这个标...
精通比特币(77):工作量证明算法
哈希函数输入一个任意长度的数据,输出一个长度固定且绝不雷同的值,可将其视为输入的数字指纹。 对于特定输入,哈希的结果每次都一样,任何人都可以用相同的哈希函数,计算和验证哈希结果。 一个加密哈希函数的...
中本聪在比特币的代码中的三个天才设计
第一个是比特币使用公钥的哈希作为地址,带来了不必要的复杂度和浪费,但事实上,这是深思远虑的未雨绸缪,因为可以让比特币完全免于量子计算机的威胁,这个以后会专门写文章进行说明。 第二个是比特...
精通比特币(76):构造区块头
为了构造区块头,挖矿节点需要填充六个字段。 区块头结构 区块结构中用来表示版本号的字段值为2,长度为4字节,以小端格式编码值为 0x20000000。 接着,挖矿节点需要填充“前区块哈希...
精通比特币(75):创币交易
创币交易 区块中的第一笔交易是笔特殊交易,称为创币交易或者coinbase交易。这个交易是由挖矿节点构造并用来奖励矿工们所做的贡献的。 与常规交易不同,创币交易没有输入,不消耗UTXO。它只包含一个被...
精通比特币(74):新区块
矿机是专门设计用于挖比特币的计算机硬件系统。 专业挖矿设备连接着一个运行完整比特币节点的服务器。 一些矿工是在没有完整节点的条件下进行挖矿。——矿池 挖矿节点时刻监听着传播到比特币网络的...
精通比特币(73):什么样的交易能通过节点校验?
每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表: ▷交易的语法和数据结构必须正确。 ▷输入与输出列表都不能为空。 ▷交易的字节大小是小于 MAX_BLOCK_SIZE 的。 ▷每一个输出值...
精通比特币(72):比特币的去中心化共识
在不考虑相信任何人的情况下,比特币网络中的所有参与者如何达成对任意一个所有权的共识呢?所有的传统支付系统都依赖于一个中心认证机构,依靠中心机构提供的结算服务来验证并处理所有的交易。比特币没有中心机构,...