亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Fabric SDK Go中添加集合配置?

如何在Fabric SDK Go中添加集合配置?

Go
aluckdog 2023-07-04 10:03:22
我正在使用 Fabric SDK Go 將私有數據添加到 Hyperledger 中,但在調用數據時出現錯誤。實例化鏈碼ccPolicy, err := cauthdsl.FromString("AND ('Org1MSP.member','Org2MSP.member')")resMgmt.InstantiateCC(    setup.Org.ChannelID,    resmgmt.InstantiateCCRequest{        Name:    chaincodeId,        Path:    setup.Org.ChaincodePath,        Version: chaincodeVersion,        Args:    [][]byte{[]byte("init")},        Policy:  ccPolicy,    },resmgmt.WithRetry(retry.DefaultResMgmtOpts))集合配置.json[   {       "name": "collectionMedium",       "policy": "AND ('Org1MSP.member', 'Org2MSP.member')",       "requiredPeerCount": 0,       "maxPeerCount": 3,       "blockToLive":1000000   },   {       "name": "collectionPrivate",       "policy": "OR('Org2MSP.member')",       "requiredPeerCount": 0,       "maxPeerCount": 3,       "blockToLive":5   }]調用product := &model.Product{id, name, color, length, width}productBytes, err1 := json.Marshal(product)if err1 != nil {    return shim.Error(err1.Error())}   err2 := stub.PutPrivateData("collectionMedium", id, productBytes)if err2 != nil {    return shim.Error(err2.Error())}錯誤Chaincode status Code: (500) UNKNOWN. Description: PUT_STATE failed: collection config not defined for chaincode [CC_ORG_V00], pass the collection configuration upon chaincode definition/instantiation因此,它表示在鏈碼實例化期間未定義集合配置。但是,我不知道如何在鏈代碼實例化請求中添加集合配置。請建議我解決方案。
查看完整描述

1 回答

?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

我能夠通過以下方式創建 CollConfig 請求,并能夠將集合配置添加到我的鏈代碼實例化中。


我的解決方案


#CollConfig 1


var collCfg1RequiredPeerCount, collCfg1MaximumPeerCount int32

var collCfg1BlockToLive uint64


collCfg1Name              := "collectionMedium"

collCfg1BlockToLive       = 1000

collCfg1RequiredPeerCount = 0

collCfg1MaximumPeerCount  = 3

collCfg1Policy            := "OR('Org1MSP.member','Org2MSP.member')"


collCfg1, err := newCollectionConfig(collCfg1Name,collCfg1Policy, collCfg1RequiredPeerCount,collCfg1MaximumPeerCount,collCfg1BlockToLive)


if err != nil {

    return errors.WithMessage(err, "failed to create collection config 1")

}

#CollConfig 2


var collCfg2RequiredPeerCount, collCfg2MaximumPeerCount int32

var collCfg2BlockToLive uint64 


collCfg2Name              := "collectionPrivate"

collCfg2BlockToLive       = 100

collCfg2RequiredPeerCount = 0

collCfg2MaximumPeerCount  = 3

collCfg2Policy            := "OR('Org2MSP.member')"


collCfg2, err := newCollectionConfig(collCfg2Name,collCfg2Policy, collCfg2RequiredPeerCount,collCfg2MaximumPeerCount,collCfg2BlockToLive)


if err != nil {

    return errors.WithMessage(err, "failed to create collection config 1")

}

# 實例化鏈碼


 cfg := []*cb.CollectionConfig{collCfg1,collCfg2}


resp, err := resMgmt.InstantiateCC(

    setup.Org.ChannelID,

    resmgmt.InstantiateCCRequest{


        Name:    chaincodeId,

        Path:    setup.Org.ChaincodePath,

        Version: chaincodeVersion,

        Args:    [][]byte{[]byte("init")},

        Policy:  ccPolicy,

        CollConfig: cfg,


},resmgmt.WithRetry(retry.DefaultResMgmtOpts))

#CollConfig 創建請求方法


func newCollectionConfig(colName, policy string, reqPeerCount, maxPeerCount int32, 


blockToLive uint64) (*cb.CollectionConfig, error) {

    p, err := cauthdsl.FromString(policy)

    if err != nil {

        return nil, err

    }

    cpc := &cb.CollectionPolicyConfig{

        Payload: &cb.CollectionPolicyConfig_SignaturePolicy{

            SignaturePolicy: p,

        },

    }

    return &cb.CollectionConfig{

        Payload: &cb.CollectionConfig_StaticCollectionConfig{

            StaticCollectionConfig: &cb.StaticCollectionConfig{

                Name:              colName,

                MemberOrgsPolicy:  cpc,

                RequiredPeerCount: reqPeerCount,

                MaximumPeerCount:  maxPeerCount,

                BlockToLive:       blockToLive,

            },

        },

    }, nil }


查看完整回答
反對 回復 2023-07-04
  • 1 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號