深入比特币原理(十)挖矿

从本节开始进入到“挖矿”相关内容,我们将用几个章节的内容来详细描述比特币“挖矿”的技术原理。

这里我用了引号,原因是挖矿这个词有一些误导,比特币“挖矿”的目的实际不在于挖掘出新的比特币,而是为了组建安全可靠的去中心化数字货币网络,创造新币仅是一种激励手段。

打包交易到区块中

挖矿节点打包交易到区块中的步骤如下:

1.将验证通过的交易放入交易池中(通常在内存中,验证方法见上文)

2.打包交易池中的交易构建新候选区块(打包的交易总大小不能超过MAX_BLOCK_SIZE,比特币约为1MB,通常矿工会选择优先打包交易费高的交易)

3.开始完成有效的工作量证明

4.如果在完成工作量证明前收到了其他节点广播的新区块,则放弃当前区块的工作量计算,将交易池中与新区块包含的相同交易去除,在剩余的交易中选择交易开始构建一下个区块

Coinbase交易

当每个节点打包交易到区块中时,会添加一笔特殊交易即为Coinbase交易,交易输出的地址为矿工的地址,交易输出比特币作为节点完成工作量证明挖出区块的奖励,其中包括新比特币(目前为12.5个)+区块中所有交易的交易费。

Coinbase交易与普通交易的区别

以下截图来自比特币信息网站https://blockchain.info,例如块高度510972中的coinbase交易信息如下:

从blockchain.info中看到coinbase交易没有交易输入,实际上coinbase交易的交易输入部分仍然是存在的,只是没有解锁脚本等信息,coinbase交易输入格式如下:

TransactionHash:均以32个字节的0表示,coinbase没有引用的交易输出

OutputIndex:字段均为0xFFFFFFFF,此处没有意义

CoinbaseDataSize:取代UnlockingScriptSize

CoinbaseData:取代UnlockingScript,大小在2-100字节,从块版本v2开始必须在开头包含块高度,之后的信息可任意定制(如中本聪在创世区块中的定制内容“TheTimes03/Jan/2009Chancelloronbrinkofsecondbailoutforbanks”)

CoinbaseData中常见的信息

Extranonce:在比特币区块链章节中我们讨论了区块的信息,矿工通过变动nonce值来达成工作量证明要求的结果,但是区块头中的nonce仅为4个字节,随着工作量证明难度越来越高,4个字节开始不够用了,于是矿工可以在coinbasedata中添加8个字节的extranonce来增加可计算的空间。

矿池信息:不同矿池挖出的区块通常会添加矿池的信息,如“MinedbyAntPool”表示该块由AntPool所挖。

支持的特性:在比特币改进协议(BIP)中会对比特币客户端添加一些新功能,如挖矿节点在coinbasedata中添加“2f503253482f”,即表示/P2SH/,支持BIP-16的改进建议中的P2SH交易。


温馨提示:
1、本站所有内容皆转载自网络。2、本站所有转载内容只代表原作者观点,不代表本站立场。
3、本站所有转载内容仅供学习参考,不构成任何投资建议。
4、本站与项目方没有任何利益关系,不接受捐赠,不接受打赏。

Subscribe to nobody
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.