Fabric 1.0原始碼分析(40) Proposal(提案)
# Fabric 1.0原始碼筆記 之 Proposal(提案)
## 1、Proposal概述
Proposal,即向Endorser發起的提案。
Proposal程式碼分佈在protos/utils、protos/peer目錄下,目錄結構如下:
protos/utils目錄:
proputils.go,Proposal工具函式。
txutils.go,Proposal工具函式。
protos/peer目錄:
proposal.pb.go,Proposal相關結構體定義。
## 2、Proposal相關結構體定義
### 2.1、SignedProposal定義
```go
type SignedProposal struct {
ProposalBytes []byte //Proposal序列化,即type Proposal struct
Signature []byte //signer.Sign(ProposalBytes)
}
//程式碼在protos/peer/proposal.pb.go
```
### 2.2、Proposal定義
```go
type Proposal struct {
Header []byte //Header序列化,即type Header struct
Payload []byte //ChaincodeProposalPayload序列化,即type ChaincodeProposalPayload struct
Extension []byte //擴充套件
}
//程式碼在protos/peer/proposal.pb.go
```
Header更詳細內容,參考:[Fabric 1.0原始碼筆記 之 Tx(Transaction 交易)](../tx/README.md)
### 2.3、ChaincodeProposalPayload定義
```go
type ChaincodeProposalPayload struct {
Input []byte //ChaincodeInvocationSpec序列化,即type ChaincodeInvocationSpec struct
TransientMap map[string][]byte //瞬態對映
}
//程式碼在protos/peer/proposal.pb.go
```
ChaincodeInvocationSpec更詳細內容,參考:[Fabric 1.0原始碼筆記 之 Chaincode(鏈碼)
## 3、ProposalResponse結構體定義
### 3.1、ProposalResponse定義
```go
type ProposalResponse struct {
Version int32
Timestamp *google_protobuf1.Timestamp
Response *Response //type Response struct,peer.Response{Status: 200, Message: "OK"}}
Payload []byte
Endorsement *Endorsement //type Endorsement struct
}
//程式碼在protos/peer/proposal_response.pb.go
```
### 3.2、Response定義
```go
type Response struct { //peer.Response{Status: 200, Message: "OK"}}
Status int32
Message string
Payload []byte
}
//程式碼在protos/peer/proposal_response.pb.go
```
### 3.3、Endorsement定義
```go
type Endorsement struct {
Endorser []byte //bccspmsp.signer
Signature []byte
}
//程式碼在protos/peer/proposal_response.pb.go
```
網址:http://www.qukuailianxueyuan.io/
欲領取造幣技術與全套虛擬機器資料
區塊鏈技術交流QQ群:756146052 備註:CSDN
尹成學院微信:備註:CSDN
網址:http://www.qukuailianxueyuan.io/
欲領取造幣技術與全套虛擬機器資料
區塊鏈技術交流QQ群:756146052 備註:CSDN
尹成學院微信:備註:CSDN
相關文章
- Fabric 1.0原始碼分析(25) Orderer原始碼
- Fabric 1.0原始碼分析(31) Peer原始碼
- Fabric 1.0原始碼分析(3)Chaincode(鏈碼)原始碼AI
- Fabric 1.0原始碼分析(14) flogging(Fabric日誌系統)原始碼
- Fabric 1.0原始碼分析(18) Ledger(賬本)原始碼
- Fabric 1.0原始碼分析(43) Tx(Transaction 交易)原始碼
- Fabric 1.0原始碼分析(47)Fabric 1.0.4 go程式碼量統計原始碼Go
- Fabric 1.0原始碼分析(42)scc(系統鏈碼)原始碼
- Fabric 1.0原始碼分析(13)events(事件服務)原始碼事件
- Fabric 1.0原始碼分析(26)Orderer #ledger(Orderer Ledger)原始碼
- Fabric 1.0原始碼分析(39) policy(背書策略)原始碼
- Fabric 1.0原始碼分析(45)gRPC(Fabric中註冊的gRPC Service)原始碼RPC
- Fabric 1.0原始碼分析(10)consenter(共識外掛)原始碼
- Fabric 1.0原始碼分析(15)gossip(流言演算法)原始碼Go演算法
- Fabric 1.0原始碼分析(23)LevelDB(KV資料庫)原始碼資料庫
- Fabric 1.0原始碼分析(44)Tx #RWSet(讀寫集)原始碼
- Fabric 1.0原始碼分析(5)Chaincode(鏈碼)體系總結原始碼AI
- Fabric 1.0原始碼分析(6)configtx(配置交易) #ChannelConfig(通道配置)原始碼
- Fabric 1.0原始碼分析(20) Ledger #idStore(ledgerID資料庫)原始碼資料庫
- Fabric 1.0原始碼分析(29) Orderer #multichain(多鏈支援包)原始碼AI
- Fabric 1.0原始碼分析(30) Orderer #BroadcastServer(Broadcast服務端)原始碼ASTServer服務端
- Fabric 1.0原始碼分析(35)Peer #EndorserServer(Endorser服務端)原始碼Server服務端
- Fabric 1.0原始碼分析(36) Peer #EndorserClient(Endorser客戶端)原始碼client客戶端
- Fabric 1.0原始碼分析(37) Peer #DeliverClient(Deliver客戶端)原始碼client客戶端
- Fabric 1.0原始碼分析(38) Peer #BroadcastClient(Broadcast客戶端)原始碼ASTclient客戶端
- Fabric 1.0原始碼分析(41)putils(protos/utils工具包)原始碼
- Fabric 1.0原始碼分析(2) blockfile(區塊檔案儲存)原始碼BloC
- Fabric 1.0原始碼分析(7)configtx(配置交易) #configtxgen(生成通道配置)原始碼
- Fabric 1.0原始碼分析(9)configtx(配置交易)體系介紹原始碼
- Fabric 1.0原始碼分析(19) Ledger #statedb(狀態資料庫)原始碼資料庫
- Fabric 1.0原始碼分析(21)Ledger #historydb(歷史資料庫)原始碼資料庫
- Fabric 1.0原始碼分析(22)Ledger #blkstorage(block檔案儲存)原始碼BloC
- Fabric 1.0原始碼分析(27) Orderer #configupdate(處理通道配置更新)原始碼
- Fabric 1.0原始碼分析(32) Peer #peer node start命令實現原始碼
- Fabric 1.0原始碼分析(42)scc(系統鏈碼) #cscc(通道相關)原始碼
- Fabric 1.0原始碼分析(4)Chaincode(鏈碼)#platforms(鏈碼語言平臺)原始碼AIPlatform
- Fabric 1.0原始碼分析(28) Orderer #localconfig(Orderer配置檔案定義)原始碼
- Fabric 1.0原始碼分析(11)consenter(共識外掛) #filter(過濾器)原始碼Filter過濾器