Fabric 1.0原始碼分析(40) Proposal(提案)

尹成發表於2018-05-21
# 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

相關文章