From 1452fdd7410131a235799deaa2045326ef27d4cf Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Tue, 18 Jan 2022 17:50:04 -0500 Subject: [PATCH] Add support for config blocks parsing Signed-off-by: Jim Zhang --- internal/fabric/client/ledger.go | 2 - internal/fabric/utils/block.go | 23 +- internal/fabric/utils/blockdecoder.go | 86 +- internal/fabric/utils/blockdecoder_test.go | 24 +- internal/fabric/utils/rawblock.go | 47 +- .../{block-1.bin => chaincode-deploy.block} | Bin .../{block-1.json => chaincode-deploy.json} | 0 test/resources/config-0.block | Bin 0 -> 12902 bytes test/resources/config-0.json | 682 ++++++++++ test/resources/config-1.block | Bin 0 -> 31861 bytes test/resources/config-1.json | 1203 +++++++++++++++++ test/resources/genesis.block | Bin 9282 -> 0 bytes .../resources/{block-2.bin => tx-event.block} | Bin .../resources/{block-2.json => tx-event.json} | 0 14 files changed, 2016 insertions(+), 51 deletions(-) rename test/resources/{block-1.bin => chaincode-deploy.block} (100%) rename test/resources/{block-1.json => chaincode-deploy.json} (100%) create mode 100644 test/resources/config-0.block create mode 100644 test/resources/config-0.json create mode 100644 test/resources/config-1.block create mode 100644 test/resources/config-1.json delete mode 100644 test/resources/genesis.block rename test/resources/{block-2.bin => tx-event.block} (100%) rename test/resources/{block-2.json => tx-event.json} (100%) diff --git a/internal/fabric/client/ledger.go b/internal/fabric/client/ledger.go index 598b464..72e9331 100644 --- a/internal/fabric/client/ledger.go +++ b/internal/fabric/client/ledger.go @@ -17,8 +17,6 @@ package client import ( - //nolint - "github.com/hyperledger/fabric-sdk-go/pkg/client/ledger" "github.com/hyperledger/fabric-sdk-go/pkg/common/providers/context" "github.com/hyperledger/fabric-sdk-go/pkg/common/providers/core" diff --git a/internal/fabric/utils/block.go b/internal/fabric/utils/block.go index ad47262..391b854 100644 --- a/internal/fabric/utils/block.go +++ b/internal/fabric/utils/block.go @@ -16,14 +16,20 @@ package utils -import "github.com/hyperledger/fabric-protos-go/peer" +import ( + "github.com/hyperledger/fabric-protos-go/common" + "github.com/hyperledger/fabric-protos-go/peer" +) type Block struct { Number uint64 `json:"block_number"` - DataHash string `json:"data_hash"` // hex string - PreviousHash string `json:"previous_hash"` // hex string + DataHash string `json:"data_hash"` + PreviousHash string `json:"previous_hash"` - Transactions []*Transaction `json:"transactions"` + // only for endorser transaction blocks + Transactions []*Transaction `json:"transactions,omitempty"` + // only for Config blocks + Config *ConfigRecord `json:"config,omitempty"` } type Creator struct { @@ -51,3 +57,12 @@ type TransactionAction struct { ProposalHash string `json:"proposal_hash"` // hex string Event *ChaincodeEvent `json:"event"` } + +type ConfigRecord struct { + Type string `json:"type"` + Signature string `json:"signature"` + Timestamp int64 `json:"timestamp"` // unix nano + Nonce string `json:"nonce"` // hex string + Creator *Creator `json:"creator"` + Config *common.Config `json:"config"` +} diff --git a/internal/fabric/utils/blockdecoder.go b/internal/fabric/utils/blockdecoder.go index 64803eb..57deb4b 100644 --- a/internal/fabric/utils/blockdecoder.go +++ b/internal/fabric/utils/blockdecoder.go @@ -69,11 +69,10 @@ func DecodeBlock(block *common.Block) (*RawBlock, *Block, error) { blockdata.Data = dataEnvs bloc := &Block{} - transactions := make([]*Transaction, len(block.Data.Data)) - bloc.Transactions = transactions // this array in the block header's metadata contains each transaction's status code txFilter := []byte(block.Metadata.Metadata[common.BlockMetadataIndex_TRANSACTIONS_FILTER]) + var transactions []*Transaction for i, data := range block.Data.Data { env, err := getEnvelopeFromBlock(data) if err != nil { @@ -83,13 +82,24 @@ func DecodeBlock(block *common.Block) (*RawBlock, *Block, error) { return nil, nil, errors.New("nil envelope") } - data, tx, err := rawblock.DecodeBlockDataEnvelope(env) + data, payload, err := rawblock.DecodeBlockDataEnvelope(env) if err != nil { return nil, nil, errors.Wrap(err, "error decoding block data envelope") } dataEnvs[i] = data - transactions[i] = tx - tx.Status = peer.TxValidationCode(txFilter[i]).String() + tx, ok := payload.(*Transaction) + if ok { + if transactions == nil { + transactions = make([]*Transaction, len(block.Data.Data)) + bloc.Transactions = transactions + } + transactions[i] = tx + tx.Status = peer.TxValidationCode(txFilter[i]).String() + } else { + // there should only be one config record in the block data + config := payload.(*ConfigRecord) + bloc.Config = config + } } bloc.Number = rawblock.Header.Number @@ -99,15 +109,11 @@ func DecodeBlock(block *common.Block) (*RawBlock, *Block, error) { return rawblock, bloc, nil } -func (block *RawBlock) DecodeBlockDataEnvelope(env *common.Envelope) (*BlockDataEnvelope, *Transaction, error) { +func (block *RawBlock) DecodeBlockDataEnvelope(env *common.Envelope) (*BlockDataEnvelope, interface{}, error) { // used for the raw block dataEnv := &BlockDataEnvelope{} dataEnv.Signature = base64.StdEncoding.EncodeToString(env.Signature) - // used in the user-friendly block - transaction := &Transaction{} - transaction.Signature = dataEnv.Signature - _payload := &Payload{} dataEnv.Payload = _payload @@ -116,47 +122,72 @@ func (block *RawBlock) DecodeBlockDataEnvelope(env *common.Envelope) (*BlockData return nil, nil, errors.Wrap(err, "error decoding Payload from envelope") } - err = block.decodePayload(payload, _payload, transaction) + result, err := block.decodePayload(payload, _payload) if err != nil { return nil, nil, err } - return dataEnv, transaction, nil + tx, ok := result.(*Transaction) + if ok { + tx.Signature = dataEnv.Signature + return dataEnv, tx, nil + } else { + config := result.(*ConfigRecord) + config.Signature = dataEnv.Signature + return dataEnv, config, nil + } } -func (block *RawBlock) decodePayload(payload *common.Payload, _payload *Payload, _transaction *Transaction) error { +// based on the channel header type, returns a *Transaction (type=1) or a *ConfigRecord (type=3) +func (block *RawBlock) decodePayload(payload *common.Payload, _payload *Payload) (interface{}, error) { _payloadData := &PayloadData{} _payload.Data = _payloadData _payloadHeader := &PayloadHeader{} _payload.Header = _payloadHeader if err := block.decodePayloadHeader(payload.Header, _payloadHeader); err != nil { - return err + return nil, err } timestamp := _payloadHeader.ChannelHeader.Timestamp - _transaction.Type = _payloadHeader.ChannelHeader.Type - _transaction.Timestamp = timestamp creator := _payloadHeader.SignatureHeader.Creator - _transaction.Creator = &Creator{ + _creator := &Creator{ MspID: creator.Mspid, Cert: string(creator.IdBytes), } - _transaction.Nonce = hex.EncodeToString([]byte(_payloadHeader.SignatureHeader.Nonce)) - _transaction.TxId = _payloadHeader.ChannelHeader.TxId - // TODO: support other block types (1=ConfigEvelope, 2=ConfigUpdateEnvelope) if _payloadHeader.ChannelHeader.Type == common.HeaderType_name[3] { + // used in the user-friendly block + _transaction := &Transaction{} + _transaction.Type = _payloadHeader.ChannelHeader.Type + _transaction.Timestamp = timestamp + _transaction.Creator = _creator + _transaction.Nonce = hex.EncodeToString([]byte(_payloadHeader.SignatureHeader.Nonce)) + _transaction.TxId = _payloadHeader.ChannelHeader.TxId + if err := block.decodeTxPayloadData(payload.Data, _payloadData, _transaction); err != nil { - return err + return nil, err } for _, action := range _payloadData.Actions { if action.Payload.Action.ProposalResponsePayload.Extension.Events != nil { action.Payload.Action.ProposalResponsePayload.Extension.Events.Timestamp = strconv.FormatInt(timestamp, 10) } } + return _transaction, nil + } else if _payloadHeader.ChannelHeader.Type == common.HeaderType_name[1] { + _configRec := &ConfigRecord{} + _configRec.Type = _payloadHeader.ChannelHeader.Type + _configRec.Timestamp = timestamp + _configRec.Creator = _creator + _configRec.Nonce = hex.EncodeToString([]byte(_payloadHeader.SignatureHeader.Nonce)) + + if err := block.decodeConfigPayloadData(payload.Data, _payloadData, _configRec); err != nil { + return nil, err + } + + return _configRec, nil } - return nil + return nil, nil } func (block *RawBlock) decodePayloadHeader(header *common.Header, _header *PayloadHeader) error { @@ -357,6 +388,17 @@ func (block *RawBlock) decodeProposalResponsePayloadExtension(_extension *Extens return nil } +func (block *RawBlock) decodeConfigPayloadData(payloadData []byte, _payloadData *PayloadData, _configRec *ConfigRecord) error { + configEnv := &common.ConfigEnvelope{} + if err := proto.Unmarshal(payloadData, configEnv); err != nil { + return errors.Wrap(err, "error decoding config envelope") + } + _configRec.Config = configEnv.Config + _payloadData.Config = configEnv.Config + + return nil +} + func getEnvelopeFromBlock(data []byte) (*common.Envelope, error) { // Block always begins with an envelope var err error diff --git a/internal/fabric/utils/blockdecoder_test.go b/internal/fabric/utils/blockdecoder_test.go index 50eb67f..98fd9f6 100644 --- a/internal/fabric/utils/blockdecoder_test.go +++ b/internal/fabric/utils/blockdecoder_test.go @@ -27,7 +27,7 @@ import ( func TestDecodeEndorserBlockWithEvents(t *testing.T) { assert := assert.New(t) - content, _ := os.ReadFile("../../../test/resources/block-2.bin") + content, _ := os.ReadFile("../../../test/resources/tx-event.block") testblock := &common.Block{} _ = proto.Unmarshal(content, testblock) decoded, _, err := DecodeBlock(testblock) @@ -62,7 +62,7 @@ func TestDecodeEndorserBlockWithEvents(t *testing.T) { func TestDecodeEndorserBlockLifecycleTxs(t *testing.T) { assert := assert.New(t) - content, _ := os.ReadFile("../../../test/resources/block-1.bin") + content, _ := os.ReadFile("../../../test/resources/chaincode-deploy.block") testblock := &common.Block{} _ = proto.Unmarshal(content, testblock) decoded, _, err := DecodeBlock(testblock) @@ -86,9 +86,27 @@ func TestDecodeEndorserBlockLifecycleTxs(t *testing.T) { assert.Equal("ApproveChaincodeDefinitionForMyOrg", cpp.Input.ChaincodeSpec.Input.Args[0]) } +func TestDecodeConfigBlock(t *testing.T) { + assert := assert.New(t) + + content, _ := os.ReadFile("../../../test/resources/config-0.block") + testblock := &common.Block{} + _ = proto.Unmarshal(content, testblock) + decoded, _, err := DecodeBlock(testblock) + assert.NoError(err) + assert.Equal(1, len(decoded.Data.Data)) + + content, _ = os.ReadFile("../../../test/resources/config-1.block") + testblock = &common.Block{} + _ = proto.Unmarshal(content, testblock) + decoded, _, err = DecodeBlock(testblock) + assert.NoError(err) + assert.Equal(1, len(decoded.Data.Data)) +} + func TestGetEvents(t *testing.T) { assert := assert.New(t) - content, _ := os.ReadFile("../../../test/resources/block-2.bin") + content, _ := os.ReadFile("../../../test/resources/tx-event.block") testblock := &common.Block{} _ = proto.Unmarshal(content, testblock) events := GetEvents(testblock) diff --git a/internal/fabric/utils/rawblock.go b/internal/fabric/utils/rawblock.go index 8ba5fd6..7b11696 100644 --- a/internal/fabric/utils/rawblock.go +++ b/internal/fabric/utils/rawblock.go @@ -42,10 +42,36 @@ type Payload struct { Header *PayloadHeader `json:"header"` } +type PayloadHeader struct { + ChannelHeader *ChannelHeader `json:"channel_header"` + SignatureHeader *SignatureHeader `json:"signature_header"` +} + +type ChannelHeader struct { + ChannelId string `json:"channel_id"` + Epoch string `json:"epoch"` + Timestamp int64 `json:"timestamp"` + TxId string `json:"tx_id"` + Type string `json:"type"` + Version int `json:"version"` +} + +type SignatureHeader struct { + Creator *msp.SerializedIdentity `json:"creator"` + Nonce string `json:"nonce"` +} + type PayloadData struct { - Actions []*Action `json:"actions"` + // Actions only exists in endorsement transaction blocks + Actions []*Action `json:"actions,omitempty"` + // Config only exists in config and config update blocks + Config *common.Config `json:"config,omitempty"` } +// +// Types used only in endorsement transaction blocks +// + type Action struct { Header *SignatureHeader `json:"header"` Payload *ActionPayload `json:"payload"` @@ -100,22 +126,3 @@ type ChaincodeSpecInput struct { Args []string `json:"args"` IsInit bool `json:"is_init"` } - -type PayloadHeader struct { - ChannelHeader *ChannelHeader `json:"channel_header"` - SignatureHeader *SignatureHeader `json:"signature_header"` -} - -type ChannelHeader struct { - ChannelId string `json:"channel_id"` - Epoch string `json:"epoch"` - Timestamp int64 `json:"timestamp"` - TxId string `json:"tx_id"` - Type string `json:"type"` - Version int `json:"version"` -} - -type SignatureHeader struct { - Creator *msp.SerializedIdentity `json:"creator"` - Nonce string `json:"nonce"` -} diff --git a/test/resources/block-1.bin b/test/resources/chaincode-deploy.block similarity index 100% rename from test/resources/block-1.bin rename to test/resources/chaincode-deploy.block diff --git a/test/resources/block-1.json b/test/resources/chaincode-deploy.json similarity index 100% rename from test/resources/block-1.json rename to test/resources/chaincode-deploy.json diff --git a/test/resources/config-0.block b/test/resources/config-0.block new file mode 100644 index 0000000000000000000000000000000000000000..47c78a210a0cef612427c4f5e7f83bd044e2efe1 GIT binary patch literal 12902 zcmeI2-*4ks7027@Oeb@vY0KR~l)$p1s584enNA$1X;QQcT>psUq)ubU`N_k|u^q=v zVkfp!H<4BGqbRrS@FQ& zM0RBRo|AKb9Np{B_kw8T=3l?}cKImwe);$B{o+RE?)%@YzWmFF?d9KI`&(%xI->7t z@aG!%nFc=4z}w)h(Bk@HWI6PQU;XC(a&%48+sdftZK)l_vh?1aZxOAGrYr6Cj;bb- z+wDX`Z?{t^t-VX?O1hm&Ch;SECz&Lbq|(+iT8d1mX;GS=zOhLM{(QfCX3xcaeROZlwk}z-Glv-C^G1P;snw4!+;hWOjQ&)*3VZf z6IK+^Hir@wmh$~vrJr@1wVtIgXZLBt&y~rO``y-rm2nI>xTyv5{emV_Nwwdx)w-C_ zCdlMaW-Kr~K3KoVunB=tC;L^q!Ay8xm>x1Bum`!~7bilhb{f^Q#)NC}L{$GiCaNh= z0!NL9Tv^!OMFz{!^pFdKlPjOiA%aI#VbCnsGlMv{mnS(rE>wwZO;&|H%1mozd)TJ) zeWfqm!jBcXMy=3tPj z`H50()J@4p{Psbv7zRy4pm~vw=|w)a>of{xTav6)lN%M5Acej^-b%}{U9BJbO_P` zUbP>gsK_#!=7k$!z%|y=2DWK=E=*_@l(e@$t=>`^YO` z<)n;k_H}#Y!8LdVERnd8W=>uKFVTW2&BMTP_UE3v7ZFS{W!UvuApy?!p_> zYJkgC@+|@`%uD@v6@+PQs9WyHmB#}ezPk#)vkF4Gr)rMU_Tb;c;E!Q&>q1?z{@}w) zk>7nbD=bYgE7Z$ptZ>I73H6Xlb3-kac1r17JWVkFBdoA6C77R^71jl+GUJ!~m|vPr z&NyoIr9-uxAX+)WugOTJ4E2dt@S>wv~OV(;deY zE^lw|DpWmNQ3xNi!hQdQRZ0{i`hv~pTiotJqjqGsl10KWs|kV2cNHc(YI3_rdsfBQ zl6hOnWr<>49VwV0V^&z}bz9@qs9Beitz_O2kbS~qr!)w9)ZRq2_UGM!}MmtZ)w1h0Xsrwf4DWEzd0EhFY-PS+LZ%gojd^D
Wt4_^&*zCh;-biS$37wCL}_#KGf7ZSe% zo$pz8rv$pji>+$}I^VPH)(Z0B#mVlV^(gh#a374LDerfKU zn=?T81|+ewdl0LIXU?B6Tzuks?r28uA{P?vrkwG=!4RW&A8+KB;Y*lvu03{heI9c( z32y9}ZCxF!J^g&&do^onX_MDOGjT{|!_HyW-__H=Ie$h6b$;cacxGZ7u^z`~%3tXTw7wM~c Rh1bAka0x8n@8a~d@GsOe#mdj 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 literal 0 HcmV?d00001 diff --git a/test/resources/config-1.json b/test/resources/config-1.json new file mode 100644 index 0000000..9a6d027 --- /dev/null +++ b/test/resources/config-1.json @@ -0,0 +1,1203 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "config": { + "channel_group": { + "groups": { + "Application": { + "groups": { + "sys--mon": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "sys--mon", + "role": "ADMIN" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + }, + "Endorsement": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "sys--mon", + "role": "PEER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + }, + "Readers": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "sys--mon", + "role": "ADMIN" + }, + "principal_classification": "ROLE" + }, + { + "principal": { + "msp_identifier": "sys--mon", + "role": "PEER" + }, + "principal_classification": "ROLE" + }, + { + "principal": { + "msp_identifier": "sys--mon", + "role": "CLIENT" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + }, + { + "signed_by": 1 + }, + { + "signed_by": 2 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + }, + "Writers": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "sys--mon", + "role": "ADMIN" + }, + "principal_classification": "ROLE" + }, + { + "principal": { + "msp_identifier": "sys--mon", + "role": "CLIENT" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + }, + { + "signed_by": 1 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "MSP": { + "mod_policy": "Admins", + "value": { + "config": { + "admins": [], + "crypto_config": { + "identity_identifier_hash_function": "SHA256", + "signature_hash_family": "SHA2" + }, + "fabric_node_ous": { + "admin_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "sys--mon", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "sys--mon", + "role": "ADMIN" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + }, + "Endorsement": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Endorsement" + } + }, + "version": "0" + }, + "LifecycleEndorsement": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Endorsement" + } + }, + "version": "0" + }, + "Readers": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Readers" + } + }, + "version": "0" + }, + "Writers": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Writers" + } + }, + "version": "0" + } + }, + "values": { + "Capabilities": { + "mod_policy": "Admins", + "value": { + "capabilities": { + "V2_0": {} + } + }, + "version": "0" + } + }, + "version": "0" + }, + "Orderer": { + "groups": { + "sys--mon": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "sys--mon", + "role": "ADMIN" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + }, + "Readers": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "sys--mon", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + }, + "Writers": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "sys--mon", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "Endpoints": { + "mod_policy": "Admins", + "value": { + "addresses": [ + "u0bdh1ndoq.u0wrhhqt5w.kaleido.network:40020" + ] + }, + "version": "0" + }, + "MSP": { + "mod_policy": "Admins", + "value": { + "config": { + "admins": [], + "crypto_config": { + "identity_identifier_hash_function": "SHA256", + "signature_hash_family": "SHA2" + }, + "fabric_node_ous": { + "admin_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "sys--mon", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDQVRDQ0FhZWdBd0lCQWdJUWYyeEsrQ0pXbFhBL29yazNOa3BOeWpBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQkdNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVUTUJFR0ExVUVBd3dLZFRCM2NtaG9jWFExZHpCWk1CTUdCeXFHU000OUFnRUdDQ3FHDQpTTTQ5QXdFSEEwSUFCS3BaU1g4cC9HTEoyR2UvTVYwRldUY01MQmk3ZFNvcWZDSm1hV3puSkZwN2hzZlBtOTNKDQoxOExtbzBGQ3Urb2ZsS2U4VmZGZFpOSW83Z2MxWC9zVEVyK2pjekJ4TUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDDQpBUU13RGdZRFZSMFBBUUgvQkFRREFnR21NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ3ZKL1BwRHJFcS9qRkZCTVF2NTlncmRqMllLZ3FTbks2bzNZNWlRRnluOWN3DQpDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWdSbVJydW5uVFF5cUZYeHZUWTFkaG5acHA1V3cxUFd1azVUeEk0akhODQpaZ01DSVFDK2VOSSs5cllLaWZSUm41WkdxM0Z5SFN0bkF0blBSVnRXN0pBTVh2REJLdz09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + }, + "u0o4mkkzs6": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "u0o4mkkzs6", + "role": "ADMIN" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + }, + "Readers": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "u0o4mkkzs6", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + }, + "Writers": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "u0o4mkkzs6", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "Endpoints": { + "mod_policy": "Admins", + "value": { + "addresses": [ + "u0u52tiobg.u0wrhhqt5w.kaleido.network:40040" + ] + }, + "version": "0" + }, + "MSP": { + "mod_policy": "Admins", + "value": { + "config": { + "admins": [], + "crypto_config": { + "identity_identifier_hash_function": "SHA256", + "signature_hash_family": "SHA2" + }, + "fabric_node_ous": { + "admin_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "u0o4mkkzs6", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "sys--mon", + "role": "ADMIN" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + }, + "BlockValidation": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Writers" + } + }, + "version": "0" + }, + "Readers": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Readers" + } + }, + "version": "0" + }, + "Writers": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Writers" + } + }, + "version": "0" + } + }, + "values": { + "BatchSize": { + "mod_policy": "Admins", + "value": { + "absolute_max_bytes": 103809024, + "max_message_count": 10, + "preferred_max_bytes": 524288 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2ns" + }, + "version": "0" + }, + "Capabilities": { + "mod_policy": "Admins", + "value": { + "capabilities": { + "V2_0": {} + } + }, + "version": "0" + }, + "ChannelRestrictions": { + "mod_policy": "Admins", + "value": null, + "version": "0" + }, + "ConsensusType": { + "mod_policy": "Admins", + "value": { + "metadata": { + "consenters": [ + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDUHpDQ0FlU2dBd0lCQWdJUWY2bjIwY3ZCN0dxZDU3clA3SC83MERBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQktNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVYTUJVR0ExVUVBd3dPZFRCaVpHZ3hibVJ2Y1MxMGJITXdXVEFUQmdjcWhrak9QUUlCDQpCZ2dxaGtqT1BRTUJCd05DQUFUUTJOTUlOeEpUcDhLeVJ6QlpZbkpUYUF3a1NZbFROYlZRdlpSelZzNVQrTEJLDQptUkNvU2ljcys2eTZXbVcwYlZJelpWZFJ6Z3VTRU5xTWhpOG9OQUl3bzRHck1JR29NQXdHQTFVZEV3RUIvd1FDDQpNQUF3RGdZRFZSMFBBUUgvQkFRREFnV2dNQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ25GRi9LVkkxcjhwMjdxaEhMMjEvN29hT0Joa3krYUdKbzQ5YUJYRlVhMHd3DQpPd1lEVlIwUkJEUXdNb0lKYkc5allXeG9iM04wZ2lWMU1HSmthREZ1Wkc5eExuVXdkM0pvYUhGME5YY3VhMkZzDQpaV2xrYnk1dVpYUjNiM0pyTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEdTBsa0VqUlZ4cXJlMGRhd1BJVEUzDQpYekNJVVVXTGx0bmhNYkQwb3JFMmhBSWhBSkRMMElXNmlZQ3RWRWlzNjFnQlYvUnRMY1FSMnFIOGh3OHdYc3RzDQpFelVuDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=", + "host": "u0bdh1ndoq.u0wrhhqt5w.kaleido.network", + "port": 40021, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDUHpDQ0FlU2dBd0lCQWdJUWY2bjIwY3ZCN0dxZDU3clA3SC83MERBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQktNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVYTUJVR0ExVUVBd3dPZFRCaVpHZ3hibVJ2Y1MxMGJITXdXVEFUQmdjcWhrak9QUUlCDQpCZ2dxaGtqT1BRTUJCd05DQUFUUTJOTUlOeEpUcDhLeVJ6QlpZbkpUYUF3a1NZbFROYlZRdlpSelZzNVQrTEJLDQptUkNvU2ljcys2eTZXbVcwYlZJelpWZFJ6Z3VTRU5xTWhpOG9OQUl3bzRHck1JR29NQXdHQTFVZEV3RUIvd1FDDQpNQUF3RGdZRFZSMFBBUUgvQkFRREFnV2dNQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ25GRi9LVkkxcjhwMjdxaEhMMjEvN29hT0Joa3krYUdKbzQ5YUJYRlVhMHd3DQpPd1lEVlIwUkJEUXdNb0lKYkc5allXeG9iM04wZ2lWMU1HSmthREZ1Wkc5eExuVXdkM0pvYUhGME5YY3VhMkZzDQpaV2xrYnk1dVpYUjNiM0pyTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEdTBsa0VqUlZ4cXJlMGRhd1BJVEUzDQpYekNJVVVXTGx0bmhNYkQwb3JFMmhBSWhBSkRMMElXNmlZQ3RWRWlzNjFnQlYvUnRMY1FSMnFIOGh3OHdYc3RzDQpFelVuDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCakNDQXF5Z0F3SUJBZ0lVWmkyRGI2UnJJcjAxQXVTaW5hWHZRQXZEU3Uwd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpNakF4TURJeE5URXhNREJhTUZzeEN6QUpCZ05WQkFZVEFsVlRNUkF3RGdZRFZRUUhFd2RTWVd4bGFXZG9NUkF3CkRnWURWUVFLRXdkTFlXeGxhV1J2TVE4d0RRWURWUVFMRXdaamJHbGxiblF4RnpBVkJnTlZCQU1URG5Vd2RUVXkKZEdsdlltY3RkR3h6TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFWVJlRi9OeVUxOUdIcHZocwp4dHlac0VtdTN0bklMVTl6MG94djhiZlBldDA4TUxCNk41enZrdUtwUmpFUlhJK2FtQ1d6ZTJ0NDVUemlMMGNHCnFtS3RncU9DQVl3d2dnR0lNQTRHQTFVZER3RUIvd1FFQXdJRHFEQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0QKQVFZSUt3WUJCUVVIQXdJd0RBWURWUjBUQVFIL0JBSXdBREFkQmdOVkhRNEVGZ1FVbmc4aVFZQUhtUmZBMGNWRApvMmRjSFZkYjRtMHdId1lEVlIwakJCZ3dGb0FVMlpKV0l2RFZFOEhHcDNiMkMzbUpXbmhicWU0d2dhVUdBMVVkCkVRU0JuVENCbW9JSmJHOWpZV3hvYjNOMGdpVjFNSFUxTW5ScGIySm5MblV3ZDNKb2FIRjBOWGN1YTJGc1pXbGsKYnk1dVpYUjNiM0pyZ2pOMU1IZHlhR2h4ZERWM0xYVXdkVFV5ZEdsdlltY3RiM0prWlhKbGNpNTFjekF0WVhkegpMWGR6TG10aGJHVnBaRzh1YVcrQ01YVXdkM0pvYUhGME5YY3RkVEIxTlRKMGFXOWlaeTFoWkcxcGJpNTFjekF0CllYZHpMWGR6TG10aGJHVnBaRzh1YVc4d1lRWUlLZ01FQlFZSENBRUVWWHNpWVhSMGNuTWlPbnNpYUdZdVFXWm0KYVd4cFlYUnBiMjRpT2lJaUxDSm9aaTVGYm5KdmJHeHRaVzUwU1VRaU9pSjFNSFUxTW5ScGIySm5MWFJzY3lJcwpJbWhtTGxSNWNHVWlPaUpqYkdsbGJuUWlmWDB3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU9MRXZwVnpuK0NXCk5MQjJBWkRNM2Qxbk05b1hGSVJxbDUrdmtCOGk0SGRxQWlBeWpJMEw2N0V1R09VcWlpRkxlZ1JubEcxMkJoelMKc3RxdWNGcmpUQzRLL1E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "host": "u0u52tiobg.u0wrhhqt5w.kaleido.network", + "port": 40041, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCakNDQXF5Z0F3SUJBZ0lVWmkyRGI2UnJJcjAxQXVTaW5hWHZRQXZEU3Uwd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpNakF4TURJeE5URXhNREJhTUZzeEN6QUpCZ05WQkFZVEFsVlRNUkF3RGdZRFZRUUhFd2RTWVd4bGFXZG9NUkF3CkRnWURWUVFLRXdkTFlXeGxhV1J2TVE4d0RRWURWUVFMRXdaamJHbGxiblF4RnpBVkJnTlZCQU1URG5Vd2RUVXkKZEdsdlltY3RkR3h6TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFWVJlRi9OeVUxOUdIcHZocwp4dHlac0VtdTN0bklMVTl6MG94djhiZlBldDA4TUxCNk41enZrdUtwUmpFUlhJK2FtQ1d6ZTJ0NDVUemlMMGNHCnFtS3RncU9DQVl3d2dnR0lNQTRHQTFVZER3RUIvd1FFQXdJRHFEQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0QKQVFZSUt3WUJCUVVIQXdJd0RBWURWUjBUQVFIL0JBSXdBREFkQmdOVkhRNEVGZ1FVbmc4aVFZQUhtUmZBMGNWRApvMmRjSFZkYjRtMHdId1lEVlIwakJCZ3dGb0FVMlpKV0l2RFZFOEhHcDNiMkMzbUpXbmhicWU0d2dhVUdBMVVkCkVRU0JuVENCbW9JSmJHOWpZV3hvYjNOMGdpVjFNSFUxTW5ScGIySm5MblV3ZDNKb2FIRjBOWGN1YTJGc1pXbGsKYnk1dVpYUjNiM0pyZ2pOMU1IZHlhR2h4ZERWM0xYVXdkVFV5ZEdsdlltY3RiM0prWlhKbGNpNTFjekF0WVhkegpMWGR6TG10aGJHVnBaRzh1YVcrQ01YVXdkM0pvYUhGME5YY3RkVEIxTlRKMGFXOWlaeTFoWkcxcGJpNTFjekF0CllYZHpMWGR6TG10aGJHVnBaRzh1YVc4d1lRWUlLZ01FQlFZSENBRUVWWHNpWVhSMGNuTWlPbnNpYUdZdVFXWm0KYVd4cFlYUnBiMjRpT2lJaUxDSm9aaTVGYm5KdmJHeHRaVzUwU1VRaU9pSjFNSFUxTW5ScGIySm5MWFJzY3lJcwpJbWhtTGxSNWNHVWlPaUpqYkdsbGJuUWlmWDB3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU9MRXZwVnpuK0NXCk5MQjJBWkRNM2Qxbk05b1hGSVJxbDUrdmtCOGk0SGRxQWlBeWpJMEw2N0V1R09VcWlpRkxlZ1JubEcxMkJoelMKc3RxdWNGcmpUQzRLL1E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 16777216, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "1" + } + }, + "version": "1" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "version": "0" + }, + "Readers": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Readers" + } + }, + "version": "0" + }, + "Writers": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Writers" + } + }, + "version": "0" + } + }, + "values": { + "BlockDataHashingStructure": { + "mod_policy": "Admins", + "value": { + "width": 4294967295 + }, + "version": "0" + }, + "Capabilities": { + "mod_policy": "Admins", + "value": { + "capabilities": { + "V2_0": {} + } + }, + "version": "0" + }, + "HashingAlgorithm": { + "mod_policy": "Admins", + "value": { + "name": "SHA256" + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "1" + }, + "last_update": { + "payload": { + "data": { + "config_update": { + "channel_id": "default-channel", + "isolated_data": {}, + "read_set": { + "groups": { + "Orderer": { + "groups": { + "sys--mon": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + } + }, + "mod_policy": "", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "BlockValidation": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "BatchSize": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "Capabilities": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "ChannelRestrictions": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + }, + "write_set": { + "groups": { + "Orderer": { + "groups": { + "sys--mon": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + }, + "u0o4mkkzs6": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "u0o4mkkzs6", + "role": "ADMIN" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + }, + "Readers": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "u0o4mkkzs6", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + }, + "Writers": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "u0o4mkkzs6", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "Endpoints": { + "mod_policy": "Admins", + "value": { + "addresses": [ + "u0u52tiobg.u0wrhhqt5w.kaleido.network:40040" + ] + }, + "version": "0" + }, + "MSP": { + "mod_policy": "Admins", + "value": { + "config": { + "admins": [], + "crypto_config": { + "identity_identifier_hash_function": "SHA256", + "signature_hash_family": "SHA2" + }, + "fabric_node_ous": { + "admin_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "u0o4mkkzs6", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmVENDQVNPZ0F3SUJBZ0lVQThINTU5YVg4Q2VJVWdsSFJKTkV4dGVkS2xZd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpOakV5TXpFeE5UQTBNREJhTUJzeEdUQVhCZ05WQkFNVEVHWmhZbkpwWXkxallTMXpaWEoyWlhJd1dUQVRCZ2NxCmhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUmFTTWVOWlJhL0grbjZtMGZUZnhDS2VLdkFsRkJPQUtBWm5sQ0kKUlM5OWJZKzRLeGJYYW5kb1pTVE9DckljeldjTXN6dWlTd21wWVBvaGduZ0d1UXdqbzBVd1F6QU9CZ05WSFE4QgpBZjhFQkFNQ0FRWXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMlpKV0l2RFZFOEhHCnAzYjJDM21KV25oYnFlNHdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTkFNQUJBNjIrdFhZZ3FCVEVuTUNkdEsKaFVVN2xoWUFDMGpSR05aVkNjTUxBaUF4UjYwWHJyWm5hdUt6ZHBaY05uZ05EaXJwWE5KbWw0Qk41Q3VOZS9KZQo2dz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "BlockValidation": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "BatchSize": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "Capabilities": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "ChannelRestrictions": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "ConsensusType": { + "mod_policy": "Admins", + "value": { + "metadata": { + "consenters": [ + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDUHpDQ0FlU2dBd0lCQWdJUWY2bjIwY3ZCN0dxZDU3clA3SC83MERBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQktNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVYTUJVR0ExVUVBd3dPZFRCaVpHZ3hibVJ2Y1MxMGJITXdXVEFUQmdjcWhrak9QUUlCDQpCZ2dxaGtqT1BRTUJCd05DQUFUUTJOTUlOeEpUcDhLeVJ6QlpZbkpUYUF3a1NZbFROYlZRdlpSelZzNVQrTEJLDQptUkNvU2ljcys2eTZXbVcwYlZJelpWZFJ6Z3VTRU5xTWhpOG9OQUl3bzRHck1JR29NQXdHQTFVZEV3RUIvd1FDDQpNQUF3RGdZRFZSMFBBUUgvQkFRREFnV2dNQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ25GRi9LVkkxcjhwMjdxaEhMMjEvN29hT0Joa3krYUdKbzQ5YUJYRlVhMHd3DQpPd1lEVlIwUkJEUXdNb0lKYkc5allXeG9iM04wZ2lWMU1HSmthREZ1Wkc5eExuVXdkM0pvYUhGME5YY3VhMkZzDQpaV2xrYnk1dVpYUjNiM0pyTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEdTBsa0VqUlZ4cXJlMGRhd1BJVEUzDQpYekNJVVVXTGx0bmhNYkQwb3JFMmhBSWhBSkRMMElXNmlZQ3RWRWlzNjFnQlYvUnRMY1FSMnFIOGh3OHdYc3RzDQpFelVuDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=", + "host": "u0bdh1ndoq.u0wrhhqt5w.kaleido.network", + "port": 40021, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlDUHpDQ0FlU2dBd0lCQWdJUWY2bjIwY3ZCN0dxZDU3clA3SC83MERBS0JnZ3Foa2pPUFFRREFqQkdNUXN3DQpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUDQpNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwDQpNVFV3TnpNNVdqQktNUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFDQpDZ3dIUzJGc1pXbGtiekVYTUJVR0ExVUVBd3dPZFRCaVpHZ3hibVJ2Y1MxMGJITXdXVEFUQmdjcWhrak9QUUlCDQpCZ2dxaGtqT1BRTUJCd05DQUFUUTJOTUlOeEpUcDhLeVJ6QlpZbkpUYUF3a1NZbFROYlZRdlpSelZzNVQrTEJLDQptUkNvU2ljcys2eTZXbVcwYlZJelpWZFJ6Z3VTRU5xTWhpOG9OQUl3bzRHck1JR29NQXdHQTFVZEV3RUIvd1FDDQpNQUF3RGdZRFZSMFBBUUgvQkFRREFnV2dNQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGDQpCUWNEQVRBcEJnTlZIUTRFSWdRZ25GRi9LVkkxcjhwMjdxaEhMMjEvN29hT0Joa3krYUdKbzQ5YUJYRlVhMHd3DQpPd1lEVlIwUkJEUXdNb0lKYkc5allXeG9iM04wZ2lWMU1HSmthREZ1Wkc5eExuVXdkM0pvYUhGME5YY3VhMkZzDQpaV2xrYnk1dVpYUjNiM0pyTUFvR0NDcUdTTTQ5QkFNQ0Ewa0FNRVlDSVFEdTBsa0VqUlZ4cXJlMGRhd1BJVEUzDQpYekNJVVVXTGx0bmhNYkQwb3JFMmhBSWhBSkRMMElXNmlZQ3RWRWlzNjFnQlYvUnRMY1FSMnFIOGh3OHdYc3RzDQpFelVuDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo=" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCakNDQXF5Z0F3SUJBZ0lVWmkyRGI2UnJJcjAxQXVTaW5hWHZRQXZEU3Uwd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpNakF4TURJeE5URXhNREJhTUZzeEN6QUpCZ05WQkFZVEFsVlRNUkF3RGdZRFZRUUhFd2RTWVd4bGFXZG9NUkF3CkRnWURWUVFLRXdkTFlXeGxhV1J2TVE4d0RRWURWUVFMRXdaamJHbGxiblF4RnpBVkJnTlZCQU1URG5Vd2RUVXkKZEdsdlltY3RkR3h6TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFWVJlRi9OeVUxOUdIcHZocwp4dHlac0VtdTN0bklMVTl6MG94djhiZlBldDA4TUxCNk41enZrdUtwUmpFUlhJK2FtQ1d6ZTJ0NDVUemlMMGNHCnFtS3RncU9DQVl3d2dnR0lNQTRHQTFVZER3RUIvd1FFQXdJRHFEQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0QKQVFZSUt3WUJCUVVIQXdJd0RBWURWUjBUQVFIL0JBSXdBREFkQmdOVkhRNEVGZ1FVbmc4aVFZQUhtUmZBMGNWRApvMmRjSFZkYjRtMHdId1lEVlIwakJCZ3dGb0FVMlpKV0l2RFZFOEhHcDNiMkMzbUpXbmhicWU0d2dhVUdBMVVkCkVRU0JuVENCbW9JSmJHOWpZV3hvYjNOMGdpVjFNSFUxTW5ScGIySm5MblV3ZDNKb2FIRjBOWGN1YTJGc1pXbGsKYnk1dVpYUjNiM0pyZ2pOMU1IZHlhR2h4ZERWM0xYVXdkVFV5ZEdsdlltY3RiM0prWlhKbGNpNTFjekF0WVhkegpMWGR6TG10aGJHVnBaRzh1YVcrQ01YVXdkM0pvYUhGME5YY3RkVEIxTlRKMGFXOWlaeTFoWkcxcGJpNTFjekF0CllYZHpMWGR6TG10aGJHVnBaRzh1YVc4d1lRWUlLZ01FQlFZSENBRUVWWHNpWVhSMGNuTWlPbnNpYUdZdVFXWm0KYVd4cFlYUnBiMjRpT2lJaUxDSm9aaTVGYm5KdmJHeHRaVzUwU1VRaU9pSjFNSFUxTW5ScGIySm5MWFJzY3lJcwpJbWhtTGxSNWNHVWlPaUpqYkdsbGJuUWlmWDB3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU9MRXZwVnpuK0NXCk5MQjJBWkRNM2Qxbk05b1hGSVJxbDUrdmtCOGk0SGRxQWlBeWpJMEw2N0V1R09VcWlpRkxlZ1JubEcxMkJoelMKc3RxdWNGcmpUQzRLL1E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "host": "u0u52tiobg.u0wrhhqt5w.kaleido.network", + "port": 40041, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCakNDQXF5Z0F3SUJBZ0lVWmkyRGI2UnJJcjAxQXVTaW5hWHZRQXZEU3Uwd0NnWUlLb1pJemowRUF3SXcKR3pFWk1CY0dBMVVFQXhNUVptRmljbWxqTFdOaExYTmxjblpsY2pBZUZ3MHlNakF4TURReE5UQTBNREJhRncwegpNakF4TURJeE5URXhNREJhTUZzeEN6QUpCZ05WQkFZVEFsVlRNUkF3RGdZRFZRUUhFd2RTWVd4bGFXZG9NUkF3CkRnWURWUVFLRXdkTFlXeGxhV1J2TVE4d0RRWURWUVFMRXdaamJHbGxiblF4RnpBVkJnTlZCQU1URG5Vd2RUVXkKZEdsdlltY3RkR3h6TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFWVJlRi9OeVUxOUdIcHZocwp4dHlac0VtdTN0bklMVTl6MG94djhiZlBldDA4TUxCNk41enZrdUtwUmpFUlhJK2FtQ1d6ZTJ0NDVUemlMMGNHCnFtS3RncU9DQVl3d2dnR0lNQTRHQTFVZER3RUIvd1FFQXdJRHFEQWRCZ05WSFNVRUZqQVVCZ2dyQmdFRkJRY0QKQVFZSUt3WUJCUVVIQXdJd0RBWURWUjBUQVFIL0JBSXdBREFkQmdOVkhRNEVGZ1FVbmc4aVFZQUhtUmZBMGNWRApvMmRjSFZkYjRtMHdId1lEVlIwakJCZ3dGb0FVMlpKV0l2RFZFOEhHcDNiMkMzbUpXbmhicWU0d2dhVUdBMVVkCkVRU0JuVENCbW9JSmJHOWpZV3hvYjNOMGdpVjFNSFUxTW5ScGIySm5MblV3ZDNKb2FIRjBOWGN1YTJGc1pXbGsKYnk1dVpYUjNiM0pyZ2pOMU1IZHlhR2h4ZERWM0xYVXdkVFV5ZEdsdlltY3RiM0prWlhKbGNpNTFjekF0WVhkegpMWGR6TG10aGJHVnBaRzh1YVcrQ01YVXdkM0pvYUhGME5YY3RkVEIxTlRKMGFXOWlaeTFoWkcxcGJpNTFjekF0CllYZHpMWGR6TG10aGJHVnBaRzh1YVc4d1lRWUlLZ01FQlFZSENBRUVWWHNpWVhSMGNuTWlPbnNpYUdZdVFXWm0KYVd4cFlYUnBiMjRpT2lJaUxDSm9aaTVGYm5KdmJHeHRaVzUwU1VRaU9pSjFNSFUxTW5ScGIySm5MWFJzY3lJcwpJbWhtTGxSNWNHVWlPaUpqYkdsbGJuUWlmWDB3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU9MRXZwVnpuK0NXCk5MQjJBWkRNM2Qxbk05b1hGSVJxbDUrdmtCOGk0SGRxQWlBeWpJMEw2N0V1R09VcWlpRkxlZ1JubEcxMkJoelMKc3RxdWNGcmpUQzRLL1E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 16777216, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "1" + } + }, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + } + }, + "signatures": [ + { + "signature": "MEUCIQCWfK5N19SE1TWHCexRAUaVzA0nKw76dPoOCQMwNYd5/gIgSxgvvhOhQWoubUgq81df3il7QAFK+ZaVD2+vyM3c2GE=", + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNFVENDQWJlZ0F3SUJBZ0lRZiszdDJXVC9rdTdxQU9WTUQ4L0lTREFLQmdncWhrak9QUVFEQWpCR01Rc3cKQ1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFQ2d3SFMyRnNaV2xrYnpFVApNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EYzBNRm9ZRHpJd016SXdNVEEwCk1UVXdOelF3V2pCY01Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUUKQ2d3SFMyRnNaV2xrYnpFT01Bd0dBMVVFQ3d3RllXUnRhVzR4R1RBWEJnTlZCQU1NRUhVd1ltUm9NVzVrYjNFdApZV1J0YVc0d1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRUy9HZzYxdkw5cnhkdUNKd2dkTVI0ClZPbUJTMzVDSDhDeTRPdXFXZk82VU9ueWwyVmU5a3gvKzBkQWpVV0l6dkFSTmRaUzhJNGJ3S2tSZ0ZZbm4rYzkKbzIwd2F6QU1CZ05WSFJNQkFmOEVBakFBTUE0R0ExVWREd0VCL3dRRUF3SUZvREFnQmdOVkhTVUJBZjhFRmpBVQpCZ2dyQmdFRkJRY0RBZ1lJS3dZQkJRVUhBd0V3S1FZRFZSME9CQ0lFSU1MNVZEMzZRWk5maVF3SjlrVml0YWR6CjZHRzI2cTVUT2drbG5QQXFaQ2JUTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEVEhpK0lXbnQyN3FONE5vWDMKa05QYjdlRkF4Mnk4REl3SjllT1BEcDNTaFFJZ1h2SWFoZ2xrVG50QnNYL3dleHA3ek5VeHI1KzU3RmQ4S2wvYwpZZDFvWmljPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "mspid": "sys--mon" + }, + "nonce": "c1EsuNQD1jha99UUn18TivaGynSJzR5g" + } + }, + { + "signature": "MEQCIFp47Absp+RBqd/kre4LhvmZ+MCSp9bFQZF1ohEpmQtyAiBpwUoDKXcUjOyk5UgwWtWbtETMWr3VdXMZLZkjK04A3A==", + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNFVENDQWJlZ0F3SUJBZ0lRZiszdDJXVC9rdTdxQU9WTUQ4L0lTREFLQmdncWhrak9QUVFEQWpCR01Rc3cKQ1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFQ2d3SFMyRnNaV2xrYnpFVApNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EYzBNRm9ZRHpJd016SXdNVEEwCk1UVXdOelF3V2pCY01Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUUKQ2d3SFMyRnNaV2xrYnpFT01Bd0dBMVVFQ3d3RllXUnRhVzR4R1RBWEJnTlZCQU1NRUhVd1ltUm9NVzVrYjNFdApZV1J0YVc0d1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRUy9HZzYxdkw5cnhkdUNKd2dkTVI0ClZPbUJTMzVDSDhDeTRPdXFXZk82VU9ueWwyVmU5a3gvKzBkQWpVV0l6dkFSTmRaUzhJNGJ3S2tSZ0ZZbm4rYzkKbzIwd2F6QU1CZ05WSFJNQkFmOEVBakFBTUE0R0ExVWREd0VCL3dRRUF3SUZvREFnQmdOVkhTVUJBZjhFRmpBVQpCZ2dyQmdFRkJRY0RBZ1lJS3dZQkJRVUhBd0V3S1FZRFZSME9CQ0lFSU1MNVZEMzZRWk5maVF3SjlrVml0YWR6CjZHRzI2cTVUT2drbG5QQXFaQ2JUTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEVEhpK0lXbnQyN3FONE5vWDMKa05QYjdlRkF4Mnk4REl3SjllT1BEcDNTaFFJZ1h2SWFoZ2xrVG50QnNYL3dleHA3ek5VeHI1KzU3RmQ4S2wvYwpZZDFvWmljPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "mspid": "sys--mon" + }, + "nonce": "29DLTJCtS4Y9WlJTABkzKK2PfTZchb13" + } + } + ] + }, + "header": { + "channel_header": { + "channel_id": "default-channel", + "epoch": "0", + "extension": null, + "timestamp": "2022-01-04T15:11:14Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 2, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNFVENDQWJlZ0F3SUJBZ0lRZiszdDJXVC9rdTdxQU9WTUQ4L0lTREFLQmdncWhrak9QUVFEQWpCR01Rc3cKQ1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFQ2d3SFMyRnNaV2xrYnpFVApNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EYzBNRm9ZRHpJd016SXdNVEEwCk1UVXdOelF3V2pCY01Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUUKQ2d3SFMyRnNaV2xrYnpFT01Bd0dBMVVFQ3d3RllXUnRhVzR4R1RBWEJnTlZCQU1NRUhVd1ltUm9NVzVrYjNFdApZV1J0YVc0d1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRUy9HZzYxdkw5cnhkdUNKd2dkTVI0ClZPbUJTMzVDSDhDeTRPdXFXZk82VU9ueWwyVmU5a3gvKzBkQWpVV0l6dkFSTmRaUzhJNGJ3S2tSZ0ZZbm4rYzkKbzIwd2F6QU1CZ05WSFJNQkFmOEVBakFBTUE0R0ExVWREd0VCL3dRRUF3SUZvREFnQmdOVkhTVUJBZjhFRmpBVQpCZ2dyQmdFRkJRY0RBZ1lJS3dZQkJRVUhBd0V3S1FZRFZSME9CQ0lFSU1MNVZEMzZRWk5maVF3SjlrVml0YWR6CjZHRzI2cTVUT2drbG5QQXFaQ2JUTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEVEhpK0lXbnQyN3FONE5vWDMKa05QYjdlRkF4Mnk4REl3SjllT1BEcDNTaFFJZ1h2SWFoZ2xrVG50QnNYL3dleHA3ek5VeHI1KzU3RmQ4S2wvYwpZZDFvWmljPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==", + "mspid": "sys--mon" + }, + "nonce": "LSOcSaQjYSQ8CumQz6WUouWWUil9GVLV" + } + } + }, + "signature": "MEQCIHivmB1S4v4wHazD4/HYIt6jGY4NK9v2b6gTKBoTCM7QAiBJX56eg5cNFt0cD687lKyjUKyxgLGz60K3omXXyH3XSw==" + } + }, + "header": { + "channel_header": { + "channel_id": "default-channel", + "epoch": "0", + "extension": null, + "timestamp": "2022-01-04T15:11:14Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 1, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNEVENDQWJPZ0F3SUJBZ0lRZm1xeTJIMVpLRkxUZXpKQWZqVUFnakFLQmdncWhrak9QUVFEQWpCR01Rc3cKQ1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFQnd3SFVtRnNaV2xuYURFUU1BNEdBMVVFQ2d3SFMyRnNaV2xrYnpFVApNQkVHQTFVRUF3d0tkVEIzY21ob2NYUTFkekFpR0E4eU1ESXlNREV3TkRFMU1EY3pPVm9ZRHpJd016SXdNVEEwCk1UVXdOek01V2pCWU1Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUUKQ2d3SFMyRnNaV2xrYnpFUU1BNEdBMVVFQ3d3SGIzSmtaWEpsY2pFVE1CRUdBMVVFQXd3S2RUQmlaR2d4Ym1SdgpjVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTk9GWHIwZXFYekFZM3BBc3Y0ZzZQNTExYTlnCkJtYzhRTkpaTmhzM3B5QlZ1VWZRbk15bVNjaE5PVmhzUkFCREtvOTlCM2c2aU5TUXZQY0VYSGZ2ZWJTamJUQnIKTUF3R0ExVWRFd0VCL3dRQ01BQXdEZ1lEVlIwUEFRSC9CQVFEQWdXZ01DQUdBMVVkSlFFQi93UVdNQlFHQ0NzRwpBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQXBCZ05WSFE0RUlnUWdENmQ1VkpjUzl3c2FGYWRDOFo3aXR5WnIyZk83CmNnM05sRW1wbzNuQm1jVXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTTdHSlVYeTdKbkg2djU3NC96aTFhbTgKWjMzRzFGUFFwUEs2eHUxR3hRN3VBaUJVTHFSNmkySml4N1JvMmJnT1UwK2NDVmxobnRwYVFFbkhQMTh4endtaQp6QT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "sys--mon" + }, + "nonce": "RJGs6S4bQnpDdjkbeof06PrZJaOMahr3" + } + } + }, + "signature": "MEUCIQCif9/luetvRL6qc7wTuVR4ofqkFqudT8duvvU33s7SDgIgPT7sWzmJ7Ch2YbrG4/K1ZXdyrWN3615pOq3v7Jcqz5A=" + } + ] + }, + "header": { + "data_hash": "qGyMqEK/tlGXtUHMLVR+aEDiaVscybAuWZZAg8Z4ipM=", + "number": "1", + "previous_hash": "apUUii+Y4Op8oDXllZeG6jXoQjfqFzUJeahrUauqT1E=" + }, + "metadata": { + "metadata": [ + "Cg4KAggBEggKBgoCAQIQAxL7BgqwBgqTBgoIc3lzLS1tb24ShgYtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ0RUQ0NBYk9nQXdJQkFnSVFmbXF5MkgxWktGTFRlekpBZmpVQWdqQUtCZ2dxaGtqT1BRUURBakJHTVFzdwpDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVCd3dIVW1Gc1pXbG5hREVRTUE0R0ExVUVDZ3dIUzJGc1pXbGtiekVUCk1CRUdBMVVFQXd3S2RUQjNjbWhvY1hRMWR6QWlHQTh5TURJeU1ERXdOREUxTURjek9Wb1lEekl3TXpJd01UQTAKTVRVd056TTVXakJZTVFzd0NRWURWUVFHRXdKVlV6RVFNQTRHQTFVRUJ3d0hVbUZzWldsbmFERVFNQTRHQTFVRQpDZ3dIUzJGc1pXbGtiekVRTUE0R0ExVUVDd3dIYjNKa1pYSmxjakVUTUJFR0ExVUVBd3dLZFRCaVpHZ3hibVJ2CmNUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJOT0ZYcjBlcVh6QVkzcEFzdjRnNlA1MTFhOWcKQm1jOFFOSlpOaHMzcHlCVnVVZlFuTXltU2NoTk9WaHNSQUJES285OUIzZzZpTlNRdlBjRVhIZnZlYlNqYlRCcgpNQXdHQTFVZEV3RUIvd1FDTUFBd0RnWURWUjBQQVFIL0JBUURBZ1dnTUNBR0ExVWRKUUVCL3dRV01CUUdDQ3NHCkFRVUZCd01DQmdnckJnRUZCUWNEQVRBcEJnTlZIUTRFSWdRZ0Q2ZDVWSmNTOXdzYUZhZEM4WjdpdHlacjJmTzcKY2czTmxFbXBvM25CbWNVd0NnWUlLb1pJemowRUF3SURTQUF3UlFJaEFNN0dKVVh5N0puSDZ2NTc0L3ppMWFtOApaMzNHMUZQUXBQSzZ4dTFHeFE3dUFpQlVMcVI2aTJKaXg3Um8yYmdPVTArY0NWbGhudHBhUUVuSFAxOHh6d21pCnpBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoSGPQGxnh+2sHppcnJtSzltxSCXnNniJqAzxJGMEQCIGLP71sv96yGs/IeUlPaUFsFxq28Y6P//b9KQA/AMVzjAiB1a8S7F7LIRQHU3GtOp9PuS1Sw0gbM5ADZwOWHl9wXNQ==", + "CgIIAQ==", + "AA==", + "", + "CiBH3FQMlM63BKI4dcESc+FrsLioeu2E3pEfITNWgRXyVA==" + ] + } +} diff --git a/test/resources/genesis.block b/test/resources/genesis.block deleted file mode 100644 index 02de111662fd9eccf203b1aeac9a2567e5e1b390..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9282 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 diff --git a/test/resources/block-2.bin b/test/resources/tx-event.block similarity index 100% rename from test/resources/block-2.bin rename to test/resources/tx-event.block diff --git a/test/resources/block-2.json b/test/resources/tx-event.json similarity index 100% rename from test/resources/block-2.json rename to test/resources/tx-event.json