主页 > imtoken2022官网版 > 比特币第一版v0.01运行经验和Coinbase的6次确认和120次成熟度

比特币第一版v0.01运行经验和Coinbase的6次确认和120次成熟度

imtoken2022官网版 2023-08-05 05:11:52

比特币源代码第一版(BitCoin v0.01 ALPHA)是对照比特币白皮书研究区块链的最佳选择。下载解压后的目录结构如图1所示,其中src为源码文件夹,bitcoin.exe为可执行文件,在Win7x64环境下可以直接运行(在Win10环境下运行失败) ,并且可以通过源代码编译运行)。

图1 比特币第一版源码目录结构

图2 比特币运行时系统目录结构

准备两台联网机器,IP分别为:192.168.1.108和192.168.1.110。在110机器的运行目录下新建addr.txt,输入:192.168.1.108:8333,保存。先在108机器上运行,再在110机器上运行,勾选Options菜单下的Generate Coins,结果如图3和图4所示。

图3 192.168.1.108次运行,挖矿成功5次

图4 192.168.1.110次运行,7次挖矿成功/5次确认

从图 3 和图 4 底部的状态栏可以看出,各有 1 个网络连接和 11 个区块,第 6 次确认区块,确认成熟时间 120 次。

关于6次确认和120次Coinbase成熟时间(源码中的成熟时间为100),以下为转载说明:

确认次数 = 当前区块高度 - 区块中交易所的高度

对于非 Coninbase 交易:每个区块的确认都会增加前一个区块被篡改的难度。6个区块后,一笔交易被篡改的可能性几乎为0,所以有“6次确认后添加的交易”区块链是不可变的。

Coinbase 交易 100 次确认:当一个区块成为孤儿区块时,其所有有效交易都会重新添加到排队交易池中,并将包含在另一个区块中。孤块的 50BTC 奖励将丢失,这就是 Coinbase 需要 100 次确认的原因。更具体地说,区块链分叉会产生孤块,并且这些块中的挖矿奖励会丢失。这只是比特币工作方式中不可避免的一部分,即使没有人攻击网络,有时也会发生这种情况。如果没有 100 个区块的确认成熟度,即使没有任何形式的双花或其他攻击,每次分叉发生时,不在主链中的孤立区块上的交易都将全部丢失。在分叉链上,成千上万的人可以发现钱包里的硬币不见了,即使没有人真正攻击他们,没有理由怀疑他们收到的钱。例如,如果没有到期时间,矿工可能会将 25BTC 存入 EWallet,如果我从同一个 EWallet 上完全不相关的账户提款,如果有分叉,我的提款可能会消失,我很遗憾提取 Coinbase 费用矿工。由于这种污染往往会“感染”交易,因此每个区块的 BTC 远远超过 25 个。每个无效区块都会导致价值数百比特币的交易被撤销。所以,在设定成熟时间的情况下,只要分叉不超过 100 个区块,任何人都不可能像这样不小心丢币。如果分叉的寿命超过 100 个区块,无效交易造成的损失很可能是一场巨大的灾难。如果没有到期时间,矿工可以将 25BTC 存入 EWallet,如果我从同一个 EWallet 上完全不相关的账户提款,如果有分叉,我的提款可能会消失,不幸的是我提取了矿工的 Coinbase 费用。由于这种污染往往会“感染”交易,因此每个区块的 BTC 远远超过 25 个。每个无效区块都会导致价值数百比特币的交易被撤销。所以,在设定成熟时间的情况下,只要分叉不超过 100 个区块,任何人都不可能像这样不小心丢币。如果分叉的寿命超过 100 个区块,无效交易造成的损失很可能是一场巨大的灾难。如果没有到期时间,矿工可以将 25BTC 存入 EWallet,如果我从同一个 EWallet 上完全不相关的账户提款,如果有分叉,我的提款可能会消失,不幸的是我提取了矿工的 Coinbase 费用。由于这种污染往往会“感染”交易,因此每个区块的 BTC 远远超过 25 个。每个无效区块都会导致价值数百比特币的交易被撤销。所以,在设定成熟时间的情况下,只要分叉不超过 100 个区块,任何人都不可能像这样不小心丢币。如果分叉的寿命超过 100 个区块,无效交易造成的损失很可能是一场巨大的灾难。如果有分叉,我的提款可能会消失,不幸的是比特币的运作流程图,我为矿工提取了 Coinbase 费用。由于这种污染往往会“感染”交易,因此每个区块的 BTC 远远超过 25 个。每个无效区块都会导致价值数百比特币的交易被逆转。所以,在设定成熟时间的情况下,只要分叉不超过 100 个区块,任何人都不可能像这样不小心丢币。如果分叉的寿命超过 100 个区块,无效交易造成的损失很可能是一场巨大的灾难。如果有分叉,我的提款可能会消失,不幸的是,我为矿工提取了 Coinbase 费用。由于这种污染往往会“感染”交易,因此每个区块的 BTC 远远超过 25 个。每个无效区块都会导致价值数百比特币的交易被逆转。所以,在设定成熟时间的情况下,只要分叉不超过 100 个区块,任何人都不可能像这样不小心丢币。如果分叉的寿命超过 100 个区块,无效交易造成的损失很可能是一场巨大的灾难。只要分叉不超过100个区块,任何人都不可能像这样意外丢失硬币。如果分叉的寿命超过 100 个区块,无效交易造成的损失很可能是一场巨大的灾难。只要分叉不超过100个区块,任何人都不可能像这样意外丢失硬币。如果分叉的寿命超过 100 个区块,无效交易造成的损失很可能是一场巨大的灾难。

再举个例子:比如没有成熟时间限制比特币的运作流程图,A区块生成后,A中的挖矿交易UTXO可以在下一个B区块中使用,那么B区块包含A区块中的交易a。

当由于某种原因发生分叉并且块 B 成为孤立块时,应将 B 中的有效交易添加到内存池中并打包到新块中。此时B中的交易a不能轻易重新打包到其他区块,因为它是指A区块的Coinbase费用。因为更改区块后,Coinbase交易无效。

addr.dat、wallet.dat、blkindex.dat 文件的解释(BerkeleyDB UI)如下图所示:

块文件blk0001.dat(BlockDataParser)的解释如下:

工具下载:

伯克利DBUI

块数据解析器​