作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我对 plugin.go
中的方法有疑问,发现 here在 Hyperledger 结构库中。
// Endorse signs the given payload(ProposalResponsePayload bytes), and optionally mutates it.
// Returns:
// The Endorsement: A signature over the payload, and an identity that is used to verify the signature
// The payload that was given as input (could be modified within this function)
// Or error on failure
func (e *DefaultEndorsement) Endorse(prpBytes []byte, sp *peer.SignedProposal) (*peer.Endorsement, []byte, error) {
signer, err := e.SigningIdentityForRequest(sp)
if err != nil {
return nil, nil, errors.New(fmt.Sprintf("failed fetching signing identity: %v", err))
}
// serialize the signing identity
identityBytes, err := signer.Serialize()
if err != nil {
return nil, nil, errors.New(fmt.Sprintf("could not serialize the signing identity: %v", err))
}
// sign the concatenation of the proposal response and the serialized endorser identity with this endorser's key
signature, err := signer.Sign(append(prpBytes, identityBytes...))
if err != nil {
return nil, nil, errors.New(fmt.Sprintf("could not sign the proposal response payload: %v", err))
}
endorsement := &peer.Endorsement{Signature: signature, Endorser: identityBytes}
return endorsement, prpBytes, nil
}
如何将参数 prpBytes
反序列化为原始对象?
prpBytes
是类型 ProposalResponsePayload protobuf 消息
最佳答案
像这样:
import
(
"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/rwsetutil"
)
prp := &peer.ProposalResponsePayload{}
proto.Unmarshal(prpBytes, prp)
chaincodeAction := &peer.ChaincodeAction{}
proto.Unmarshal(prp.Extension, chaincodeAction)
fmt.Println(chaincodeAction.Response)
txRWSet := &rwsetutil.TxRwSet{}
txRWSet.FromProtoBytes(chaincodeAction.Results)
for _, ns := range txRWSet.NsRwSets {
fmt.Println("chaincode:", ns.NameSpace)
for _, rws := range ns.KvRwSet.Reads {
fmt.Println("read key", rws.Key)
}
for _, rws := range ns.KvRwSet.Writes {
fmt.Println("wrote", string(rws.Value), "to key", rws.Key)
}
}
关于go - 如何将 prpBytes(描述中的链接 src)(ProposalResponsePayload protobuf 消息)反序列化为原始对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54339002/
在尝试调用链代码时解决以下错误的步骤是什么? Error: could not assemble transaction: ProposalResponsePayloads do not match
尝试调用链码时解决以下错误的步骤是什么? Error: could not assemble transaction: ProposalResponsePayloads do not match -
我对 plugin.go 中的方法有疑问,发现 here在 Hyperledger 结构库中。 // Endorse signs the given payload(ProposalResponseP
我是一名优秀的程序员,十分优秀!