区块链网络基础1

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中同步的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180825G1B0EK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券