短文: Block Chain 与 Paxos
作为 P2P 系统, Bitcoin 的一致性实现方法是值得专门写出来的.
下面一一列举 Paxos 的专有名词, 并指出 Bitcoin 中的对应方法/实现.
value: 通过的决议
–最长链中所有的 Block 均为决议
(但链末尾并不稳定, 所以最近 120 个 Block 里产生的钱不能花.
经历 120 block 之后, block 是彻底不可逆转的, 严格意义上最近 120 block 不能算通过的决议)
–如果 Block 未被包含在最长链中, 状态即为 Orphan.
proposal: 未经批准的决议称为提案
–欲将自己附加到最长链末尾的新 Block 即为提案.
–新 Block 不能违反任何基本约定, 否则会被无条件拒绝, 且不会给 proposer 任何反馈.
(如: 是上一 Block 的后继, Difficulty, 所有事务必须正确且未在之前的 Block 中重复等)
–所有 Miner 要基于自己可见的最长链上的 Block 进行计算
(虽然此时该 Block 不能保证能保留下去, 但如果你不接受这个可能正确的 Block, 自己也不可能产生 Block.
拥有超过全网 50% 计算力的人可以故意不基于最长链进行计算, 并计算两个 Block 以使其他人最近的 Block 无效.)
proposer: 产生新 Block 的 Miner 为 proposer. proposer 会把自己产生的 Block 广播出去.
acceptor: 所有人都是 acceptor.
但可能产生新 Block 的 Miner 加强这一点, 因为前一个 Block(提案)没有问题所以接纳之, 并基于之进行新的计算.
learner: 所有人都是 learner, 所有人需要持有当前所有 block 数据(优化: 可以只保存 block index).
没有全部 block 数据的人需要下载 block index 文件. 将来会有更方便的方式, 否则移动支付还是相当困难的.