add some markdown text

This commit is contained in:
www-git-cn 2024-04-24 20:08:28 +08:00
parent c643c35959
commit df97e60cd9
12 changed files with 86 additions and 2 deletions

Binary file not shown.

BIN
blockDB_1408/000073.ldb Normal file

Binary file not shown.

BIN
blockDB_1408/000074.log Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000072
MANIFEST-000075

View File

@ -1 +1 @@
MANIFEST-000069
MANIFEST-000072

View File

@ -314,3 +314,15 @@
20:00:01.520372 db@open done T·23.644ms
20:00:02.325750 db@close closing
20:00:02.326281 db@close done T·530.5µs
=============== Apr 24, 2024 (CST) ===============
20:04:35.321680 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed
20:04:35.323680 version@stat F·[2 1] S·159KiB[107KiB 51KiB] Sc·[0.50 0.00]
20:04:35.323680 db@open opening
20:04:35.324690 journal@recovery F·1
20:04:35.327680 journal@recovery recovering @71
20:04:35.332680 memdb@flush created L0@73 N·20 S·54KiB "blo..9\xc2\xf4,v422":"blo..n\x01\x04,d418"
20:04:35.332680 version@stat F·[3 1] S·213KiB[162KiB 51KiB] Sc·[0.75 0.00]
20:04:35.348696 db@janitor F·6 G·0
20:04:35.348696 db@open done T·25.0151ms
20:04:36.051582 db@close closing
20:04:36.052583 db@close done T·1.0012ms

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,11 @@
### peer节点处理提案请求
1.根据ChaincodeMessage生成链码存根(ChaincodeStub)
2.根据ChaincodeMessage结构体中Proposal *SignedProposal验证客户端签名
2.解析ChaincodeMessage中的链码参数并调用链码返回背书结果(Response)
3.获取事务的读写集并检测其是否存在重复地址,以及是否为不可序列化的事务
4.根据序列化的字节数组创建提案回复(ProposalResponse)并将序列化后的提案回复写入ChaincodeMessage结构体中的Payload字段

29
peer节点返回消息.md Normal file
View File

@ -0,0 +1,29 @@
### peer节点返回背书结果
#### 将接收到的提案响应按照交易 ID 进行归类,并将它们存储到一个映射结构中
1.获取ChainCodeMessage结构体对象Payload字段的内容并进行反序列化得到pb.ProposalResponse对象
2.定义一个将交易ID与提案相应关联的map对象proposalResponse (cmap.ConcurrentMap[string, []*pb.ProposalResponse])
3.定义了一个类型为 []*pb.ProposalResponse的变量prs用于存储提案响应。检查 proposalResponse中是否已经存在了与当前消息的交易 IDmsg.TxID对应的提案响应数组。如果不存在则创建一个空的数组并将其与交易 ID 关联起来
4.从 proposalResponse 中获取与当前消息的交易 ID 关联的提案响应数组 prs将当前接收到的提案响应 pr添加到 prs 数组中。将更新后的 prs数组重新关联到交易 ID 上更新proposalResponse中的值
#### 解析提案请求
1.验证msg.Proposal.Signature字段检查提案的签名是否正确
2.反序列化ChaincodeMessage类型消息(msg)的个各字段,得到签名后的提案(SignedProposal)、提案响应(ProposalResponse)等信息
3.验证签名头(SignatureHeader)信息与客户端身份信息是否一致
4.校验提案响应负载的Hash值、提案响应的状态信息和背书结果以及背书者的签名是否有效
#### 生成交易(事务)并打包
1.将背书者存储至背书者集合([]*pb.Endorsement)中
2.获取交易的字节数组(txBytes)与签名头信息共同实例化Payload结构体
3.反序列化Payload结构体对象得到payloadBytes并使用客户端的私钥进行签名将签名值放入Envelope结构体中的Signature字段

19
客户端至peer节点.md Normal file
View File

@ -0,0 +1,19 @@
### 客户端至peer节点
1.生成随机的交易提案参数args模拟客户端的交易提案
2.把args放入pb.ChaincodeInput结构体中
3.获取链码ID根据链码ID实例化pb.ChaincodeSpec结构体
4.获取一个随机数对随机数nonce和序列化后的用户身份creator进行hash运算得到txid
5.根据nonce和creator实例化pb.SignatureHeader结构体
6.序列化pb.ChaincodeSpec结构体对象和pb.SignatureHeader结构体对象分别得到得到cisByteshdrBytes
7.根据cisBytes和hdrBytes实例化pb.Proposal结构体
8.序列化pb.Proposal结构体对象并对该对象签名实例化pb.SignedProposal结构体
7.实例化pb.ChaincodeMessage结构体

View File

@ -0,0 +1,13 @@
### 将封装好的交易交给Order节点排序
1.分析交易直接的依赖关系,将有依赖关系的两笔交易添加到事务组中(TransactionGroup),并删除不可序列化的交易
2.判断当前区块大小是否达到阈值、时间间隔是否超出阈值,确定是否满足成块条件
3.通过交易之间的依赖关系创建拓扑图并对交易进行拓扑排序将每10笔交易封装至信封中(Envelope),并返回信封切片
4.将信封切片序列化并填充至Block结构体中的BlockData字段将负载Block.Data的内容使用用SHA256算法生成摘要值
5.获得区块头(Block.Header)的字节数组并使用Order节点的私钥对该字节数组签名得到的签名结果以及签名者的身份信息放入区块的元数据(BlockMetadata)中
6.将区块写入到账本数据库中(leveldb)