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