====== 比特币网络学习笔记 ======
(本文写于2017年,翻出来凑个数)
比特币(BitCoin)是新兴的数字货币技术,目前已稳定运行近10年。本文简要阐述比特币网络的运行机制,作为进一步深入学习的索引。
数字货币
货币,公认其价值是基础,系统安全是保障。可控的发行量和较高的维护成本保证了货币的价值;数字签名技术和区块链技术保证了系统的安全:其中数字签名保账户和交易的安全,区块链保证历史记录的不可篡改。
交易机制
交易
每个网络节点都可以创建交易,交易包括输入和输出,输入包括区块链上的多个交易输出,而输出指向多个账户的公钥。部分支付时,将多余的比特币转移给自身。通过这种方式,比特币在不断地拆分和重组。
账户
比特币网络不维护账户的余额,而是通过交易追踪每个币的生命周期。假设两个交易的输出指向Alice,一个金额为1聪,另一个是2聪,这时Alice可以创建一个交易,输入为1聪和2聪,输出3聪。
造币
比特币网络没有中心节点,也没有政府发行货币,这就需要公认的的造币机制。在系统中将新币奖励给参与网络维护的矿工,而矿工也需要工作量证明自身的付出。
维护
比特币网络每隔四年挖矿收益减半,最终整个网络不再产生新币。节点早期可以获得造币的收益,后期则主要依赖交易手续费。对于每一笔交易,如果总输出小于输入,差额的部分会作为交易费奖励给交易节点。而节点也有权利拒绝广播无手续费的交易。
运行机制
交易广播
当节点发起交易时,交易节点将交易广播给其他网络节点。其他节点在收到后验证输入是否合法,验证通过后继续广播该交易。
区块广播
每个网络节点都在计算一个哈希谜题(算力证明),最先计算出来的节点会创建一个新区块,并将未放入区块的交易、题目及答案、一个造币交易打包进新区块并在网络中广播。其他节点收到广播后对其进行验证,通过后加入到已有区块链的结尾。
节点共识
区块链共识是一个缓慢的过程,网络无法保证所有节点的区块链同步。当出现冲突时,节点通常会选择在最长链上延伸。例如网络中同时生成2个新区块A和B并广播,此时两个区块都是合法的,如果接受A区块的节点先计算出C区块,那么之前接受了B区块的节点会抛弃并重新接受AC区块。基于此,交易和区块只可能长时间被大多数节点认可,而不存在完全的共识。当出现不可调整的冲突(如激进的升级程序)时,网络将会出现硬分叉。
系统缺陷
实时性、吞吐量较差。交易被网络上大部分节点(至少50%)接受需要较长的时间(6个区块需要1小时);而每个新区块(4M容量)只能包括有限的交易;同时交易节点无法准确获取交易被认可程度。这使系统的使用受到限制,有人在比特币网络上建立银行、交易所等组织,提供账户管理、美元兑换、小额支付等服务,一定程度的缓解了上述问题,但也带来了监管和营运上的风险。
资源浪费严重。矿工的投资包括硬件和电力,比特币网络的挖矿如同军备竞赛,所有节点共同提高算力等同于没有提升,而高额的支出会持续减少挖矿的收益。
算力集中危害。挖矿方式经历了CPU、GPU(显卡)、联合挖矿(矿池)、大规模集成硬件的进化过程,目前网络的主要算力集中在少数几个机构,个人已经很难参与到网络维护中,一旦某个机构掌握全网50%以上算力,整个系统将不可信。为此,更好的权利证明算法是改进比特币的研究方向之一。