比特币其实就是一个公共的电子对账本,网络上分布着无数节点分别记录最新的交易数据。如何维护这个公共账本是这个问题的关键,也就是如何达成共识。有学者对这种问题进行了抽象就是所说的拜占庭将军问题,实际就是解决公共P2P网络如何实现信任。
拜占庭将军问题如下:
拜占庭将军问题(Byzantine Generals Problem)–
拜占庭是古代东罗马帝国的首都。强大的拜占庭将军协商一同围攻一个敌人。n个将军包围着这个敌人,他们需要协商一个一致的时间,同时对敌人发起总攻,才能确保战争的胜利。但其中一些背叛的将军可能会通过发送错误的消息造成混乱,干扰忠诚的将军同时发起总攻。如果同时发起进攻的将军数量少于m个,可怕的后果就是,拜占庭将军不仅不足以歼灭敌人,反而有可能被敌人歼灭。怎样才能保证至少有m个将军在同一时间一起发起进攻呢?
现实世界中,在互联网世界由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为,是有可能发生的。那比特币系统给出了它的解决办法:
1、工作量证明;
2、奖励机制。
工作量证明:同一时间只有一个节点记账(谁算对了谁记账,解决了记账权的问题,否则大家都来记账听谁的),那如何保证他记账是准确的呢?因为所有流水帐大家都能在网络上查到,各个节点都有自己的一本帐,即是公开透明的,他要想恶意破坏,除非有51%的"同盟"一起帮他做坏。
奖励:如何能保证节点都来记账呢?系统给出奖励,谁来记账给谁奖励比特币(记账奖励),谁验证交易给谁验证奖励(验证奖励),这样节点就有动力去不停的记账和验证了,这样就共同构建了一个健壮的比特币网络。