0.创始区块初始化:
1)确定区块创建时间
2)初始化全局变量
3)初始化区块概要索引
4)创建创世区块
5)创始区块写入区块链
6)计算创世区块的merkle树根
7)广播新区块(创始区块)的加入
数据层单个区块:
1)把本地保存的交易记录到区块中
2)把区块主体生成此区块所有交易的merkle树的根值保存在区块头部
3)把上个区块头部数据进行SHA256生成哈希值填入当前区块的父哈希值中
4)把当前时间保存在时间戳字段中
5)随机数nonce,根据前一段时间区块的平均生成时间进行调整难度
2.网络共识层:
1)paxos——>准备阶段(prepare)——>接受阶段(accept)——>学习传播(learner)
basic paxos:
X请求发送给s1,s1广播给s2和s3Prepare RPC 和 Accept RPC,Y请求发送给s5,s5广播给s4和s3,s3收到s5的Prepare RPC 和 Accept RPC,并把本身的提案替换为Y的,并且把X的广播给s5,最后达到全网广播。
2)Multi—paxos
于basic不同的是,multi会选举出来一个leader来接受所有的提案请求,并且广播出去。
PS:Multi中的任意节点都可以写日志
如图:
3)Raft
Raft是multi—paxos的变种,简化了其模型
Raft中:
a.追加日志操作必须连续,Multi—paxos是并发
b.Raft对Leader的选举进行了限制,只有拥有最新,最全日志的节点才能当选Leader.
Raft中所有追随者的日志都是其子集,因为Fllower是从Raft中同步的。
领取专属 10元无门槛券
私享最新 技术干货