From e0c5190e1db392f3a4547ebae2100a4183cecc8f Mon Sep 17 00:00:00 2001 From: Baohua Yang Date: Fri, 12 Aug 2022 11:46:47 -0700 Subject: [PATCH] Add fabric v2.2.8 --- hyperledger_fabric/README.md | 3 +- hyperledger_fabric/test/fetch-config-block.sh | 2 +- hyperledger_fabric/v2.2.8/.env | 4 + hyperledger_fabric/v2.2.8/Makefile | 322 ++++ hyperledger_fabric/v2.2.8/base-event.yaml | 78 + hyperledger_fabric/v2.2.8/base-raft.yaml | 232 +++ hyperledger_fabric/v2.2.8/base.yaml | 149 ++ .../example.com/ca/IssuerPublicKey | Bin 0 -> 843 bytes .../example.com/ca/IssuerRevocationPublicKey | 5 + .../example.com/ca/ca.example.com-cert.pem | 14 + .../example.com/ca/ca.example.com_sk | 5 + .../ca/fabric-ca-server-config.yaml | 134 ++ .../example.com/ca/fabric-ca-server.db | Bin 0 -> 61440 bytes ...8d4bf2e735befe20a1138c57cdd2b74c48da14d_sk | 5 + .../msp/keystore/IssuerRevocationPrivateKey | 6 + .../ca/msp/keystore/IssuerSecretKey | 1 + .../example.com/tlsca/IssuerPublicKey | Bin 0 -> 843 bytes .../tlsca/IssuerRevocationPublicKey | 5 + .../tlsca/fabric-ca-server-config.yaml | 134 ++ .../example.com/tlsca/fabric-ca-server.db | Bin 0 -> 61440 bytes ...7fb743d43988f16fa0b8a1ff6cc6bea7c863162_sk | 5 + .../msp/keystore/IssuerRevocationPrivateKey | 6 + .../tlsca/msp/keystore/IssuerSecretKey | Bin 0 -> 32 bytes .../tlsca/tlsca.example.com-cert.pem | 14 + .../example.com/tlsca/tlsca.example.com_sk | 5 + .../fabric-ca-client-config.yaml | 162 ++ ...a798a30ef7e72c099dc45d5af032767bc56db90_sk | 5 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../cacerts/tlsca-org1-example-com-7054.pem | 14 + ...7ae6ab6beed584000c446a5a22373fb366a4987_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../fabric-ca-client-config.yaml | 162 ++ ...333a68dd0a48c3f71df817b7ae26bb1bd42e86d_sk | 5 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../cacerts/tlsca-org1-example-com-7054.pem | 14 + ...87de44c9d630428d49fe82ac730959ada6d3eb7_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../fabric-ca-client-config.yaml | 162 ++ ...918cc736d8a92658e79ae92d42d30a7ac98f9a0_sk | 5 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../cacerts/tlsca-org1-example-com-7054.pem | 14 + ...a21ceba15d8a8c9797d683b2d1436889dda4e1d_sk | 5 + .../msp/signcerts/cert.pem | 16 + .../org1.example.com/ca/IssuerPublicKey | Bin 0 -> 843 bytes .../ca/IssuerRevocationPublicKey | 5 + .../ca/ca.org1.example.com-cert.pem | 14 + .../ca/ca.org1.example.com_sk | 5 + .../ca/fabric-ca-server-config.yaml | 134 ++ .../org1.example.com/ca/fabric-ca-server.db | Bin 0 -> 61440 bytes .../msp/keystore/IssuerRevocationPrivateKey | 6 + .../ca/msp/keystore/IssuerSecretKey | 1 + ...bbca7d9485e5f138aa75f4c82cd0f74c14b5e56_sk | 5 + .../fabric-ca-client-config.yaml | 162 ++ ...105fb7a47ae89aae2bb5a6d7fcd13b15a57a0e1_sk | 5 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../cacerts/tlsca-org1-example-com-7054.pem | 14 + ...e74f7dd8f37ec0aef715a96579fb8aa941f6f4e_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../fabric-ca-client-config.yaml | 162 ++ ...7b2de914ffa80eda3f97ba0f84ba3a6c9a4e892_sk | 5 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../cacerts/tlsca-org1-example-com-7054.pem | 14 + ...821de931526774ad9c6aa12865161208628bb4a_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../org1.example.com/tlsca/IssuerPublicKey | Bin 0 -> 843 bytes .../tlsca/IssuerRevocationPublicKey | 5 + .../tlsca/fabric-ca-server-config.yaml | 134 ++ .../tlsca/fabric-ca-server.db | Bin 0 -> 61440 bytes .../msp/keystore/IssuerRevocationPrivateKey | 6 + .../tlsca/msp/keystore/IssuerSecretKey | 1 + ...253fa86a004a246b452decd4f6aae2f1013583f_sk | 5 + .../tlsca/tlsca.org1.example.com-cert.pem | 14 + .../tlsca/tlsca.org1.example.com_sk | 5 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../msp/cacerts/ca-org2-example-com-7054.pem | 14 + ...882fffd5d689e95e249b1ea1c8da2b631f47fc9_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../cacerts/tlsca-org2-example-com-7054.pem | 14 + ...90da9b01265e5e06e555889ea72e8b1925271f6_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../msp/cacerts/ca-org2-example-com-7054.pem | 14 + ...0e74d67380e9ea6514c6620cf570f8caa27b9b9_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../cacerts/tlsca-org2-example-com-7054.pem | 14 + ...8cc6f90f9aa11513ab46453f26b2751fca86458_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../msp/cacerts/ca-org2-example-com-7054.pem | 14 + ...c4f7cd804ad237fd6759fc58d7bdfe070489749_sk | 5 + .../msp/signcerts/cert.pem | 16 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../cacerts/tlsca-org2-example-com-7054.pem | 14 + ...47c4bfba74bf006c94ec88d283e9d4850ba3c28_sk | 5 + .../msp/signcerts/cert.pem | 16 + .../org2.example.com/ca/IssuerPublicKey | Bin 0 -> 843 bytes .../ca/IssuerRevocationPublicKey | 5 + .../ca/ca.org2.example.com-cert.pem | 14 + .../ca/ca.org2.example.com_sk | 5 + .../ca/fabric-ca-server-config.yaml | 134 ++ .../org2.example.com/ca/fabric-ca-server.db | Bin 0 -> 61440 bytes ...3e73807cda5f167f219b0c7687bb06baf3b5e60_sk | 5 + .../msp/keystore/IssuerRevocationPrivateKey | 6 + .../ca/msp/keystore/IssuerSecretKey | 1 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../msp/cacerts/ca-org2-example-com-7054.pem | 14 + ...959dfd2ecaa5135b935a001a4164a19a04ef791_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../cacerts/tlsca-org2-example-com-7054.pem | 14 + ...7c3bd09974abc6156c0968ec242e31c90a3b22a_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../msp/cacerts/ca-org2-example-com-7054.pem | 14 + ...a630ece99c0354257389a79ee3d89b2043a4e51_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../fabric-ca-client-config.yaml | 162 ++ .../msp/IssuerPublicKey | Bin 0 -> 843 bytes .../msp/IssuerRevocationPublicKey | 5 + .../cacerts/tlsca-org2-example-com-7054.pem | 14 + ...46a489481db47142530f5acce617b92d911a9a8_sk | 5 + .../msp/signcerts/cert.pem | 19 + .../org2.example.com/tlsca/IssuerPublicKey | Bin 0 -> 843 bytes .../tlsca/IssuerRevocationPublicKey | 5 + .../tlsca/fabric-ca-server-config.yaml | 134 ++ .../tlsca/fabric-ca-server.db | Bin 0 -> 61440 bytes ...e6b0fa8845ef93eb7f2e9b801e11f5b07852aeb_sk | 5 + .../msp/keystore/IssuerRevocationPrivateKey | 6 + .../tlsca/msp/keystore/IssuerSecretKey | Bin 0 -> 32 bytes .../tlsca/tlsca.org2.example.com-cert.pem | 14 + .../tlsca/tlsca.org2.example.com_sk | 5 + .../v2.2.8/ca-test/docker-compose.yaml | 92 ++ hyperledger_fabric/v2.2.8/ca-test/run.sh | 12 + .../v2.2.8/ca-test/scripts/ca_server_start.sh | 54 + .../v2.2.8/ca-test/scripts/client-test.sh | 182 +++ .../v2.2.8/ca-test/scripts/env.sh | 166 ++ .../chaincodes/go/cc02_mockTest/README.md | 23 + .../chaincodes/go/cc02_mockTest/cc_test.go | 58 + .../go/cc02_mockTest/chaincode_example02.go | 200 +++ .../chaincode_example01.go | 105 ++ .../chaincode_example02.go | 193 +++ .../chaincode_example02_test.go | 113 ++ .../chaincodes/go/chaincode_example02/go.mod | 9 + .../chaincodes/go/chaincode_example02/go.sum | 56 + .../chaincode_example03.go | 100 ++ .../chaincode_example03_test.go | 72 + .../chaincode_example04.go | 174 ++ .../chaincode_example04_test.go | 119 ++ .../chaincode_example05.go | 215 +++ .../chaincode_example05_test.go | 128 ++ .../chaincodes/go/enccc_example/README.md | 80 + .../go/enccc_example/enccc_example.go | 223 +++ .../chaincodes/go/enccc_example/enccc_test.go | 234 +++ .../chaincodes/go/enccc_example/utils.go | 147 ++ .../chaincodes/go/eventsender/eventsender.go | 92 ++ .../invokereturnsvalue/invokereturnsvalue.go | 133 ++ .../invokereturnsvalue_test.go | 97 ++ .../v2.2.8/chaincodes/go/map/map.go | 200 +++ .../chaincodes/go/map/map_experimental.go | 311 ++++ .../go/marbles02/marbles_chaincode.go | 627 +++++++ .../marbles02_private/collections_config.json | 18 + .../collections_config_new.json | 16 + .../collectionMarbles/indexes/indexOwner.json | 1 + .../go/marbles_chaincode_private.go | 634 ++++++++ .../v2.2.8/chaincodes/go/passthru/passthru.go | 72 + .../v2.2.8/chaincodes/go/sleeper/sleeper.go | 124 ++ .../v2.2.8/chaincodes/go/utxo/Dockerfile | 40 + .../v2.2.8/chaincodes/go/utxo/README.md | 79 + .../v2.2.8/chaincodes/go/utxo/chaincode.go | 104 ++ .../chaincodes/go/utxo/consensus/consensus.go | 482 ++++++ .../go/utxo/consensus/consensus_wrap.cxx | 812 +++++++++ .../v2.2.8/chaincodes/go/utxo/store.go | 91 ++ ...ransactions_base64_encoded_on_testnet3.txt | 908 +++++++++++ ...for_first_500_transactions_on_testnet3.txt | 908 +++++++++++ .../v2.2.8/chaincodes/go/utxo/util/dah.pb.go | 197 +++ .../v2.2.8/chaincodes/go/utxo/util/dah.proto | 43 + .../v2.2.8/chaincodes/go/utxo/util/store.go | 72 + .../v2.2.8/chaincodes/go/utxo/util/util.go | 104 ++ .../v2.2.8/chaincodes/go/utxo/util/utxo.go | 144 ++ .../chaincodes/go/utxo/util/utxo_test.go | 206 +++ hyperledger_fabric/v2.2.8/crypto-config.yaml | 113 ++ .../example.com/ca/ca.example.com-cert.pem | 15 + .../example.com/ca/priv_sk | 5 + .../msp/cacerts/ca.example.com-cert.pem | 15 + .../example.com/msp/config.yaml | 14 + .../msp/tlscacerts/tlsca.example.com-cert.pem | 15 + .../msp/cacerts/ca.example.com-cert.pem | 15 + .../orderer0.example.com/msp/config.yaml | 14 + .../orderer0.example.com/msp/keystore/priv_sk | 5 + .../signcerts/orderer0.example.com-cert.pem | 14 + .../msp/tlscacerts/tlsca.example.com-cert.pem | 15 + .../orderers/orderer0.example.com/tls/ca.crt | 15 + .../orderer0.example.com/tls/server.crt | 15 + .../orderer0.example.com/tls/server.key | 5 + .../msp/cacerts/ca.example.com-cert.pem | 15 + .../orderer1.example.com/msp/config.yaml | 14 + .../orderer1.example.com/msp/keystore/priv_sk | 5 + .../signcerts/orderer1.example.com-cert.pem | 14 + .../msp/tlscacerts/tlsca.example.com-cert.pem | 15 + .../orderers/orderer1.example.com/tls/ca.crt | 15 + .../orderer1.example.com/tls/server.crt | 15 + .../orderer1.example.com/tls/server.key | 5 + .../msp/cacerts/ca.example.com-cert.pem | 15 + .../orderer2.example.com/msp/config.yaml | 14 + .../orderer2.example.com/msp/keystore/priv_sk | 5 + .../signcerts/orderer2.example.com-cert.pem | 14 + .../msp/tlscacerts/tlsca.example.com-cert.pem | 15 + .../orderers/orderer2.example.com/tls/ca.crt | 15 + .../orderer2.example.com/tls/server.crt | 15 + .../orderer2.example.com/tls/server.key | 5 + .../msp/cacerts/ca.example.com-cert.pem | 15 + .../orderer3.example.com/msp/config.yaml | 14 + .../orderer3.example.com/msp/keystore/priv_sk | 5 + .../signcerts/orderer3.example.com-cert.pem | 14 + .../msp/tlscacerts/tlsca.example.com-cert.pem | 15 + .../orderers/orderer3.example.com/tls/ca.crt | 15 + .../orderer3.example.com/tls/server.crt | 15 + .../orderer3.example.com/tls/server.key | 5 + .../example.com/tlsca/priv_sk | 5 + .../tlsca/tlsca.example.com-cert.pem | 15 + .../msp/cacerts/ca.example.com-cert.pem | 15 + .../users/Admin@example.com/msp/config.yaml | 14 + .../Admin@example.com/msp/keystore/priv_sk | 5 + .../msp/signcerts/Admin@example.com-cert.pem | 14 + .../msp/tlscacerts/tlsca.example.com-cert.pem | 15 + .../users/Admin@example.com/tls/ca.crt | 15 + .../users/Admin@example.com/tls/client.crt | 14 + .../users/Admin@example.com/tls/client.key | 5 + .../ca/ca.org1.example.com-cert.pem | 15 + .../org1.example.com/ca/priv_sk | 5 + .../msp/cacerts/ca.org1.example.com-cert.pem | 15 + .../org1.example.com/msp/config.yaml | 14 + .../tlsca.org1.example.com-cert.pem | 15 + .../msp/cacerts/ca.org1.example.com-cert.pem | 15 + .../peer0.org1.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/peer0.org1.example.com-cert.pem | 14 + .../tlsca.org1.example.com-cert.pem | 15 + .../peers/peer0.org1.example.com/tls/ca.crt | 15 + .../peer0.org1.example.com/tls/server.crt | 15 + .../peer0.org1.example.com/tls/server.key | 5 + .../msp/cacerts/ca.org1.example.com-cert.pem | 15 + .../peer1.org1.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/peer1.org1.example.com-cert.pem | 14 + .../tlsca.org1.example.com-cert.pem | 15 + .../peers/peer1.org1.example.com/tls/ca.crt | 15 + .../peer1.org1.example.com/tls/server.crt | 15 + .../peer1.org1.example.com/tls/server.key | 5 + .../org1.example.com/tlsca/priv_sk | 5 + .../tlsca/tlsca.org1.example.com-cert.pem | 15 + .../msp/cacerts/ca.org1.example.com-cert.pem | 15 + .../Admin@org1.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/Admin@org1.example.com-cert.pem | 14 + .../tlsca.org1.example.com-cert.pem | 15 + .../users/Admin@org1.example.com/tls/ca.crt | 15 + .../Admin@org1.example.com/tls/client.crt | 14 + .../Admin@org1.example.com/tls/client.key | 5 + .../msp/cacerts/ca.org1.example.com-cert.pem | 15 + .../User1@org1.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/User1@org1.example.com-cert.pem | 14 + .../tlsca.org1.example.com-cert.pem | 15 + .../users/User1@org1.example.com/tls/ca.crt | 15 + .../User1@org1.example.com/tls/client.crt | 14 + .../User1@org1.example.com/tls/client.key | 5 + .../ca/ca.org2.example.com-cert.pem | 15 + .../org2.example.com/ca/priv_sk | 5 + .../msp/cacerts/ca.org2.example.com-cert.pem | 15 + .../org2.example.com/msp/config.yaml | 14 + .../tlsca.org2.example.com-cert.pem | 15 + .../msp/cacerts/ca.org2.example.com-cert.pem | 15 + .../peer0.org2.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/peer0.org2.example.com-cert.pem | 14 + .../tlsca.org2.example.com-cert.pem | 15 + .../peers/peer0.org2.example.com/tls/ca.crt | 15 + .../peer0.org2.example.com/tls/server.crt | 15 + .../peer0.org2.example.com/tls/server.key | 5 + .../msp/cacerts/ca.org2.example.com-cert.pem | 15 + .../peer1.org2.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/peer1.org2.example.com-cert.pem | 14 + .../tlsca.org2.example.com-cert.pem | 15 + .../peers/peer1.org2.example.com/tls/ca.crt | 15 + .../peer1.org2.example.com/tls/server.crt | 15 + .../peer1.org2.example.com/tls/server.key | 5 + .../org2.example.com/tlsca/priv_sk | 5 + .../tlsca/tlsca.org2.example.com-cert.pem | 15 + .../msp/cacerts/ca.org2.example.com-cert.pem | 15 + .../Admin@org2.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/Admin@org2.example.com-cert.pem | 14 + .../tlsca.org2.example.com-cert.pem | 15 + .../users/Admin@org2.example.com/tls/ca.crt | 15 + .../Admin@org2.example.com/tls/client.crt | 14 + .../Admin@org2.example.com/tls/client.key | 5 + .../msp/cacerts/ca.org2.example.com-cert.pem | 15 + .../User1@org2.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/User1@org2.example.com-cert.pem | 14 + .../tlsca.org2.example.com-cert.pem | 15 + .../users/User1@org2.example.com/tls/ca.crt | 15 + .../User1@org2.example.com/tls/client.crt | 14 + .../User1@org2.example.com/tls/client.key | 5 + .../ca/ca.org3.example.com-cert.pem | 15 + .../org3.example.com/ca/priv_sk | 5 + .../msp/cacerts/ca.org3.example.com-cert.pem | 15 + .../org3.example.com/msp/config.yaml | 14 + .../tlsca.org3.example.com-cert.pem | 15 + .../msp/cacerts/ca.org3.example.com-cert.pem | 15 + .../peer0.org3.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/peer0.org3.example.com-cert.pem | 14 + .../tlsca.org3.example.com-cert.pem | 15 + .../peers/peer0.org3.example.com/tls/ca.crt | 15 + .../peer0.org3.example.com/tls/server.crt | 16 + .../peer0.org3.example.com/tls/server.key | 5 + .../msp/cacerts/ca.org3.example.com-cert.pem | 15 + .../peer1.org3.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/peer1.org3.example.com-cert.pem | 14 + .../tlsca.org3.example.com-cert.pem | 15 + .../peers/peer1.org3.example.com/tls/ca.crt | 15 + .../peer1.org3.example.com/tls/server.crt | 16 + .../peer1.org3.example.com/tls/server.key | 5 + .../org3.example.com/tlsca/priv_sk | 5 + .../tlsca/tlsca.org3.example.com-cert.pem | 15 + .../msp/cacerts/ca.org3.example.com-cert.pem | 15 + .../Admin@org3.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/Admin@org3.example.com-cert.pem | 14 + .../tlsca.org3.example.com-cert.pem | 15 + .../users/Admin@org3.example.com/tls/ca.crt | 15 + .../Admin@org3.example.com/tls/client.crt | 14 + .../Admin@org3.example.com/tls/client.key | 5 + .../msp/cacerts/ca.org3.example.com-cert.pem | 15 + .../User1@org3.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/User1@org3.example.com-cert.pem | 14 + .../tlsca.org3.example.com-cert.pem | 15 + .../users/User1@org3.example.com/tls/ca.crt | 15 + .../User1@org3.example.com/tls/client.crt | 14 + .../User1@org3.example.com/tls/client.key | 5 + .../docker-compose-2orgs-4peers-couchdb.yaml | 107 ++ .../docker-compose-2orgs-4peers-dev.yaml | 93 ++ .../docker-compose-2orgs-4peers-event.yaml | 59 + .../docker-compose-2orgs-4peers-raft.yaml | 90 + .../v2.2.8/explorer-artifacts/config.json | 57 + .../explorer-artifacts/fabricexplorer.sql | 115 ++ .../v2.2.8/gateway-java/auto.sh | 11 + .../v2.2.8/gateway-java/connection.yaml | 80 + .../v2.2.8/gateway-java/pom.xml | 86 + .../main/java/sample/ConfigProperties.java | 57 + .../src/main/java/sample/Sample.java | 110 ++ .../v2.2.8/gateway-java/wallet/admin.id | 1 + .../v2.2.8/gateway-java/wallet/test-admin.id | 1 + hyperledger_fabric/v2.2.8/network_config.json | 65 + .../v2.2.8/network_generator/__init__.py | 0 .../network_generator/config_manager.py | 6 + .../v2.2.8/network_generator/network.py | 13 + .../network_generator/network_generator.py | 242 +++ .../v2.2.8/network_generator/node.py | 15 + .../v2.2.8/network_generator/orderer.py | 9 + .../v2.2.8/network_generator/requirements.txt | 6 + hyperledger_fabric/v2.2.8/orderer.yaml | 36 + hyperledger_fabric/v2.2.8/org3/configtx.yaml | 54 + .../v2.2.8/org3/crypto-config.yaml | 23 + .../ca/ca.org3.example.com-cert.pem | 15 + .../org3.example.com/ca/priv_sk | 5 + .../msp/cacerts/ca.org3.example.com-cert.pem | 15 + .../org3.example.com/msp/config.yaml | 14 + .../tlsca.org3.example.com-cert.pem | 15 + .../msp/cacerts/ca.org3.example.com-cert.pem | 15 + .../peer0.org3.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/peer0.org3.example.com-cert.pem | 14 + .../tlsca.org3.example.com-cert.pem | 15 + .../peers/peer0.org3.example.com/tls/ca.crt | 15 + .../peer0.org3.example.com/tls/server.crt | 16 + .../peer0.org3.example.com/tls/server.key | 5 + .../msp/cacerts/ca.org3.example.com-cert.pem | 15 + .../peer1.org3.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/peer1.org3.example.com-cert.pem | 14 + .../tlsca.org3.example.com-cert.pem | 15 + .../peers/peer1.org3.example.com/tls/ca.crt | 15 + .../peer1.org3.example.com/tls/server.crt | 16 + .../peer1.org3.example.com/tls/server.key | 5 + .../org3.example.com/tlsca/priv_sk | 5 + .../tlsca/tlsca.org3.example.com-cert.pem | 15 + .../msp/cacerts/ca.org3.example.com-cert.pem | 15 + .../Admin@org3.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/Admin@org3.example.com-cert.pem | 14 + .../tlsca.org3.example.com-cert.pem | 15 + .../users/Admin@org3.example.com/tls/ca.crt | 15 + .../Admin@org3.example.com/tls/client.crt | 14 + .../Admin@org3.example.com/tls/client.key | 5 + .../msp/cacerts/ca.org3.example.com-cert.pem | 15 + .../User1@org3.example.com/msp/config.yaml | 14 + .../msp/keystore/priv_sk | 5 + .../signcerts/User1@org3.example.com-cert.pem | 14 + .../tlsca.org3.example.com-cert.pem | 15 + .../users/User1@org3.example.com/tls/ca.crt | 15 + .../User1@org3.example.com/tls/client.crt | 14 + .../User1@org3.example.com/tls/client.key | 5 + hyperledger_fabric/v2.2.8/peer.yaml | 37 + hyperledger_fabric/v2.2.8/prometheus.yml | 45 + hyperledger_fabric/v2.2.8/raft/README.md | 8 + .../raft/channel-artifacts/Org1MSP.json | 170 ++ .../raft/channel-artifacts/Org1MSPanchors.tx | Bin 0 -> 324 bytes .../raft/channel-artifacts/Org2MSP.json | 170 ++ .../raft/channel-artifacts/Org2MSPanchors.tx | Bin 0 -> 324 bytes .../raft/channel-artifacts/Org3MSP.json | 170 ++ .../raft/channel-artifacts/businesschannel.tx | Bin 0 -> 1598 bytes .../channel-artifacts/businesschannel.tx.json | 230 +++ .../channel-artifacts/businesschannel_0.block | Bin 0 -> 28615 bytes .../businesschannel_0.block.json | 1132 +++++++++++++ .../businesschannel_0.block.json-flat.json | 411 +++++ .../channel-artifacts/businesschannel_1.block | Bin 0 -> 28376 bytes .../businesschannel_1.block.json | 1051 ++++++++++++ .../businesschannel_1.block.json-flat.json | 391 +++++ .../channel-artifacts/businesschannel_2.block | Bin 0 -> 28434 bytes .../businesschannel_2.block.json | 1063 ++++++++++++ .../businesschannel_2.block.json-flat.json | 395 +++++ .../channel-artifacts/businesschannel_3.block | Bin 0 -> 4772 bytes .../businesschannel_3.block.json | 156 ++ .../businesschannel_3.block.json-flat.json | 55 + .../channel-artifacts/businesschannel_4.block | Bin 0 -> 4774 bytes .../businesschannel_4.block.json | 156 ++ .../businesschannel_4.block.json-flat.json | 55 + .../channel-artifacts/businesschannel_5.block | Bin 0 -> 5756 bytes .../businesschannel_5.block.json | 191 +++ .../businesschannel_5.block.json-flat.json | 75 + .../channel-artifacts/businesschannel_6.block | Bin 0 -> 4079 bytes .../businesschannel_6.block.json | 168 ++ .../businesschannel_6.block.json-flat.json | Bin 0 -> 10325 bytes .../channel-artifacts/businesschannel_7.block | Bin 0 -> 4069 bytes .../businesschannel_7.block.json | 179 ++ .../businesschannel_7.block.json-flat.json | Bin 0 -> 10754 bytes .../channel-artifacts/businesschannel_8.block | Bin 0 -> 4068 bytes .../businesschannel_8.block.json | 179 ++ .../businesschannel_8.block.json-flat.json | Bin 0 -> 10754 bytes .../channel-artifacts/businesschannel_9.block | Bin 0 -> 41462 bytes .../businesschannel_9.block.json | 1445 +++++++++++++++++ .../businesschannel_9.block.json-flat.json | 527 ++++++ .../businesschannel_config.block | Bin 0 -> 41462 bytes .../businesschannel_config.block.json | 1445 +++++++++++++++++ ...usinesschannel_config.block.json-flat.json | 527 ++++++ .../raft/channel-artifacts/config_delta.json | 308 ++++ .../raft/channel-artifacts/config_delta.pb | Bin 0 -> 5900 bytes .../channel-artifacts/config_delta_env.json | 320 ++++ .../channel-artifacts/config_delta_env.pb | Bin 0 -> 8727 bytes .../channel-artifacts/orderer0.genesis.block | Bin 0 -> 23084 bytes .../orderer0.genesis.block.json | 783 +++++++++ .../orderer0.genesis.block.json-flat.json | 285 ++++ .../orderer0.genesis.block_updated.block | Bin 0 -> 23083 bytes .../orderer0.genesis.block_updated.json | 783 +++++++++ .../channel-artifacts/orderer1.genesis.block | Bin 0 -> 23084 bytes .../orderer1.genesis.block.json | 783 +++++++++ .../orderer1.genesis.block.json-flat.json | 285 ++++ .../channel-artifacts/orderer2.genesis.block | Bin 0 -> 23084 bytes .../orderer2.genesis.block.json | 783 +++++++++ .../orderer2.genesis.block.json-flat.json | 285 ++++ .../channel-artifacts/original_config.json | 863 ++++++++++ .../raft/channel-artifacts/original_config.pb | Bin 0 -> 24260 bytes .../channel-artifacts/testchainid_0.block | Bin 0 -> 23084 bytes .../testchainid_0.block.json | 783 +++++++++ .../testchainid_0.block.json-flat.json | 285 ++++ .../channel-artifacts/testchainid_1.block | Bin 0 -> 30535 bytes .../testchainid_1.block.json | 1156 +++++++++++++ .../testchainid_1.block.json-flat.json | 423 +++++ .../testchainid_config.block | Bin 0 -> 23084 bytes .../testchainid_config.block.json | 783 +++++++++ .../testchainid_config.block.json-flat.json | 285 ++++ .../channel-artifacts/updated_config.json | 1033 ++++++++++++ .../raft/channel-artifacts/updated_config.pb | Bin 0 -> 29811 bytes hyperledger_fabric/v2.2.8/raft/configtx.yaml | 837 ++++++++++ .../scripts/configtxgen_channelArtifacts.sh | 80 + .../scripts/cryptogen_cryptoArtifacts.sh | 37 + .../v2.2.8/scripts/download_images.sh | 62 + .../v2.2.8/scripts/env_cleanup.sh | 17 + .../v2.2.8/scripts/env_setup.sh | 29 + hyperledger_fabric/v2.2.8/scripts/func.sh | 1103 +++++++++++++ .../v2.2.8/scripts/gen_channel_artifacts.sh | 44 + .../v2.2.8/scripts/gen_crypto_artifacts.sh | 41 + .../v2.2.8/scripts/init_chaincode_dev.sh | 67 + .../v2.2.8/scripts/initialize_peer0.sh | 40 + .../v2.2.8/scripts/json_flatter.py | 105 ++ .../v2.2.8/scripts/start_eventsclient.sh | 23 + .../v2.2.8/scripts/test_cc_approveformyorg.sh | 24 + .../scripts/test_cc_checkcommitreadiness.sh | 24 + .../v2.2.8/scripts/test_cc_commit.sh | 23 + .../v2.2.8/scripts/test_cc_getinstalled.sh | 23 + .../v2.2.8/scripts/test_cc_install.sh | 26 + .../v2.2.8/scripts/test_cc_instantiate.sh | 23 + .../v2.2.8/scripts/test_cc_invoke_query.sh | 43 + .../v2.2.8/scripts/test_cc_list.sh | 16 + .../v2.2.8/scripts/test_cc_peer0.sh | 32 + .../v2.2.8/scripts/test_cc_queryapproved.sh | 23 + .../v2.2.8/scripts/test_cc_querycommitted.sh | 24 + .../v2.2.8/scripts/test_cc_queryinstalled.sh | 21 + .../v2.2.8/scripts/test_cc_upgrade.sh | 32 + .../v2.2.8/scripts/test_channel_create.sh | 22 + .../v2.2.8/scripts/test_channel_getinfo.sh | 23 + .../v2.2.8/scripts/test_channel_join.sh | 21 + .../v2.2.8/scripts/test_channel_list.sh | 21 + .../v2.2.8/scripts/test_channel_update.sh | 43 + .../v2.2.8/scripts/test_configtxlator.sh | 63 + .../v2.2.8/scripts/test_cscc.sh | 30 + .../v2.2.8/scripts/test_fetch_blocks.sh | 23 + .../v2.2.8/scripts/test_gen_add_org3_tx.sh | 97 ++ .../v2.2.8/scripts/test_lscc.sh | 66 + .../v2.2.8/scripts/test_qscc.sh | 35 + .../v2.2.8/scripts/test_sideDB.sh | 68 + .../v2.2.8/scripts/test_temp.sh | 29 + .../v2.2.8/scripts/test_update_anchors.sh | 19 + .../v2.2.8/scripts/variables.sh | 146 ++ .../v2.2.8/sdk-node/connection-profile.json | 82 + .../v2.2.8/sdk-node/connection-profile.yaml | 69 + .../v2.2.8/sdk-node/createWallet.js | 38 + .../v2.2.8/sdk-node/getBlockchainInfo.js | 153 ++ .../v2.2.8/sdk-node/invokeChaincode.js | 73 + .../v2.2.8/sdk-node/package.json | 18 + .../v2.2.8/sdk-node/queryChaincode.js | 155 ++ 557 files changed, 43669 insertions(+), 2 deletions(-) create mode 100644 hyperledger_fabric/v2.2.8/.env create mode 100644 hyperledger_fabric/v2.2.8/Makefile create mode 100644 hyperledger_fabric/v2.2.8/base-event.yaml create mode 100644 hyperledger_fabric/v2.2.8/base-raft.yaml create mode 100644 hyperledger_fabric/v2.2.8/base.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/ca.example.com_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/fabric-ca-server-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/fabric-ca-server.db create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/msp/keystore/05f1c88abe3ae35edf814c2d68d4bf2e735befe20a1138c57cdd2b74c48da14d_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/msp/keystore/IssuerRevocationPrivateKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/msp/keystore/IssuerSecretKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/fabric-ca-server-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/fabric-ca-server.db create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/msp/keystore/3295981bd696e06db41db48b17fb743d43988f16fa0b8a1ff6cc6bea7c863162_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/msp/keystore/IssuerRevocationPrivateKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/msp/keystore/IssuerSecretKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@ca.org1.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@ca.org1.example.com/msp/keystore/73cc881ad56def29c760c1bb0a798a30ef7e72c099dc45d5af032767bc56db90_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/keystore/44ac4b3d7f237351157123fe27ae6ab6beed584000c446a5a22373fb366a4987_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@ca.org1.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@ca.org1.example.com/msp/keystore/cfdbc7a7f70d040af5879f1b7333a68dd0a48c3f71df817b7ae26bb1bd42e86d_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/keystore/c193ca45e88d8a6602450a05c87de44c9d630428d49fe82ac730959ada6d3eb7_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@ca.org1.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@ca.org1.example.com/msp/keystore/34e439a8c5fb85419ae4bb629918cc736d8a92658e79ae92d42d30a7ac98f9a0_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/keystore/8536a2b7d0da5fc40122f75d0a21ceba15d8a8c9797d683b2d1436889dda4e1d_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/fabric-ca-server-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/fabric-ca-server.db create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/msp/keystore/IssuerRevocationPrivateKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/msp/keystore/IssuerSecretKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/msp/keystore/b089a01c9180d928900a3d03fbbca7d9485e5f138aa75f4c82cd0f74c14b5e56_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@ca.org1.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@ca.org1.example.com/msp/keystore/572d73d7a08d9992a2e3024a6105fb7a47ae89aae2bb5a6d7fcd13b15a57a0e1_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/keystore/45b0f55480bae0cc9882a3563e74f7dd8f37ec0aef715a96579fb8aa941f6f4e_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@ca.org1.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@ca.org1.example.com/msp/keystore/484740728e8bf55fe3364ea317b2de914ffa80eda3f97ba0f84ba3a6c9a4e892_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/keystore/7f968e1134e56a058245eba2f821de931526774ad9c6aa12865161208628bb4a_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/fabric-ca-server-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/fabric-ca-server.db create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/msp/keystore/IssuerRevocationPrivateKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/msp/keystore/IssuerSecretKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/msp/keystore/c5dbb6f8b9c60fd02eaa67d59253fa86a004a246b452decd4f6aae2f1013583f_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/keystore/56f4dfd8ed402361df82f0b52882fffd5d689e95e249b1ea1c8da2b631f47fc9_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@tlsca.org2.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@tlsca.org2.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@tlsca.org2.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@tlsca.org2.example.com/msp/cacerts/tlsca-org2-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@tlsca.org2.example.com/msp/keystore/838272d7e4bcce70c0f465ccc90da9b01265e5e06e555889ea72e8b1925271f6_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@tlsca.org2.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/keystore/f135965b31ce005ce936b9b710e74d67380e9ea6514c6620cf570f8caa27b9b9_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@tlsca.org2.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@tlsca.org2.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@tlsca.org2.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@tlsca.org2.example.com/msp/cacerts/tlsca-org2-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@tlsca.org2.example.com/msp/keystore/9b123a706dc6ebe86e44dac468cc6f90f9aa11513ab46453f26b2751fca86458_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@tlsca.org2.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/keystore/aa805db6dcb6fb4da673f5a04c4f7cd804ad237fd6759fc58d7bdfe070489749_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@tlsca.org2.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@tlsca.org2.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@tlsca.org2.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@tlsca.org2.example.com/msp/cacerts/tlsca-org2-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@tlsca.org2.example.com/msp/keystore/7a4420664b066c549cf1a30b247c4bfba74bf006c94ec88d283e9d4850ba3c28_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@tlsca.org2.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/fabric-ca-server-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/fabric-ca-server.db create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/msp/keystore/6fa68ee91c7b1584ed81827073e73807cda5f167f219b0c7687bb06baf3b5e60_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/msp/keystore/IssuerRevocationPrivateKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/msp/keystore/IssuerSecretKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/keystore/ffeeedde30216824902d1339d959dfd2ecaa5135b935a001a4164a19a04ef791_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@tlsca.org2.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@tlsca.org2.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@tlsca.org2.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@tlsca.org2.example.com/msp/cacerts/tlsca-org2-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@tlsca.org2.example.com/msp/keystore/063ffaae647ace1302ffa661a7c3bd09974abc6156c0968ec242e31c90a3b22a_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@tlsca.org2.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/keystore/06b52b2b721d0d0914d5133eaa630ece99c0354257389a79ee3d89b2043a4e51_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@tlsca.org2.example.com/fabric-ca-client-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@tlsca.org2.example.com/msp/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@tlsca.org2.example.com/msp/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@tlsca.org2.example.com/msp/cacerts/tlsca-org2-example-com-7054.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@tlsca.org2.example.com/msp/keystore/99c61eb8924af634e48b559c346a489481db47142530f5acce617b92d911a9a8_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@tlsca.org2.example.com/msp/signcerts/cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/IssuerPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/IssuerRevocationPublicKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/fabric-ca-server-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/fabric-ca-server.db create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/msp/keystore/290d8e2b87492d1502dc438a9e6b0fa8845ef93eb7f2e9b801e11f5b07852aeb_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/msp/keystore/IssuerRevocationPrivateKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/msp/keystore/IssuerSecretKey create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com_sk create mode 100644 hyperledger_fabric/v2.2.8/ca-test/docker-compose.yaml create mode 100644 hyperledger_fabric/v2.2.8/ca-test/run.sh create mode 100644 hyperledger_fabric/v2.2.8/ca-test/scripts/ca_server_start.sh create mode 100644 hyperledger_fabric/v2.2.8/ca-test/scripts/client-test.sh create mode 100644 hyperledger_fabric/v2.2.8/ca-test/scripts/env.sh create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/README.md create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/cc_test.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/chaincode_example02.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example01/chaincode_example01.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/chaincode_example02.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/chaincode_example02_test.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/go.mod create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/go.sum create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example03/chaincode_example03.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example03/chaincode_example03_test.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example04/chaincode_example04.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example04/chaincode_example04_test.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example05/chaincode_example05.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example05/chaincode_example05_test.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/README.md create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/enccc_example.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/enccc_test.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/utils.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/eventsender/eventsender.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/invokereturnsvalue/invokereturnsvalue.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/invokereturnsvalue/invokereturnsvalue_test.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/map/map.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/map/map_experimental.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/marbles02/marbles_chaincode.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/collections_config.json create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/collections_config_new.json create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/go/META-INF/statedb/couchdb/collections/collectionMarbles/indexes/indexOwner.json create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/go/marbles_chaincode_private.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/passthru/passthru.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/sleeper/sleeper.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/Dockerfile create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/README.md create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/chaincode.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/consensus/consensus.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/consensus/consensus_wrap.cxx create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/store.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/First_500_transactions_base64_encoded_on_testnet3.txt create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/Hashes_for_first_500_transactions_on_testnet3.txt create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/dah.pb.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/dah.proto create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/store.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/util.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/utxo.go create mode 100644 hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/utxo_test.go create mode 100644 hyperledger_fabric/v2.2.8/crypto-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/ca/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/cacerts/ca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/cacerts/ca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/signcerts/orderer0.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/cacerts/ca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/signcerts/orderer1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/tlscacerts/tlsca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/cacerts/ca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/signcerts/orderer2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/tlscacerts/tlsca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/cacerts/ca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/signcerts/orderer3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/tlscacerts/tlsca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/tlsca/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/cacerts/ca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/tlscacerts/tlsca.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/ca/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/signcerts/peer0.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/signcerts/peer1.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/tlsca/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/ca/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/signcerts/peer0.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/signcerts/peer1.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/tlsca/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/ca/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/ca/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/signcerts/peer0.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/signcerts/peer1.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/tlsca/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/tlsca/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/signcerts/Admin@org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.key create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/signcerts/User1@org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.crt create mode 100644 hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.key create mode 100644 hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-couchdb.yaml create mode 100644 hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-dev.yaml create mode 100644 hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-event.yaml create mode 100644 hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-raft.yaml create mode 100644 hyperledger_fabric/v2.2.8/explorer-artifacts/config.json create mode 100644 hyperledger_fabric/v2.2.8/explorer-artifacts/fabricexplorer.sql create mode 100644 hyperledger_fabric/v2.2.8/gateway-java/auto.sh create mode 100644 hyperledger_fabric/v2.2.8/gateway-java/connection.yaml create mode 100644 hyperledger_fabric/v2.2.8/gateway-java/pom.xml create mode 100644 hyperledger_fabric/v2.2.8/gateway-java/src/main/java/sample/ConfigProperties.java create mode 100644 hyperledger_fabric/v2.2.8/gateway-java/src/main/java/sample/Sample.java create mode 100644 hyperledger_fabric/v2.2.8/gateway-java/wallet/admin.id create mode 100644 hyperledger_fabric/v2.2.8/gateway-java/wallet/test-admin.id create mode 100644 hyperledger_fabric/v2.2.8/network_config.json create mode 100644 hyperledger_fabric/v2.2.8/network_generator/__init__.py create mode 100644 hyperledger_fabric/v2.2.8/network_generator/config_manager.py create mode 100644 hyperledger_fabric/v2.2.8/network_generator/network.py create mode 100644 hyperledger_fabric/v2.2.8/network_generator/network_generator.py create mode 100644 hyperledger_fabric/v2.2.8/network_generator/node.py create mode 100644 hyperledger_fabric/v2.2.8/network_generator/orderer.py create mode 100644 hyperledger_fabric/v2.2.8/network_generator/requirements.txt create mode 100644 hyperledger_fabric/v2.2.8/orderer.yaml create mode 100644 hyperledger_fabric/v2.2.8/org3/configtx.yaml create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config.yaml create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/ca/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/ca/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/signcerts/peer0.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/signcerts/peer1.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.crt create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.key create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/tlsca/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/tlsca/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/signcerts/Admin@org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.crt create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.key create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/config.yaml create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/keystore/priv_sk create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/signcerts/User1@org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/ca.crt create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.crt create mode 100644 hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.key create mode 100644 hyperledger_fabric/v2.2.8/peer.yaml create mode 100644 hyperledger_fabric/v2.2.8/prometheus.yml create mode 100644 hyperledger_fabric/v2.2.8/raft/README.md create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/Org1MSP.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/Org1MSPanchors.tx create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/Org2MSP.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/Org2MSPanchors.tx create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/Org3MSP.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel.tx create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel.tx.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_0.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_0.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_0.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_1.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_1.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_1.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_2.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_2.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_2.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_3.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_3.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_3.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_4.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_4.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_4.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_5.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_5.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_5.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_6.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_6.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_6.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_7.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_7.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_7.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_8.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_8.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_8.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_9.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_9.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_9.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_config.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_config.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_config.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta.pb create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta_env.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta_env.pb create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block_updated.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block_updated.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer1.genesis.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer1.genesis.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer1.genesis.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer2.genesis.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer2.genesis.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer2.genesis.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/original_config.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/original_config.pb create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_0.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_0.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_0.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_1.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_1.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_1.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_config.block create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_config.block.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_config.block.json-flat.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/updated_config.json create mode 100644 hyperledger_fabric/v2.2.8/raft/channel-artifacts/updated_config.pb create mode 100644 hyperledger_fabric/v2.2.8/raft/configtx.yaml create mode 100644 hyperledger_fabric/v2.2.8/scripts/configtxgen_channelArtifacts.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/cryptogen_cryptoArtifacts.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/download_images.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/env_cleanup.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/env_setup.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/func.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/gen_channel_artifacts.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/gen_crypto_artifacts.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/init_chaincode_dev.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/initialize_peer0.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/json_flatter.py create mode 100644 hyperledger_fabric/v2.2.8/scripts/start_eventsclient.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_approveformyorg.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_checkcommitreadiness.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_commit.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_getinstalled.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_install.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_instantiate.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_invoke_query.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_list.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_peer0.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_queryapproved.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_querycommitted.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_queryinstalled.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cc_upgrade.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_channel_create.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_channel_getinfo.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_channel_join.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_channel_list.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_channel_update.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_configtxlator.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_cscc.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_fetch_blocks.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_gen_add_org3_tx.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_lscc.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_qscc.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_sideDB.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_temp.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/test_update_anchors.sh create mode 100644 hyperledger_fabric/v2.2.8/scripts/variables.sh create mode 100644 hyperledger_fabric/v2.2.8/sdk-node/connection-profile.json create mode 100644 hyperledger_fabric/v2.2.8/sdk-node/connection-profile.yaml create mode 100644 hyperledger_fabric/v2.2.8/sdk-node/createWallet.js create mode 100644 hyperledger_fabric/v2.2.8/sdk-node/getBlockchainInfo.js create mode 100644 hyperledger_fabric/v2.2.8/sdk-node/invokeChaincode.js create mode 100644 hyperledger_fabric/v2.2.8/sdk-node/package.json create mode 100644 hyperledger_fabric/v2.2.8/sdk-node/queryChaincode.js diff --git a/hyperledger_fabric/README.md b/hyperledger_fabric/README.md index 73b8a8bb..ba958268 100644 --- a/hyperledger_fabric/README.md +++ b/hyperledger_fabric/README.md @@ -17,6 +17,7 @@ Fabric Release | Description [Fabric v2.4.0](v2.4.0/) | fabric 2.4.0 release. [Fabric v2.3.3](v2.3.3/) | fabric 2.3.3 release. [Fabric v2.3.0](v2.3.0/) | fabric 2.3.0 release. +[Fabric v2.2.8](v2.2.8/) | fabric 2.2.8 LTS release. [Fabric v2.2.4](v2.2.4/) | fabric 2.2.4 LTS release. [Fabric v2.2.1](v2.2.1/) | fabric 2.2.1 LTS release. [Fabric v2.2.0](v2.2.0/) | fabric 2.2.0 LTS release. @@ -43,7 +44,7 @@ Fabric Release | Description ### TLDR ```bash -$ export RELEASE=v2.3.0 +$ export RELEASE=v2.4.0 ``` ```bash diff --git a/hyperledger_fabric/test/fetch-config-block.sh b/hyperledger_fabric/test/fetch-config-block.sh index c4450cc7..f05ffae8 100644 --- a/hyperledger_fabric/test/fetch-config-block.sh +++ b/hyperledger_fabric/test/fetch-config-block.sh @@ -4,7 +4,7 @@ # ${channel}_config.block.json: decoded config block; # ${channel}_config.block.cfg.json: core config section of the config blcok -# Usage: ./script mspId channel ordererURL mspPath=${PWD}/msp-mspId +# Usage: ./script channel ordererURL mspId mspPath=${PWD}/msp-mspId # use configtxlator to decode pb to json # Usage: configtxlatorEncode msgType input output diff --git a/hyperledger_fabric/v2.2.8/.env b/hyperledger_fabric/v2.2.8/.env new file mode 100644 index 00000000..51365fec --- /dev/null +++ b/hyperledger_fabric/v2.2.8/.env @@ -0,0 +1,4 @@ +# for docker-compose usage +FABRIC_IMG_TAG=2.2.8 +TWO_DIGIT_VERSION=2.2 +NETWORK=hlf_net diff --git a/hyperledger_fabric/v2.2.8/Makefile b/hyperledger_fabric/v2.2.8/Makefile new file mode 100644 index 00000000..4b7e03c4 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/Makefile @@ -0,0 +1,322 @@ +# Makefile to bootup the network, and do testing with channel, chaincode +# Run `make test` will pass all testing cases, and delete the network +# Run `make ready` will create a network, pass testing cases, and stand there for manual test, e.g., make test_channel_list + + +# support advanced bash grammar +SHELL:=/bin/bash + +# mode of the network: raft only for 2.x +HLF_MODE ?= raft + +# mode of db: golevel, couchdb +DB_MODE ?= golevel + +# mode of dev +DEV_MODE ?= non-dev + +NETWORK_INIT_WAIT ?= 2 # time to wait the fabric network finish initialization + +COMPOSE_FILE ?= "docker-compose-2orgs-4peers-raft.yaml" + +ifeq ($(HLF_MODE),raft) + NETWORK_INIT_WAIT=5 +else + NETWORK_INIT_WAIT=30 +endif + +COMPOSE_FILE="docker-compose-2orgs-4peers-$(HLF_MODE).yaml" + +LOG_PATH ?= $(HLF_MODE)/logs + +ifeq ($(DB_MODE),couchdb) + COMPOSE_FILE="docker-compose-2orgs-4peers-couchdb.yaml" +endif + +ifeq ($(DEV_MODE),dev) + COMPOSE_FILE="docker-compose-2orgs-4peers-dev.yaml" +endif + +all: test + +test: + @echo "Run test with $(COMPOSE_FILE)" + @echo "Please make sure u have setup Docker and pulled images by 'make setup download'." + make ready # Run all testing till ready + + make stop clean + +ready: # create/join channel, install/instantiate cc + make stop + + # make clean_config_channel # Remove existing channel artifacts + make gen_config_crypto # Will ignore if local config path exists + make gen_config_channel # Will ignore if local config path exists + + make start + + sleep ${NETWORK_INIT_WAIT} + + make channel_test + + make update_anchors + + make cc_test # test_cc_install test_cc_approveformyorg test_cc_checkcommitreadiness test_cc_commit test_cc_querycommitted test_cc_invoke_query + + # make test_lscc # test lscc operations, in v2.0, legacy lscc won't work + make test_qscc # test qscc operations + make test_cscc # test cscc operations + + make test_fetch_blocks # fetch block files + + make test_gen_add_org3_tx + make test_channel_update + + make test_fetch_blocks # fetch block files again + make test_configtxlator + + make test_channel_list + make test_channel_getinfo + + # make logs_save + + @echo "Now the fabric network is ready to play" + @echo "* run 'make cli' to enter into the fabric-cli container." + @echo "* run 'make stop' when done." + +# channel related operations +channel_test: test_channel_create test_channel_join test_channel_list test_channel_getinfo + +# chaincode related operations +cc_test: test_cc_install test_cc_queryinstalled test_cc_approveformyorg test_cc_queryapproved test_cc_checkcommitreadiness test_cc_commit test_cc_querycommitted test_cc_invoke_query + +restart: stop start + +start: # bootup the fabric network + @echo "Start a fabric network with ${COMPOSE_FILE}..." + @make clean + @echo "Make sure the local hlf_net docker bridge exists" + docker network ls|grep hlf_net > /dev/null || docker network create hlf_net + @docker-compose -f ${COMPOSE_FILE} up -d # Start a fabric network + +stop: # stop the fabric network + @echo "Stop the fabric network with ${COMPOSE_FILE}..." + @docker-compose -f ${COMPOSE_FILE} down >& /tmp/docker-compose.log + +chaincode_dev: restart chaincode_init test_cc_peer0 stop + +################## Channel testing operations ################ + +test_channel_list: # List the channel that peer joined + @echo "List the joined channels" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_channel_list.sh" + +test_channel_getinfo: # Get info of a channel + @echo "Get info of the app channel" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_channel_getinfo.sh" + +test_channel_create: # Init the channel + @echo "Create channel on the fabric network" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_channel_create.sh" + +test_channel_join: # Init the channel + @echo "Join channel" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_channel_join.sh" + +update_anchors: # Update the anchor peer + @echo "Update anchors on the fabric network" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_update_anchors.sh" + +test_channel_update: # send the channel update transaction + @echo "Test channel update with adding new org" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_channel_update.sh" + +################## Configtxlator testing operations ################ +test_configtxlator: # Test change config using configtxlator + @echo "Testing decoding and encoding with configtxlator" + bash scripts/test_configtxlator.sh ${HLF_MODE} + @echo "Flattening the json files of all blocks" + python3 scripts/json_flatter.py ${HLF_MODE}/channel-artifacts/ + +test_gen_add_org3_tx: # Test change config to add new org + bash scripts/test_gen_add_org3_tx.sh ${HLF_MODE} + +################## Chaincode testing operations ################ +test_cc: # test chaincode, deprecated + if [ "$(HLF_MODE)" = "dev" ]; then \ + make test_cc_peer0; \ + else \ + make test_cc_invoke_query; \ + fi + +test_cc_install: # Install the chaincode + @echo "Install chaincode to all peers" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_install.sh" + +test_cc_queryinstalled: # Query the installed chaincodes + @echo "Query the installed chaincode" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_queryinstalled.sh" + +test_cc_getinstalled: # Get the installed chaincodes package + @echo "Get the installed chaincode package" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_getinstalled.sh" + +test_cc_approveformyorg: # Approve the chaincode definition + @echo "Approve the chaincode by all orgs" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_approveformyorg.sh" + +test_cc_queryapproved: # Query the approved chaincode definition + @echo "Query the approved status of chaincode" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_queryapproved.sh" + +test_cc_checkcommitreadiness: # Query the approval status of chaincode + @echo "Query the chaincode approval status by all orgs" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_checkcommitreadiness.sh" + +test_cc_commit: # Commit the chaincode definition + @echo "Commit the chaincode by any org" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_commit.sh" + +test_cc_querycommitted: # Query the commit status of the chaincode definition + @echo "Query the commit status of chaincode" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_querycommitted.sh" + +test_cc_instantiate: # Instantiate the chaincode + @echo "Instantiate chaincode on the fabric network" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_instantiate.sh" + +test_cc_upgrade: # Upgrade the chaincode + @echo "Upgrade chaincode on the fabric network" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_upgrade.sh" + +test_cc_list: # List the chaincode + @echo "List chaincode information (installed and instantited)" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_list.sh" + +test_cc_invoke_query: # test user chaincode on all peers + @echo "Invoke and query cc example02 on all peers" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_invoke_query.sh" + +test_cscc: # test cscc queries + @echo "Test CSCC query" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cscc.sh" + +test_qscc: # test qscc queries + @echo "Test QSCC query" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_qscc.sh" + +test_lscc: # test lscc quries + @echo "Test LSCC query" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_lscc.sh" + +# FIXME: docker doesn't support wildcard in cp right now +test_fetch_blocks: # test fetching channel blocks fetch + @echo "Test fetching block files" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_fetch_blocks.sh" + +test_eventsclient: # test get event notification in a loop + @echo "Test fetching event notification" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/start_eventsclient.sh" + +test_sidedb: # test sideDB/private data feature + @echo "Test sideDB" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_sideDB.sh" + +temp: # test temp instructions, used for experiment + @echo "Test experimental instructions" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_temp.sh" + +################## Env setup related, no need to see usually ################ + +setup: # setup the environment + bash scripts/env_setup.sh # Installing Docker and Docker-Compose + +check: # Check shell scripts grammar + @echo "Check shell scripts grammar" + [ `which shellcheck` ] && shellcheck scripts/*.sh + +clean: # clean up containers and chaincode images + @echo "Clean all HLF containers and chaincode images" + @-docker ps -a | awk '{ print $$1,$$2 }' | grep "hyperledger/fabric" | awk '{ print $$1 }' | xargs -r -I {} docker rm -f {} + @-docker ps -a | awk '$$2 ~ /dev-peer/ { print $$1 }' | xargs -r -I {} docker rm -f {} + @-docker images | awk '$$1 ~ /dev-peer/ { print $$3 }' | xargs -r -I {} docker rmi -f {} + echo "May clean the config: HLF_MODE=${HLF_MODE} make clean_config_channel" + +# Clean deeply by removing all generated files: container, artifacts, credentials +purge: clean + HLF_MODE=raft make clean_config_channel + make clean_config_crypto + +env_clean: # clean up Docker environment + @echo "Clean all images and containers" + bash scripts/env_clean.sh + +cli: # enter the cli container + docker exec -it fabric-cli bash + +sdk_node: # enter the sdk-node container + docker exec -it sdk-node bash + +gateway_java: # enter the gateway-java container + docker exec -it gateway-java bash + +orderer: orderer0 + +orderer0: # enter the orderer0 container + docker exec -it orderer0.example.com bash + +orderer1: # enter the orderer0 container + docker exec -it orderer1.example.com bash + +peer: peer0 + +peer0: # enter the peer container + docker exec -it peer0.org1.example.com bash + +peer1: # enter the peer container + docker exec -it peer1.org1.example.com bash + +ps: # show existing docker images + docker ps -a + +logs: # show logs + docker-compose -f ${COMPOSE_FILE} logs -f --tail 200 + +logs_check: logs_save logs_view + +logs_save: # save logs + @echo "All tests done, saving logs locally" + [ -d $(LOG_PATH) ] || mkdir -p $(LOG_PATH) + docker logs peer0.org1.example.com >& $(LOG_PATH)/dev_peer0.log + docker logs orderer0.example.com >& $(LOG_PATH)/dev_orderer.log + docker-compose -f ${COMPOSE_FILE} logs >& $(LOG_PATH)/dev_all.log + +logs_view: # view logs + less $(LOG_PATH)/dev_peer.log + +elk: # insert logs into elk + # curl -XDELETE http://localhost:9200/logstash-\* + nc localhost 5000 < $(LOG_PATH)/dev_all.log + +gen_config_crypto: # generate crypto config + bash scripts/gen_crypto_artifacts.sh + +gen_config_channel: # generate channel artifacts + bash scripts/gen_channel_artifacts.sh ${HLF_MODE} + +clean_config_channel: # clean channel related artifacts + rm -rf ${HLF_MODE}/channel-artifacts/* + +clean_config_crypto: # clean config artifacts + echo "Warning: Cleaning credentials will affect artifacts in raft mode" + rm -rf crypto-config/* + rm -rf org3/crypto-config/* + +download: # download required images + @echo "Download Docker images" + bash scripts/download_images.sh + +################## chaincode dev mode ################ +chaincode_init: # start chaincode in dev mode and do install/instantiate + @echo "Install and instantiate cc example02 on the fabric dev network" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/init_chaincode_dev.sh" diff --git a/hyperledger_fabric/v2.2.8/base-event.yaml b/hyperledger_fabric/v2.2.8/base-event.yaml new file mode 100644 index 00000000..ff1de801 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/base-event.yaml @@ -0,0 +1,78 @@ +# All elements in this file should depend on the base-solo.yaml +# Provided solo-base fabric network with: + +# ca.org1.example.com +# ca.org2.example.com +# orderer.example.com +# peer0.org1.example.com +# peer1.org1.example.com +# peer0.org2.example.com +# peer1.org2.example.com +# cli + +version: '2' # v3 does not support 'extends' yet + +services: + ca.org1.example.com: # ca node for org1 + extends: + file: base-solo.yaml + service: ca.org1.example.com + environment: + - FABRIC_CA_SERVER_TLS_ENABLED=false + + ca.org2.example.com: # ca node for org1 + extends: + file: base-solo.yaml + service: ca.org2.example.com + environment: + - FABRIC_CA_SERVER_TLS_ENABLED=false + + orderer.example.com: # orderer node for example org + extends: + file: base-solo.yaml + service: orderer.example.com + environment: + - ORDERER_GENERAL_TLS_ENABLED=false + + cli: # client node + extends: + file: base-solo.yaml + service: cli + environment: + #- GOPATH=/opt/gopath + - CORE_PEER_TLS_ENABLED=false # to enable TLS, change to false + +## following are peer nodes ## + + peer0.org1.example.com: + extends: + file: base-solo.yaml + service: peer0.org1.example.com + environment: + - CORE_PEER_TLS_ENABLED=false + + peer1.org1.example.com: + extends: + file: base-solo.yaml + service: peer1.org1.example.com + environment: + - CORE_PEER_TLS_ENABLED=false + + peer0.org2.example.com: + extends: + file: base-solo.yaml + service: peer0.org2.example.com + environment: + - CORE_PEER_TLS_ENABLED=false + + peer1.org2.example.com: + extends: + file: base-solo.yaml + service: peer1.org2.example.com + environment: + - CORE_PEER_TLS_ENABLED=false + + event-listener: + extends: + file: base-solo.yaml + service: event-listener diff --git a/hyperledger_fabric/v2.2.8/base-raft.yaml b/hyperledger_fabric/v2.2.8/base-raft.yaml new file mode 100644 index 00000000..dd05ecdb --- /dev/null +++ b/hyperledger_fabric/v2.2.8/base-raft.yaml @@ -0,0 +1,232 @@ +# All elements in this file should depend on the base.yaml +# Provided a Kafka enabled fabric network with: + +# ca.org1.example.com +# ca.org2.example.com +# orderer0.example.com +# orderer1.example.com +# peer0.org1.example.com +# peer1.org1.example.com +# peer0.org2.example.com +# peer1.org2.example.com +# 3 zookeeper nodes +# 4 raft nodes +# cli + +version: '2' # v3 does not support 'extends' yet + +services: + ca.org1.example.com: + extends: + file: base.yaml + service: ca-base + container_name: ca.org1.example.com + hostname: ca.org1.example.com + environment: + - FABRIC_CA_SERVER_CA_NAME=ca-org1 + - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem + - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk + ports: + - "7054:7054" + volumes: + - ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config + command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk -b admin:adminpw -d' + + ca.org2.example.com: + extends: + file: base.yaml + service: ca-base + container_name: ca.org2.example.com + hostname: ca.org2.example.com + environment: + - FABRIC_CA_SERVER_CA_NAME=ca-org2 + - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem + - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk + ports: + - "8054:7054" + volumes: + - ./crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config + command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk -b admin:adminpw -d' + + orderer0.example.com: # There can be multiple orderers + extends: + file: base.yaml + service: orderer-base + container_name: orderer0.example.com + hostname: orderer0.example.com + ports: + - "7050:7050" + environment: + - FABRIC_LOGGING_SPEC=DEBUG + - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/etc/hyperledger/fabric/tls/server.key + - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/etc/hyperledger/fabric/tls/server.crt + - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt] + # below 4 must be defined/undefined together, for using separate network for raft + #- ORDERER_GENERAL_CLUSTER_LISTENADDRESS=0.0.0.0 + #- ORDERER_GENERAL_CLUSTER_LISTENPORT=7050 # this must be the same with channel config + #- ORDERER_GENERAL_CLUSTER_SERVERCERTIFICATE=/etc/hyperledger/fabric/tls/server.crt + #- ORDERER_GENERAL_CLUSTER_SERVERPRIVATEKEY=/etc/hyperledger/fabric/tls/server.key + volumes: + - ./crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp:/etc/hyperledger/fabric/msp + - ./crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/:/etc/hyperledger/fabric/tls + - ./raft/channel-artifacts/orderer0.genesis.block:/etc/hyperledger/fabric/orderer.genesis.block + #- ./volumes/orderer0:/var/hyperledger/production/orderer + command: orderer start + + orderer1.example.com: # There can be multiple orderers + extends: + file: base.yaml + service: orderer-base + container_name: orderer1.example.com + hostname: orderer1.example.com + ports: + - "8050:7050" + environment: + - ORDERER_GENERAL_CLUSTER_SENDBUFFERSIZE=10 + volumes: + - ./crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp:/etc/hyperledger/fabric/msp + - ./crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/:/etc/hyperledger/fabric/tls + - ./raft/channel-artifacts/orderer1.genesis.block:/etc/hyperledger/fabric/orderer.genesis.block + #- ./volumes/orderer1:/var/hyperledger/production/orderer + command: orderer start + + orderer2.example.com: # There can be multiple orderers + extends: + file: base.yaml + service: orderer-base + container_name: orderer2.example.com + hostname: orderer2.example.com + ports: + - "9050:7050" + environment: + - ORDERER_GENERAL_CLUSTER_SENDBUFFERSIZE=10 + volumes: + - ./crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp:/etc/hyperledger/fabric/msp + - ./crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/:/etc/hyperledger/fabric/tls + - ./raft/channel-artifacts/orderer2.genesis.block:/etc/hyperledger/fabric/orderer.genesis.block + #- ./volumes/orderer2:/var/hyperledger/production/orderer + command: orderer start + +## following are peer nodes ## + + peer0.org1.example.com: + extends: + file: base.yaml + service: peer-base + container_name: peer0.org1.example.com + hostname: peer0.org1.example.com + environment: + - CORE_PEER_ID=peer0.org1.example.com + - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 + - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051 + - CORE_PEER_LOCALMSPID=Org1MSP + - FABRIC_LOGGING_SPEC=DEBUG # info:core.chaincode=debug + volumes: + - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp + - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls + ports: + - 7051:7051 + + peer1.org1.example.com: + extends: + file: base.yaml + service: peer-base + container_name: peer1.org1.example.com + hostname: peer1.org1.example.com + environment: + - CORE_PEER_ID=peer1.org1.example.com + - CORE_PEER_ADDRESS=peer1.org1.example.com:7051 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051 + - CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7052 + - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051 + - CORE_PEER_LOCALMSPID=Org1MSP + volumes: + - ./crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp + - ./crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls + ports: + - 8051:7051 + + peer0.org2.example.com: + extends: + file: base.yaml + service: peer-base + container_name: peer0.org2.example.com + hostname: peer0.org2.example.com + environment: + - CORE_PEER_ID=peer0.org2.example.com + - CORE_PEER_ADDRESS=peer0.org2.example.com:7051 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051 + - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052 + - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051 + - CORE_PEER_LOCALMSPID=Org2MSP + volumes: + - ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp + - ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls + ports: + - 9051:7051 + + peer1.org2.example.com: + extends: + file: base.yaml + service: peer-base + container_name: peer1.org2.example.com + hostname: peer1.org2.example.com + environment: + - CORE_PEER_ID=peer1.org2.example.com + - CORE_PEER_ADDRESS=peer1.org2.example.com:7051 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051 + - CORE_PEER_CHAINCODELISTENADDRESS=peer1.org2.example.com:7052 + - CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051 + - CORE_PEER_LOCALMSPID=Org2MSP + volumes: + - ./crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp + - ./crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls + ports: + - 10051:7051 + + cli: + extends: + file: base.yaml + service: cli-base + container_name: fabric-cli + hostname: fabric-cli + tty: true + environment: + - CORE_PEER_ID=fabric-cli + - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1 + - CORE_PEER_LOCALMSPID=Org1MSP + - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt + - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key + - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt + - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp + volumes: + - ./scripts:/tmp/scripts + - ./crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml + - ./crypto-config:/etc/hyperledger/fabric/crypto-config + - ./raft/channel-artifacts:/tmp/channel-artifacts + - ./raft/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml + - ./chaincodes:/go/src/chaincodes + #- $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric + + sdk-node: + extends: + file: base.yaml + service: sdk-node + container_name: sdk-node + hostname: sdk-node + tty: true + volumes: + - ./crypto-config:/opt/crypto-config + - ./sdk-node:/opt/test + + gateway-java: + extends: + file: base.yaml + service: gateway-java + container_name: gateway-java + hostname: gateway-java + tty: true + volumes: + - ./crypto-config:/opt/crypto-config + - ./gateway-java:/opt/test diff --git a/hyperledger_fabric/v2.2.8/base.yaml b/hyperledger_fabric/v2.2.8/base.yaml new file mode 100644 index 00000000..c3f2c198 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/base.yaml @@ -0,0 +1,149 @@ +# Contains the base template for all Hyperledger Fabric services +# Never directly use services in this template, but inherent +# All services are abstract without any names, config or port mapping +# https://github.com/yeasy/docker-compose-files +# +# * ca-base: base for fabric-ca +# * orderer-base: base for fabric-orderer +# * peer-base: base for fabric-peer +# * cli-base: base for fabric peer client +# * event-listener-base: base for fabric eventhub listener +# * kafka-base: base for kafka +# * zookeeper-base: base for fabric-zookeeper +# * couchdb-base: base for couchdb +# * explorer-base: base for Hyperledger blockchain-explorer +# * mysql-base: base for MySQL + +version: '2' # compose v3 still doesn't support `extends`, shame! + +services: + ca-base: + image: yeasy/hyperledger-fabric-ca:${FABRIC_IMG_TAG} + restart: always + network_mode: ${NETWORK} + environment: + - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server + - FABRIC_CA_SERVER_TLS_ENABLED=true # change to false to disable TLS + + orderer-base: + image: yeasy/hyperledger-fabric-orderer:${FABRIC_IMG_TAG} + restart: always + network_mode: ${NETWORK} + # Default config can be found at https://github.com/hyperledger/fabric/blob/master/orderer/common/localconfig/config.go + environment: + - FABRIC_LOGGING_SPEC=INFO # default: INFO + - FABRIC_LOGGING_FORMAT="%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}" + - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 # default: 127.0.0.1 + - ORDERER_GENERAL_LISTENPORT=7050 + - ORDERER_GENERAL_GENESISMETHOD=file # default: provisional + - ORDERER_GENERAL_BOOTSTRAPFILE=/etc/hyperledger/fabric/orderer.genesis.block # by default, all materials should be put under $FABRIC_CFG_PATH, which defaults to /etc/hyperledger/fabric + - ORDERER_GENERAL_LOCALMSPID=OrdererMSP # default: DEFAULT + - ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/fabric/msp + - ORDERER_GENERAL_LEDGERTYPE=file + #- ORDERER_GENERAL_LEDGERTYPE=json # default: file + - ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:8443 # operation RESTful API + - ORDERER_METRICS_PROVIDER=prometheus # prometheus will pull metrics from orderer via /metrics RESTful API + #- ORDERER_RAMLEDGER_HISTORY_SIZE=100 #only useful when use ram ledger + # enabled TLS + - ORDERER_GENERAL_TLS_ENABLED=true # default: false + - ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/fabric/tls/server.key + - ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/fabric/tls/server.crt + - ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt] + # Only required by raft mode + - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/etc/hyperledger/fabric/tls/server.key + - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/etc/hyperledger/fabric/tls/server.crt + - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/etc/hyperledger/fabric/tls/ca.crt] + #volumes: + #- $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric + expose: + - "7050" # gRPC + - "8443" # Operation REST + #command: bash -c 'bash /tmp/orderer_build.sh; orderer start' # use this if to debug orderer + command: orderer start + + peer-base: # abstract base for fabric-peer, will be used in peer.yaml + image: yeasy/hyperledger-fabric-peer:${FABRIC_IMG_TAG} + #image: hyperledger/fabric-peer:${FABRIC_IMG_TAG} + restart: always + network_mode: ${NETWORK} + environment: + - FABRIC_LOGGING_SPEC=INFO + - FABRIC_LOGGING_FORMAT="%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}" + - CORE_PEER_ADDRESSAUTODETECT=false + - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${NETWORK} # uncomment this to use specific network + - CORE_PEER_GOSSIP_USELEADERELECTION=true + - CORE_PEER_GOSSIP_ORGLEADER=false # whether this node is the org leader, default to false + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=0.0.0.0:7051 # change to external addr for peers in other orgs + - CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:9443 # operation RESTful API + - CORE_METRICS_PROVIDER=prometheus # prometheus will pull metrics from fabric via /metrics RESTful API + - CORE_PEER_PROFILE_ENABLED=false + - CORE_PEER_TLS_ENABLED=true + - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt + - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key + - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt + - CORE_CHAINCODE_BUILDER=hyperledger/fabric-ccenv:${TWO_DIGIT_VERSION} + - CORE_CHAINCODE_GOLANG_RUNTIME=hyperledger/fabric-baseos:${TWO_DIGIT_VERSION} + - CORE_CHAINCODE_JAVA_RUNTIME=hyperledger/fabric-javaenv:${TWO_DIGIT_VERSION} + - CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv:${TWO_DIGIT_VERSION} + #- FABRIC_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message} + volumes: + #- $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric + # docker.sock is mapped as the default CORE_VM_ENDPOINT + - /var/run/docker.sock:/var/run/docker.sock + expose: + - "7051" # gRPC + - "9443" # Operation REST + #command: bash -c 'bash /tmp/peer_build.sh; peer node start' + command: peer node start + + cli-base: + image: yeasy/hyperledger-fabric:${FABRIC_IMG_TAG} + restart: always + network_mode: ${NETWORK} + tty: true + environment: + - FABRIC_LOGGING_SPEC=DEBUG + - FABRIC_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{module}] %{shortfunc} -> %{level:.4s}%{color:reset} %{message} + - CORE_PEER_TLS_ENABLED=true # to enable TLS, change to true + - ORDERER_CA=/etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem + working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer + command: bash -c 'cd /tmp; source scripts/func.sh; while true; do sleep 20170504; done' + + sdk-node: # node sdk + image: yeasy/hyperledger-fabric-sdk-node:release-2.2 + restart: always + network_mode: ${NETWORK} + tty: true + + gateway-java: # node java + image: yeasy/hyperledger-fabric-gateway-java:release-2.2 + restart: always + network_mode: ${NETWORK} + tty: true + command: bash -c 'cd /tmp; while true; do sleep 20210729; done' + + prometheus: # prometheus will pull metrics from fabric + image: prom/prometheus:v2.6.0 + restart: always + network_mode: ${NETWORK} + tty: true + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml + + explorer-base: + image: yeasy/blockchain-explorer:0.1.0-preview # Till we have official image + expose: + - "8080" # HTTP port + command: bash -c 'sleep 10; node main.js' + + mysql-base: # mysql service + image: mysql:8.0 + restart: always + network_mode: ${NETWORK} + expose: + - "3306" + +networks: + default: + external: + name: ${NETWORK} \ No newline at end of file diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..2efdf85e0eae9492ed0e972d824d2e74ba57bfd8 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zARVwUTrz%e*?k%KO#g5AZEsl$~wQk@Pnd;Ls45` z7?d!;N91pd7vJ+Go?GN+t`Z=u##5|zSh(f{w_)Q?^b@>YiZ$j~`oUZV(X^%zR@rJI zL<%6IOR+^py6y;}2%s%Rprm~v$SHaw$EpD^D!X)>GAVWvATO!054lX{T7?_Jxyh<*2BeDb)h7+n$9^^NtQ zN)jM=?el)FW3xki+^8>-w>o}^e)*w-@WH5n{qp2P4Mh?nL<%6xtpmIQVl2D}v!1m+ zDky-NL2&YNa!w{QAkqwRN#_U>AoScsv!bXTStamlD>cn@fLRt~wp)WTcBiWf(6h$H z%_@ii3LrN&0@~C9eq?-~Q__+zy-cx)j%~J|igaT!d@Nlags>7I>DL~8X%kW5hcBB-9YLwfkgp9ASGS5&Tp0 zKU^Xp+G4PvQ^)u(xDyqef2$SVXG-8JCxFWNr=@Q|8Ul9jGDHd>ywXBI^g+)~dsB$~ z_AI%2{p;)cD3co!v7km3Xm7Bb5+FD`$;F@KTR$ z`_4K<3Lq!C+_dsB7Y}U9KtQId^H!1_o6#h+Qk#NA&CHw*RW%YIpD~jn>7I5ndCrbk zik`Xd{HGWSfk$3@iJ;oS$adUGLLf|&{6y6_oh->J#HJEyc1;ld6z_@j_T=9uz&l-a zq:@:/ + tls: + certfiles: null + client: + certfile: null + keyfile: null + attribute: + names: + - uid + - member + converters: + - name: null + value: null + maps: + groups: + - name: null + value: null +affiliations: + org1: + - department1 + - department2 + org2: + - department1 +signing: + default: + usage: + - digital signature + - cert sign + - crl sign + expiry: 87600h + profiles: + ca: + usage: + - cert sign + - crl sign + expiry: 43800h + caconstraint: + isca: true + maxpathlen: 0 + tls: + usage: + - signing + - key encipherment + - server auth + - client auth + - key agreement + expiry: 87600h +csr: + cn: ca.example.com + keyrequest: + algo: ecdsa + size: 256 + names: + - C: US + ST: North Carolina + L: null + O: example.com + OU: ca + hosts: + - fabric-ca-server + - localhost + ca: + expiry: 1314000h + pathlength: 1 +idemix: + rhpoolsize: 1000 + nonceexpiration: 15s + noncesweepinterval: 15m +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + keystore: msp/keystore +cacount: null +cafiles: null +intermediate: + parentserver: + url: null + caname: null + enrollment: + hosts: null + profile: null + label: null + tls: + certfiles: null + client: + certfile: null + keyfile: null diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/fabric-ca-server.db b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/ca/fabric-ca-server.db new file mode 100644 index 0000000000000000000000000000000000000000..64c75634968bf1e5295bcfe84a70eb3dc8b9b44b GIT binary patch literal 61440 zcmeI)&u`mQ00(fp&d;{#>!wv%Z?EYpHIQ~owr-3|$+pmib={V>h=Ra+NnTnr$Icw5 zw3;}il-sy+VdBgMG;!hp9FX`2CLtljjSCV8iOb-E;MqwRJ8ili)=4YhtWNFc_nzPT zyys`fFYDs1dClguVp>&Z)3egBB+Jq(luD8`Di$J^kXZV}GAx#WSax3W&dNT&N2RHM zYO%Hi}7XMZy~8~vJ`i-d>1jH!`toPYb|fn5-Q00bcLzZKYeClHQL zP08D)&5AlNam&^!T8Y`bu9|wedpmf!kjpOR=u-C5e2yl%cPHqiR;I6K3zx5E3zM0d znPiIAxur2(H5%0-w`fr}i*(_}5?xrHpHETNu-8mWvp3b-d{foR+;9%RJ6?&YIxBMB zO)v7ancb*&XJ&C$Hw~&8c8cH@P$MbkBA zYo<~6uJ`$1y?f}S!K(Z*YWhs(T=KCXU0%rFTF#|t&Ei7PA1g(BR3#aCB#k+(-V`>X z)xC#vTAfuc91F#-O~{gFl=(*ejxO$GRMA$ZyRG_~J?-5J3_g_d&dD?z48<3x4wQj7 zpz6!SDMIM(KsY`&CO5Ng32T;FbGjz4ch&}dWSww2*6gBvUt*$Yntn*Hw&gyn6Ow|mvW}1)B$DV!K58xgoncO-N z3dhIC zQT&bTxx78i!gw!fht}GMeyO@Z_8atl7m2iY%lRnV8uXR@27PZ5XNXsQnK&VVWdrIIRc*OlVW^BGD?_P`P25x?UAGDRs|SwfF5pGA2}lT)QPWH9q zWIU;zIGKptj+1dd|GP8$&$M1R7z7{y0SG_<0uX=z1Rwwb2tWV=&r+b@Ihga!eo0c? zcf3IW0uX=z1Rwwb2tWV=5P$##AaLXaF#mt#niLg+00bZa0SG_<0uX=z1Rwwb2=o$g z{+3^`*G_~(00Izz00bZa0SG_<0uX=z1R(Hy3t;~L`EEay9s&@600bZa0SG_<0uX=z z1R!t_0nh*cKS*@MfdB*`009U<00Izz00bZa0SG|gITUc_|7G%*B!2LM00bZa0SG_< z0uX=z1Rwwb2teRy354aK6zz*DzvBDP~1Rwwb2tWV= z5P$##AOHafK;Y>MkdQJ?4AUs_X`QcgJv|&$CWuwijEdO~IT28%NXg=5ZrB>r+o2nJfZz#bO74CJ5ExNT z%ex){C{F0ECjfoNlw{QZ0KonGe?!}n_`wST5P$##AOHafKmY;|fB*y_aHs-XoASU| zGcX$4z7dh5MbosWSh=bhr!wqR`pl^}*`4Le>BSB6Vy^UBy?X7nOY_#%8!P$3!gOYF z^&+1sr5h~&-uc2De|Oo+zjSV8Zk?BOP0WB;Hz5QwwN_tFm+z{#C)M=%qv{yt6~QJ$tl*&+kC&H=M9@%RbCcT_xy6! zbMWqB&T->%VSb+ooqA+#+tP{+ySp-P|Le^E2gw78{6xMd56Iu-mqTr8WDWrcKmY;| zfB*y_009U<00IzzzySoDuK<|VYI?fNYs|8%;vq-I{a!#V>wVQyq>WfDXR zAXHZ(=KpR!cf-1dhai9oP;dyiz%>nJoB`A-8N?eC?-C$e)DjG&p}WQSD2kyFYogHF zjQjTTL)ZK!<5Yx#`cRr0L<%4gZc0La4u>i~Gj$B2^^>u;B#u`HIH<*P>a!wDg04dn zAUN#T+=EgEi~v~5)QAbg9>C>a)x1dT67dr}`=zvGIwC|0Alf?LKR0EXB+n|(oJEz< zt*fb9u*^JMoxXL~>A1r3;1VDQH%TNKR1g!669(|83Nh^iqriK?bBJ{>tO=8#i2$M^ zL<%4$>R^>mCZV~F6t0{c__Qa-?slB92Jw0%0Ah@kY-jHhAZ;tK7X?w$k$(-tsv$6j zFzfR{=r}$Pq1_)~c9E?FE+Rwsznha zED|8|)I8yjZZRd@3OVix^U;DA(Xt@!!kQ2LEkyRa;l)@YL<%6v0%7AdiS8?`QqLQs zK4K9j$fjBO-AW1C+2VHJUqKuaAUklelETfc(BacpfSw%HW>qW5^V$KSsQ5CCd^Z4B7haWL%;Xy8Z|3 z91RpYyXfdWt!CH~MmxaQ9C80_8X#Xwf^;O6eB6Vqsl6h&TAdn9C;}n|`o_kxKqSA!pVrqu% z?*T-N;*yJ4sJ;au-$k^(Hd;&{5+Ehx*(Y$t8beu9C0J-k$?OW2y1SYERFCMp1;I5m zPsTb#3Ltco3fCwTLtkCmMuL@RfB9pod_3(P{mi6DkfSmpCMgmixz1`xLp|9FwYhi? zz5ehX%zlb!ZV1pa?8{*olC!C|LLmKwDJb~hmh)lyTk$BAj61pKj{?_%soIa`(Nk=x zY3E8HTwS6r!x-3zq;VQ=5?~;iJ(Os5ztr(Gt$x)~((+-RQXsq=Mr:@:/ + tls: + certfiles: null + client: + certfile: null + keyfile: null + attribute: + names: + - uid + - member + converters: + - name: null + value: null + maps: + groups: + - name: null + value: null +affiliations: + org1: + - department1 + - department2 + org2: + - department1 +signing: + default: + usage: + - digital signature + - cert sign + - crl sign + expiry: 87600h + profiles: + ca: + usage: + - cert sign + - crl sign + expiry: 43800h + caconstraint: + isca: true + maxpathlen: 0 + tls: + usage: + - signing + - key encipherment + - server auth + - client auth + - key agreement + expiry: 87600h +csr: + cn: tlsca.example.com + keyrequest: + algo: ecdsa + size: 256 + names: + - C: US + ST: North Carolina + L: null + O: example.com + OU: tlsca + hosts: + - fabric-ca-server + - localhost + ca: + expiry: 1314000h + pathlength: 1 +idemix: + rhpoolsize: 1000 + nonceexpiration: 15s + noncesweepinterval: 15m +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + keystore: msp/keystore +cacount: null +cafiles: null +intermediate: + parentserver: + url: null + caname: null + enrollment: + hosts: null + profile: null + label: null + tls: + certfiles: null + client: + certfile: null + keyfile: null diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/fabric-ca-server.db b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/fabric-ca-server.db new file mode 100644 index 0000000000000000000000000000000000000000..cb70bf703c5d2da7c1f86ae1e98bc71fee345b87 GIT binary patch literal 61440 zcmeI)O>Em#00(fp&S%&3bx7T)+YDl{}UAMudgf5h5rQ5Q0VnSd!$xCYH*qP&0 z4HJiyavN7JOq{uZ5GM}6VG>skNJt#GaX|thaT#0?JUi)Pr%l(xI<)fl>ePPk`T4!y zdwzCouQ#r*=nkW0%dTn;ofk#~Q50UHR1kzQJ`+Ai_&mVp5k80bygP}z3kUoj6K4Ld zC1Ur5p;%Nnu`~41;Aina23zsP_*dk7EIRx}LXCax{yQKKL_q)o5P-n{R$%+BP&7F+ zBkov^RxntR*^XY;i<-mgs%4aV*TYNsY-TM>*D^1!Wa&h2^aP#OOY~+Yzw~M*Kb>A! zkW;kIY+W-{vr#QDn-&bKKv%D>(be^pl@!$)&W2^{PE)57_aXa#0? z+w(jf&1uwoGqagiw@j*=PKvUvnr=6#qgNSET&<<3%{Hyutfcaju`jg7s=e75Y?JRO zx4M>H&gSXm>?@h|l{Gq-qSx}d*E0EA^h);Dbf8xK>mkdnQ^V2Z)Rfq&c)(h@tQ)%K z=$2XcFAoG@{V{af)T-#Moz>)8~o*^CPYQ>AF1s>rd2!noV&EpEeG z-M>4x)wS})lab_=DN)eP65FcZG5D2?%G=8F*403>EB>|6(Dy>lJ(w25k>rh;LuJ5s zs0K1|ix9bcBAOf@7h4&xgf-i$xm}ahyGug>vTit??ksmX+C6boGa6mU^uh(+JN<3C zyO}J{4@Hv8sL8e*bwe{t2I~eITHR@fsk*7wEbGzn*tbsy0lb~a^7iRS zG&wmbzSkMuZ03zHno%!y7o&la`y%!k%zX9gl(}a>b2slDP>yWyI#gfSQ)F3Qh(?mR z$$mYSGEc z1sm6QdV7+E@t@L;thJB)RCSRYH0TFT5{iG#{VLlY^reFaeg7uz5U&O@aYI6_Tq2rG zCdKVLUJq;V-ck2Hh6By$1?|&*4nM)0w9s^zmZDCx);rkyN)Q})`3c-{Y`xInmpybX z`}$h@62mtl(Wb|jR|H}nA!BxWKV}U#*KamIIOTLH+0uX=z1Rwwb z2tWV=5P$##AOL}Bq$J`k6F!TbNmt6@jMt z6@)yEA2vl+*+^+Lm8bzk!5dXi_l57=L;*uI4Q^UYhvfmwD-aG4pb!k_3r zev3`(HalqVIn!Zwm6iCb0Bk7}Easd4xX=H?- literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/msp/keystore/3295981bd696e06db41db48b17fb743d43988f16fa0b8a1ff6cc6bea7c863162_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/msp/keystore/3295981bd696e06db41db48b17fb743d43988f16fa0b8a1ff6cc6bea7c863162_sk new file mode 100644 index 00000000..2681bf59 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/msp/keystore/3295981bd696e06db41db48b17fb743d43988f16fa0b8a1ff6cc6bea7c863162_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgLUPdLlI4BVuCXdly +UQMuZ67vJYr2t4ybbr0jLHAIDdChRANCAATgOHkZzn6C6MieVWOZjGve0h/taMdx +QKLv8l08a1FScas16CDWIcDBSIWg1eRh/I/J7Ijjt6DEtHSt3ctGzAuq +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/msp/keystore/IssuerRevocationPrivateKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/msp/keystore/IssuerRevocationPrivateKey new file mode 100644 index 00000000..1070b843 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/msp/keystore/IssuerRevocationPrivateKey @@ -0,0 +1,6 @@ +-----BEGIN PRIVATE KEY----- +MIGkAgEBBDALaw+r+kOT0kY5O9E91HUwvqE7p4cTqrAJQ/ZFcgtUz9b8wPL23DOi +XM8Bf77RMaCgBwYFK4EEACKhZANiAATosxBnHncqCn6C6d8Io16Gu5nLUBhDvYNx +/ORur0SLexInMKUrRyc2mFp7zT6XrUCTmKarZJC+7iWGrKyyngkwTxvxa8VVaGY5 +1C/5dObVsA83xko7GOoMHYVtvxFCYJk= +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/msp/keystore/IssuerSecretKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/msp/keystore/IssuerSecretKey new file mode 100644 index 0000000000000000000000000000000000000000..d692157b964d70cbbf1254922bcb56d1c49eb5b7 GIT binary patch literal 32 ocmY$}e>x&D)=^fc(!oyn*GX-L6^T!d1SWd$sC*GgUU(%D0My_OWdHyG literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem new file mode 100644 index 00000000..197d49ca --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICGTCCAb+gAwIBAgIUf6wM/e5Yoqad5ykzdyNMmFEkQpwwCgYIKoZIzj0EAwIw +aDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRQwEgYDVQQK +EwtleGFtcGxlLmNvbTEOMAwGA1UECxMFdGxzY2ExGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMCAXDTE4MTAxMjA4NTYwMFoYDzIxNjgwOTA1MDg1NjAwWjBoMQsw +CQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExFDASBgNVBAoTC2V4 +YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEaMBgGA1UEAxMRdGxzY2EuZXhhbXBs +ZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATgOHkZzn6C6MieVWOZjGve +0h/taMdxQKLv8l08a1FScas16CDWIcDBSIWg1eRh/I/J7Ijjt6DEtHSt3ctGzAuq +o0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBATAdBgNVHQ4E +FgQUnOwD/If5n4yCIxCc2kik9+mRsxYwCgYIKoZIzj0EAwIDSAAwRQIhAPNMC62d +5EsJjkqZLSuq9GyZDk+4fsHzNS6lgrlzZfuxAiBygZt2ee8Z8zwoZjTRXvcCj4Df +5+YwFqOjgPXdXg+nTA== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com_sk new file mode 100644 index 00000000..2681bf59 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgLUPdLlI4BVuCXdly +UQMuZ67vJYr2t4ybbr0jLHAIDdChRANCAATgOHkZzn6C6MieVWOZjGve0h/taMdx +QKLv8l08a1FScas16CDWIcDBSIWg1eRh/I/J7Ijjt6DEtHSt3ctGzAuq +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@ca.org1.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@ca.org1.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..6b7395af --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@ca.org1.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://ca.org1.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: Admin@org1.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@ca.org1.example.com/msp/keystore/73cc881ad56def29c760c1bb0a798a30ef7e72c099dc45d5af032767bc56db90_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@ca.org1.example.com/msp/keystore/73cc881ad56def29c760c1bb0a798a30ef7e72c099dc45d5af032767bc56db90_sk new file mode 100644 index 00000000..0e34740e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@ca.org1.example.com/msp/keystore/73cc881ad56def29c760c1bb0a798a30ef7e72c099dc45d5af032767bc56db90_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg8vMuirOjKSGHUNNF +qYlMP7ZlaOE8xD4BIV9UjYApuQyhRANCAATVFCmMnRB4YjYASeToLpW905Sr11d7 +eJuWWVEXxRXweujA+2XIvJnu9oJzfctuEgAixaNfNLWaHo7AAdK1WOLw +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..ef6b4f00 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://tlsca.org1.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: Admin@org1.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..226a754636dac25a1a9a821bd7b07bfbaa1b43ac GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAa(w~SmWIJ_#@&8L4&Z-_=%E^)bpI}--vnQv6H$`ToNEs@eX9eAAJ{3y&M&<@Fgu6 zckYPtV4^F4at3CW1pnX~L<%614*uG1t2!?7R^CW#+~oh3ILU+cYzr-@G;AjI6hLPZ zASJT|G++p$Yim*EpVuL)P*@Fp)uZnF=5u?!9UY+w`yxaNAcIa7#I=O&lH3&jwI%LT zi#&!-7H{!R%>i0_98?IAUChTmNZ`x%e|Jr;jKRv`qT5_!-L<%6-yJ#|OF(cj3A^tcV zeMfxBTxV|N5YNrw?p3lbeqI0)ApYln)W|CWL1@@ZrCWGKU~Qp(0GzL*IO0RSzBgVR z*(!(u3Lv$HJ>?ry0-*88#g{sWa`{#jo~3z0VdS|%`SQ0FMu(Ne8dQT9Z8 zFY6*8bw<~4E%r>IJO5lw0ybleld;hjxmv&+Qj|STL+{`4GDHd>!H(}~6ImwpD^CY& z&{vV$C*?=}k9I%6juM=sF%Yea5+I;C(8aa%Lp_rVF>^2>Q0}yNpEIW`xXiB=kz6qI zrV~0u3Lr4ZVroZZ`_T`ZZ}H@3*?FM4-%2gsKq7?pm&HUdzy=Z^hiRYG98w+ihRooM zg_v3jN4zQMe5AThe=6|*{j3IoLLgJ=U4jLP9qShVLPip1uq)pKCXvk!yG?%i{y(q# z9ji(pFNqhx4A8e)g9l@P>86%YKjs7xUXQC*LAh%e-1HMJQXqiI$G69?!^rVh2&_#% Vk($L%Jcjq}W!2e#PhOvS;IH?2jpzUX literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/IssuerRevocationPublicKey new file mode 100644 index 00000000..a23395d7 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEbdmgC+obJLpKIU15eFC1MJNLMdkpOchP +9bG0xFWT0wk69EEFAeSYnDHdDFwJH3gmSEmSaccrRRGJUts4yBCz4vpAyxklNEJU +JQV9TLWAwWs6IwpYSdI5FZb1Ot4YWvUd +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem new file mode 100644 index 00000000..8f5915a6 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICLTCCAdOgAwIBAgIUZtbUdoKq2gdiBI4t9xAYtKb0l1swCgYIKoZIzj0EAwIw +cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU2MDBaGA8yMTY4MDkwNTA4 +NTYwMFowcjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkw +FwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UE +AxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEH +A0IABDTiGBWVnDlbHx0qkujF3r4r5g7fG3FFuYXz4UgN2WmNk2z6nF4FaD+YQgCz +ayp0eLT37kK0BSJHqEKoiJrKtZ6jRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB +Af8ECDAGAQH/AgEBMB0GA1UdDgQWBBRYLwES7lJq4i67F2AeLU35NxkbUzAKBggq +hkjOPQQDAgNIADBFAiEAvfkVNhBjlw8ApIorDAvqMA2DmLckOjX1HS2aN8MleT8C +IBIrfl1rq9rz/PuvEmGB15oKXPiTHOWqZ3Mkdlc4Uddd +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/keystore/44ac4b3d7f237351157123fe27ae6ab6beed584000c446a5a22373fb366a4987_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/keystore/44ac4b3d7f237351157123fe27ae6ab6beed584000c446a5a22373fb366a4987_sk new file mode 100644 index 00000000..b2ffa67d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/keystore/44ac4b3d7f237351157123fe27ae6ab6beed584000c446a5a22373fb366a4987_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgfRcMLZfkPxSPSjxY +LOcLxIeUCd7C71EfZH9Jyj8cstqhRANCAASpl1xmXmNMex/YmPK9ew9sI4JW7w5B +e4whAaHEMEr4K9QWbmGUtZPtr3EKEHYbhA8BM2RdFkl+09fvew76T9tQ +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/signcerts/cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/signcerts/cert.pem new file mode 100644 index 00000000..71cde348 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/Admin@tlsca.org1.example.com/msp/signcerts/cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDDTCCArOgAwIBAgIUJbPbRHo+tTwYRVq0zJ2p3bzYtdMwCgYIKoZIzj0EAwIw +cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODEwMTIwODU3MDBaFw0yODEwMDkwOTAy +MDBaMIGFMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTENMAsG +A1UECxMEdXNlcjEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZMBMG +ByqGSM49AgEGCCqGSM49AwEHA0IABKmXXGZeY0x7H9iY8r17D2wjglbvDkF7jCEB +ocQwSvgr1BZuYZS1k+2vcQoQdhuEDwEzZF0WSX7T1+97DvpP21CjggERMIIBDTAO +BgNVHQ8BAf8EBAMCAYYwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUPgf/xHQ/Nru2 ++JEBpLOA2OClo6AwHwYDVR0jBBgwFoAUWC8BEu5SauIuuxdgHi1N+TcZG1MwIQYD +VR0RBBowGIEWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTCBiQYIKgMEBQYHCAEEfXsi +YXR0cnMiOnsiYWJhYy5pbml0IjoidHJ1ZSIsImFkbWluIjoidHJ1ZSIsImhmLkFm +ZmlsaWF0aW9uIjoiIiwiaGYuRW5yb2xsbWVudElEIjoiQWRtaW5Ab3JnMS5leGFt +cGxlLmNvbSIsImhmLlR5cGUiOiJ1c2VyIn19MAoGCCqGSM49BAMCA0gAMEUCIQCl +X+M3Rp7MEAVT6N8D7TgqOh9Rmtrv4By1WVmeNf/ZAAIgb6Cb7Thh7y60I6OlxdOw +A3bsWxA4xq8q3gCL+/I2kDE= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@ca.org1.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@ca.org1.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..cec4dbdc --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@ca.org1.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://ca.org1.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: User1@org1.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@ca.org1.example.com/msp/keystore/cfdbc7a7f70d040af5879f1b7333a68dd0a48c3f71df817b7ae26bb1bd42e86d_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@ca.org1.example.com/msp/keystore/cfdbc7a7f70d040af5879f1b7333a68dd0a48c3f71df817b7ae26bb1bd42e86d_sk new file mode 100644 index 00000000..5ac8d89a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@ca.org1.example.com/msp/keystore/cfdbc7a7f70d040af5879f1b7333a68dd0a48c3f71df817b7ae26bb1bd42e86d_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgWUNovBTSm43w0Gne +wH+gjOv4wnAUOes4Rl5xRfJNkFChRANCAAQYGe+D/gw4IbjDBD5XQutFqjELjXz+ +WayBTKOK/gZP4lqwqp9NqWNWI8uiVilHKrKD24GqsM3+h5d5q2UJG5Hf +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..47b9ce88 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://tlsca.org1.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: User1@org1.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..226a754636dac25a1a9a821bd7b07bfbaa1b43ac GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAa(w~SmWIJ_#@&8L4&Z-_=%E^)bpI}--vnQv6H$`ToNEs@eX9eAAJ{3y&M&<@Fgu6 zckYPtV4^F4at3CW1pnX~L<%614*uG1t2!?7R^CW#+~oh3ILU+cYzr-@G;AjI6hLPZ zASJT|G++p$Yim*EpVuL)P*@Fp)uZnF=5u?!9UY+w`yxaNAcIa7#I=O&lH3&jwI%LT zi#&!-7H{!R%>i0_98?IAUChTmNZ`x%e|Jr;jKRv`qT5_!-L<%6-yJ#|OF(cj3A^tcV zeMfxBTxV|N5YNrw?p3lbeqI0)ApYln)W|CWL1@@ZrCWGKU~Qp(0GzL*IO0RSzBgVR z*(!(u3Lv$HJ>?ry0-*88#g{sWa`{#jo~3z0VdS|%`SQ0FMu(Ne8dQT9Z8 zFY6*8bw<~4E%r>IJO5lw0ybleld;hjxmv&+Qj|STL+{`4GDHd>!H(}~6ImwpD^CY& z&{vV$C*?=}k9I%6juM=sF%Yea5+I;C(8aa%Lp_rVF>^2>Q0}yNpEIW`xXiB=kz6qI zrV~0u3Lr4ZVroZZ`_T`ZZ}H@3*?FM4-%2gsKq7?pm&HUdzy=Z^hiRYG98w+ihRooM zg_v3jN4zQMe5AThe=6|*{j3IoLLgJ=U4jLP9qShVLPip1uq)pKCXvk!yG?%i{y(q# z9ji(pFNqhx4A8e)g9l@P>86%YKjs7xUXQC*LAh%e-1HMJQXqiI$G69?!^rVh2&_#% Vk($L%Jcjq}W!2e#PhOvS;IH?2jpzUX literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/IssuerRevocationPublicKey new file mode 100644 index 00000000..a23395d7 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEbdmgC+obJLpKIU15eFC1MJNLMdkpOchP +9bG0xFWT0wk69EEFAeSYnDHdDFwJH3gmSEmSaccrRRGJUts4yBCz4vpAyxklNEJU +JQV9TLWAwWs6IwpYSdI5FZb1Ot4YWvUd +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem new file mode 100644 index 00000000..8f5915a6 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICLTCCAdOgAwIBAgIUZtbUdoKq2gdiBI4t9xAYtKb0l1swCgYIKoZIzj0EAwIw +cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU2MDBaGA8yMTY4MDkwNTA4 +NTYwMFowcjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkw +FwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UE +AxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEH +A0IABDTiGBWVnDlbHx0qkujF3r4r5g7fG3FFuYXz4UgN2WmNk2z6nF4FaD+YQgCz +ayp0eLT37kK0BSJHqEKoiJrKtZ6jRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB +Af8ECDAGAQH/AgEBMB0GA1UdDgQWBBRYLwES7lJq4i67F2AeLU35NxkbUzAKBggq +hkjOPQQDAgNIADBFAiEAvfkVNhBjlw8ApIorDAvqMA2DmLckOjX1HS2aN8MleT8C +IBIrfl1rq9rz/PuvEmGB15oKXPiTHOWqZ3Mkdlc4Uddd +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/keystore/c193ca45e88d8a6602450a05c87de44c9d630428d49fe82ac730959ada6d3eb7_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/keystore/c193ca45e88d8a6602450a05c87de44c9d630428d49fe82ac730959ada6d3eb7_sk new file mode 100644 index 00000000..807469b4 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/keystore/c193ca45e88d8a6602450a05c87de44c9d630428d49fe82ac730959ada6d3eb7_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2PYDX6UQs548jvq0 +eP2rClDYv8JoiZeK6qJcXHzvQUqhRANCAAT6w4XqgWi8OOT6uYXZRaGkquFsFtsh +rfS8J4KB2c6WUDkUIHXOio6hLP2mNFTVNMGnRxF1LSpMPEFxie5jaN/W +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/signcerts/cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/signcerts/cert.pem new file mode 100644 index 00000000..7798a595 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/User1@tlsca.org1.example.com/msp/signcerts/cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDDTCCArSgAwIBAgIUH4qT7e5nHhIYhhXrdGPnEzHWMhswCgYIKoZIzj0EAwIw +cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODEwMTIwODU3MDBaFw0yODEwMDkwOTAy +MDBaMIGFMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTENMAsG +A1UECxMEdXNlcjEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNvbTBZMBMG +ByqGSM49AgEGCCqGSM49AwEHA0IABPrDheqBaLw45Pq5hdlFoaSq4WwW2yGt9Lwn +goHZzpZQORQgdc6KjqEs/aY0VNU0wadHEXUtKkw8QXGJ7mNo39ajggESMIIBDjAO +BgNVHQ8BAf8EBAMCAYYwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU/fDcOzrRHtLF +QnXNHSVg2ln0UmgwHwYDVR0jBBgwFoAUWC8BEu5SauIuuxdgHi1N+TcZG1MwIQYD +VR0RBBowGIEWVXNlcjFAb3JnMS5leGFtcGxlLmNvbTCBigYIKgMEBQYHCAEEfnsi +YXR0cnMiOnsiYWJhYy5pbml0IjoidHJ1ZSIsImFkbWluIjoiZmFsc2UiLCJoZi5B +ZmZpbGlhdGlvbiI6IiIsImhmLkVucm9sbG1lbnRJRCI6IlVzZXIxQG9yZzEuZXhh +bXBsZS5jb20iLCJoZi5UeXBlIjoidXNlciJ9fTAKBggqhkjOPQQDAgNHADBEAiBK +C0p26m2dx0Y9IEJ93KWHgr+kCXtJHs+mLh56CbjkNwIgOyqY7vOQ6plgUpTT42b8 +Xp2CkVyqaw+hsUg+F2lxGsA= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@ca.org1.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@ca.org1.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..3ec323c5 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@ca.org1.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://ca.org1.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: boot-admin + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@ca.org1.example.com/msp/keystore/34e439a8c5fb85419ae4bb629918cc736d8a92658e79ae92d42d30a7ac98f9a0_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@ca.org1.example.com/msp/keystore/34e439a8c5fb85419ae4bb629918cc736d8a92658e79ae92d42d30a7ac98f9a0_sk new file mode 100644 index 00000000..e4097d65 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@ca.org1.example.com/msp/keystore/34e439a8c5fb85419ae4bb629918cc736d8a92658e79ae92d42d30a7ac98f9a0_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgGnD2h1/mDGeNIadf +fP/pROrbeZRifCe8Z9VIGAQ3GoShRANCAAR2wsRMRc5/mBRrTbjfZ/4FD6rb9fPz +y36ATZQx+o7Zj22paPHhXKHOOZliP/n0Ax5EPeY8DejzDY0mo3CV3voZ +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..e2606736 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://tlsca.org1.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: boot-admin + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..226a754636dac25a1a9a821bd7b07bfbaa1b43ac GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAa(w~SmWIJ_#@&8L4&Z-_=%E^)bpI}--vnQv6H$`ToNEs@eX9eAAJ{3y&M&<@Fgu6 zckYPtV4^F4at3CW1pnX~L<%614*uG1t2!?7R^CW#+~oh3ILU+cYzr-@G;AjI6hLPZ zASJT|G++p$Yim*EpVuL)P*@Fp)uZnF=5u?!9UY+w`yxaNAcIa7#I=O&lH3&jwI%LT zi#&!-7H{!R%>i0_98?IAUChTmNZ`x%e|Jr;jKRv`qT5_!-L<%6-yJ#|OF(cj3A^tcV zeMfxBTxV|N5YNrw?p3lbeqI0)ApYln)W|CWL1@@ZrCWGKU~Qp(0GzL*IO0RSzBgVR z*(!(u3Lv$HJ>?ry0-*88#g{sWa`{#jo~3z0VdS|%`SQ0FMu(Ne8dQT9Z8 zFY6*8bw<~4E%r>IJO5lw0ybleld;hjxmv&+Qj|STL+{`4GDHd>!H(}~6ImwpD^CY& z&{vV$C*?=}k9I%6juM=sF%Yea5+I;C(8aa%Lp_rVF>^2>Q0}yNpEIW`xXiB=kz6qI zrV~0u3Lr4ZVroZZ`_T`ZZ}H@3*?FM4-%2gsKq7?pm&HUdzy=Z^hiRYG98w+ihRooM zg_v3jN4zQMe5AThe=6|*{j3IoLLgJ=U4jLP9qShVLPip1uq)pKCXvk!yG?%i{y(q# z9ji(pFNqhx4A8e)g9l@P>86%YKjs7xUXQC*LAh%e-1HMJQXqiI$G69?!^rVh2&_#% Vk($L%Jcjq}W!2e#PhOvS;IH?2jpzUX literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/IssuerRevocationPublicKey new file mode 100644 index 00000000..a23395d7 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEbdmgC+obJLpKIU15eFC1MJNLMdkpOchP +9bG0xFWT0wk69EEFAeSYnDHdDFwJH3gmSEmSaccrRRGJUts4yBCz4vpAyxklNEJU +JQV9TLWAwWs6IwpYSdI5FZb1Ot4YWvUd +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem new file mode 100644 index 00000000..8f5915a6 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICLTCCAdOgAwIBAgIUZtbUdoKq2gdiBI4t9xAYtKb0l1swCgYIKoZIzj0EAwIw +cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU2MDBaGA8yMTY4MDkwNTA4 +NTYwMFowcjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkw +FwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UE +AxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEH +A0IABDTiGBWVnDlbHx0qkujF3r4r5g7fG3FFuYXz4UgN2WmNk2z6nF4FaD+YQgCz +ayp0eLT37kK0BSJHqEKoiJrKtZ6jRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB +Af8ECDAGAQH/AgEBMB0GA1UdDgQWBBRYLwES7lJq4i67F2AeLU35NxkbUzAKBggq +hkjOPQQDAgNIADBFAiEAvfkVNhBjlw8ApIorDAvqMA2DmLckOjX1HS2aN8MleT8C +IBIrfl1rq9rz/PuvEmGB15oKXPiTHOWqZ3Mkdlc4Uddd +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/keystore/8536a2b7d0da5fc40122f75d0a21ceba15d8a8c9797d683b2d1436889dda4e1d_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/keystore/8536a2b7d0da5fc40122f75d0a21ceba15d8a8c9797d683b2d1436889dda4e1d_sk new file mode 100644 index 00000000..58eb32bd --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/keystore/8536a2b7d0da5fc40122f75d0a21ceba15d8a8c9797d683b2d1436889dda4e1d_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgWPQgr/DLwEczolSb +mEznYJZXe4gNhPPAcnMmQrLgolehRANCAARyGsnOftmnTa+flGDLKdPJbj+C0Cla +aaY5zkuAUT1ojNk/ASQv22KGOi+V50QvzyK3QOqAKnPBGvpM9akBz92J +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/signcerts/cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/signcerts/cert.pem new file mode 100644 index 00000000..42bd0c82 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/boot-admin@tlsca.org1.example.com/msp/signcerts/cert.pem @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIICczCCAhqgAwIBAgIUc5cHVaZnLnq0g7UZ8bveQ2VJADEwCgYIKoZIzj0EAwIw +cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODEwMTIwODU3MDBaFw0yODEwMDkwOTAy +MDBaMHsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMQ8wDQYD +VQQLEwZjbGllbnQxEzARBgNVBAMTCmJvb3QtYWRtaW4wWTATBgcqhkjOPQIBBggq +hkjOPQMBBwNCAARyGsnOftmnTa+flGDLKdPJbj+C0ClaaaY5zkuAUT1ojNk/ASQv +22KGOi+V50QvzyK3QOqAKnPBGvpM9akBz92Jo4GEMIGBMA4GA1UdDwEB/wQEAwIB +hjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQhJFtMm0+ApEOidrRbUd466PCe4jAf +BgNVHSMEGDAWgBRYLwES7lJq4i67F2AeLU35NxkbUzAhBgNVHREEGjAYgRZBZG1p +bkBvcmcxLmV4YW1wbGUuY29tMAoGCCqGSM49BAMCA0cAMEQCICaXvUWDxu62xHmK +TXMvTTVgSYZE+Q8hCOfnlz9OQJyaAiAtKzb22ZNDjW/ZSjsKXJhsK1+CJC52CabN +ANE96bx2Xg== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..5c30e6a6fcb95c1b5ac8706e24c9eed66a377164 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAUqMHeJn*kG`a+IC*R2-bLrUi(~IUA4F!!?9h0=<5fUJrB98cOi5Xl^X4@U_!P!Id@OBsLdC5^5(oQm!-26Eb zAOn2nB!+0E`o|PYCt-s-Dmc;YF%mV4jDr!6xV~U@-XcT_AY&WxQD6e0lwr%@g#=!3 zVm4qAFSLkm(G3;<|FL+H4iX^yiJ*}Iet4`9P#)wKg*4WTxc|RX;hH2khrBg@eAERZ zL<%6H#JDiM72}<{kjNClm{XSjKdb=eb3 z8kyUh(;&Nhbg(!n>Y-L6zz!M`Aoo(8<`n~ROP}XTXxxwuAD{A@o}z+oTD<1k%Hdvw zkt&D*3Lx;En~TGFC6t#83Fa+vI&m&XAg`>sx(TZ?uBvwU4mJ`XEWQnRF^(fP*xL^u z_KBynIVTd-)*tl@e*C<#rLEDJ8XzqClmJvJ2+1p{zedJ`Aw77^VKHj;9n_`W%KO&g z9v~thvrwA(W?u|nIn@<~ji|f7V^;-Q&i<`pqOLp~0q=COGDHd>j9fnj3I{;;guMM= zjr`IwXsiOg={Bx(S-*O+s-pIl5+E`Vs_?cdtgs&rX>mz8?kpX->PjbpBMYt8**4Z= zG!Z&P3Ls6}=|pg0Kgi_u*vd#QfFS4_pSrlYpAe<@5WN6kG|v(sThhjwp>G)Z~56C^+t04A{ke{&{8Sl VTY#2P&`z#G_z9V8@4Q`LqN^o*gE{~J literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/IssuerRevocationPublicKey new file mode 100644 index 00000000..9091d59f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEVHAMGD123d5QVhI6LAq7sEU8frN4bN9p +gPiKwWBLljpCGQH8kBbQoyEyFFBGndyWgalkLrEXJNv/VGAWyDEeg6c8/fycfJW4 +iq8Mk1AvRAVMJIF9VwjHdwQ3rMmzC15n +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem new file mode 100644 index 00000000..6008c92c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICIDCCAcegAwIBAgIUDEK12gHn0vyqLETS3DWGJrqUksMwCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +MS5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU3MDBaGA8yMTY4MDkwNTA4NTcwMFow +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +MS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABN1A0nR0Orkp +ppOOnvCoIiIFfzpBdwWQCJ7FEx/iF2H/2PkOws6qEN2sBh2WqByWR2c7EIdmgvUu +ZxSIEXU2TO2jRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEB +MB0GA1UdDgQWBBSpWdz/SpIKYXgSaEYa0XBEvF8TGzAKBggqhkjOPQQDAgNHADBE +AiAPu4EVW8V7ocl2hRGI+jAz4aBfCiiW5MX3+vYbDCtyxgIgJoeEFVulOhxdEBBe +YKUNAAVA2pkMYUzgEWT743z0jhY= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com_sk new file mode 100644 index 00000000..f9b6b7a7 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgvjKIcywt9dWmrXyU +EP5BS3QS2820krnIkXpMxcUfL5qhRANCAATdQNJ0dDq5KaaTjp7wqCIiBX86QXcF +kAiexRMf4hdh/9j5DsLOqhDdrAYdlqgclkdnOxCHZoL1LmcUiBF1Nkzt +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/fabric-ca-server-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/fabric-ca-server-config.yaml new file mode 100644 index 00000000..907fdf93 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/fabric-ca-server-config.yaml @@ -0,0 +1,134 @@ +version: 1.4.0 +port: 7054 +debug: false +crlsizelimit: 512000 +tls: + enabled: false + certfile: null + keyfile: null + clientauth: + type: noclientcert + certfiles: null +ca: + name: ca.org1.example.com + keyfile: ca.org1.example.com_sk + certfile: ca.org1.example.com-cert.pem + chainfile: null +crl: + expiry: 24h +registry: + maxenrollments: -1 + identities: + - name: boot-admin + pass: boot-pass + type: client + affiliation: "" + attrs: + hf.Registrar.Roles: '*' + hf.Registrar.DelegateRoles: '*' + hf.Revoker: true + hf.IntermediateCA: true + hf.GenCRL: true + hf.Registrar.Attributes: '*' + hf.AffiliationMgr: true +db: + type: sqlite3 + datasource: fabric-ca-server.db + tls: + enabled: false + certfiles: null + client: + certfile: null + keyfile: null +ldap: + enabled: false + url: ldap://:@:/ + tls: + certfiles: null + client: + certfile: null + keyfile: null + attribute: + names: + - uid + - member + converters: + - name: null + value: null + maps: + groups: + - name: null + value: null +affiliations: + org1: + - department1 + - department2 + org2: + - department1 +signing: + default: + usage: + - digital signature + - cert sign + - crl sign + expiry: 87600h + profiles: + ca: + usage: + - cert sign + - crl sign + expiry: 43800h + caconstraint: + isca: true + maxpathlen: 0 + tls: + usage: + - signing + - key encipherment + - server auth + - client auth + - key agreement + expiry: 87600h +csr: + cn: ca.org1.example.com + keyrequest: + algo: ecdsa + size: 256 + names: + - C: US + ST: North Carolina + L: null + O: org1.example.com + OU: ca + hosts: + - fabric-ca-server + - localhost + ca: + expiry: 1314000h + pathlength: 1 +idemix: + rhpoolsize: 1000 + nonceexpiration: 15s + noncesweepinterval: 15m +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + keystore: msp/keystore +cacount: null +cafiles: null +intermediate: + parentserver: + url: null + caname: null + enrollment: + hosts: null + profile: null + label: null + tls: + certfiles: null + client: + certfile: null + keyfile: null diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/fabric-ca-server.db b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/ca/fabric-ca-server.db new file mode 100644 index 0000000000000000000000000000000000000000..602a4e572fb291bdd121f02dc9f8e6ab7ae96b0c GIT binary patch literal 61440 zcmeI)&u`mQ00(fp&d>gO-Lxv}?X_K{29j<`*Hz)cw zdC$*|U)Ed83p!`CY}pl!(`ji)l4a?2N+n4e5epGZNGv^K84^oCEPF3`Z{?8RBU198 z>Okb7)E@~;eLMZ1^nMZjv$q+Yi+)WmM#6(%4yciDoPUSpfn5-Q00bcLzZKYiHxP~` zlk$$mwSvKl%;tJoFKV3CRLdxJZU^V{+006ou4LX=$kMUS-D7l8FVWkX{QR4l{A7A& zCZ3=*X6u@vn)OP7*|cC-1-f{1g)XixEF`E_=j)cO^M<;?8meAmrgQlH@rs&iXa#1t z=|!GgUM*2y~0G~N;N@kwrOp!k}597p3o|*bY^3)O>v;y z;!5^fHczi)uVz*kR_KKUUCQTfWb$|E_3YhAU#+^=BOY&_9t_7OCgkRt3#^sPx}j@a zx6GP%y~hXZ-9sl$t-_w7rY@u}#-9q()y3TMYBoWuHWPyWSP9ytD)Gn@Y1C=;rmzvM z?me8->RNgBR48_RLY8#1#I|bp3~?u;ing-cZPnN8DeqRG|FM*FPNunFD0VA(qzuFX zRbM7f5kmL-!m-g&xtVcGShcOH(=}PGz1Hs|YlqXx)_R*`wk(Qc)0A4*NN*9V#d(Qs^JL~hpIBAb?3WVPM*USCmn!|0?akH5k8H|zdx z+@(qVH4!<-Gz+adllYO9pEP8d{C-hN-%#RxRu4`Pj8j`vKg8#N*p% zLgCo>xcotDbhDW|!e~aV*j^3$O77Wlz+mR7SF6k&1Dcb(b3i$^!RttUVPBEs@tJTa zmK*QZGdu#~ylgu~27i-2a)z>8`e~s|&IRMl*j&{PeyWak*!}ijUJFY&X zFp9r%J(suVSs3pn?burT*e_MHlh zC3|OO_ZGu5BGHPrr83jD45K1$Qfi*D>fqaj_<&Fel20Y_g#1h%ldr@oUJ!r)1Rwwb z2tWV=5P$##AOHafyikF&!9a32YT0Y4sS>MdHg`VNr=9JyfdlrWoIMdGFg)OpT zcxN%MF>^k@a7cu9Ju;lzdZErcEA!63&isFnJd(&y, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: peer0@org1.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@ca.org1.example.com/msp/keystore/572d73d7a08d9992a2e3024a6105fb7a47ae89aae2bb5a6d7fcd13b15a57a0e1_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@ca.org1.example.com/msp/keystore/572d73d7a08d9992a2e3024a6105fb7a47ae89aae2bb5a6d7fcd13b15a57a0e1_sk new file mode 100644 index 00000000..a3869e94 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@ca.org1.example.com/msp/keystore/572d73d7a08d9992a2e3024a6105fb7a47ae89aae2bb5a6d7fcd13b15a57a0e1_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgGbiPTe+OO8PG2TQu +00tnxr7sU1D/DrPshhXHyyND/7uhRANCAAT0Du/ENv0FsDjpCcRxrlW8zJqU3mYB +YengujzLKbirqcKlmmon2uWm4vZDiLS60b6Aa/5nfLSNatAfhyenKtez +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..2e43e9f1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://tlsca.org1.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: peer0@org1.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..226a754636dac25a1a9a821bd7b07bfbaa1b43ac GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAa(w~SmWIJ_#@&8L4&Z-_=%E^)bpI}--vnQv6H$`ToNEs@eX9eAAJ{3y&M&<@Fgu6 zckYPtV4^F4at3CW1pnX~L<%614*uG1t2!?7R^CW#+~oh3ILU+cYzr-@G;AjI6hLPZ zASJT|G++p$Yim*EpVuL)P*@Fp)uZnF=5u?!9UY+w`yxaNAcIa7#I=O&lH3&jwI%LT zi#&!-7H{!R%>i0_98?IAUChTmNZ`x%e|Jr;jKRv`qT5_!-L<%6-yJ#|OF(cj3A^tcV zeMfxBTxV|N5YNrw?p3lbeqI0)ApYln)W|CWL1@@ZrCWGKU~Qp(0GzL*IO0RSzBgVR z*(!(u3Lv$HJ>?ry0-*88#g{sWa`{#jo~3z0VdS|%`SQ0FMu(Ne8dQT9Z8 zFY6*8bw<~4E%r>IJO5lw0ybleld;hjxmv&+Qj|STL+{`4GDHd>!H(}~6ImwpD^CY& z&{vV$C*?=}k9I%6juM=sF%Yea5+I;C(8aa%Lp_rVF>^2>Q0}yNpEIW`xXiB=kz6qI zrV~0u3Lr4ZVroZZ`_T`ZZ}H@3*?FM4-%2gsKq7?pm&HUdzy=Z^hiRYG98w+ihRooM zg_v3jN4zQMe5AThe=6|*{j3IoLLgJ=U4jLP9qShVLPip1uq)pKCXvk!yG?%i{y(q# z9ji(pFNqhx4A8e)g9l@P>86%YKjs7xUXQC*LAh%e-1HMJQXqiI$G69?!^rVh2&_#% Vk($L%Jcjq}W!2e#PhOvS;IH?2jpzUX literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/IssuerRevocationPublicKey new file mode 100644 index 00000000..a23395d7 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEbdmgC+obJLpKIU15eFC1MJNLMdkpOchP +9bG0xFWT0wk69EEFAeSYnDHdDFwJH3gmSEmSaccrRRGJUts4yBCz4vpAyxklNEJU +JQV9TLWAwWs6IwpYSdI5FZb1Ot4YWvUd +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem new file mode 100644 index 00000000..8f5915a6 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICLTCCAdOgAwIBAgIUZtbUdoKq2gdiBI4t9xAYtKb0l1swCgYIKoZIzj0EAwIw +cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU2MDBaGA8yMTY4MDkwNTA4 +NTYwMFowcjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkw +FwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UE +AxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEH +A0IABDTiGBWVnDlbHx0qkujF3r4r5g7fG3FFuYXz4UgN2WmNk2z6nF4FaD+YQgCz +ayp0eLT37kK0BSJHqEKoiJrKtZ6jRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB +Af8ECDAGAQH/AgEBMB0GA1UdDgQWBBRYLwES7lJq4i67F2AeLU35NxkbUzAKBggq +hkjOPQQDAgNIADBFAiEAvfkVNhBjlw8ApIorDAvqMA2DmLckOjX1HS2aN8MleT8C +IBIrfl1rq9rz/PuvEmGB15oKXPiTHOWqZ3Mkdlc4Uddd +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/keystore/45b0f55480bae0cc9882a3563e74f7dd8f37ec0aef715a96579fb8aa941f6f4e_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/keystore/45b0f55480bae0cc9882a3563e74f7dd8f37ec0aef715a96579fb8aa941f6f4e_sk new file mode 100644 index 00000000..c1f9eb1f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/keystore/45b0f55480bae0cc9882a3563e74f7dd8f37ec0aef715a96579fb8aa941f6f4e_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgt8+ZSv6BYejhJK/E +peNwqBja0KCe2vKwffqny1Frd2mhRANCAAQKmzIKjGZnFmh/yK0FRRiY+dnfPubf +RsFhSlE0li5JXcBhyBpgi9+7R3280q/SW9+xuEMQK0nSqoXLPeC+UrZU +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/signcerts/cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/signcerts/cert.pem new file mode 100644 index 00000000..7e06b913 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer0@tlsca.org1.example.com/msp/signcerts/cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDDTCCArSgAwIBAgIUB9LSFJbuP69HlDI8K2SpPTBn2nUwCgYIKoZIzj0EAwIw +cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODEwMTIwODU3MDBaFw0yODEwMDkwOTAy +MDBaMIGFMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTENMAsG +A1UECxMEcGVlcjEfMB0GA1UEAwwWcGVlcjBAb3JnMS5leGFtcGxlLmNvbTBZMBMG +ByqGSM49AgEGCCqGSM49AwEHA0IABAqbMgqMZmcWaH/IrQVFGJj52d8+5t9GwWFK +UTSWLkldwGHIGmCL37tHfbzSr9Jb37G4QxArSdKqhcs94L5StlSjggESMIIBDjAO +BgNVHQ8BAf8EBAMCAYYwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU+wgV82ZCI689 +LNyFs4c7B56yCRwwHwYDVR0jBBgwFoAUWC8BEu5SauIuuxdgHi1N+TcZG1MwIQYD +VR0RBBowGIEWcGVlcjBAb3JnMS5leGFtcGxlLmNvbTCBigYIKgMEBQYHCAEEfnsi +YXR0cnMiOnsiYWJhYy5pbml0IjoidHJ1ZSIsImFkbWluIjoiZmFsc2UiLCJoZi5B +ZmZpbGlhdGlvbiI6IiIsImhmLkVucm9sbG1lbnRJRCI6InBlZXIwQG9yZzEuZXhh +bXBsZS5jb20iLCJoZi5UeXBlIjoicGVlciJ9fTAKBggqhkjOPQQDAgNHADBEAiAe +MRREuRJHh2iXJ2WPf7R1KvxecnPMloR3yDG50jOYNwIgKBoK5xErYt1DWgnVkEZS +1ZEVaQDJlz/x6sEqnJmkmPg= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@ca.org1.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@ca.org1.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..a6cb0e25 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@ca.org1.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://ca.org1.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: peer1@org1.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@ca.org1.example.com/msp/keystore/484740728e8bf55fe3364ea317b2de914ffa80eda3f97ba0f84ba3a6c9a4e892_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@ca.org1.example.com/msp/keystore/484740728e8bf55fe3364ea317b2de914ffa80eda3f97ba0f84ba3a6c9a4e892_sk new file mode 100644 index 00000000..931f8076 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@ca.org1.example.com/msp/keystore/484740728e8bf55fe3364ea317b2de914ffa80eda3f97ba0f84ba3a6c9a4e892_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghB1MF5YZXvp0exC/ +ilHXOoMC65o9zOVFC2oc7DPGqO+hRANCAAQcmOyY+LZZTLSHLmuAUniwy5Q3mE3f +x+GHmBHaCNrIJzZUITw0XKQRS2FCT5UC89OY1SSc9WrhR+MXgJVQkvtF +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..274bd58c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://tlsca.org1.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: peer1@org1.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..226a754636dac25a1a9a821bd7b07bfbaa1b43ac GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAa(w~SmWIJ_#@&8L4&Z-_=%E^)bpI}--vnQv6H$`ToNEs@eX9eAAJ{3y&M&<@Fgu6 zckYPtV4^F4at3CW1pnX~L<%614*uG1t2!?7R^CW#+~oh3ILU+cYzr-@G;AjI6hLPZ zASJT|G++p$Yim*EpVuL)P*@Fp)uZnF=5u?!9UY+w`yxaNAcIa7#I=O&lH3&jwI%LT zi#&!-7H{!R%>i0_98?IAUChTmNZ`x%e|Jr;jKRv`qT5_!-L<%6-yJ#|OF(cj3A^tcV zeMfxBTxV|N5YNrw?p3lbeqI0)ApYln)W|CWL1@@ZrCWGKU~Qp(0GzL*IO0RSzBgVR z*(!(u3Lv$HJ>?ry0-*88#g{sWa`{#jo~3z0VdS|%`SQ0FMu(Ne8dQT9Z8 zFY6*8bw<~4E%r>IJO5lw0ybleld;hjxmv&+Qj|STL+{`4GDHd>!H(}~6ImwpD^CY& z&{vV$C*?=}k9I%6juM=sF%Yea5+I;C(8aa%Lp_rVF>^2>Q0}yNpEIW`xXiB=kz6qI zrV~0u3Lr4ZVroZZ`_T`ZZ}H@3*?FM4-%2gsKq7?pm&HUdzy=Z^hiRYG98w+ihRooM zg_v3jN4zQMe5AThe=6|*{j3IoLLgJ=U4jLP9qShVLPip1uq)pKCXvk!yG?%i{y(q# z9ji(pFNqhx4A8e)g9l@P>86%YKjs7xUXQC*LAh%e-1HMJQXqiI$G69?!^rVh2&_#% Vk($L%Jcjq}W!2e#PhOvS;IH?2jpzUX literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/IssuerRevocationPublicKey new file mode 100644 index 00000000..a23395d7 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEbdmgC+obJLpKIU15eFC1MJNLMdkpOchP +9bG0xFWT0wk69EEFAeSYnDHdDFwJH3gmSEmSaccrRRGJUts4yBCz4vpAyxklNEJU +JQV9TLWAwWs6IwpYSdI5FZb1Ot4YWvUd +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem new file mode 100644 index 00000000..8f5915a6 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/cacerts/tlsca-org1-example-com-7054.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICLTCCAdOgAwIBAgIUZtbUdoKq2gdiBI4t9xAYtKb0l1swCgYIKoZIzj0EAwIw +cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU2MDBaGA8yMTY4MDkwNTA4 +NTYwMFowcjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkw +FwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UE +AxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEH +A0IABDTiGBWVnDlbHx0qkujF3r4r5g7fG3FFuYXz4UgN2WmNk2z6nF4FaD+YQgCz +ayp0eLT37kK0BSJHqEKoiJrKtZ6jRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB +Af8ECDAGAQH/AgEBMB0GA1UdDgQWBBRYLwES7lJq4i67F2AeLU35NxkbUzAKBggq +hkjOPQQDAgNIADBFAiEAvfkVNhBjlw8ApIorDAvqMA2DmLckOjX1HS2aN8MleT8C +IBIrfl1rq9rz/PuvEmGB15oKXPiTHOWqZ3Mkdlc4Uddd +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/keystore/7f968e1134e56a058245eba2f821de931526774ad9c6aa12865161208628bb4a_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/keystore/7f968e1134e56a058245eba2f821de931526774ad9c6aa12865161208628bb4a_sk new file mode 100644 index 00000000..29ad249b --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/keystore/7f968e1134e56a058245eba2f821de931526774ad9c6aa12865161208628bb4a_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgsxgf5OvUl/sjxL9e +iu74qhsKNsyAY6u99fumKce+ooOhRANCAASx6/D/olnbL9yJRaLqZ5s78OByGvb1 +/yeEs+YxR9eyKNnZ4O6IKqf2IF3hxNP5rY+mcey3Khxi41aoDv++BOFV +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/signcerts/cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/signcerts/cert.pem new file mode 100644 index 00000000..f3f29b9d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/peer1@tlsca.org1.example.com/msp/signcerts/cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDDjCCArSgAwIBAgIUDpmSDWSCx8uN1ybq8hBHpqHk4+IwCgYIKoZIzj0EAwIw +cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcxLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xODEwMTIwODU3MDBaFw0yODEwMDkwOTAy +MDBaMIGFMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTENMAsG +A1UECxMEcGVlcjEfMB0GA1UEAwwWcGVlcjFAb3JnMS5leGFtcGxlLmNvbTBZMBMG +ByqGSM49AgEGCCqGSM49AwEHA0IABLHr8P+iWdsv3IlFoupnmzvw4HIa9vX/J4Sz +5jFH17Io2dng7ogqp/YgXeHE0/mtj6Zx7LcqHGLjVqgO/74E4VWjggESMIIBDjAO +BgNVHQ8BAf8EBAMCAYYwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUUmH/JVFmmsgN +1VsrQfNCA63B0u4wHwYDVR0jBBgwFoAUWC8BEu5SauIuuxdgHi1N+TcZG1MwIQYD +VR0RBBowGIEWcGVlcjFAb3JnMS5leGFtcGxlLmNvbTCBigYIKgMEBQYHCAEEfnsi +YXR0cnMiOnsiYWJhYy5pbml0IjoidHJ1ZSIsImFkbWluIjoiZmFsc2UiLCJoZi5B +ZmZpbGlhdGlvbiI6IiIsImhmLkVucm9sbG1lbnRJRCI6InBlZXIxQG9yZzEuZXhh +bXBsZS5jb20iLCJoZi5UeXBlIjoicGVlciJ9fTAKBggqhkjOPQQDAgNIADBFAiEA +s0HoNc7f21bNcod5zq4wjE5aKWNP4qLfePX04KGlQA0CIDZw8DUTR4AOuPoM37Dm +MKEFHoiOD9QajnX09mkaCbOf +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..226a754636dac25a1a9a821bd7b07bfbaa1b43ac GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAa(w~SmWIJ_#@&8L4&Z-_=%E^)bpI}--vnQv6H$`ToNEs@eX9eAAJ{3y&M&<@Fgu6 zckYPtV4^F4at3CW1pnX~L<%614*uG1t2!?7R^CW#+~oh3ILU+cYzr-@G;AjI6hLPZ zASJT|G++p$Yim*EpVuL)P*@Fp)uZnF=5u?!9UY+w`yxaNAcIa7#I=O&lH3&jwI%LT zi#&!-7H{!R%>i0_98?IAUChTmNZ`x%e|Jr;jKRv`qT5_!-L<%6-yJ#|OF(cj3A^tcV zeMfxBTxV|N5YNrw?p3lbeqI0)ApYln)W|CWL1@@ZrCWGKU~Qp(0GzL*IO0RSzBgVR z*(!(u3Lv$HJ>?ry0-*88#g{sWa`{#jo~3z0VdS|%`SQ0FMu(Ne8dQT9Z8 zFY6*8bw<~4E%r>IJO5lw0ybleld;hjxmv&+Qj|STL+{`4GDHd>!H(}~6ImwpD^CY& z&{vV$C*?=}k9I%6juM=sF%Yea5+I;C(8aa%Lp_rVF>^2>Q0}yNpEIW`xXiB=kz6qI zrV~0u3Lr4ZVroZZ`_T`ZZ}H@3*?FM4-%2gsKq7?pm&HUdzy=Z^hiRYG98w+ihRooM zg_v3jN4zQMe5AThe=6|*{j3IoLLgJ=U4jLP9qShVLPip1uq)pKCXvk!yG?%i{y(q# z9ji(pFNqhx4A8e)g9l@P>86%YKjs7xUXQC*LAh%e-1HMJQXqiI$G69?!^rVh2&_#% Vk($L%Jcjq}W!2e#PhOvS;IH?2jpzUX literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/IssuerRevocationPublicKey new file mode 100644 index 00000000..a23395d7 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEbdmgC+obJLpKIU15eFC1MJNLMdkpOchP +9bG0xFWT0wk69EEFAeSYnDHdDFwJH3gmSEmSaccrRRGJUts4yBCz4vpAyxklNEJU +JQV9TLWAwWs6IwpYSdI5FZb1Ot4YWvUd +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/fabric-ca-server-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/fabric-ca-server-config.yaml new file mode 100644 index 00000000..a5a867f8 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/fabric-ca-server-config.yaml @@ -0,0 +1,134 @@ +version: 1.4.0 +port: 7054 +debug: false +crlsizelimit: 512000 +tls: + enabled: false + certfile: null + keyfile: null + clientauth: + type: noclientcert + certfiles: null +ca: + name: tlsca.org1.example.com + keyfile: tlsca.org1.example.com_sk + certfile: tlsca.org1.example.com-cert.pem + chainfile: null +crl: + expiry: 24h +registry: + maxenrollments: -1 + identities: + - name: boot-admin + pass: boot-pass + type: client + affiliation: "" + attrs: + hf.Registrar.Roles: '*' + hf.Registrar.DelegateRoles: '*' + hf.Revoker: true + hf.IntermediateCA: true + hf.GenCRL: true + hf.Registrar.Attributes: '*' + hf.AffiliationMgr: true +db: + type: sqlite3 + datasource: fabric-ca-server.db + tls: + enabled: false + certfiles: null + client: + certfile: null + keyfile: null +ldap: + enabled: false + url: ldap://:@:/ + tls: + certfiles: null + client: + certfile: null + keyfile: null + attribute: + names: + - uid + - member + converters: + - name: null + value: null + maps: + groups: + - name: null + value: null +affiliations: + org1: + - department1 + - department2 + org2: + - department1 +signing: + default: + usage: + - digital signature + - cert sign + - crl sign + expiry: 87600h + profiles: + ca: + usage: + - cert sign + - crl sign + expiry: 43800h + caconstraint: + isca: true + maxpathlen: 0 + tls: + usage: + - signing + - key encipherment + - server auth + - client auth + - key agreement + expiry: 87600h +csr: + cn: tlsca.org1.example.com + keyrequest: + algo: ecdsa + size: 256 + names: + - C: US + ST: North Carolina + L: null + O: org1.example.com + OU: tlsca + hosts: + - fabric-ca-server + - localhost + ca: + expiry: 1314000h + pathlength: 1 +idemix: + rhpoolsize: 1000 + nonceexpiration: 15s + noncesweepinterval: 15m +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + keystore: msp/keystore +cacount: null +cafiles: null +intermediate: + parentserver: + url: null + caname: null + enrollment: + hosts: null + profile: null + label: null + tls: + certfiles: null + client: + certfile: null + keyfile: null diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/fabric-ca-server.db b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org1.example.com/tlsca/fabric-ca-server.db new file mode 100644 index 0000000000000000000000000000000000000000..2bec9c10819f8a35260b8ffc67c5ba74db37845d GIT binary patch literal 61440 zcmeI5ON`q{ddFMtms@^lW-><4++@!V)}3~DlN2S211!8GMNyPQsVPy^l_!vaBW0TLiU4!PwLAi)B;>;?#eNm1Q)OX|mZ z#`f&QTXeTX7K_EIUw!=7M}91KS*OL`XSM`BswoFy_^x=tXX{+0tOo^o= zHY!nco{c_O-Tff?(A1(;s>Ecd(nBmB-+L4t>H|}@PMndg=!2+Yxk|K9l%j=7KL02x zkG!@!FumzXSD&7kn(hRrznD*zPb^u{t@-hwOi%Vk!_~qDx;%89sOfl*qWYv~4yIAh zv~`f#?mdbQ^s(F3wG%KHFQoQ#d$kx#AA=L|1&QU@QZ&V;sY+goB9EfSC0?LPjcAT- zJX~tk)$Q2Zd-}oM?cGm54LvpHfaO-pv`pDEU1zwseq#yj;-2V3N4E8sP*DWK_g)f= zRtmgWVIM_%104`t&h;pIMN{@}{%q}j(CbeD8_?^Erwe*rZV~Tq?dCoWt(lIdPlkO9 zcrquTuiW|e$x^qYi(4DF|7nd6uBXSFTf60hS1JIU@MNiwpbA?*xV61||9ly=cZ)bm?+SK*@W1`{AwK z#~)wSh|@}(pr_xro|bQJ?>>GUdKRBoKDbzb2mmV$y8Y}DH67s0UbSOqsfkx+i$2tQ zuG)Tac|D3c`oueF%Z_I0=ZTg)^iI=GOy{KMx-YNCD{Xoi!2Be8d(S@H+TQ)-lhALS zsoOxGD~xOn)$`TurJ677xJ1kr+I3dv6+sIQUlo+MCSI>(3m2-qw-?{u+T}mF$}$!R zfa~&{)6Kj8vG#j`ls#AHHnMo#FRm|-5sP~+0lK84tKiN}@8an2?D)O8uKt3`tS@)& z!tnMcE3-JHy|vzc>q8Y0xlZ(#1_^X=E4YlqglK%6+0PjSVsi(`2qTaN(D)tLCSQcI|fP3D+R7Swh^yLvR(zPYh+@6LSBN9$*K z(1ko0$b)`#2^YP<9 z$n8|XgDCX-LH{1=6A(?Z^h4FP(NW8jgpo*+;i#n5CjfyQ-(z!Nc@Kw~jfOT;i# zi6^lZf})tN$FYR0W0uMN+B@a;K03o9Y`5A(Jh9LV0 z0zScl9?XBD^X->A4uXYdIld5O*pkGjc?Lx2=BZ(U=Tj+(VW>gbpnRUD48D@V`x2qY zolKi=wA=N8#vMECEK?KOL!U7ke9mq1vkt<7{C-&Nuz7*%auix&>9)XBtHLBbqpGw~ zsDjd@R5w0Wos!G5g|=#wL%9}j3#G1~_8Y0HDCWZKgdVH5I?3Bryir4ag{zDj80iTj z?x(1ErabFc5hYXTG$ghq(8&B`)I_Lh++-GRVC+bVWgVd$w{$M;soccM+l8?rQF_`( zCdCx%3li@aQ;P;UH1qxwIgH_KEW|a;%@NR%Wau0B%9k7+T1Q zSQ=En32Gbfftu6=TAc3-(-Wak!O|n1ZB84tct@@mI?9Y~3bcB9a9a>BuOV9ys38}g zpJ5`fTD@QapyzG${aSUNmZmN*fCeWKxG+8Kb7cW1DTC!0=4{<(GZey8^zk6o*88-a z_wo2~Ki<}?v@4hUc+Ib2Q_dsvz7sawOmo(2ip7#>Xlf$Y>9fNlxq(y*6~vdd3|p^w zxvrlS>s*$w3vP^*JBGoQf&I{_4pj^X{hbk$G}TJ7G$k-pqjB1OB}Agc%n?oTK9!=h z(|kCaHpI$NE2S1^gHp!Jr^BLCFJ#J91G5~YVjF%YFpv_`p=rZUyHusdBx!aOFUuo- zG@58e#zYJIlG@}@!RJA*g+b;LO}jqFv%dfuLz{sa8v;v=*M}h4t9BL^}DO+N|KC3!w*7=FZk<;dk9X0Fic37#?!)7_&Q8461 zsTI9WTk{$Oc3@`7mPF-f!|1oWo#L@5rYNJ3p;9zUnRG79AU!N$W7-61kUX0uW4T(! z80>eMx|hui_w9T;o?w(tx8UDa`K}mNHIt(?o}1>9DJcetB#RP`Wv4G|Omr9~-NpD{Ac#oATLN zGmX^BbwWb-Ng_4w9b+gHC}C-?gwoek!egU#G|7lZg~135?`K)MmoHLSk+Iwa^?FKp zJv5+%;))X1zlIW?t79N`X&We^1%}ErBG<^dRPv^8%3Nbqs>P=YHW@0l>PTZPHW0SU zY8ZYwh|e__lxmgYDpxU!W)@Yk>Xdg-QlQ+IgWY_{K@3V@D-16(R=B<|#7aFvV5zE< zC?r#aWb}(|vSfRMF-}j>TGiGIt)nJI@rD94k&xPLVwynsMA4dPML$f%lwoZ`;gf!{ zA2XQz{t=ILQ|xt0_`8onx9^|%guj2VqqwejAO~_t#7F`mfZ!z(1f~-}_mVLsj*=}@ zQ8XQoCE_@VATjips(y?*1Abt;|5E+bxSFZTO(*a45re2Slgd~Zv1*nA4%IvB2WEy7 zW=3UC-PeXhSyf3W2|j!37xJv%OEqefUehM0z&8M{Y{O5Vda0Q(>!VVmh8ra(+g9vC zPsIx3MPK)7S2yXW<}QpV0$;b;0Zs&P6vPQTqe`bW5hTXWj+L0`HRdXa`!$J@XhS{o z19;#j8U667Qy|c^UtlPzH06d)vE|v0B=5H@E|t$|$62Mb&mfE?%W@+=>yD_3gu0zV z_lPQs<1mKhxT3jVjU(cCHqFJvVxP)6$22$Y38dVmXC#(&agGK4GA&Se;NEIL73m{i z4DJW$aJxeZb04oH%zZ(sLxF_3%dVviu}0HkJDc_d8`-CNY|+#PC8eU_iNrCZ;~lDX z>PVIamP=7JgDy4lK3gWNY#%ohL>i;?d?gkyOu9;CMzv2*#Ijt6Y8a&^4V=MVSm|DI zLvcYaR3H~3!!vSyT&bldqXag|*txJ&7sirQHOh@9yDui&OtIxyGqNaVr!r+yUT&sf zShJAo)Q+0v&M;Tcwud=%pUEm@2SjLYZK7<9k=g1-SFvTn`7IcPndmzl>BO ze|Gmz!75xJ0Z0H6fCL}`NB|Om1Rw!O01|)%Ac0pSAZ>j9B&3rhi6L47Phu*eDoITv zumqUIg`o&|0-umk9oJ(z_NtGYHs^&B8m3_=P9}6c){+@3IbhP1y1nRo;rk~;k@Bgode!O<;AGiJZ}=c|#7y|6%+;c(W^b4;04#gZDsT z{2#{u-+ugme$55<|2H;&x)%O9_<#!}00}?>kia`i;ES!z+vMjjCk*xU%O(uH;Rp9` zX}(ZrdA?ApXO~m8GBZhz3g}enC);$U*UxnEeg55jPxM9{roGO5p?qeL zJl;2J+Hf4>!CawH&#`A?AJ6bIIj$dN@$xJj@1!#*!Mm8|7=&x|dq)kUu4h=}$o4vk z=7h+r{S24yRQpEph`?FAT6_KZLKQo6l&z+1duSBGXmvOcTi`XoBRvwU9B}Q<# zH~~{@wOqfg4oN&8FMC$`^@VWXH>ydj38oPy$#A|fO%HLEpyP=tQ}W-05MBlCTO@@3 zD^HxfMhMR)PEvYUD3#bzDVu3yW<875j$1?t&5b9z>KqG}TZ&CnTpZ~X8^OfM9PQ@f z6L!$>&{WNEs$I5O4x>%BDvPPCH9MLlhHT%-+FkqDxZ?f)m-qkRKmCUbBmfCO0+0YC z00}?>kN_kA2|xmn03-kjyu$>7`Ty|#{~hjN*fdB05`Y9C0Z0H6fCL}`NB|Om1Rw!O z01yb?{|`lez6O5a0tr9@kN_kA2|xmn03-kjKmw2eBmfCO0`C@q?a=1h&W)Y*e-G~e zVf_Ey>Ri|wNB|Om1Rw!O01|)%AOT1K5`Y9C0Z3q#0DS*{l?dF11Rw!O01|)%AOT1K z5`Y9C0Z0H6fCSz>0zv$LEArcGk^hYRbL4L$e-imaumKlH01|)%AOT1K5`Y9C0Z0H6 zfCL}`NB|Oe^8_MW>z_m%*HQIDOCReN`rhXHr;&kbIxY7s<-?8jgNQoNHQn({**Z(T zx4wQ9QT2gmwoFy_UL1b!21u4$Ez>e(&vc!$+#iJ2_af%J1aEql7R3LzB0pS<{7d8~ zkw1_8H1fm9kKTL(VTq6cBmfCO0+0YC00}?>kN_kA2|xmn03`5&KxF-s(85!It@qYH z4J|$d*!*z)Ahh}nVB_BUQRu=Wfb}5t!V`cS@2~IeEI$AU;{Tgl=-S=qx7~2#CJR>K z0tr9@kN_kA30x%b{Qb>arT1Ia*i$(HK(Byr9y#?ClExen3LI&+@f>j1REZjL5ZLL;DICC`h(9Nv|EQI-7tsV zKpq^HTuUE5c=TW_TccoSkoCcDKDs~G1|PzT$3Ff2d#EGTlJL|Kv5L(?(6g(K!?z3KqKfOQ70W!d1_Kc8AS z>~i{7o*5J*O?yGjmIz*RUg|uCuyEAM37&lU{QZp;o4EML)X!`p)#~RwhDn#ZSr<2q ze2N()eLdMjv`oA@V-JPHdcjCAjO`QCoG?6+dxI&rY!h!E_qX5VuD6Mc^jErU>6&>< zHt}ogXExyiou~}2(Fuu5VJcrV9m6iTF2WBageVrLtp*xXjtTG=#bXkyikU;RIvQoQ zbZ?xL)#3=0_=-BAS|+%1R<7#vKK@luip%+b1*-^fUzhz=mEwaNXI5bYtDpkmylV82 z(Q30jVocv|7`8H~(4^zmN24i*#hhcrNDT=ot>gXav16u{ae7jt3|zio6<=Arua)Aj zquu9*wmN=&V|IDP@Nqf*>w0-bD&CM$Je!7Y-G93A@tx;IU=)h$dIxijKN~V6%NUml zFCma-Rk5>Dr)+0%J)bp=QVlCiM~PV_-LEl+!m!2X`t}jlY1Ix-*}kGcTyzUwxEv|n z(hU$;U+ub!N31#$=!)L(j;9Z7T>}w$ouL5a7h~{h#tRm^n&I4_UP-wYu1vvLbag3KvKK5`Y9C0Z0H6fCL}`NB|Om1Rw!O0225m69`@b qa0do, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: Admin@org2.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..26ae2817d9307ac1264fbead9409fc47c37dc7f0 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAZ*?Q%urW4ueSqn5IE-v@L(i+Wi6$eZ%Vr~iW~ms8xkNH59mCi-$0MNj+9Hmj8EsN z8h3(;Yv|#Nn`hLwT@M}_L<%5Z4abKy#Q1m^CPNI|yTu8?3Wvlb7^^U7#*DWOn1f*w zAi5${wizsWDyyE!cQ?^iiRzC+??_jmc*Tnj%CBASbk9&!3!I>UJNtod!&5 zrAh`Jii}g3vTjT170=;d9}*x;6BhUWnNvc>6{`1j{&z9SBdleGRlqt*FbguUpk3G^ zL<%6n7qfRM?W|O-tu9R?P$|+BYY1FzeVUXTncK(=YE6_9Al4iGy-}~Ajx<4fUu!!N zwjniz5JqVOD)aUl)aRi(guHl=naB(bR?L<%6IrI(4~&DRC7kCG2A z>N}PP#PUm8GFV)|zU#i`Rs0bWAd}%Y5%(_lO6GY8oB&cQPs^IeB@%7Fl~kg1j=2|@ zX)1^T3Lt9RLmmuiB8FWE1?uddFK(ZVV6e5BTFL2kQ}o3U99$A0A&>R)2ZV)o4p*&M zjZtCoWOmDWc9$|JxS_(2Kp(QY8Xy&Vi*8*csmqH((BDUw87<8ZWK$CsCnPCZ@r)hqBueq)_eb9q2#pETGDHd>GL9u1m1|XR7Dc}` z`JTMWuZz`topwQlkzmaZoKamw5+F$tjH(fg28n%NAp`lv8%E;TPtY$WA%IlA6qKpB z0GB#M3LtNYiN6{yU+^JH`E&?lAZmkK$0SYD3AbF%RiROa?9~z=w*r_46wr>VBo`_V zz3gL@ANZ8-=&a5D<^?@d8@!ODLLkIEz$OIZ>eks?VD!y`bDHjDx_YdlZj!GQkP+RQ za573D)?QhLO75enxg}H&J&Sqc!WPDuGLQ_+;FTUF4dJR7QXtNC{wfgeZm8s39 VueGA=7lW@zhNBO;*$f;@TJc_pcP;<` literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/IssuerRevocationPublicKey new file mode 100644 index 00000000..6093acba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEPVA6lM9Hu7HVgkVMNGdx3LlqjDLWwgrB +2meNOi2gU7vJc7P+08aH8VO5Ei0gDdY98EVCrO5EktGid1FLrLFpfVFIYZjicfBP +NoGyHdb18NKNtNb9kQ53BZJGpKiH+sUm +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem new file mode 100644 index 00000000..9a3fe25e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICITCCAcegAwIBAgIUZ7jMmKdx/engWidCBBAel1RL43owCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU3MDBaGA8yMTY4MDkwNTA4NTcwMFow +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH8Dtmztvf9n +Jl2z4VhoyD7N2AAokv9GnKP0EdO1piYFbXtpJLL/ABF9HBFNXeGq8RfkOILyO/sc +wPNKRLJkPrmjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEB +MB0GA1UdDgQWBBT9WLnGJJ/6w/Mj6Ke9opqJ/Iu3ETAKBggqhkjOPQQDAgNIADBF +AiEA4DVUfbHvC5wIjsL8Lbpmhq4bdsz9puUkeS7h3NlhANkCIFIdUw5qQezJudts +Kzbbqt/QA1h+00JyeT5TqHYgIwfl +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/keystore/56f4dfd8ed402361df82f0b52882fffd5d689e95e249b1ea1c8da2b631f47fc9_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/keystore/56f4dfd8ed402361df82f0b52882fffd5d689e95e249b1ea1c8da2b631f47fc9_sk new file mode 100644 index 00000000..e9a03b46 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/keystore/56f4dfd8ed402361df82f0b52882fffd5d689e95e249b1ea1c8da2b631f47fc9_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQggqc1zbFFuHAzpMBx +PW/o2Nd1QaF2T2HhxnCElZs7mMihRANCAATbIGXRjemfzFkvZULl7J28kaj1LpFk +vdL/1Bugo1NOND7S3wKz4Ch0XbY5JEVnjHAstd/zgmlVOeO32LILbT7D +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/signcerts/cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/signcerts/cert.pem new file mode 100644 index 00000000..3241ba54 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@ca.org2.example.com/msp/signcerts/cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDBzCCAq2gAwIBAgIUSOvvLzUR89ElH1ZGMFz9GIrxsFAwCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTAeFw0xODEwMTIwODU3MDBaFw0yODEwMDkwOTAyMDBaMIGF +MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2Fu +IEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTENMAsGA1UECxME +dXNlcjEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49 +AgEGCCqGSM49AwEHA0IABNsgZdGN6Z/MWS9lQuXsnbyRqPUukWS90v/UG6CjU040 +PtLfArPgKHRdtjkkRWeMcCy13/OCaVU547fYsgttPsOjggERMIIBDTAOBgNVHQ8B +Af8EBAMCAYYwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUgmokzoyDPqRjnwgxsrSN +rHXjcU8wHwYDVR0jBBgwFoAU/Vi5xiSf+sPzI+invaKaifyLtxEwIQYDVR0RBBow +GIEWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTCBiQYIKgMEBQYHCAEEfXsiYXR0cnMi +OnsiYWJhYy5pbml0IjoidHJ1ZSIsImFkbWluIjoidHJ1ZSIsImhmLkFmZmlsaWF0 +aW9uIjoiIiwiaGYuRW5yb2xsbWVudElEIjoiQWRtaW5Ab3JnMi5leGFtcGxlLmNv +bSIsImhmLlR5cGUiOiJ1c2VyIn19MAoGCCqGSM49BAMCA0gAMEUCIQDg1Ml8qNlg +w4wmPOgLUPFlgRRhRhcitTq7Ufy2KYt6SQIgOKF6UW4XT3a0eMUJeNYBfvXqbb+g +tlBmZSkhTB960JM= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@tlsca.org2.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@tlsca.org2.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..bc0a4eff --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@tlsca.org2.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://tlsca.org2.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: Admin@org2.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@tlsca.org2.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/Admin@tlsca.org2.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..b473a5bf9c9239d8f798da39a5adc4e4659d7230 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAmJNfu_v4~cP4=&*qzWBC*JX%H(m#-rtwGW_jz= zAYcrqDWGB^?$DRh#>mBSTrU$H6NgRl0U|^SAORqqy&X+mAlcb(A#6;k zQXh+))|o7pn(&HYh`;=E9TFfBuWe&X+OK#tdS|1~JSuIqsFI~p_Bo)9yDSw(O3d^k zL<%4$*|6AZ^9oHhu3thO&Z;JpzU`*lOem7+mvW(j)=xu=*?NAcc)lqW&)H^(AY3K|ARpL<%6t@vA(Om_QU-m97CA zw3g{}+NBgksKQelJF>>5H$3}c4;N0XYj&v6 zZ!H8olDhjOmgiv6$$}VcOXWv*5+E9Fw%`t?2i=#p{8pFZ7;N9uZAQHC;6a1UQAXkU zxyCv~3Lx^j9J2}@5-Q7#@{XTO$D*IeVHEluw(I)u>(n`+LY)#IP9wCZI}0S(Z3EXJ zuUJPS6WXCYN-SgjJ5tcSV(nb2LLjX%a?ypx98kSb)E>#Z>E?FrN7HycCLB*C9|*=V z1bRv!PZ*-y;};Ajnj@v-CpUGpHbo8?kSpv2tt8ILP^Gj;QXpl-S@1>2D}Sw;K>(#J VVCl;-, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: User1@org2.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..26ae2817d9307ac1264fbead9409fc47c37dc7f0 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAZ*?Q%urW4ueSqn5IE-v@L(i+Wi6$eZ%Vr~iW~ms8xkNH59mCi-$0MNj+9Hmj8EsN z8h3(;Yv|#Nn`hLwT@M}_L<%5Z4abKy#Q1m^CPNI|yTu8?3Wvlb7^^U7#*DWOn1f*w zAi5${wizsWDyyE!cQ?^iiRzC+??_jmc*Tnj%CBASbk9&!3!I>UJNtod!&5 zrAh`Jii}g3vTjT170=;d9}*x;6BhUWnNvc>6{`1j{&z9SBdleGRlqt*FbguUpk3G^ zL<%6n7qfRM?W|O-tu9R?P$|+BYY1FzeVUXTncK(=YE6_9Al4iGy-}~Ajx<4fUu!!N zwjniz5JqVOD)aUl)aRi(guHl=naB(bR?L<%6IrI(4~&DRC7kCG2A z>N}PP#PUm8GFV)|zU#i`Rs0bWAd}%Y5%(_lO6GY8oB&cQPs^IeB@%7Fl~kg1j=2|@ zX)1^T3Lt9RLmmuiB8FWE1?uddFK(ZVV6e5BTFL2kQ}o3U99$A0A&>R)2ZV)o4p*&M zjZtCoWOmDWc9$|JxS_(2Kp(QY8Xy&Vi*8*csmqH((BDUw87<8ZWK$CsCnPCZ@r)hqBueq)_eb9q2#pETGDHd>GL9u1m1|XR7Dc}` z`JTMWuZz`topwQlkzmaZoKamw5+F$tjH(fg28n%NAp`lv8%E;TPtY$WA%IlA6qKpB z0GB#M3LtNYiN6{yU+^JH`E&?lAZmkK$0SYD3AbF%RiROa?9~z=w*r_46wr>VBo`_V zz3gL@ANZ8-=&a5D<^?@d8@!ODLLkIEz$OIZ>eks?VD!y`bDHjDx_YdlZj!GQkP+RQ za573D)?QhLO75enxg}H&J&Sqc!WPDuGLQ_+;FTUF4dJR7QXtNC{wfgeZm8s39 VueGA=7lW@zhNBO;*$f;@TJc_pcP;<` literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/IssuerRevocationPublicKey new file mode 100644 index 00000000..6093acba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEPVA6lM9Hu7HVgkVMNGdx3LlqjDLWwgrB +2meNOi2gU7vJc7P+08aH8VO5Ei0gDdY98EVCrO5EktGid1FLrLFpfVFIYZjicfBP +NoGyHdb18NKNtNb9kQ53BZJGpKiH+sUm +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem new file mode 100644 index 00000000..9a3fe25e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICITCCAcegAwIBAgIUZ7jMmKdx/engWidCBBAel1RL43owCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU3MDBaGA8yMTY4MDkwNTA4NTcwMFow +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH8Dtmztvf9n +Jl2z4VhoyD7N2AAokv9GnKP0EdO1piYFbXtpJLL/ABF9HBFNXeGq8RfkOILyO/sc +wPNKRLJkPrmjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEB +MB0GA1UdDgQWBBT9WLnGJJ/6w/Mj6Ke9opqJ/Iu3ETAKBggqhkjOPQQDAgNIADBF +AiEA4DVUfbHvC5wIjsL8Lbpmhq4bdsz9puUkeS7h3NlhANkCIFIdUw5qQezJudts +Kzbbqt/QA1h+00JyeT5TqHYgIwfl +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/keystore/f135965b31ce005ce936b9b710e74d67380e9ea6514c6620cf570f8caa27b9b9_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/keystore/f135965b31ce005ce936b9b710e74d67380e9ea6514c6620cf570f8caa27b9b9_sk new file mode 100644 index 00000000..a6fefb35 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/keystore/f135965b31ce005ce936b9b710e74d67380e9ea6514c6620cf570f8caa27b9b9_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgqnm0pBGWkoFnN+uy +qF7zUkayuu4UD3O+Zz4QoAQh6sahRANCAAQruxJMsAqp0N9niEbYOnJRaPz6nHFw +5jX4uG2WRA3BvnvpvzzARHEDdYXNdkQ1foDkR4DNXYK3MWdnJcceDk/B +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/signcerts/cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/signcerts/cert.pem new file mode 100644 index 00000000..d072cbdc --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@ca.org2.example.com/msp/signcerts/cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDBzCCAq6gAwIBAgIUOrSF3KOx/0RDTXWnyzsSZkCQNAQwCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTAeFw0xODEwMTIwODU3MDBaFw0yODEwMDkwOTAyMDBaMIGF +MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2Fu +IEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTENMAsGA1UECxME +dXNlcjEfMB0GA1UEAwwWVXNlcjFAb3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49 +AgEGCCqGSM49AwEHA0IABCu7EkywCqnQ32eIRtg6clFo/PqccXDmNfi4bZZEDcG+ +e+m/PMBEcQN1hc12RDV+gORHgM1dgrcxZ2clxx4OT8GjggESMIIBDjAOBgNVHQ8B +Af8EBAMCAYYwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUJaJVR9h35V4NZBolzpIB +IXNxuWQwHwYDVR0jBBgwFoAU/Vi5xiSf+sPzI+invaKaifyLtxEwIQYDVR0RBBow +GIEWVXNlcjFAb3JnMi5leGFtcGxlLmNvbTCBigYIKgMEBQYHCAEEfnsiYXR0cnMi +OnsiYWJhYy5pbml0IjoidHJ1ZSIsImFkbWluIjoiZmFsc2UiLCJoZi5BZmZpbGlh +dGlvbiI6IiIsImhmLkVucm9sbG1lbnRJRCI6IlVzZXIxQG9yZzIuZXhhbXBsZS5j +b20iLCJoZi5UeXBlIjoidXNlciJ9fTAKBggqhkjOPQQDAgNHADBEAiB7RFHSsAcG +B/TozCo1T3/dZwXIuMrE+DW6d2tRI/wSVwIgN0W5IbMTpdj6BVFHXIfgPrDvEM7o +NA4KFpWG4k9ijBU= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@tlsca.org2.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@tlsca.org2.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..3d8d6cea --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@tlsca.org2.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://tlsca.org2.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: User1@org2.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@tlsca.org2.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/User1@tlsca.org2.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..b473a5bf9c9239d8f798da39a5adc4e4659d7230 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAmJNfu_v4~cP4=&*qzWBC*JX%H(m#-rtwGW_jz= zAYcrqDWGB^?$DRh#>mBSTrU$H6NgRl0U|^SAORqqy&X+mAlcb(A#6;k zQXh+))|o7pn(&HYh`;=E9TFfBuWe&X+OK#tdS|1~JSuIqsFI~p_Bo)9yDSw(O3d^k zL<%4$*|6AZ^9oHhu3thO&Z;JpzU`*lOem7+mvW(j)=xu=*?NAcc)lqW&)H^(AY3K|ARpL<%6t@vA(Om_QU-m97CA zw3g{}+NBgksKQelJF>>5H$3}c4;N0XYj&v6 zZ!H8olDhjOmgiv6$$}VcOXWv*5+E9Fw%`t?2i=#p{8pFZ7;N9uZAQHC;6a1UQAXkU zxyCv~3Lx^j9J2}@5-Q7#@{XTO$D*IeVHEluw(I)u>(n`+LY)#IP9wCZI}0S(Z3EXJ zuUJPS6WXCYN-SgjJ5tcSV(nb2LLjX%a?ypx98kSb)E>#Z>E?FrN7HycCLB*C9|*=V z1bRv!PZ*-y;};Ajnj@v-CpUGpHbo8?kSpv2tt8ILP^Gj;QXpl-S@1>2D}Sw;K>(#J VVCl;-, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: boot-admin + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..26ae2817d9307ac1264fbead9409fc47c37dc7f0 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAZ*?Q%urW4ueSqn5IE-v@L(i+Wi6$eZ%Vr~iW~ms8xkNH59mCi-$0MNj+9Hmj8EsN z8h3(;Yv|#Nn`hLwT@M}_L<%5Z4abKy#Q1m^CPNI|yTu8?3Wvlb7^^U7#*DWOn1f*w zAi5${wizsWDyyE!cQ?^iiRzC+??_jmc*Tnj%CBASbk9&!3!I>UJNtod!&5 zrAh`Jii}g3vTjT170=;d9}*x;6BhUWnNvc>6{`1j{&z9SBdleGRlqt*FbguUpk3G^ zL<%6n7qfRM?W|O-tu9R?P$|+BYY1FzeVUXTncK(=YE6_9Al4iGy-}~Ajx<4fUu!!N zwjniz5JqVOD)aUl)aRi(guHl=naB(bR?L<%6IrI(4~&DRC7kCG2A z>N}PP#PUm8GFV)|zU#i`Rs0bWAd}%Y5%(_lO6GY8oB&cQPs^IeB@%7Fl~kg1j=2|@ zX)1^T3Lt9RLmmuiB8FWE1?uddFK(ZVV6e5BTFL2kQ}o3U99$A0A&>R)2ZV)o4p*&M zjZtCoWOmDWc9$|JxS_(2Kp(QY8Xy&Vi*8*csmqH((BDUw87<8ZWK$CsCnPCZ@r)hqBueq)_eb9q2#pETGDHd>GL9u1m1|XR7Dc}` z`JTMWuZz`topwQlkzmaZoKamw5+F$tjH(fg28n%NAp`lv8%E;TPtY$WA%IlA6qKpB z0GB#M3LtNYiN6{yU+^JH`E&?lAZmkK$0SYD3AbF%RiROa?9~z=w*r_46wr>VBo`_V zz3gL@ANZ8-=&a5D<^?@d8@!ODLLkIEz$OIZ>eks?VD!y`bDHjDx_YdlZj!GQkP+RQ za573D)?QhLO75enxg}H&J&Sqc!WPDuGLQ_+;FTUF4dJR7QXtNC{wfgeZm8s39 VueGA=7lW@zhNBO;*$f;@TJc_pcP;<` literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/IssuerRevocationPublicKey new file mode 100644 index 00000000..6093acba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEPVA6lM9Hu7HVgkVMNGdx3LlqjDLWwgrB +2meNOi2gU7vJc7P+08aH8VO5Ei0gDdY98EVCrO5EktGid1FLrLFpfVFIYZjicfBP +NoGyHdb18NKNtNb9kQ53BZJGpKiH+sUm +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem new file mode 100644 index 00000000..9a3fe25e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICITCCAcegAwIBAgIUZ7jMmKdx/engWidCBBAel1RL43owCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU3MDBaGA8yMTY4MDkwNTA4NTcwMFow +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH8Dtmztvf9n +Jl2z4VhoyD7N2AAokv9GnKP0EdO1piYFbXtpJLL/ABF9HBFNXeGq8RfkOILyO/sc +wPNKRLJkPrmjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEB +MB0GA1UdDgQWBBT9WLnGJJ/6w/Mj6Ke9opqJ/Iu3ETAKBggqhkjOPQQDAgNIADBF +AiEA4DVUfbHvC5wIjsL8Lbpmhq4bdsz9puUkeS7h3NlhANkCIFIdUw5qQezJudts +Kzbbqt/QA1h+00JyeT5TqHYgIwfl +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/keystore/aa805db6dcb6fb4da673f5a04c4f7cd804ad237fd6759fc58d7bdfe070489749_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/keystore/aa805db6dcb6fb4da673f5a04c4f7cd804ad237fd6759fc58d7bdfe070489749_sk new file mode 100644 index 00000000..518268b3 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/keystore/aa805db6dcb6fb4da673f5a04c4f7cd804ad237fd6759fc58d7bdfe070489749_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgn3LOuo5Zc0F6i1Z5 +7Fgtmc1wwBs2vk9/MHGUJvCZ7+yhRANCAAR7h11jsTuxqh8je1jeT8yQ9LuK4SZU +e4rQriy2RzOPziKrg61OPuv1dSmDbo/Tx8HwjMCf/ykUFzGoNzjpBj85 +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/signcerts/cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/signcerts/cert.pem new file mode 100644 index 00000000..a2dff217 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@ca.org2.example.com/msp/signcerts/cert.pem @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIICbjCCAhSgAwIBAgIUWvhD/4fB//gFJOSoCfOjHTwfCswwCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTAeFw0xODEwMTIwODU3MDBaFw0yODEwMDkwOTAyMDBaMHsx +CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4g +RnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMQ8wDQYDVQQLEwZj +bGllbnQxEzARBgNVBAMTCmJvb3QtYWRtaW4wWTATBgcqhkjOPQIBBggqhkjOPQMB +BwNCAAR7h11jsTuxqh8je1jeT8yQ9LuK4SZUe4rQriy2RzOPziKrg61OPuv1dSmD +bo/Tx8HwjMCf/ykUFzGoNzjpBj85o4GEMIGBMA4GA1UdDwEB/wQEAwIBhjAMBgNV +HRMBAf8EAjAAMB0GA1UdDgQWBBRoDF5pgoFgdSUIqRJ1rvVFV+RO3zAfBgNVHSME +GDAWgBT9WLnGJJ/6w/Mj6Ke9opqJ/Iu3ETAhBgNVHREEGjAYgRZBZG1pbkBvcmcy +LmV4YW1wbGUuY29tMAoGCCqGSM49BAMCA0gAMEUCIQCBb5CGUbLWE5z4u51spZXr +n6+0OzNQ40NaMoFF4Cb62wIgDMUvns6XUCB5COg4qOzoZQz5RweXyHafoydA6kol +EsQ= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@tlsca.org2.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@tlsca.org2.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..3793ca60 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@tlsca.org2.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://tlsca.org2.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: boot-admin + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@tlsca.org2.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/boot-admin@tlsca.org2.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..b473a5bf9c9239d8f798da39a5adc4e4659d7230 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAmJNfu_v4~cP4=&*qzWBC*JX%H(m#-rtwGW_jz= zAYcrqDWGB^?$DRh#>mBSTrU$H6NgRl0U|^SAORqqy&X+mAlcb(A#6;k zQXh+))|o7pn(&HYh`;=E9TFfBuWe&X+OK#tdS|1~JSuIqsFI~p_Bo)9yDSw(O3d^k zL<%4$*|6AZ^9oHhu3thO&Z;JpzU`*lOem7+mvW(j)=xu=*?NAcc)lqW&)H^(AY3K|ARpL<%6t@vA(Om_QU-m97CA zw3g{}+NBgksKQelJF>>5H$3}c4;N0XYj&v6 zZ!H8olDhjOmgiv6$$}VcOXWv*5+E9Fw%`t?2i=#p{8pFZ7;N9uZAQHC;6a1UQAXkU zxyCv~3Lx^j9J2}@5-Q7#@{XTO$D*IeVHEluw(I)u>(n`+LY)#IP9wCZI}0S(Z3EXJ zuUJPS6WXCYN-SgjJ5tcSV(nb2LLjX%a?ypx98kSb)E>#Z>E?FrN7HycCLB*C9|*=V z1bRv!PZ*-y;};Ajnj@v-CpUGpHbo8?kSpv2tt8ILP^Gj;QXpl-S@1>2D}Sw;K>(#J VVCl;-V>wVQyq>WfDXR zAZ*?Q%urW4ueSqn5IE-v@L(i+Wi6$eZ%Vr~iW~ms8xkNH59mCi-$0MNj+9Hmj8EsN z8h3(;Yv|#Nn`hLwT@M}_L<%5Z4abKy#Q1m^CPNI|yTu8?3Wvlb7^^U7#*DWOn1f*w zAi5${wizsWDyyE!cQ?^iiRzC+??_jmc*Tnj%CBASbk9&!3!I>UJNtod!&5 zrAh`Jii}g3vTjT170=;d9}*x;6BhUWnNvc>6{`1j{&z9SBdleGRlqt*FbguUpk3G^ zL<%6n7qfRM?W|O-tu9R?P$|+BYY1FzeVUXTncK(=YE6_9Al4iGy-}~Ajx<4fUu!!N zwjniz5JqVOD)aUl)aRi(guHl=naB(bR?L<%6IrI(4~&DRC7kCG2A z>N}PP#PUm8GFV)|zU#i`Rs0bWAd}%Y5%(_lO6GY8oB&cQPs^IeB@%7Fl~kg1j=2|@ zX)1^T3Lt9RLmmuiB8FWE1?uddFK(ZVV6e5BTFL2kQ}o3U99$A0A&>R)2ZV)o4p*&M zjZtCoWOmDWc9$|JxS_(2Kp(QY8Xy&Vi*8*csmqH((BDUw87<8ZWK$CsCnPCZ@r)hqBueq)_eb9q2#pETGDHd>GL9u1m1|XR7Dc}` z`JTMWuZz`topwQlkzmaZoKamw5+F$tjH(fg28n%NAp`lv8%E;TPtY$WA%IlA6qKpB z0GB#M3LtNYiN6{yU+^JH`E&?lAZmkK$0SYD3AbF%RiROa?9~z=w*r_46wr>VBo`_V zz3gL@ANZ8-=&a5D<^?@d8@!ODLLkIEz$OIZ>eks?VD!y`bDHjDx_YdlZj!GQkP+RQ za573D)?QhLO75enxg}H&J&Sqc!WPDuGLQ_+;FTUF4dJR7QXtNC{wfgeZm8s39 VueGA=7lW@zhNBO;*$f;@TJc_pcP;<` literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/IssuerRevocationPublicKey new file mode 100644 index 00000000..6093acba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEPVA6lM9Hu7HVgkVMNGdx3LlqjDLWwgrB +2meNOi2gU7vJc7P+08aH8VO5Ei0gDdY98EVCrO5EktGid1FLrLFpfVFIYZjicfBP +NoGyHdb18NKNtNb9kQ53BZJGpKiH+sUm +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem new file mode 100644 index 00000000..9a3fe25e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICITCCAcegAwIBAgIUZ7jMmKdx/engWidCBBAel1RL43owCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU3MDBaGA8yMTY4MDkwNTA4NTcwMFow +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH8Dtmztvf9n +Jl2z4VhoyD7N2AAokv9GnKP0EdO1piYFbXtpJLL/ABF9HBFNXeGq8RfkOILyO/sc +wPNKRLJkPrmjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEB +MB0GA1UdDgQWBBT9WLnGJJ/6w/Mj6Ke9opqJ/Iu3ETAKBggqhkjOPQQDAgNIADBF +AiEA4DVUfbHvC5wIjsL8Lbpmhq4bdsz9puUkeS7h3NlhANkCIFIdUw5qQezJudts +Kzbbqt/QA1h+00JyeT5TqHYgIwfl +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com_sk new file mode 100644 index 00000000..846c914d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgxsTESX7rE9B6/e4R +9lWQYTPydhzUEGyWHToFEYpUbwShRANCAAR/A7Zs7b3/ZyZds+FYaMg+zdgAKJL/ +Rpyj9BHTtaYmBW17aSSy/wARfRwRTV3hqvEX5DiC8jv7HMDzSkSyZD65 +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/fabric-ca-server-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/fabric-ca-server-config.yaml new file mode 100644 index 00000000..a5ce3e85 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/fabric-ca-server-config.yaml @@ -0,0 +1,134 @@ +version: 1.4.0 +port: 7054 +debug: false +crlsizelimit: 512000 +tls: + enabled: false + certfile: null + keyfile: null + clientauth: + type: noclientcert + certfiles: null +ca: + name: ca.org2.example.com + keyfile: ca.org2.example.com_sk + certfile: ca.org2.example.com-cert.pem + chainfile: null +crl: + expiry: 24h +registry: + maxenrollments: -1 + identities: + - name: boot-admin + pass: boot-pass + type: client + affiliation: "" + attrs: + hf.Registrar.Roles: '*' + hf.Registrar.DelegateRoles: '*' + hf.Revoker: true + hf.IntermediateCA: true + hf.GenCRL: true + hf.Registrar.Attributes: '*' + hf.AffiliationMgr: true +db: + type: sqlite3 + datasource: fabric-ca-server.db + tls: + enabled: false + certfiles: null + client: + certfile: null + keyfile: null +ldap: + enabled: false + url: ldap://:@:/ + tls: + certfiles: null + client: + certfile: null + keyfile: null + attribute: + names: + - uid + - member + converters: + - name: null + value: null + maps: + groups: + - name: null + value: null +affiliations: + org1: + - department1 + - department2 + org2: + - department1 +signing: + default: + usage: + - digital signature + - cert sign + - crl sign + expiry: 87600h + profiles: + ca: + usage: + - cert sign + - crl sign + expiry: 43800h + caconstraint: + isca: true + maxpathlen: 0 + tls: + usage: + - signing + - key encipherment + - server auth + - client auth + - key agreement + expiry: 87600h +csr: + cn: ca.org2.example.com + keyrequest: + algo: ecdsa + size: 256 + names: + - C: US + ST: North Carolina + L: null + O: org2.example.com + OU: ca + hosts: + - fabric-ca-server + - localhost + ca: + expiry: 1314000h + pathlength: 1 +idemix: + rhpoolsize: 1000 + nonceexpiration: 15s + noncesweepinterval: 15m +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + keystore: msp/keystore +cacount: null +cafiles: null +intermediate: + parentserver: + url: null + caname: null + enrollment: + hosts: null + profile: null + label: null + tls: + certfiles: null + client: + certfile: null + keyfile: null diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/fabric-ca-server.db b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/ca/fabric-ca-server.db new file mode 100644 index 0000000000000000000000000000000000000000..f5f055a2c17b67bdd1d2b3d547db2c38c09f52de GIT binary patch literal 61440 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 Pf, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: peer0@org2.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..26ae2817d9307ac1264fbead9409fc47c37dc7f0 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAZ*?Q%urW4ueSqn5IE-v@L(i+Wi6$eZ%Vr~iW~ms8xkNH59mCi-$0MNj+9Hmj8EsN z8h3(;Yv|#Nn`hLwT@M}_L<%5Z4abKy#Q1m^CPNI|yTu8?3Wvlb7^^U7#*DWOn1f*w zAi5${wizsWDyyE!cQ?^iiRzC+??_jmc*Tnj%CBASbk9&!3!I>UJNtod!&5 zrAh`Jii}g3vTjT170=;d9}*x;6BhUWnNvc>6{`1j{&z9SBdleGRlqt*FbguUpk3G^ zL<%6n7qfRM?W|O-tu9R?P$|+BYY1FzeVUXTncK(=YE6_9Al4iGy-}~Ajx<4fUu!!N zwjniz5JqVOD)aUl)aRi(guHl=naB(bR?L<%6IrI(4~&DRC7kCG2A z>N}PP#PUm8GFV)|zU#i`Rs0bWAd}%Y5%(_lO6GY8oB&cQPs^IeB@%7Fl~kg1j=2|@ zX)1^T3Lt9RLmmuiB8FWE1?uddFK(ZVV6e5BTFL2kQ}o3U99$A0A&>R)2ZV)o4p*&M zjZtCoWOmDWc9$|JxS_(2Kp(QY8Xy&Vi*8*csmqH((BDUw87<8ZWK$CsCnPCZ@r)hqBueq)_eb9q2#pETGDHd>GL9u1m1|XR7Dc}` z`JTMWuZz`topwQlkzmaZoKamw5+F$tjH(fg28n%NAp`lv8%E;TPtY$WA%IlA6qKpB z0GB#M3LtNYiN6{yU+^JH`E&?lAZmkK$0SYD3AbF%RiROa?9~z=w*r_46wr>VBo`_V zz3gL@ANZ8-=&a5D<^?@d8@!ODLLkIEz$OIZ>eks?VD!y`bDHjDx_YdlZj!GQkP+RQ za573D)?QhLO75enxg}H&J&Sqc!WPDuGLQ_+;FTUF4dJR7QXtNC{wfgeZm8s39 VueGA=7lW@zhNBO;*$f;@TJc_pcP;<` literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/IssuerRevocationPublicKey new file mode 100644 index 00000000..6093acba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEPVA6lM9Hu7HVgkVMNGdx3LlqjDLWwgrB +2meNOi2gU7vJc7P+08aH8VO5Ei0gDdY98EVCrO5EktGid1FLrLFpfVFIYZjicfBP +NoGyHdb18NKNtNb9kQ53BZJGpKiH+sUm +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem new file mode 100644 index 00000000..9a3fe25e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICITCCAcegAwIBAgIUZ7jMmKdx/engWidCBBAel1RL43owCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU3MDBaGA8yMTY4MDkwNTA4NTcwMFow +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH8Dtmztvf9n +Jl2z4VhoyD7N2AAokv9GnKP0EdO1piYFbXtpJLL/ABF9HBFNXeGq8RfkOILyO/sc +wPNKRLJkPrmjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEB +MB0GA1UdDgQWBBT9WLnGJJ/6w/Mj6Ke9opqJ/Iu3ETAKBggqhkjOPQQDAgNIADBF +AiEA4DVUfbHvC5wIjsL8Lbpmhq4bdsz9puUkeS7h3NlhANkCIFIdUw5qQezJudts +Kzbbqt/QA1h+00JyeT5TqHYgIwfl +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/keystore/ffeeedde30216824902d1339d959dfd2ecaa5135b935a001a4164a19a04ef791_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/keystore/ffeeedde30216824902d1339d959dfd2ecaa5135b935a001a4164a19a04ef791_sk new file mode 100644 index 00000000..78d98a7b --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/keystore/ffeeedde30216824902d1339d959dfd2ecaa5135b935a001a4164a19a04ef791_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgtGB7iTQ879pClG40 +AtLOGPQgYBIGSFIk4NBMKGx5DzShRANCAAQhD2s2Bb1nPAT+btXQ+qBUB+qxYlrd +iDtj7LnKwPiRSRU6s7ID5SDAFovKKzTsQMfd7zHspXzi0GYipe/i8s6u +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/signcerts/cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/signcerts/cert.pem new file mode 100644 index 00000000..cf18a831 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@ca.org2.example.com/msp/signcerts/cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDCDCCAq6gAwIBAgIUEib8wk76yN/4KWkTRGpi1KUZ8YcwCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTAeFw0xODEwMTIwODU3MDBaFw0yODEwMDkwOTAyMDBaMIGF +MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2Fu +IEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTENMAsGA1UECxME +cGVlcjEfMB0GA1UEAwwWcGVlcjBAb3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49 +AgEGCCqGSM49AwEHA0IABCEPazYFvWc8BP5u1dD6oFQH6rFiWt2IO2PsucrA+JFJ +FTqzsgPlIMAWi8orNOxAx93vMeylfOLQZiKl7+Lyzq6jggESMIIBDjAOBgNVHQ8B +Af8EBAMCAYYwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUhFCi4xC+d8Bq0OvdhVGw +2Mg1GaQwHwYDVR0jBBgwFoAU/Vi5xiSf+sPzI+invaKaifyLtxEwIQYDVR0RBBow +GIEWcGVlcjBAb3JnMi5leGFtcGxlLmNvbTCBigYIKgMEBQYHCAEEfnsiYXR0cnMi +OnsiYWJhYy5pbml0IjoidHJ1ZSIsImFkbWluIjoiZmFsc2UiLCJoZi5BZmZpbGlh +dGlvbiI6IiIsImhmLkVucm9sbG1lbnRJRCI6InBlZXIwQG9yZzIuZXhhbXBsZS5j +b20iLCJoZi5UeXBlIjoicGVlciJ9fTAKBggqhkjOPQQDAgNIADBFAiEArCXGbMEa +laOtX/WWUEOuPs9TOajfHekY1QLZxlfudIkCIHHD33nUJgvD8K3vdjwqll9jraSg +vOhDLocCPVmZt940 +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@tlsca.org2.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@tlsca.org2.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..7f5848a1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@tlsca.org2.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://tlsca.org2.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: peer0@org2.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@tlsca.org2.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer0@tlsca.org2.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..b473a5bf9c9239d8f798da39a5adc4e4659d7230 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAmJNfu_v4~cP4=&*qzWBC*JX%H(m#-rtwGW_jz= zAYcrqDWGB^?$DRh#>mBSTrU$H6NgRl0U|^SAORqqy&X+mAlcb(A#6;k zQXh+))|o7pn(&HYh`;=E9TFfBuWe&X+OK#tdS|1~JSuIqsFI~p_Bo)9yDSw(O3d^k zL<%4$*|6AZ^9oHhu3thO&Z;JpzU`*lOem7+mvW(j)=xu=*?NAcc)lqW&)H^(AY3K|ARpL<%6t@vA(Om_QU-m97CA zw3g{}+NBgksKQelJF>>5H$3}c4;N0XYj&v6 zZ!H8olDhjOmgiv6$$}VcOXWv*5+E9Fw%`t?2i=#p{8pFZ7;N9uZAQHC;6a1UQAXkU zxyCv~3Lx^j9J2}@5-Q7#@{XTO$D*IeVHEluw(I)u>(n`+LY)#IP9wCZI}0S(Z3EXJ zuUJPS6WXCYN-SgjJ5tcSV(nb2LLjX%a?ypx98kSb)E>#Z>E?FrN7HycCLB*C9|*=V z1bRv!PZ*-y;};Ajnj@v-CpUGpHbo8?kSpv2tt8ILP^Gj;QXpl-S@1>2D}Sw;K>(#J VVCl;-, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: peer1@org2.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..26ae2817d9307ac1264fbead9409fc47c37dc7f0 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAZ*?Q%urW4ueSqn5IE-v@L(i+Wi6$eZ%Vr~iW~ms8xkNH59mCi-$0MNj+9Hmj8EsN z8h3(;Yv|#Nn`hLwT@M}_L<%5Z4abKy#Q1m^CPNI|yTu8?3Wvlb7^^U7#*DWOn1f*w zAi5${wizsWDyyE!cQ?^iiRzC+??_jmc*Tnj%CBASbk9&!3!I>UJNtod!&5 zrAh`Jii}g3vTjT170=;d9}*x;6BhUWnNvc>6{`1j{&z9SBdleGRlqt*FbguUpk3G^ zL<%6n7qfRM?W|O-tu9R?P$|+BYY1FzeVUXTncK(=YE6_9Al4iGy-}~Ajx<4fUu!!N zwjniz5JqVOD)aUl)aRi(guHl=naB(bR?L<%6IrI(4~&DRC7kCG2A z>N}PP#PUm8GFV)|zU#i`Rs0bWAd}%Y5%(_lO6GY8oB&cQPs^IeB@%7Fl~kg1j=2|@ zX)1^T3Lt9RLmmuiB8FWE1?uddFK(ZVV6e5BTFL2kQ}o3U99$A0A&>R)2ZV)o4p*&M zjZtCoWOmDWc9$|JxS_(2Kp(QY8Xy&Vi*8*csmqH((BDUw87<8ZWK$CsCnPCZ@r)hqBueq)_eb9q2#pETGDHd>GL9u1m1|XR7Dc}` z`JTMWuZz`topwQlkzmaZoKamw5+F$tjH(fg28n%NAp`lv8%E;TPtY$WA%IlA6qKpB z0GB#M3LtNYiN6{yU+^JH`E&?lAZmkK$0SYD3AbF%RiROa?9~z=w*r_46wr>VBo`_V zz3gL@ANZ8-=&a5D<^?@d8@!ODLLkIEz$OIZ>eks?VD!y`bDHjDx_YdlZj!GQkP+RQ za573D)?QhLO75enxg}H&J&Sqc!WPDuGLQ_+;FTUF4dJR7QXtNC{wfgeZm8s39 VueGA=7lW@zhNBO;*$f;@TJc_pcP;<` literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/IssuerRevocationPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/IssuerRevocationPublicKey new file mode 100644 index 00000000..6093acba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/IssuerRevocationPublicKey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEPVA6lM9Hu7HVgkVMNGdx3LlqjDLWwgrB +2meNOi2gU7vJc7P+08aH8VO5Ei0gDdY98EVCrO5EktGid1FLrLFpfVFIYZjicfBP +NoGyHdb18NKNtNb9kQ53BZJGpKiH+sUm +-----END PUBLIC KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem new file mode 100644 index 00000000..9a3fe25e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/cacerts/ca-org2-example-com-7054.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICITCCAcegAwIBAgIUZ7jMmKdx/engWidCBBAel1RL43owCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU3MDBaGA8yMTY4MDkwNTA4NTcwMFow +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH8Dtmztvf9n +Jl2z4VhoyD7N2AAokv9GnKP0EdO1piYFbXtpJLL/ABF9HBFNXeGq8RfkOILyO/sc +wPNKRLJkPrmjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEB +MB0GA1UdDgQWBBT9WLnGJJ/6w/Mj6Ke9opqJ/Iu3ETAKBggqhkjOPQQDAgNIADBF +AiEA4DVUfbHvC5wIjsL8Lbpmhq4bdsz9puUkeS7h3NlhANkCIFIdUw5qQezJudts +Kzbbqt/QA1h+00JyeT5TqHYgIwfl +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/keystore/06b52b2b721d0d0914d5133eaa630ece99c0354257389a79ee3d89b2043a4e51_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/keystore/06b52b2b721d0d0914d5133eaa630ece99c0354257389a79ee3d89b2043a4e51_sk new file mode 100644 index 00000000..4c3e8917 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/keystore/06b52b2b721d0d0914d5133eaa630ece99c0354257389a79ee3d89b2043a4e51_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgKCUAyMLQ62xjUO2v +84CTmyJMMm+afMpkhqc1e+rIsOKhRANCAARW7N1MfI/r7koQn5nXByUAbyFV2DV4 +5lNBGoykw2jivQ6oTDk6sJ1RpCn0X/B+7xsMPlVNMoaykt7j+U6aaNhM +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/signcerts/cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/signcerts/cert.pem new file mode 100644 index 00000000..19b3e5a7 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@ca.org2.example.com/msp/signcerts/cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDCDCCAq6gAwIBAgIUMn1hNeOQOx3hkJwbpMNhBlCmQiswCgYIKoZIzj0EAwIw +bDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQswCQYDVQQLEwJjYTEcMBoGA1UEAxMTY2Eub3Jn +Mi5leGFtcGxlLmNvbTAeFw0xODEwMTIwODU3MDBaFw0yODEwMDkwOTAyMDBaMIGF +MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2Fu +IEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTENMAsGA1UECxME +cGVlcjEfMB0GA1UEAwwWcGVlcjFAb3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49 +AgEGCCqGSM49AwEHA0IABFbs3Ux8j+vuShCfmdcHJQBvIVXYNXjmU0EajKTDaOK9 +DqhMOTqwnVGkKfRf8H7vGww+VU0yhrKS3uP5Tppo2EyjggESMIIBDjAOBgNVHQ8B +Af8EBAMCAYYwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUatrJ2UUH3F03hVKQmbAt +I32sk1EwHwYDVR0jBBgwFoAU/Vi5xiSf+sPzI+invaKaifyLtxEwIQYDVR0RBBow +GIEWcGVlcjFAb3JnMi5leGFtcGxlLmNvbTCBigYIKgMEBQYHCAEEfnsiYXR0cnMi +OnsiYWJhYy5pbml0IjoidHJ1ZSIsImFkbWluIjoiZmFsc2UiLCJoZi5BZmZpbGlh +dGlvbiI6IiIsImhmLkVucm9sbG1lbnRJRCI6InBlZXIxQG9yZzIuZXhhbXBsZS5j +b20iLCJoZi5UeXBlIjoicGVlciJ9fTAKBggqhkjOPQQDAgNIADBFAiEAuNpcPBzd +PGSlGKV/HmQU1tEoCtijW+SZxORz8zZm42ICIBNPxM/JPojI6/HWHKGeye94zMoP +t+KL94ByI5nWP+69 +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@tlsca.org2.example.com/fabric-ca-client-config.yaml b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@tlsca.org2.example.com/fabric-ca-client-config.yaml new file mode 100644 index 00000000..5030ffff --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@tlsca.org2.example.com/fabric-ca-client-config.yaml @@ -0,0 +1,162 @@ + +############################################################################# +# This is a configuration file for the fabric-ca-client command. +# +# COMMAND LINE ARGUMENTS AND ENVIRONMENT VARIABLES +# ------------------------------------------------ +# Each configuration element can be overridden via command line +# arguments or environment variables. The precedence for determining +# the value of each element is as follows: +# 1) command line argument +# Examples: +# a) --url https://localhost:7054 +# To set the fabric-ca server url +# b) --tls.client.certfile certfile.pem +# To set the client certificate for TLS +# 2) environment variable +# Examples: +# a) FABRIC_CA_CLIENT_URL=https://localhost:7054 +# To set the fabric-ca server url +# b) FABRIC_CA_CLIENT_TLS_CLIENT_CERTFILE=certfile.pem +# To set the client certificate for TLS +# 3) configuration file +# 4) default value (if there is one) +# All default values are shown beside each element below. +# +# FILE NAME ELEMENTS +# ------------------ +# The value of all fields whose name ends with "file" or "files" are +# name or names of other files. +# For example, see "tls.certfiles" and "tls.client.certfile". +# The value of each of these fields can be a simple filename, a +# relative path, or an absolute path. If the value is not an +# absolute path, it is interpretted as being relative to the location +# of this configuration file. +# +############################################################################# + +############################################################################# +# Client Configuration +############################################################################# + +# URL of the Fabric-ca-server (default: http://localhost:7054) +url: http://tlsca.org2.example.com:7054 + +# Membership Service Provider (MSP) directory +# This is useful when the client is used to enroll a peer or orderer, so +# that the enrollment artifacts are stored in the format expected by MSP. +mspdir: msp + +############################################################################# +# TLS section for secure socket connection +# +# certfiles - PEM-encoded list of trusted root certificate files +# client: +# certfile - PEM-encoded certificate file for when client authentication +# is enabled on server +# keyfile - PEM-encoded key file for when client authentication +# is enabled on server +############################################################################# +tls: + # TLS section for secure socket connection + certfiles: + client: + certfile: + keyfile: + +############################################################################# +# Certificate Signing Request section for generating the CSR for an +# enrollment certificate (ECert) +# +# cn - Used by CAs to determine which domain the certificate is to be generated for +# +# serialnumber - The serialnumber field, if specified, becomes part of the issued +# certificate's DN (Distinguished Name). For example, one use case for this is +# a company with its own CA (Certificate Authority) which issues certificates +# to its employees and wants to include the employee's serial number in the DN +# of its issued certificates. +# WARNING: The serialnumber field should not be confused with the certificate's +# serial number which is set by the CA but is not a component of the +# certificate's DN. +# +# names - A list of name objects. Each name object should contain at least one +# "C", "L", "O", or "ST" value (or any combination of these) where these +# are abbreviations for the following: +# "C": country +# "L": locality or municipality (such as city or town name) +# "O": organization +# "OU": organizational unit, such as the department responsible for owning the key; +# it can also be used for a "Doing Business As" (DBS) name +# "ST": the state or province +# +# Note that the "OU" or organizational units of an ECert are always set according +# to the values of the identities type and affiliation. OUs are calculated for an enroll +# as OU=, OU=, ..., OU=. For example, an identity +# of type "client" with an affiliation of "org1.dept2.team3" would have the following +# organizational units: OU=client, OU=org1, OU=dept2, OU=team3 +# +# hosts - A list of host names for which the certificate should be valid +# +############################################################################# +csr: + cn: peer1@org2.example.com + keyrequest: + algo: ecdsa + size: 256 + serialnumber: + names: + - C: US + ST: North Carolina + L: + O: Hyperledger + OU: Fabric + hosts: + - ca-client + +############################################################################# +# Registration section used to register a new identity with fabric-ca server +# +# name - Unique name of the identity +# type - Type of identity being registered (e.g. 'peer, app, user') +# affiliation - The identity's affiliation +# maxenrollments - The maximum number of times the secret can be reused to enroll. +# Specially, -1 means unlimited; 0 means to use CA's max enrollment +# value. +# attributes - List of name/value pairs of attribute for identity +############################################################################# +id: + name: + type: + affiliation: + maxenrollments: 0 + attributes: + # - name: + # value: + +############################################################################# +# Enrollment section used to enroll an identity with fabric-ca server +# +# profile - Name of the signing profile to use in issuing the certificate +# label - Label to use in HSM operations +############################################################################# +enrollment: + profile: + label: + +############################################################################# +# Name of the CA to connect to within the fabric-ca server +############################################################################# +caname: + +############################################################################# +# BCCSP (BlockChain Crypto Service Provider) section allows to select which +# crypto implementation library to use +############################################################################# +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@tlsca.org2.example.com/msp/IssuerPublicKey b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/peer1@tlsca.org2.example.com/msp/IssuerPublicKey new file mode 100644 index 0000000000000000000000000000000000000000..b473a5bf9c9239d8f798da39a5adc4e4659d7230 GIT binary patch literal 843 zcmV-R1GM}K0#8*61X6EoWeN;MZgOvIY;9$3bV)=C5K?7!Z)0I}X>V>wVQyq>WfDXR zAmJNfu_v4~cP4=&*qzWBC*JX%H(m#-rtwGW_jz= zAYcrqDWGB^?$DRh#>mBSTrU$H6NgRl0U|^SAORqqy&X+mAlcb(A#6;k zQXh+))|o7pn(&HYh`;=E9TFfBuWe&X+OK#tdS|1~JSuIqsFI~p_Bo)9yDSw(O3d^k zL<%4$*|6AZ^9oHhu3thO&Z;JpzU`*lOem7+mvW(j)=xu=*?NAcc)lqW&)H^(AY3K|ARpL<%6t@vA(Om_QU-m97CA zw3g{}+NBgksKQelJF>>5H$3}c4;N0XYj&v6 zZ!H8olDhjOmgiv6$$}VcOXWv*5+E9Fw%`t?2i=#p{8pFZ7;N9uZAQHC;6a1UQAXkU zxyCv~3Lx^j9J2}@5-Q7#@{XTO$D*IeVHEluw(I)u>(n`+LY)#IP9wCZI}0S(Z3EXJ zuUJPS6WXCYN-SgjJ5tcSV(nb2LLjX%a?ypx98kSb)E>#Z>E?FrN7HycCLB*C9|*=V z1bRv!PZ*-y;};Ajnj@v-CpUGpHbo8?kSpv2tt8ILP^Gj;QXpl-S@1>2D}Sw;K>(#J VVCl;-V>wVQyq>WfDXR zAmJNfu_v4~cP4=&*qzWBC*JX%H(m#-rtwGW_jz= zAYcrqDWGB^?$DRh#>mBSTrU$H6NgRl0U|^SAORqqy&X+mAlcb(A#6;k zQXh+))|o7pn(&HYh`;=E9TFfBuWe&X+OK#tdS|1~JSuIqsFI~p_Bo)9yDSw(O3d^k zL<%4$*|6AZ^9oHhu3thO&Z;JpzU`*lOem7+mvW(j)=xu=*?NAcc)lqW&)H^(AY3K|ARpL<%6t@vA(Om_QU-m97CA zw3g{}+NBgksKQelJF>>5H$3}c4;N0XYj&v6 zZ!H8olDhjOmgiv6$$}VcOXWv*5+E9Fw%`t?2i=#p{8pFZ7;N9uZAQHC;6a1UQAXkU zxyCv~3Lx^j9J2}@5-Q7#@{XTO$D*IeVHEluw(I)u>(n`+LY)#IP9wCZI}0S(Z3EXJ zuUJPS6WXCYN-SgjJ5tcSV(nb2LLjX%a?ypx98kSb)E>#Z>E?FrN7HycCLB*C9|*=V z1bRv!PZ*-y;};Ajnj@v-CpUGpHbo8?kSpv2tt8ILP^Gj;QXpl-S@1>2D}Sw;K>(#J VVCl;-:@:/ + tls: + certfiles: null + client: + certfile: null + keyfile: null + attribute: + names: + - uid + - member + converters: + - name: null + value: null + maps: + groups: + - name: null + value: null +affiliations: + org1: + - department1 + - department2 + org2: + - department1 +signing: + default: + usage: + - digital signature + - cert sign + - crl sign + expiry: 87600h + profiles: + ca: + usage: + - cert sign + - crl sign + expiry: 43800h + caconstraint: + isca: true + maxpathlen: 0 + tls: + usage: + - signing + - key encipherment + - server auth + - client auth + - key agreement + expiry: 87600h +csr: + cn: tlsca.org2.example.com + keyrequest: + algo: ecdsa + size: 256 + names: + - C: US + ST: North Carolina + L: null + O: org2.example.com + OU: tlsca + hosts: + - fabric-ca-server + - localhost + ca: + expiry: 1314000h + pathlength: 1 +idemix: + rhpoolsize: 1000 + nonceexpiration: 15s + noncesweepinterval: 15m +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + keystore: msp/keystore +cacount: null +cafiles: null +intermediate: + parentserver: + url: null + caname: null + enrollment: + hosts: null + profile: null + label: null + tls: + certfiles: null + client: + certfile: null + keyfile: null diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/fabric-ca-server.db b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/fabric-ca-server.db new file mode 100644 index 0000000000000000000000000000000000000000..02f22ea2d321724f5f99ac42efb3a36fe05f45cb GIT binary patch literal 61440 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 k`QelRwsq<=hiO0Ln2A8~^|S literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem new file mode 100644 index 00000000..4b474ba8 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICLTCCAdOgAwIBAgIUOya/oTe+7qMcKY3TkoQfUUz9zE8wCgYIKoZIzj0EAwIw +cjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkwFwYDVQQK +ExBvcmcyLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMi5leGFtcGxlLmNvbTAgFw0xODEwMTIwODU2MDBaGA8yMTY4MDkwNTA4 +NTYwMFowcjELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRkw +FwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMQ4wDAYDVQQLEwV0bHNjYTEfMB0GA1UE +AxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEH +A0IABMEU5dpAp0tg/aUsZbtKJawjYfU5rPXprVXtVnhWCbqTB0YqQSRhqbuLBXyZ +0fC69aj5hM/pNaZ/rQbHL1vitfKjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMB +Af8ECDAGAQH/AgEBMB0GA1UdDgQWBBTHXy/A06QOhfnvBqXicOlXG6eIJjAKBggq +hkjOPQQDAgNIADBFAiEAmsZj2wdRwaq3n4oDEp6mWvv8rcAxfuGqZJfjvhSZujMC +ID3hvwL0Y0zZEnFQozSX2bkqajwNnHiXyCbnCbwVOnE1 +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com_sk b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com_sk new file mode 100644 index 00000000..fbd5d2b5 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2CjqsrVQX5u3VWNZ +w+pzcJL4+D02OaRoTsKY2+CeeemhRANCAATBFOXaQKdLYP2lLGW7SiWsI2H1Oaz1 +6a1V7VZ4Vgm6kwdGKkEkYam7iwV8mdHwuvWo+YTP6TWmf60Gxy9b4rXy +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/ca-test/docker-compose.yaml b/hyperledger_fabric/v2.2.8/ca-test/docker-compose.yaml new file mode 100644 index 00000000..99e68a69 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/docker-compose.yaml @@ -0,0 +1,92 @@ +version: '2' + +services: + ca.example.com: + image: yeasy/hyperledger-fabric-ca + container_name: ca.example.com + hostname: ca.example.com + volumes: + - $PWD/scripts:/scripts + - $PWD/crypto-config/ordererOrganizations/example.com/:/etc/hyperledger/fabric-ca-server + working_dir: /scripts + command: sh -c "sleep 1; bash ca_server_start.sh example.com ca" + depends_on: + - tlsca.example.com + + ca.org1.example.com: + image: yeasy/hyperledger-fabric-ca + container_name: ca.org1.example.com + hostname: ca.org1.example.com + volumes: + - $PWD/scripts:/scripts + - $PWD/crypto-config/peerOrganizations/org1.example.com/:/etc/hyperledger/fabric-ca-server + working_dir: /scripts + command: sh -c "sleep 1; bash ca_server_start.sh org1.example.com ca" + #command: fabric-ca-server start -b admin:adminpw + #--csr.names C=US,ST="California",L="San Francisco",O="org1.example.com" + depends_on: + - tlsca.org1.example.com + + ca.org2.example.com: + image: yeasy/hyperledger-fabric-ca + container_name: ca.org2.example.com + hostname: ca.org2.example.com + volumes: + - $PWD/scripts:/scripts + - $PWD/crypto-config/peerOrganizations/org2.example.com/:/etc/hyperledger/fabric-ca-server + working_dir: /scripts + command: sh -c "sleep 1; bash ca_server_start.sh org2.example.com ca" + #command: fabric-ca-server start -b admin:adminpw + #--csr.names C=US,ST="California",L="San Francisco",O="org1.example.com" + depends_on: + - tlsca.org2.example.com + + tlsca.example.com: + image: yeasy/hyperledger-fabric-ca + container_name: tlsca.example.com + hostname: tlsca.example.com + volumes: + - $PWD/scripts:/scripts + - $PWD/crypto-config/ordererOrganizations/example.com/:/etc/hyperledger/fabric-ca-server + working_dir: /scripts + command: sh -c "bash ca_server_start.sh example.com tlsca" + + tlsca.org1.example.com: + image: yeasy/hyperledger-fabric-ca + container_name: tlsca.org1.example.com + hostname: tlsca.org1.example.com + volumes: + - $PWD/scripts:/scripts + - $PWD/crypto-config/peerOrganizations/org1.example.com/:/etc/hyperledger/fabric-ca-server + working_dir: /scripts + command: sh -c "bash ca_server_start.sh org1.example.com tlsca" + + tlsca.org2.example.com: + image: yeasy/hyperledger-fabric-ca + container_name: tlsca.org2.example.com + hostname: tlsca.org2.example.com + volumes: + - $PWD/scripts:/scripts + - $PWD/crypto-config/peerOrganizations/org2.example.com/:/etc/hyperledger/fabric-ca-server + working_dir: /scripts + command: sh -c "bash ca_server_start.sh org2.example.com tlsca" + + ca-client: + image: yeasy/hyperledger-fabric-ca + container_name: ca-client + hostname: ca-client + #environment: + # - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-client + volumes: + - $PWD/scripts:/scripts + - $PWD/crypto-config:/etc/hyperledger/fabric-ca-client + working_dir: /scripts + depends_on: + - ca.example.com + - ca.org1.example.com + - ca.org2.example.com + - tlsca.example.com + - tlsca.org1.example.com + - tlsca.org2.example.com + #command: sh -c "while true; do sleep 1; done" + command: sh -c "sleep 4; bash client-test.sh" diff --git a/hyperledger_fabric/v2.2.8/ca-test/run.sh b/hyperledger_fabric/v2.2.8/ca-test/run.sh new file mode 100644 index 00000000..6d311234 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/run.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +echo $PWD + +docker-compose rm -f + +rm -rf crypto-config/* + +echo "starting ca server" +docker-compose up + +docker-compose down diff --git a/hyperledger_fabric/v2.2.8/ca-test/scripts/ca_server_start.sh b/hyperledger_fabric/v2.2.8/ca-test/scripts/ca_server_start.sh new file mode 100644 index 00000000..a95d611c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/scripts/ca_server_start.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +source env.sh + +if [ "$#" -ne 2 ]; then + echo "Illegal number of parameters" + exit 1 +fi + +ORG_NAME=$1 # org1.example.com +TYPE=$2 # ca | tlsca + +ORG_PATH=/etc/hyperledger/fabric-ca-server +CA_PATH=${ORG_PATH}/${TYPE} # e.g., /etc/hyperledger/fabric-ca-server/ca + +echo $(hostname) + +# do not recreate the credentials if existed +if [ ! -d ${CA_PATH} ]; then + mkdir -p ${CA_PATH} + cd ${CA_PATH} + echo "Generate the credentials for ${TYPE}.${ORG_NAME}" + + # generate fabric-ca-server-config.yaml + #fabric-ca-server init \ + # -H ${CA_PATH} \ + # -b ${DEFAULT_USER}:${DEFAULT_PASS} + #rm -rf msp/* ca-cert.pem # these credentials are wrong + + echo "${CA_SERVER_DEFAULT_CONFIG}" >> fabric-ca-server-config.yaml + + # Update config + echo "Update fabric-ca-server-config.yaml" + yq w -i fabric-ca-server-config.yaml ca.name "${TYPE}.${ORG_NAME}" + yq w -i fabric-ca-server-config.yaml ca.certfile "${TYPE}.${ORG_NAME}-cert.pem" + yq w -i fabric-ca-server-config.yaml ca.keyfile "${TYPE}.${ORG_NAME}_sk" + + yq w -i fabric-ca-server-config.yaml csr.cn "${TYPE}.${ORG_NAME}" + yq w -i fabric-ca-server-config.yaml csr.names[0].O "${ORG_NAME}" + yq w -i fabric-ca-server-config.yaml csr.names[0].OU "${TYPE}" + + yq w -i fabric-ca-server-config.yaml tls.enabled false + #yq w -i fabric-ca-server-config.yaml tls.certfile "${ORG_PATH}/tlsca/tlsca.${ORG_NAME}-cert.pem" + #yq w -i fabric-ca-server-config.yaml tls.keyfile "${ORG_PATH}/tlsca/tlsca.${ORG_NAME}_sk" + + # Generate new certs based on updated config + echo "Generate certificates for ${TYPE}.${ORG_NAME} under ${CA_PATH}" + fabric-ca-server init -H ${CA_PATH} + + cp msp/keystore/*_sk ${TYPE}.${ORG_NAME}_sk +fi + +echo "Start ${TYPE}.${ORG_NAME}..." +fabric-ca-server start -H ${CA_PATH} diff --git a/hyperledger_fabric/v2.2.8/ca-test/scripts/client-test.sh b/hyperledger_fabric/v2.2.8/ca-test/scripts/client-test.sh new file mode 100644 index 00000000..44712bde --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/scripts/client-test.sh @@ -0,0 +1,182 @@ +#!/usr/bin/env bash + +source env.sh + +CONFIG_PATH=/etc/hyperledger/fabric-ca-client + +# RegisterUser CA_URL CERT_CN CERT_O USER_NAME USER_PASS TYPE ATTRS +# RegisterUser will register a user to ca with USER_NAME:USER_PASS, TYPE, ATTRS +RegisterUser() { + local CA_URL=$1 + local CERT_CN=$2 + local CERT_O=$3 + local USER_NAME=$4 + local USER_PASS=$5 + local TYPE=$6 + local ATTRS=${7} + + # Use the default user as requester + local REQUESTER_HOME=${DEFAULT_USER}@${CA_URL} + EnrollDefaultUser ${CA_URL} ${CERT_CN} ${CERT_O} ${REQUESTER_HOME} + + # register with the identity of the requester + fabric-ca-client register \ + --home ${REQUESTER_HOME} \ + --csr.cn "${CERT_CN}" \ + --csr.hosts "${CERT_CN}" \ + --csr.names C=US,ST="California",L="San Francisco",O=${CERT_O} \ + --id.name ${USER_NAME} \ + --id.secret ${USER_PASS} \ + --id.type ${TYPE} \ + --id.attrs "${ATTRS}" \ + --id.maxenrollments -1 \ + --url http://${DEFAULT_USER}:${DEFAULT_PASS}@${CA_URL}:7054 + + sleep 0.1 +} + +# EnrollDefaultUser CA_URL CERT_CN CERT_O HOME_PATH +# EnrollDefaultUser will store credentials to local HOME_PATH/ +EnrollDefaultUser() { + if [ "$#" -ne 4 ]; then + echo "Illegal number of parameters" + exit 1 + fi + + local CA_URL=$1 + local CERT_CN=$2 + local CERT_O=$3 + local HOME_PATH=$4 + + EnrollUser ${CA_URL} ${CERT_CN} ${CERT_O} ${DEFAULT_USER} ${DEFAULT_PASS} ${HOME_PATH} +} + +# EnrollUser CA_URL CERT_CN CERT_O USER PASS HOME_PATH +# EnrollUser will store credentials to local HOME_PATH/ +EnrollUser() { + if [ "$#" -ne 6 ]; then + echo "Illegal number of parameters" + exit 1 + fi + local CA_URL=$1 + local CERT_CN=$2 + local CERT_O=$3 + local USER=$4 + local PASS=$5 + local HOME_PATH=$6 + + if [ -d "${HOME_PATH}" ]; then + echo "${HOME_PATH} already exists, ignore re-enrolling $@" + return + fi + fabric-ca-client enroll \ + --home ${HOME_PATH} \ + --csr.cn "${CERT_CN}" \ + --csr.hosts "${CERT_CN}" \ + --csr.names C=US,ST="California",L="San Francisco",O=${CERT_O} \ + --url http://${USER}:${PASS}@${CA_URL}:7054 + set +x +} + +EnrollCA() { + local URL=$1 + local USER_ID=$2 + local ORG=$3 + local USER=$4 + local PASS=$5 + local MSP_PATH=msp + + [ -d ${MSP_PATH} ] || mkdir -p ${MSP_PATH} + + fabric-ca-client enroll \ + --csr.cn ${USER_ID} \ + --csr.names C=US,ST="California",L="San Francisco",O=${ORG} \ + --home ${USER_ID} \ + --mspdir ${MSP_PATH} \ + --url http://${USER}:${PASS}@${URL} +} + +EnrollTLSCA() { + local URL=$1 + local USER_ID=$2 + local ORG=$3 + local USER=$4 + local PASS=$5 + local MSP_PATH=tls + + [ -d ${MSP_PATH} ] || mkdir -p ${MSP_PATH} + + fabric-ca-client enroll \ + --enrollment.profile tls \ + --csr.cn ${USER_ID} \ + --csr.hosts ${USER_ID} + --csr.names C=US,ST="California",L="San Francisco",O=${ORG} \ + --home ${USER_ID} \ + --mspdir ${MSP_PATH} \ + --url http://${USER}:${PASS}@${URL}:7054 + + mv $MSP_PATH/cacerts/*.pem $MSP_PATH/cacerts/${URL}-cert.pem + mv $MSP_PATH/signcerts/*.pem $MSP_PATH/signcerts/${USER_ID}-cert.pem + + if [ ${MSP_PATH} == "tls" ]; then + cp $MSP_PATH/signcerts/*.pem $MSP_PATH + cp $MSP_PATH/keystore/*_sk $MSP_PATH + fi +} + +ORDERER_ORGS=( example.com ) +ORDERERS=( orderer0 orderer1 ) + +PEER_ORGS=( org1.example.com org2.example.com ) +PEERS=( peer0 peer1 ) + +USERS=( Admin User1 ) + +# TODO: Fabric-ca's existing param support is bad, which reads user.name as csr.cn, and ignore the true csr.cn when do enroll. +# Generates peer orgs +for org in "${PEER_ORGS[@]}" +do + cd ${CONFIG_PATH}/peerOrganizations/${org}/ + + echo "Register all users at ca and tlsca" + for user in "${USERS[@]}" + do + if [ "${user}" == "Admin" ]; then + RegisterUser ca.${org} "${user}@${org}" ${org} ${user}@${org} ${user} "user" "hf.Registrar.Roles=client,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=true:ecert,abac.init=true:ecert" + RegisterUser tlsca.${org} "${user}@${org}" ${org} ${user}@${org} ${user} "user" "hf.Registrar.Roles=client,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=true:ecert,abac.init=true:ecert" + else + RegisterUser ca.${org} "${user}@${org}" ${org} ${user}@${org} ${user} "user" "hf.Registrar.Roles=client,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=false:ecert,abac.init=true:ecert" + RegisterUser tlsca.${org} "${user}@${org}" ${org} ${user}@${org} ${user} "user" "hf.Registrar.Roles=client,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=false:ecert,abac.init=true:ecert" + fi + done + + echo "Enroll all users" + for user in "${USERS[@]}" + do + EnrollUser ca.${org} "${user}@${org}" ${org} "${user}@${org}" ${user} "${user}@ca.${org}" + EnrollUser tlsca.${org} "${user}@${org}" ${org} "${user}@${org}" ${user} "${user}@tlsca.${org}" + done + + echo "Register all peers at ca and tlsca" + for peer in "${PEERS[@]}" + do + RegisterUser ca.${org} ${peer}@${org} ${org} ${peer}@${org} ${peer} "peer" "hf.Registrar.Roles=peer,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=false:ecert,abac.init=true:ecert" + RegisterUser tlsca.${org} ${peer}@${org} ${org} ${peer}@${org} ${peer} "peer" "hf.Registrar.Roles=peer,hf.Registrar.Attributes=*,hf.Revoker=true,hf.GenCRL=true,admin=false:ecert,abac.init=true:ecert" + done + + + echo "Enroll all peers" + for peer in "${PEERS[@]}" + do + EnrollUser ca.${org} ${peer}@${org} ${org} ${peer}@${org} ${peer} ${peer}@ca.${org} + EnrollUser tlsca.${org} ${peer}@${org} ${org} ${peer}@${org} ${peer} ${peer}@tlsca.${org} + done +done + +exit 0 +# Enroll all users +cp ../tlsca/*.pem Admin@${org}/tls/ca.crt + +EnrollCA ca.${org} Admin@${org} ${org} adminpw +EnrollTLSCA tlsca.${org} Admin@${org} ${org} admin adminpw + diff --git a/hyperledger_fabric/v2.2.8/ca-test/scripts/env.sh b/hyperledger_fabric/v2.2.8/ca-test/scripts/env.sh new file mode 100644 index 00000000..d9b3c0b3 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/ca-test/scripts/env.sh @@ -0,0 +1,166 @@ +#!/usr/bin/env bash + + +DEFAULT_USER="boot-admin" +DEFAULT_PASS="boot-pass" + +# store the default template for fabric-ca-server-config.yaml +CA_SERVER_DEFAULT_CONFIG="" +read -r -d '' CA_SERVER_DEFAULT_CONFIG << EOF +version: 1.4.0 +port: 7054 +debug: false +crlsizelimit: 512000 + +tls: + enabled: false + certfile: + keyfile: + clientauth: + type: noclientcert + certfiles: + +ca: + name: + keyfile: + certfile: + chainfile: + +crl: + expiry: 24h + +registry: + maxenrollments: -1 + + # Contains identity information which is used when LDAP is disabled + identities: + - name: admin + pass: adminpw + type: client + affiliation: "" + attrs: + hf.Registrar.Roles: "*" + hf.Registrar.DelegateRoles: "*" + hf.Revoker: true + hf.IntermediateCA: true + hf.GenCRL: true + hf.Registrar.Attributes: "*" + hf.AffiliationMgr: true + +db: + type: sqlite3 + datasource: fabric-ca-server.db + tls: + enabled: false + certfiles: + client: + certfile: + keyfile: + +ldap: + enabled: false + url: ldap://:@:/ + tls: + certfiles: + client: + certfile: + keyfile: + attribute: + names: ['uid','member'] + converters: + - name: + value: + maps: + groups: + - name: + value: + +affiliations: + org1: + - department1 + - department2 + org2: + - department1 + +signing: + default: + usage: + - digital signature + expiry: 87600h + profiles: + ca: + usage: + - cert sign + - crl sign + expiry: 43800h + caconstraint: + isca: true + maxpathlen: 0 + tls: + usage: + - signing + - key encipherment + - server auth + - client auth + - key agreement + expiry: 8760h + +csr: + cn: fabric-ca-server + keyrequest: + algo: ecdsa + size: 256 + names: + - C: US + ST: "North Carolina" + L: + O: Hyperledger + OU: Fabric + hosts: + - 4462096fc0ba + - localhost + ca: + expiry: 131400h + pathlength: 1 + +idemix: + rhpoolsize: 1000 + nonceexpiration: 15s + noncesweepinterval: 15m + +bccsp: + default: SW + sw: + hash: SHA2 + security: 256 + filekeystore: + # The directory used for the software file-based keystore + keystore: msp/keystore + + +cacount: + +cafiles: + +intermediate: + parentserver: + url: + caname: + + enrollment: + hosts: + profile: + label: + + tls: + certfiles: + client: + certfile: + keyfile: + +cfg: + identities: + passwordattempts: 10 +EOF + +#echo "${CA_SERVER_DEFAULT_CONFIG}" diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/README.md b/hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/README.md new file mode 100644 index 00000000..22338f1d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/README.md @@ -0,0 +1,23 @@ +# Debug Chaincode with MockShim +Baohua Yang, 2019-01-17 + +The package will demonstrate how to debug the chaincode with the MockShim lib. + +This way is more efficient and quick to debug locally without any fabric network setup. + +## Usage + +Unzip the package and enter the package path, then run + +```bash +# Regular testing should return OK +$ go test . + +# Debug with more logs output +$ go test -v . +``` + +## Files + +* chaincode_example02.go: example02 chaincode from HLF repo; +* cc_test.go: test code to verify the example02 chaincode logic. diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/cc_test.go b/hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/cc_test.go new file mode 100644 index 00000000..6fb11c2c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/cc_test.go @@ -0,0 +1,58 @@ +package main + +import ( + "strconv" + "testing" + + "github.com/hyperledger/fabric/core/chaincode/shim" +) + +// TestMockShim test the chaincode with MockShim +func TestMockShim(t *testing.T) { + var Aval int + var err error + + // Instantiate mockStub using the sample example02 chaincode + stub := shim.NewMockStub("mockStub", new(SimpleChaincode)) + if stub == nil { + t.Fatalf("MockStub creation failed") + } + + // Init with tx_uuid, args + result := stub.MockInit("000001", [][]byte{[]byte("init"), []byte("a"), []byte("100"), []byte("b"), []byte("200")}) + if result.Status != shim.OK { + t.Fatalf("Error to Init the chaincode: %+v", result) + } + + // Query the existing result + result = stub.MockInvoke("000002", [][]byte{[]byte("query"), []byte("a")}) + if result.Status != shim.OK { + t.Fatalf("Error to Invoke.query the chaincode: %+v", result) + } + Aval, err = strconv.Atoi(string(result.Payload)) + if err != nil { + t.Errorf("Expecting integer value for query result") + } + if Aval != 100 { + t.Errorf("Value is not equal to expected from query result") + } + + // Invoke to transfer + result = stub.MockInvoke("000003", [][]byte{[]byte("invoke"), []byte("a"), []byte("b"), []byte("10")}) + if result.Status != shim.OK { + t.Fatalf("Error to Invoke.invoke the chaincode: %+v", result) + } + + // Query the existing result + result = stub.MockInvoke("000004", [][]byte{[]byte("query"), []byte("a")}) + if result.Status != shim.OK { + t.Fatalf("Error to Invoke.query the chaincode: %+v", result) + } + Aval, err = strconv.Atoi(string(result.Payload)) + if err != nil { + t.Errorf("Expecting integer value for query result") + } + if Aval != 90 { + t.Errorf("Value is not equal to expected from query result") + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/chaincode_example02.go b/hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/chaincode_example02.go new file mode 100644 index 00000000..37224d80 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/cc02_mockTest/chaincode_example02.go @@ -0,0 +1,200 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +//WARNING - this chaincode's ID is hard-coded in chaincode_example04 to illustrate one way of +//calling chaincode from a chaincode. If this example is modified, chaincode_example04.go has +//to be modified as well with the new ID of chaincode_example02. +//chaincode_example05 show's how chaincode ID can be passed in as a parameter instead of +//hard-coding. + +import ( + "fmt" + "strconv" + + "github.com/hyperledger/fabric-chaincode-go/shim" + pb "github.com/hyperledger/fabric-protos-go/peer" +) + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + fmt.Println("ex02 Init") + _, args := stub.GetFunctionAndParameters() + var A, B string // Entities + var Aval, Bval int // Asset holdings + var err error + + if len(args) != 4 { + fmt.Printf("args = %+v\n", args) + return shim.Error("Incorrect number of arguments. Expecting 4") + } + + // Initialize the chaincode + A = args[0] + Aval, err = strconv.Atoi(args[1]) + if err != nil { + return shim.Error("Expecting integer value for asset holding") + } + B = args[2] + Bval, err = strconv.Atoi(args[3]) + if err != nil { + return shim.Error("Expecting integer value for asset holding") + } + fmt.Printf("Aval = %d, Bval = %d\n", Aval, Bval) + + // Write the state to the ledger + err = stub.PutState(A, []byte(strconv.Itoa(Aval))) + if err != nil { + return shim.Error(err.Error()) + } + + err = stub.PutState(B, []byte(strconv.Itoa(Bval))) + if err != nil { + return shim.Error(err.Error()) + } + + return shim.Success(nil) +} + +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + fmt.Println("ex02 Invoke") + function, args := stub.GetFunctionAndParameters() + if function == "invoke" { + // Make payment of X units from A to B + return t.invoke(stub, args) + } else if function == "delete" { + // Deletes an entity from its state + return t.delete(stub, args) + } else if function == "query" { + // the old "Query" is now implemtned in invoke + return t.query(stub, args) + } + + return shim.Error("Invalid invoke function name. Expecting \"invoke\" \"delete\" \"query\"") +} + +// Transaction makes payment of X units from A to B +func (t *SimpleChaincode) invoke(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var A, B string // Entities + var Aval, Bval int // Asset holdings + var X int // Transaction value + var err error + + if len(args) != 3 { + return shim.Error("Incorrect number of arguments. Expecting 3") + } + + A = args[0] + B = args[1] + + // Get the state from the ledger + // TODO: will be nice to have a GetAllState call to ledger + Avalbytes, err := stub.GetState(A) + if err != nil { + return shim.Error("Failed to get state") + } + if Avalbytes == nil { + return shim.Error("Entity not found") + } + Aval, _ = strconv.Atoi(string(Avalbytes)) + + Bvalbytes, err := stub.GetState(B) + if err != nil { + return shim.Error("Failed to get state") + } + if Bvalbytes == nil { + return shim.Error("Entity not found") + } + Bval, _ = strconv.Atoi(string(Bvalbytes)) + + // Perform the execution + X, err = strconv.Atoi(args[2]) + if err != nil { + return shim.Error("Invalid transaction amount, expecting a integer value") + } + Aval = Aval - X + Bval = Bval + X + fmt.Printf("Aval = %d, Bval = %d\n", Aval, Bval) + + // Write the state back to the ledger + err = stub.PutState(A, []byte(strconv.Itoa(Aval))) + if err != nil { + return shim.Error(err.Error()) + } + + err = stub.PutState(B, []byte(strconv.Itoa(Bval))) + if err != nil { + return shim.Error(err.Error()) + } + + return shim.Success(nil) +} + +// Deletes an entity from state +func (t *SimpleChaincode) delete(stub shim.ChaincodeStubInterface, args []string) pb.Response { + if len(args) != 1 { + return shim.Error("Incorrect number of arguments. Expecting 1") + } + + A := args[0] + + // Delete the key from the state in ledger + err := stub.DelState(A) + if err != nil { + return shim.Error("Failed to delete state") + } + + return shim.Success(nil) +} + +// query callback representing the query of a chaincode +func (t *SimpleChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var A string // Entities + var err error + + if len(args) != 1 { + return shim.Error("Incorrect number of arguments. Expecting name of the person to query") + } + + A = args[0] + + // Get the state from the ledger + Avalbytes, err := stub.GetState(A) + if err != nil { + jsonResp := "{\"Error\":\"Failed to get state for " + A + "\"}" + return shim.Error(jsonResp) + } + + if Avalbytes == nil { + jsonResp := "{\"Error\":\"Nil amount for " + A + "\"}" + return shim.Error(jsonResp) + } + + jsonResp := "{\"Name\":\"" + A + "\",\"Amount\":\"" + string(Avalbytes) + "\"}" + fmt.Printf("Query Response:%s\n", jsonResp) + return shim.Success(Avalbytes) +} + +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting Simple chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example01/chaincode_example01.go b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example01/chaincode_example01.go new file mode 100644 index 00000000..74a3447c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example01/chaincode_example01.go @@ -0,0 +1,105 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "fmt" + "strconv" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric-protos-go/peer" + +) + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +var A, B string +var Aval, Bval, X int + +// Init callback representing the invocation of a chaincode +// This chaincode will manage two accounts A and B and will transfer X units from A to B upon invoke +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + var err error + _, args := stub.GetFunctionAndParameters() + if len(args) != 4 { + return shim.Error("Incorrect number of arguments. Expecting 4") + } + + // Initialize the chaincode + A = args[0] + Aval, err = strconv.Atoi(args[1]) + if err != nil { + return shim.Error("Expecting integer value for asset holding") + } + B = args[2] + Bval, err = strconv.Atoi(args[3]) + if err != nil { + return shim.Error("Expecting integer value for asset holding") + } + fmt.Printf("Aval = %d, Bval = %d\n", Aval, Bval) + + /************ + // Write the state to the ledger + err = stub.PutState(A, []byte(strconv.Itoa(Aval)) + if err != nil { + return nil, err + } + + stub.PutState(B, []byte(strconv.Itoa(Bval)) + err = stub.PutState(B, []byte(strconv.Itoa(Bval)) + if err != nil { + return nil, err + } + ************/ + return shim.Success(nil) +} + +func (t *SimpleChaincode) invoke(stub shim.ChaincodeStubInterface, args []string) pb.Response { + // Transaction makes payment of X units from A to B + X, err := strconv.Atoi(args[0]) + if err != nil { + fmt.Printf("Error convert %s to integer: %s", args[0], err) + return shim.Error(fmt.Sprintf("Error convert %s to integer: %s", args[0], err)) + } + Aval = Aval - X + Bval = Bval + X + ts, err2 := stub.GetTxTimestamp() + if err2 != nil { + fmt.Printf("Error getting transaction timestamp: %s", err2) + return shim.Error(fmt.Sprintf("Error getting transaction timestamp: %s", err2)) + } + fmt.Printf("Transaction Time: %v,Aval = %d, Bval = %d\n", ts, Aval, Bval) + return shim.Success(nil) +} + +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + if function == "invoke" { + return t.invoke(stub, args) + } + + return shim.Error("Invalid invoke function name. Expecting \"invoke\"") +} + +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting Simple chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/chaincode_example02.go b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/chaincode_example02.go new file mode 100644 index 00000000..a5503fe7 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/chaincode_example02.go @@ -0,0 +1,193 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "fmt" + "strconv" + + "github.com/hyperledger/fabric-chaincode-go/shim" + pb "github.com/hyperledger/fabric-protos-go/peer" +) + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + fmt.Println("ex02 Init") + _, args := stub.GetFunctionAndParameters() + var A, B string // Entities + var Aval, Bval int // Asset holdings + var err error + + if len(args) != 4 { + return shim.Error("Incorrect number of arguments. Expecting 4") + } + + // Initialize the chaincode + A = args[0] + Aval, err = strconv.Atoi(args[1]) + if err != nil { + return shim.Error("Expecting integer value for asset holding") + } + B = args[2] + Bval, err = strconv.Atoi(args[3]) + if err != nil { + return shim.Error("Expecting integer value for asset holding") + } + fmt.Printf("Aval = %d, Bval = %d\n", Aval, Bval) + + // Write the state to the ledger + err = stub.PutState(A, []byte(strconv.Itoa(Aval))) + if err != nil { + return shim.Error(err.Error()) + } + + err = stub.PutState(B, []byte(strconv.Itoa(Bval))) + if err != nil { + return shim.Error(err.Error()) + } + + return shim.Success(nil) +} + +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + fmt.Println("ex02 Invoke") + function, args := stub.GetFunctionAndParameters() + if function == "invoke" { + // Make payment of X units from A to B + return t.invoke(stub, args) + } else if function == "delete" { + // Deletes an entity from its state + return t.delete(stub, args) + } else if function == "query" { + // the old "Query" is now implemtned in invoke + return t.query(stub, args) + } + + return shim.Error("Invalid invoke function name. Expecting \"invoke\" \"delete\" \"query\"") +} + +// Transaction makes payment of X units from A to B +func (t *SimpleChaincode) invoke(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var A, B string // Entities + var Aval, Bval int // Asset holdings + var X int // Transaction value + var err error + + if len(args) != 3 { + return shim.Error("Incorrect number of arguments. Expecting 3") + } + + A = args[0] + B = args[1] + + // Get the state from the ledger + // TODO: will be nice to have a GetAllState call to ledger + Avalbytes, err := stub.GetState(A) + if err != nil { + return shim.Error("Failed to get state") + } + if Avalbytes == nil { + return shim.Error("Entity not found") + } + Aval, _ = strconv.Atoi(string(Avalbytes)) + + Bvalbytes, err := stub.GetState(B) + if err != nil { + return shim.Error("Failed to get state") + } + if Bvalbytes == nil { + return shim.Error("Entity not found") + } + Bval, _ = strconv.Atoi(string(Bvalbytes)) + + // Perform the execution + X, err = strconv.Atoi(args[2]) + if err != nil { + return shim.Error("Invalid transaction amount, expecting a integer value") + } + Aval = Aval - X + Bval = Bval + X + fmt.Printf("Aval = %d, Bval = %d\n", Aval, Bval) + + // Write the state back to the ledger + err = stub.PutState(A, []byte(strconv.Itoa(Aval))) + if err != nil { + return shim.Error(err.Error()) + } + + err = stub.PutState(B, []byte(strconv.Itoa(Bval))) + if err != nil { + return shim.Error(err.Error()) + } + + return shim.Success(nil) +} + +// Deletes an entity from state +func (t *SimpleChaincode) delete(stub shim.ChaincodeStubInterface, args []string) pb.Response { + if len(args) != 1 { + return shim.Error("Incorrect number of arguments. Expecting 1") + } + + A := args[0] + + // Delete the key from the state in ledger + err := stub.DelState(A) + if err != nil { + return shim.Error("Failed to delete state") + } + + return shim.Success(nil) +} + +// query callback representing the query of a chaincode +func (t *SimpleChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var A string // Entities + var err error + + if len(args) != 1 { + return shim.Error("Incorrect number of arguments. Expecting name of the person to query") + } + + A = args[0] + + // Get the state from the ledger + Avalbytes, err := stub.GetState(A) + if err != nil { + jsonResp := "{\"Error\":\"Failed to get state for " + A + "\"}" + return shim.Error(jsonResp) + } + + if Avalbytes == nil { + jsonResp := "{\"Error\":\"Nil amount for " + A + "\"}" + return shim.Error(jsonResp) + } + + jsonResp := "{\"Name\":\"" + A + "\",\"Amount\":\"" + string(Avalbytes) + "\"}" + fmt.Printf("Query Response:%s\n", jsonResp) + return shim.Success(Avalbytes) +} + +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting Simple chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/chaincode_example02_test.go b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/chaincode_example02_test.go new file mode 100644 index 00000000..f6676f1d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/chaincode_example02_test.go @@ -0,0 +1,113 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package main + +import ( + "fmt" + "testing" + + "github.com/hyperledger/fabric-chaincode-go/shim" + +) + +func checkInit(t *testing.T, stub *shim.MockStub, args [][]byte) { + res := stub.MockInit("1", args) + if res.Status != shim.OK { + fmt.Println("Init failed", string(res.Message)) + t.FailNow() + } +} + +func checkState(t *testing.T, stub *shim.MockStub, name string, value string) { + bytes := stub.State[name] + if bytes == nil { + fmt.Println("State", name, "failed to get value") + t.FailNow() + } + if string(bytes) != value { + fmt.Println("State value", name, "was not", value, "as expected") + t.FailNow() + } +} + +func checkQuery(t *testing.T, stub *shim.MockStub, name string, value string) { + res := stub.MockInvoke("1", [][]byte{[]byte("query"), []byte(name)}) + if res.Status != shim.OK { + fmt.Println("Query", name, "failed", string(res.Message)) + t.FailNow() + } + if res.Payload == nil { + fmt.Println("Query", name, "failed to get value") + t.FailNow() + } + if string(res.Payload) != value { + fmt.Println("Query value", name, "was not", value, "as expected") + t.FailNow() + } +} + +func checkInvoke(t *testing.T, stub *shim.MockStub, args [][]byte) { + res := stub.MockInvoke("1", args) + if res.Status != shim.OK { + fmt.Println("Invoke", args, "failed", string(res.Message)) + t.FailNow() + } +} + +func TestExample02_Init(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex02", scc) + + // Init A=123 B=234 + checkInit(t, stub, [][]byte{[]byte("init"), []byte("A"), []byte("123"), []byte("B"), []byte("234")}) + + checkState(t, stub, "A", "123") + checkState(t, stub, "B", "234") +} + +func TestExample02_Query(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex02", scc) + + // Init A=345 B=456 + checkInit(t, stub, [][]byte{[]byte("init"), []byte("A"), []byte("345"), []byte("B"), []byte("456")}) + + // Query A + checkQuery(t, stub, "A", "345") + + // Query B + checkQuery(t, stub, "B", "456") +} + +func TestExample02_Invoke(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex02", scc) + + // Init A=567 B=678 + checkInit(t, stub, [][]byte{[]byte("init"), []byte("A"), []byte("567"), []byte("B"), []byte("678")}) + + // Invoke A->B for 123 + checkInvoke(t, stub, [][]byte{[]byte("invoke"), []byte("A"), []byte("B"), []byte("123")}) + checkQuery(t, stub, "A", "444") + checkQuery(t, stub, "B", "801") + + // Invoke B->A for 234 + checkInvoke(t, stub, [][]byte{[]byte("invoke"), []byte("B"), []byte("A"), []byte("234")}) + checkQuery(t, stub, "A", "678") + checkQuery(t, stub, "B", "567") + checkQuery(t, stub, "A", "678") + checkQuery(t, stub, "B", "567") +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/go.mod b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/go.mod new file mode 100644 index 00000000..d685d27b --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/go.mod @@ -0,0 +1,9 @@ +module chaincodes/go/chaincode_example02 + +go 1.14 + +require ( + github.com/hyperledger/fabric-chaincode-go v0.0.0-20201119163726-f8ef75b17719 + github.com/hyperledger/fabric-protos-go v0.0.0-20201028172056-a3136dde2354 + google.golang.org/grpc v1.24.0 // indirect +) diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/go.sum b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/go.sum new file mode 100644 index 00000000..c553d1d1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example02/go.sum @@ -0,0 +1,56 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/hyperledger/fabric-chaincode-go v0.0.0-20201119163726-f8ef75b17719 h1:FQ9AMLVSFt5QW2YBLraXW5V4Au6aFFpSl4xKFARM58Y= +github.com/hyperledger/fabric-chaincode-go v0.0.0-20201119163726-f8ef75b17719/go.mod h1:N7H3sA7Tx4k/YzFq7U0EPdqJtqvM4Kild0JoCc7C0Dc= +github.com/hyperledger/fabric-protos-go v0.0.0-20190919234611-2a87503ac7c9/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0= +github.com/hyperledger/fabric-protos-go v0.0.0-20201028172056-a3136dde2354 h1:6vLLEpvDbSlmUJFjg1hB5YMBpI+WgKguztlONcAFBoY= +github.com/hyperledger/fabric-protos-go v0.0.0-20201028172056-a3136dde2354/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190710143415-6ec70d6a5542 h1:6ZQFf1D2YYDDI7eSwW8adlkkavTB9sw5I24FVtEvNUQ= +golang.org/x/sys v0.0.0-20190710143415-6ec70d6a5542/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b h1:lohp5blsw53GBXtLyLNaTXPXS9pJ1tiTw61ZHUoE9Qw= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.23.0 h1:AzbTB6ux+okLTzP8Ru1Xs41C303zdcfEht7MQnYJt5A= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0 h1:vb/1TCsVn3DcJlQ0Gs1yB1pKI6Do2/QNwxdKqmc/b0s= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example03/chaincode_example03.go b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example03/chaincode_example03.go new file mode 100644 index 00000000..d667a822 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example03/chaincode_example03.go @@ -0,0 +1,100 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This program is an erroneous chaincode program that attempts to put state in query context - query should return error +package main + +import ( + "fmt" + "strconv" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric/protos/peer" +) + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +// Init takes a string and int. These are stored as a key/value pair in the state +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + var A string // Entity + var Aval int // Asset holding + var err error + _, args := stub.GetFunctionAndParameters() + if len(args) != 2 { + return shim.Error("Incorrect number of arguments. Expecting 2") + } + + // Initialize the chaincode + A = args[0] + Aval, err = strconv.Atoi(args[1]) + if err != nil { + return shim.Error("Expecting integer value for asset holding") + } + fmt.Printf("Aval = %d\n", Aval) + + // Write the state to the ledger - this put is legal within Run + err = stub.PutState(A, []byte(strconv.Itoa(Aval))) + if err != nil { + return shim.Error(err.Error()) + } + + return shim.Success(nil) +} + +// Invoke is a no-op +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + if function == "query" { + return t.query(stub, args) + } + + return shim.Error("Invalid invoke function name. Expecting \"query\"") +} + +func (t *SimpleChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var A string // Entity + var Aval int // Asset holding + var err error + + if len(args) != 2 { + return shim.Error("Incorrect number of arguments. Expecting 2") + } + + A = args[0] + Aval, err = strconv.Atoi(args[1]) + if err != nil { + return shim.Error("Expecting integer value for asset holding") + } + fmt.Printf("Aval = %d\n", Aval) + + // Write the state to the ledger - this put is illegal within Run + err = stub.PutState(A, []byte(strconv.Itoa(Aval))) + if err != nil { + jsonResp := "{\"Error\":\"Cannot put state within chaincode query\"}" + return shim.Error(jsonResp) + } + + return shim.Success(nil) +} + +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example03/chaincode_example03_test.go b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example03/chaincode_example03_test.go new file mode 100644 index 00000000..812650e0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example03/chaincode_example03_test.go @@ -0,0 +1,72 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package main + +import ( + "fmt" + "testing" + + "github.com/hyperledger/fabric/core/chaincode/shim" +) + +func checkInit(t *testing.T, scc *SimpleChaincode, stub *shim.MockStub, args [][]byte) { + res := stub.MockInit("1", args) + if res.Status != shim.OK { + fmt.Println("Init failed", res.Message) + t.FailNow() + } +} + +func checkState(t *testing.T, stub *shim.MockStub, name string, value string) { + bytes := stub.State[name] + if bytes == nil { + fmt.Println("State", name, "failed to get value") + t.FailNow() + } + if string(bytes) != value { + fmt.Println("State value", name, "was not", value, "as expected") + t.FailNow() + } +} + +func checkInvoke(t *testing.T, scc *SimpleChaincode, stub *shim.MockStub, args [][]byte) { + res := stub.MockInvoke("1", args) + if res.Status != shim.OK { + fmt.Println("Query failed", string(res.Message)) + t.FailNow() + } +} + +func TestExample03_Init(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex03", scc) + + // Init A=123 B=234 + checkInit(t, scc, stub, [][]byte{[]byte("init"), []byte("A"), []byte("123")}) + + checkState(t, stub, "A", "123") +} + +func TestExample03_Invoke(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex03", scc) + + // Init A=345 B=456 + checkInit(t, scc, stub, [][]byte{[]byte("init"), []byte("A"), []byte("345")}) + + // Invoke "query" + checkInvoke(t, scc, stub, [][]byte{[]byte("query"), []byte("A"), []byte("345")}) +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example04/chaincode_example04.go b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example04/chaincode_example04.go new file mode 100644 index 00000000..b874ad73 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example04/chaincode_example04.go @@ -0,0 +1,174 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "fmt" + "strconv" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric/protos/peer" +) + +// This chaincode is a test for chaincode invoking another chaincode - invokes chaincode_example02 + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +func toChaincodeArgs(args ...string) [][]byte { + bargs := make([][]byte, len(args)) + for i, arg := range args { + bargs[i] = []byte(arg) + } + return bargs +} + +// Init takes two arguments, a string and int. These are stored in the key/value pair in the state +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + var event string // Indicates whether event has happened. Initially 0 + var eventVal int // State of event + var err error + _, args := stub.GetFunctionAndParameters() + if len(args) != 2 { + return shim.Error("Incorrect number of arguments. Expecting 2") + } + + // Initialize the chaincode + event = args[0] + eventVal, err = strconv.Atoi(args[1]) + if err != nil { + return shim.Error("Expecting integer value for event status") + } + fmt.Printf("eventVal = %d\n", eventVal) + + err = stub.PutState(event, []byte(strconv.Itoa(eventVal))) + if err != nil { + return shim.Error(err.Error()) + } + + return shim.Success(nil) +} + +// Invoke invokes another chaincode - chaincode_example02, upon receipt of an event and changes event state +func (t *SimpleChaincode) invoke(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var event string // Event entity + var eventVal int // State of event + var err error + + if len(args) != 3 && len(args) != 4 { + return shim.Error("Incorrect number of arguments. Expecting 3 or 4") + } + + chainCodeToCall := args[0] + event = args[1] + eventVal, err = strconv.Atoi(args[2]) + if err != nil { + return shim.Error("Expected integer value for event state change") + } + channelID := "" + if len(args) == 4 { + channelID = args[3] + } + + if eventVal != 1 { + fmt.Printf("Unexpected event. Doing nothing\n") + return shim.Success(nil) + } + + f := "invoke" + invokeArgs := toChaincodeArgs(f, "a", "b", "10") + response := stub.InvokeChaincode(chainCodeToCall, invokeArgs, channelID) + if response.Status != shim.OK { + errStr := fmt.Sprintf("Failed to invoke chaincode. Got error: %s", string(response.Payload)) + fmt.Printf(errStr) + return shim.Error(errStr) + } + + fmt.Printf("Invoke chaincode successful. Got response %s", string(response.Payload)) + + // Write the event state back to the ledger + err = stub.PutState(event, []byte(strconv.Itoa(eventVal))) + if err != nil { + return shim.Error(err.Error()) + } + + return response +} + +func (t *SimpleChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var event string // Event entity + var err error + + if len(args) < 1 { + return shim.Error("Incorrect number of arguments. Expecting entity to query") + } + + event = args[0] + var jsonResp string + + // Get the state from the ledger + eventValbytes, err := stub.GetState(event) + if err != nil { + jsonResp = "{\"Error\":\"Failed to get state for " + event + "\"}" + return shim.Error(jsonResp) + } + + if eventValbytes == nil { + jsonResp = "{\"Error\":\"Nil value for " + event + "\"}" + return shim.Error(jsonResp) + } + + if len(args) > 3 { + chainCodeToCall := args[1] + queryKey := args[2] + channel := args[3] + f := "query" + invokeArgs := toChaincodeArgs(f, queryKey) + response := stub.InvokeChaincode(chainCodeToCall, invokeArgs, channel) + if response.Status != shim.OK { + errStr := fmt.Sprintf("Failed to invoke chaincode. Got error: %s", err.Error()) + fmt.Printf(errStr) + return shim.Error(errStr) + } + jsonResp = string(response.Payload) + } else { + jsonResp = "{\"Name\":\"" + event + "\",\"Amount\":\"" + string(eventValbytes) + "\"}" + } + fmt.Printf("Query Response: %s\n", jsonResp) + + return shim.Success([]byte(jsonResp)) +} + +// Invoke is called by fabric to execute a transaction +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + if function == "invoke" { + return t.invoke(stub, args) + } else if function == "query" { + return t.query(stub, args) + } + + return shim.Error("Invalid invoke function name. Expecting \"invoke\" \"query\"") +} + +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting Simple chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example04/chaincode_example04_test.go b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example04/chaincode_example04_test.go new file mode 100644 index 00000000..9d252e2d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example04/chaincode_example04_test.go @@ -0,0 +1,119 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package main + +import ( + "fmt" + "testing" + + "github.com/hyperledger/fabric/core/chaincode/shim" + ex02 "github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" +) + +// this is the response to any successful Invoke() on chaincode_example04 +var eventResponse = "{\"Name\":\"Event\",\"Amount\":\"1\"}" + +func checkInit(t *testing.T, stub *shim.MockStub, args [][]byte) { + res := stub.MockInit("1", args) + if res.Status != shim.OK { + fmt.Println("Init failed", string(res.Message)) + t.FailNow() + } +} + +func checkState(t *testing.T, stub *shim.MockStub, name string, value string) { + bytes := stub.State[name] + if bytes == nil { + fmt.Println("State", name, "failed to get value") + t.FailNow() + } + if string(bytes) != value { + fmt.Println("State value", name, "was not", value, "as expected") + t.FailNow() + } +} + +func checkQuery(t *testing.T, stub *shim.MockStub, name string, value string) { + res := stub.MockInvoke("1", [][]byte{[]byte("query"), []byte(name)}) + if res.Status != shim.OK { + fmt.Println("Query", name, "failed", string(res.Message)) + t.FailNow() + } + if res.Payload == nil { + fmt.Println("Query", name, "failed to get value") + t.FailNow() + } + if string(res.Payload) != value { + fmt.Println("Query value", name, "was not", value, "as expected") + t.FailNow() + } +} + +func checkInvoke(t *testing.T, stub *shim.MockStub, args [][]byte) { + res := stub.MockInvoke("1", args) + if res.Status != shim.OK { + fmt.Println("Invoke", args, "failed", string(res.Message)) + t.FailNow() + } +} + +func TestExample04_Init(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex04", scc) + + // Init A=123 B=234 + checkInit(t, stub, [][]byte{[]byte("init"), []byte("Event"), []byte("123")}) + + checkState(t, stub, "Event", "123") +} + +func TestExample04_Query(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex04", scc) + + // Init A=345 B=456 + checkInit(t, stub, [][]byte{[]byte("init"), []byte("Event"), []byte("1")}) + + // Query A + checkQuery(t, stub, "Event", eventResponse) +} + +func TestExample04_Invoke(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex04", scc) + + chaincodeToInvoke := "ex02" + + ccEx2 := new(ex02.SimpleChaincode) + stubEx2 := shim.NewMockStub(chaincodeToInvoke, ccEx2) + checkInit(t, stubEx2, [][]byte{[]byte("init"), []byte("a"), []byte("111"), []byte("b"), []byte("222")}) + stub.MockPeerChaincode(chaincodeToInvoke, stubEx2) + + // Init A=567 B=678 + checkInit(t, stub, [][]byte{[]byte("init"), []byte("Event"), []byte("1")}) + + // Invoke A->B for 10 via Example04's chaincode + checkInvoke(t, stub, [][]byte{[]byte("invoke"), []byte(chaincodeToInvoke), []byte("Event"), []byte("1")}) + checkQuery(t, stub, "Event", eventResponse) + checkQuery(t, stubEx2, "a", "101") + checkQuery(t, stubEx2, "b", "232") + + // Invoke A->B for 10 via Example04's chaincode + checkInvoke(t, stub, [][]byte{[]byte("invoke"), []byte(chaincodeToInvoke), []byte("Event"), []byte("1")}) + checkQuery(t, stub, "Event", eventResponse) + checkQuery(t, stubEx2, "a", "91") + checkQuery(t, stubEx2, "b", "242") +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example05/chaincode_example05.go b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example05/chaincode_example05.go new file mode 100644 index 00000000..35ef5074 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example05/chaincode_example05.go @@ -0,0 +1,215 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "fmt" + "strconv" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric/protos/peer" +) + +// This chaincode is a test for chaincode querying another chaincode - invokes chaincode_example02 and computes the sum of a and b and stores it as state + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +func toChaincodeArgs(args ...string) [][]byte { + bargs := make([][]byte, len(args)) + for i, arg := range args { + bargs[i] = []byte(arg) + } + return bargs +} + +// Init takes two arguments, a string and int. The string will be a key with +// the int as a value. +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + var sum string // Sum of asset holdings across accounts. Initially 0 + var sumVal int // Sum of holdings + var err error + _, args := stub.GetFunctionAndParameters() + if len(args) != 2 { + return shim.Error("Incorrect number of arguments. Expecting 2") + } + + // Initialize the chaincode + sum = args[0] + sumVal, err = strconv.Atoi(args[1]) + if err != nil { + return shim.Error("Expecting integer value for sum") + } + fmt.Printf("sumVal = %d\n", sumVal) + + // Write the state to the ledger + err = stub.PutState(sum, []byte(strconv.Itoa(sumVal))) + if err != nil { + return shim.Error(err.Error()) + } + + return shim.Success(nil) +} + +// Invoke queries another chaincode and updates its own state +func (t *SimpleChaincode) invoke(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var sum, channelName string // Sum entity + var Aval, Bval, sumVal int // value of sum entity - to be computed + var err error + + if len(args) < 2 { + return shim.Error("Incorrect number of arguments. Expecting atleast 2") + } + + chaincodeName := args[0] // Expecting name of the chaincode you would like to call, this name would be given during chaincode install time + sum = args[1] + + if len(args) > 2 { + channelName = args[2] + } else { + channelName = "" + } + + // Query chaincode_example02 + f := "query" + queryArgs := toChaincodeArgs(f, "a") + + // if chaincode being invoked is on the same channel, + // then channel defaults to the current channel and args[2] can be "". + // If the chaincode being called is on a different channel, + // then you must specify the channel name in args[2] + + response := stub.InvokeChaincode(chaincodeName, queryArgs, channelName) + if response.Status != shim.OK { + errStr := fmt.Sprintf("Failed to query chaincode. Got error: %s", response.Payload) + fmt.Printf(errStr) + return shim.Error(errStr) + } + Aval, err = strconv.Atoi(string(response.Payload)) + if err != nil { + errStr := fmt.Sprintf("Error retrieving state from ledger for queried chaincode: %s", err.Error()) + fmt.Printf(errStr) + return shim.Error(errStr) + } + + queryArgs = toChaincodeArgs(f, "b") + response = stub.InvokeChaincode(chaincodeName, queryArgs, channelName) + if response.Status != shim.OK { + errStr := fmt.Sprintf("Failed to query chaincode. Got error: %s", response.Payload) + fmt.Printf(errStr) + return shim.Error(errStr) + } + Bval, err = strconv.Atoi(string(response.Payload)) + if err != nil { + errStr := fmt.Sprintf("Error retrieving state from ledger for queried chaincode: %s", err.Error()) + fmt.Printf(errStr) + return shim.Error(errStr) + } + + // Compute sum + sumVal = Aval + Bval + + // Write sumVal back to the ledger + err = stub.PutState(sum, []byte(strconv.Itoa(sumVal))) + if err != nil { + return shim.Error(err.Error()) + } + + fmt.Printf("Invoke chaincode successful. Got sum %d\n", sumVal) + return shim.Success([]byte(strconv.Itoa(sumVal))) +} + +func (t *SimpleChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var sum, channelName string // Sum entity + var Aval, Bval, sumVal int // value of sum entity - to be computed + var err error + + if len(args) < 2 { + return shim.Error("Incorrect number of arguments. Expecting atleast 2") + } + + chaincodeName := args[0] // Expecting name of the chaincode you would like to call, this name would be given during chaincode install time + sum = args[1] + + if len(args) > 2 { + channelName = args[2] + } else { + channelName = "" + } + + // Query chaincode_example02 + f := "query" + queryArgs := toChaincodeArgs(f, "a") + + // if chaincode being invoked is on the same channel, + // then channel defaults to the current channel and args[2] can be "". + // If the chaincode being called is on a different channel, + // then you must specify the channel name in args[2] + response := stub.InvokeChaincode(chaincodeName, queryArgs, channelName) + if response.Status != shim.OK { + errStr := fmt.Sprintf("Failed to query chaincode. Got error: %s", response.Payload) + fmt.Printf(errStr) + return shim.Error(errStr) + } + Aval, err = strconv.Atoi(string(response.Payload)) + if err != nil { + errStr := fmt.Sprintf("Error retrieving state from ledger for queried chaincode: %s", err.Error()) + fmt.Printf(errStr) + return shim.Error(errStr) + } + + queryArgs = toChaincodeArgs(f, "b") + response = stub.InvokeChaincode(chaincodeName, queryArgs, channelName) + if response.Status != shim.OK { + errStr := fmt.Sprintf("Failed to query chaincode. Got error: %s", response.Payload) + fmt.Printf(errStr) + return shim.Error(errStr) + } + Bval, err = strconv.Atoi(string(response.Payload)) + if err != nil { + errStr := fmt.Sprintf("Error retrieving state from ledger for queried chaincode: %s", err.Error()) + fmt.Printf(errStr) + return shim.Error(errStr) + } + + // Compute sum + sumVal = Aval + Bval + + fmt.Printf("Query chaincode successful. Got sum %d\n", sumVal) + jsonResp := "{\"Name\":\"" + sum + "\",\"Value\":\"" + strconv.Itoa(sumVal) + "\"}" + fmt.Printf("Query Response:%s\n", jsonResp) + return shim.Success([]byte(strconv.Itoa(sumVal))) +} + +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + if function == "invoke" { + return t.invoke(stub, args) + } else if function == "query" { + return t.query(stub, args) + } + + return shim.Success([]byte("Invalid invoke function name. Expecting \"invoke\" \"query\"")) +} + +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting Simple chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example05/chaincode_example05_test.go b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example05/chaincode_example05_test.go new file mode 100644 index 00000000..1f6d3047 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/chaincode_example05/chaincode_example05_test.go @@ -0,0 +1,128 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package main + +import ( + "fmt" + "testing" + + "github.com/hyperledger/fabric/core/chaincode/shim" + ex02 "github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" +) + +var chaincodeName = "ex02" + +// chaincode_example05 looks like it wanted to return a JSON response to Query() +// it doesn't actually do this though, it just returns the sum value +func jsonResponse(name string, value string) string { + return fmt.Sprintf("jsonResponse = \"{\"Name\":\"%v\",\"Value\":\"%v\"}", name, value) +} + +func checkInit(t *testing.T, stub *shim.MockStub, args [][]byte) { + res := stub.MockInit("1", args) + if res.Status != shim.OK { + fmt.Println("Init failed", string(res.Message)) + t.FailNow() + } +} + +func checkState(t *testing.T, stub *shim.MockStub, name string, expect string) { + bytes := stub.State[name] + if bytes == nil { + fmt.Println("State", name, "failed to get value") + t.FailNow() + } + if string(bytes) != expect { + fmt.Println("State value", name, "was not", expect, "as expected") + t.FailNow() + } +} + +func checkQuery(t *testing.T, stub *shim.MockStub, args [][]byte, expect string) { + res := stub.MockInvoke("1", args) + if res.Status != shim.OK { + fmt.Println("Query", args, "failed", string(res.Message)) + t.FailNow() + } + if res.Payload == nil { + fmt.Println("Query", args, "failed to get result") + t.FailNow() + } + if string(res.Payload) != expect { + fmt.Println("Query result ", string(res.Payload), "was not", expect, "as expected") + t.FailNow() + } +} + +func checkInvoke(t *testing.T, stub *shim.MockStub, args [][]byte) { + res := stub.MockInvoke("1", args) + if res.Status != shim.OK { + fmt.Println("Invoke", args, "failed", string(res.Message)) + t.FailNow() + } +} + +func TestExample05_Init(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex05", scc) + + // Init A=123 B=234 + checkInit(t, stub, [][]byte{[]byte("init"), []byte("sumStoreName"), []byte("432")}) + + checkState(t, stub, "sumStoreName", "432") +} + +func TestExample05_Query(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex05", scc) + + ccEx2 := new(ex02.SimpleChaincode) + stubEx2 := shim.NewMockStub(chaincodeName, ccEx2) + checkInit(t, stubEx2, [][]byte{[]byte("init"), []byte("a"), []byte("111"), []byte("b"), []byte("222")}) + stub.MockPeerChaincode(chaincodeName, stubEx2) + + checkInit(t, stub, [][]byte{[]byte("init"), []byte("sumStoreName"), []byte("0")}) + + // a + b = 111 + 222 = 333 + checkQuery(t, stub, [][]byte{[]byte("query"), []byte(chaincodeName), []byte("sumStoreName"), []byte("")}, "333") // example05 doesn't return JSON? +} + +func TestExample05_Invoke(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex05", scc) + + ccEx2 := new(ex02.SimpleChaincode) + stubEx2 := shim.NewMockStub(chaincodeName, ccEx2) + checkInit(t, stubEx2, [][]byte{[]byte("init"), []byte("a"), []byte("222"), []byte("b"), []byte("333")}) + stub.MockPeerChaincode(chaincodeName, stubEx2) + + checkInit(t, stub, [][]byte{[]byte("init"), []byte("sumStoreName"), []byte("0")}) + + // a + b = 222 + 333 = 555 + checkInvoke(t, stub, [][]byte{[]byte("invoke"), []byte(chaincodeName), []byte("sumStoreName"), []byte("")}) + checkQuery(t, stub, [][]byte{[]byte("query"), []byte(chaincodeName), []byte("sumStoreName"), []byte("")}, "555") // example05 doesn't return JSON? + checkQuery(t, stubEx2, [][]byte{[]byte("query"), []byte("a")}, "222") + checkQuery(t, stubEx2, [][]byte{[]byte("query"), []byte("b")}, "333") + + // update A-=10 and B+=10 + checkInvoke(t, stubEx2, [][]byte{[]byte("invoke"), []byte("a"), []byte("b"), []byte("10")}) + + // a + b = 212 + 343 = 555 + checkInvoke(t, stub, [][]byte{[]byte("invoke"), []byte(chaincodeName), []byte("sumStoreName"), []byte("")}) + checkQuery(t, stub, [][]byte{[]byte("query"), []byte(chaincodeName), []byte("sumStoreName"), []byte("")}, "555") // example05 doesn't return JSON? + checkQuery(t, stubEx2, [][]byte{[]byte("query"), []byte("a")}, "212") + checkQuery(t, stubEx2, [][]byte{[]byte("query"), []byte("b")}, "343") +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/README.md b/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/README.md new file mode 100644 index 00000000..eca40073 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/README.md @@ -0,0 +1,80 @@ +# Using EncCC + +To test `EncCC` you need to first generate an AES 256 bit key as a base64 +encoded string so that it can be passed as JSON to the peer chaincode +invoke's transient parameter. + +Note: Before getting started you must use govendor to add external dependencies. Please issue the following commands inside the "enccc_example" folder: +``` +govendor init +govendor add +external +``` + +Let's generate the encryption and decryption keys. The example will simulate a shared key so the key is used for both encryption and decryption. +``` +ENCKEY=`openssl rand 32 -base64` && DECKEY=$ENCKEY +``` + +At this point, you can invoke the chaincode to encrypt key-value pairs as +follows: + +Note: the following assumes the env is initialized and peer has joined channel "my-ch". +``` +peer chaincode invoke -n enccc -C my-ch -c '{"Args":["ENCRYPT","key1","value1"]}' --transient "{\"ENCKEY\":\"$ENCKEY\"}" +``` + +This call will encrypt using a random IV. This may be undesirable for +instance if the chaincode invocation needs to be endorsed by multiple +peers since it would cause the endorsement of conflicting read/write sets. +It is possible to encrypt deterministically by specifying the IV, as +follows: at first the IV must be created + +``` +IV=`openssl rand 16 -base64` +``` + +Then, the IV may be specified in the transient field + +``` +peer chaincode invoke -n enccc -C my-ch -c '{"Args":["ENCRYPT","key2","value2"]}' --transient "{\"ENCKEY\":\"$ENCKEY\",\"IV\":\"$IV\"}" +``` + +Two such invocations will produce equal KVS writes, which can be endorsed by multiple nodes. + +The value can be retrieved back as follows + +``` +peer chaincode query -n enccc -C my-ch -c '{"Args":["DECRYPT","key1"]}' --transient "{\"DECKEY\":\"$DECKEY\"}" +``` +``` +peer chaincode query -n enccc -C my-ch -c '{"Args":["DECRYPT","key2"]}' --transient "{\"DECKEY\":\"$DECKEY\"}" +``` +Note that in this case we use a chaincode query operation; while the use of the +transient field guarantees that the content will not be written to the ledger, +the chaincode decrypts the message and puts it in the proposal response. An +invocation would persist the result in the ledger for all channel readers to +see whereas a query can be discarded and so the result remains confidential. + +To test signing and verifying, you also need to generate an ECDSA key for the appopriate +curve, as follows. + +``` +On Intel: +SIGKEY=`openssl ecparam -name prime256v1 -genkey | tail -n5 | base64 -w0` && VERKEY=$SIGKEY + +On Mac: +SIGKEY=`openssl ecparam -name prime256v1 -genkey | tail -n5 | base64` && VERKEY=$SIGKEY +``` + +At this point, you can invoke the chaincode to sign and then encrypt key-value +pairs as follows + +``` +peer chaincode invoke -n enccc -C my-ch -c '{"Args":["ENCRYPTSIGN","key3","value3"]}' --transient "{\"ENCKEY\":\"$ENCKEY\",\"SIGKEY\":\"$SIGKEY\"}" +``` + +And similarly to retrieve them using a query + +``` +peer chaincode query -n enccc -C my-ch -c '{"Args":["DECRYPTVERIFY","key3"]}' --transient "{\"DECKEY\":\"$DECKEY\",\"VERKEY\":\"$VERKEY\"}" +``` diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/enccc_example.go b/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/enccc_example.go new file mode 100644 index 00000000..284695d3 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/enccc_example.go @@ -0,0 +1,223 @@ +/* +Copyright IBM Corp. All Rights Reserved. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package main + +import ( + "fmt" + + "github.com/hyperledger/fabric/bccsp" + "github.com/hyperledger/fabric/bccsp/factory" + "github.com/hyperledger/fabric/core/chaincode/shim" + "github.com/hyperledger/fabric/core/chaincode/shim/ext/entities" + pb "github.com/hyperledger/fabric/protos/peer" +) + +const DECKEY = "DECKEY" +const VERKEY = "VERKEY" +const ENCKEY = "ENCKEY" +const SIGKEY = "SIGKEY" +const IV = "IV" + +// EncCC example simple Chaincode implementation of a chaincode that uses encryption/signatures +type EncCC struct { + bccspInst bccsp.BCCSP +} + +// Init does nothing for this cc +func (t *EncCC) Init(stub shim.ChaincodeStubInterface) pb.Response { + return shim.Success(nil) +} + +// Encrypter exposes how to write state to the ledger after having +// encrypted it with an AES 256 bit key that has been provided to the chaincode through the +// transient field +func (t *EncCC) Encrypter(stub shim.ChaincodeStubInterface, args []string, encKey, IV []byte) pb.Response { + // create the encrypter entity - we give it an ID, the bccsp instance, the key and (optionally) the IV + ent, err := entities.NewAES256EncrypterEntity("ID", t.bccspInst, encKey, IV) + if err != nil { + return shim.Error(fmt.Sprintf("entities.NewAES256EncrypterEntity failed, err %s", err)) + } + + if len(args) != 2 { + return shim.Error("Expected 2 parameters to function Encrypter") + } + + key := args[0] + cleartextValue := []byte(args[1]) + + // here, we encrypt cleartextValue and assign it to key + err = encryptAndPutState(stub, ent, key, cleartextValue) + if err != nil { + return shim.Error(fmt.Sprintf("encryptAndPutState failed, err %+v", err)) + } + return shim.Success(nil) +} + +// Decrypter exposes how to read from the ledger and decrypt using an AES 256 +// bit key that has been provided to the chaincode through the transient field. +func (t *EncCC) Decrypter(stub shim.ChaincodeStubInterface, args []string, decKey, IV []byte) pb.Response { + // create the encrypter entity - we give it an ID, the bccsp instance, the key and (optionally) the IV + ent, err := entities.NewAES256EncrypterEntity("ID", t.bccspInst, decKey, IV) + if err != nil { + return shim.Error(fmt.Sprintf("entities.NewAES256EncrypterEntity failed, err %s", err)) + } + + if len(args) != 1 { + return shim.Error("Expected 1 parameters to function Decrypter") + } + + key := args[0] + + // here we decrypt the state associated to key + cleartextValue, err := getStateAndDecrypt(stub, ent, key) + if err != nil { + return shim.Error(fmt.Sprintf("getStateAndDecrypt failed, err %+v", err)) + } + + // here we return the decrypted value as a result + return shim.Success(cleartextValue) +} + +// EncrypterSigner exposes how to write state to the ledger after having received keys for +// encrypting (AES 256 bit key) and signing (X9.62/SECG curve over a 256 bit prime field) that has been provided to the chaincode through the +// transient field +func (t *EncCC) EncrypterSigner(stub shim.ChaincodeStubInterface, args []string, encKey, sigKey []byte) pb.Response { + // create the encrypter/signer entity - we give it an ID, the bccsp instance and the keys + ent, err := entities.NewAES256EncrypterECDSASignerEntity("ID", t.bccspInst, encKey, sigKey) + if err != nil { + return shim.Error(fmt.Sprintf("entities.NewAES256EncrypterEntity failed, err %s", err)) + } + + if len(args) != 2 { + return shim.Error("Expected 2 parameters to function EncrypterSigner") + } + + key := args[0] + cleartextValue := []byte(args[1]) + + // here, we sign cleartextValue, encrypt it and assign it to key + err = signEncryptAndPutState(stub, ent, key, cleartextValue) + if err != nil { + return shim.Error(fmt.Sprintf("signEncryptAndPutState failed, err %+v", err)) + } + + return shim.Success(nil) +} + +// DecrypterVerify exposes how to get state to the ledger after having received keys for +// decrypting (AES 256 bit key) and verifying (X9.62/SECG curve over a 256 bit prime field) that has been provided to the chaincode through the +// transient field +func (t *EncCC) DecrypterVerify(stub shim.ChaincodeStubInterface, args []string, decKey, verKey []byte) pb.Response { + // create the decrypter/verify entity - we give it an ID, the bccsp instance and the keys + ent, err := entities.NewAES256EncrypterECDSASignerEntity("ID", t.bccspInst, decKey, verKey) + if err != nil { + return shim.Error(fmt.Sprintf("entities.NewAES256DecrypterEntity failed, err %s", err)) + } + + if len(args) != 1 { + return shim.Error("Expected 1 parameters to function DecrypterVerify") + } + key := args[0] + + // here we decrypt the state associated to key and verify it + cleartextValue, err := getStateDecryptAndVerify(stub, ent, key) + if err != nil { + return shim.Error(fmt.Sprintf("getStateDecryptAndVerify failed, err %+v", err)) + } + + // here we return the decrypted and verified value as a result + return shim.Success(cleartextValue) +} + +// RangeDecrypter shows how range queries may be satisfied by using the decrypter +// entity directly to decrypt previously encrypted key-value pairs +func (t *EncCC) RangeDecrypter(stub shim.ChaincodeStubInterface, decKey []byte) pb.Response { + // create the encrypter entity - we give it an ID, the bccsp instance and the key + ent, err := entities.NewAES256EncrypterEntity("ID", t.bccspInst, decKey, nil) + if err != nil { + return shim.Error(fmt.Sprintf("entities.NewAES256EncrypterEntity failed, err %s", err)) + } + + bytes, err := getStateByRangeAndDecrypt(stub, ent, "", "") + if err != nil { + return shim.Error(fmt.Sprintf("getStateByRangeAndDecrypt failed, err %+v", err)) + } + + return shim.Success(bytes) +} + +// Invoke for this chaincode exposes functions to ENCRYPT, DECRYPT transactional +// data. It also supports an example to ENCRYPT and SIGN and DECRYPT and +// VERIFY. The Initialization Vector (IV) can be passed in as a parm to +// ensure peers have deterministic data. +func (t *EncCC) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + // get arguments and transient + f, args := stub.GetFunctionAndParameters() + tMap, err := stub.GetTransient() + if err != nil { + return shim.Error(fmt.Sprintf("Could not retrieve transient, err %s", err)) + } + + switch f { + case "ENCRYPT": + // make sure there's a key in transient - the assumption is that + // it's associated to the string "ENCKEY" + if _, in := tMap[ENCKEY]; !in { + return shim.Error(fmt.Sprintf("Expected transient encryption key %s", ENCKEY)) + } + + return t.Encrypter(stub, args[0:], tMap[ENCKEY], tMap[IV]) + case "DECRYPT": + + // make sure there's a key in transient - the assumption is that + // it's associated to the string "DECKEY" + if _, in := tMap[DECKEY]; !in { + return shim.Error(fmt.Sprintf("Expected transient decryption key %s", DECKEY)) + } + + return t.Decrypter(stub, args[0:], tMap[DECKEY], tMap[IV]) + case "ENCRYPTSIGN": + // make sure keys are there in the transient map - the assumption is that they + // are associated to the string "ENCKEY" and "SIGKEY" + if _, in := tMap[ENCKEY]; !in { + return shim.Error(fmt.Sprintf("Expected transient key %s", ENCKEY)) + } else if _, in := tMap[SIGKEY]; !in { + return shim.Error(fmt.Sprintf("Expected transient key %s", SIGKEY)) + } + + return t.EncrypterSigner(stub, args[0:], tMap[ENCKEY], tMap[SIGKEY]) + case "DECRYPTVERIFY": + // make sure keys are there in the transient map - the assumption is that they + // are associated to the string "DECKEY" and "VERKEY" + if _, in := tMap[DECKEY]; !in { + return shim.Error(fmt.Sprintf("Expected transient key %s", DECKEY)) + } else if _, in := tMap[VERKEY]; !in { + return shim.Error(fmt.Sprintf("Expected transient key %s", VERKEY)) + } + + return t.DecrypterVerify(stub, args[0:], tMap[DECKEY], tMap[VERKEY]) + case "RANGEQUERY": + // make sure there's a key in transient - the assumption is that + // it's associated to the string "ENCKEY" + if _, in := tMap[DECKEY]; !in { + return shim.Error(fmt.Sprintf("Expected transient key %s", DECKEY)) + } + + return t.RangeDecrypter(stub, tMap[DECKEY]) + default: + return shim.Error(fmt.Sprintf("Unsupported function %s", f)) + } +} + +func main() { + factory.InitFactories(nil) + + err := shim.Start(&EncCC{factory.GetDefault()}) + if err != nil { + fmt.Printf("Error starting EncCC chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/enccc_test.go b/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/enccc_test.go new file mode 100644 index 00000000..7daf2813 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/enccc_test.go @@ -0,0 +1,234 @@ +package main + +import ( + "bytes" + "encoding/json" + "testing" + + "github.com/hyperledger/fabric/bccsp/factory" + "github.com/hyperledger/fabric/core/chaincode/shim" + "github.com/stretchr/testify/assert" +) + +const ( + AESKEY1 = "01234567890123456789012345678901" + AESKEY2 = "01234567890123456789012345678902" + ECDSAKEY1 = `-----BEGIN EC PRIVATE KEY----- +MHcCAQEEIH4Uv66F9kZMdOQxwNegkGm8c3AB3nGPOtxNKi6wb/ZooAoGCCqGSM49 +AwEHoUQDQgAEEPE+VLOh+e4NpwIjI/b/fKYHi4weU7r9OTEYPiAJiJBQY6TZnvF5 +oRMvwO4MCYxFtpIRO4UxIgcZBj4NCBxKqQ== +-----END EC PRIVATE KEY-----` + ECDSAKEY2 = `-----BEGIN EC PRIVATE KEY----- +MHcCAQEEIE8Seyc9TXx+yQfnGPuzjkuEfMbkq203IYdfyvMd0r3OoAoGCCqGSM49 +AwEHoUQDQgAE4dcGMMroH2LagI/s5i/Bx4t4ggGDoJPNVkKBDBlIaMYjJFYD1obk +JOWqAZxKKsBxBC5Ssu+fS26VPfdNWxDsFQ== +-----END EC PRIVATE KEY-----` + IV1 = "0123456789012345" +) + +func TestInit(t *testing.T) { + factory.InitFactories(nil) + + scc := new(EncCC) + stub := shim.NewMockStub("enccc", scc) + stub.MockTransactionStart("a") + res := scc.Init(stub) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) +} + +// unfortunately we can't tese this cc though invoke since the +// mock shim doesn't support transient. We test failure scenarios +// and the tests below focus on the functionality by invoking +// functions as opposed to cc +func TestInvoke(t *testing.T) { + factory.InitFactories(nil) + + scc := &EncCC{factory.GetDefault()} + stub := shim.NewMockStub("enccc", scc) + + res := stub.MockInvoke("tx", [][]byte{[]byte("barf")}) + assert.NotEqual(t, res.Status, int32(shim.OK)) + res = stub.MockInvoke("tx", [][]byte{[]byte("ENC")}) + assert.NotEqual(t, res.Status, int32(shim.OK)) + res = stub.MockInvoke("tx", [][]byte{[]byte("SIG")}) + assert.NotEqual(t, res.Status, int32(shim.OK)) + res = stub.MockInvoke("tx", [][]byte{[]byte("RANGE")}) + assert.NotEqual(t, res.Status, int32(shim.OK)) +} + +func TestEnc(t *testing.T) { + factory.InitFactories(nil) + + scc := &EncCC{factory.GetDefault()} + stub := shim.NewMockStub("enccc", scc) + + // success + stub.MockTransactionStart("a") + res := scc.Encrypter(stub, []string{"key", "value"}, []byte(AESKEY1), nil) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) + + // fail - bad key + stub.MockTransactionStart("a") + res = scc.Encrypter(stub, []string{"key", "value"}, []byte("badkey"), nil) + stub.MockTransactionEnd("a") + assert.NotEqual(t, res.Status, int32(shim.OK)) + + // fail - not enough args + stub.MockTransactionStart("a") + res = scc.Encrypter(stub, []string{"key"}, []byte(AESKEY1), nil) + stub.MockTransactionEnd("a") + assert.NotEqual(t, res.Status, int32(shim.OK)) + + // success + stub.MockTransactionStart("a") + res = scc.Decrypter(stub, []string{"key"}, []byte(AESKEY1), nil) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) + assert.True(t, bytes.Equal(res.Payload, []byte("value"))) + + // fail - not enough args + stub.MockTransactionStart("a") + res = scc.Decrypter(stub, []string{}, []byte(AESKEY1), nil) + stub.MockTransactionEnd("a") + assert.NotEqual(t, res.Status, int32(shim.OK)) + + // fail - bad kvs key + stub.MockTransactionStart("a") + res = scc.Decrypter(stub, []string{"badkey"}, []byte(AESKEY1), nil) + stub.MockTransactionEnd("a") + assert.NotEqual(t, res.Status, int32(shim.OK)) + + // fail - bad key + stub.MockTransactionStart("a") + res = scc.Decrypter(stub, []string{"key"}, []byte(AESKEY2), nil) + stub.MockTransactionEnd("a") + assert.NotEqual(t, res.Status, int32(shim.OK)) +} + +func TestSig(t *testing.T) { + factory.InitFactories(nil) + + scc := &EncCC{factory.GetDefault()} + stub := shim.NewMockStub("enccc", scc) + + // success + stub.MockTransactionStart("a") + res := scc.EncrypterSigner(stub, []string{"key", "value"}, []byte(AESKEY1), []byte(ECDSAKEY1)) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) + + // fail - bad key + stub.MockTransactionStart("a") + res = scc.EncrypterSigner(stub, []string{"key", "value"}, []byte(AESKEY1), []byte("barf")) + stub.MockTransactionEnd("a") + assert.NotEqual(t, res.Status, int32(shim.OK)) + + // fail - bad args + stub.MockTransactionStart("a") + res = scc.EncrypterSigner(stub, []string{"key"}, []byte(AESKEY1), []byte("barf")) + stub.MockTransactionEnd("a") + assert.NotEqual(t, res.Status, int32(shim.OK)) + + // fail - bad signing key + stub.MockTransactionStart("a") + res = scc.DecrypterVerify(stub, []string{"key"}, []byte(AESKEY1), []byte(ECDSAKEY2)) + stub.MockTransactionEnd("a") + assert.NotEqual(t, res.Status, int32(shim.OK)) + + // fail - bad args + stub.MockTransactionStart("a") + res = scc.DecrypterVerify(stub, []string{}, []byte(AESKEY1), []byte(ECDSAKEY1)) + stub.MockTransactionEnd("a") + assert.NotEqual(t, res.Status, int32(shim.OK)) + + // fail - bad kvs key + stub.MockTransactionStart("a") + res = scc.DecrypterVerify(stub, []string{"badkey"}, []byte(AESKEY1), []byte(ECDSAKEY1)) + stub.MockTransactionEnd("a") + assert.NotEqual(t, res.Status, int32(shim.OK)) + + // success + stub.MockTransactionStart("a") + res = scc.EncrypterSigner(stub, []string{"key", "value"}, []byte(AESKEY1), []byte(ECDSAKEY1)) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) + + // success + stub.MockTransactionStart("a") + res = scc.DecrypterVerify(stub, []string{"key"}, []byte(AESKEY1), []byte(ECDSAKEY1)) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) + assert.True(t, bytes.Equal(res.Payload, []byte("value"))) +} + +func TestEncCC_RangeDecrypter(t *testing.T) { + factory.InitFactories(nil) + + scc := &EncCC{factory.GetDefault()} + stub := shim.NewMockStub("enccc", scc) + + stub.MockTransactionStart("a") + res := scc.Encrypter(stub, []string{"key1", "value1"}, []byte(AESKEY1), nil) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) + + stub.MockTransactionStart("a") + res = scc.Encrypter(stub, []string{"key2", "value2"}, []byte(AESKEY1), nil) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) + + stub.MockTransactionStart("a") + res = scc.Encrypter(stub, []string{"key3", "value3"}, []byte(AESKEY1), nil) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) + + // failed range query + res = scc.RangeDecrypter(stub, nil) + assert.NotEqual(t, res.Status, int32(shim.OK)) + + // success range query + stub.MockTransactionStart("a") + res = scc.RangeDecrypter(stub, []byte(AESKEY1)) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) + keys := []keyValuePair{} + err := json.Unmarshal(res.Payload, &keys) + assert.NoError(t, err) + assert.Equal(t, keys[0].Key, "key1") + assert.Equal(t, string(keys[0].Value), "value1") + assert.Equal(t, keys[1].Key, "key2") + assert.Equal(t, string(keys[1].Value), "value2") + assert.Equal(t, keys[2].Key, "key3") + assert.Equal(t, string(keys[2].Value), "value3") + + _, err = getStateByRangeAndDecrypt(stub, nil, string([]byte{0}), string([]byte{0})) + assert.Error(t, err) +} + +func TestDeterministicEncryption(t *testing.T) { + factory.InitFactories(nil) + + scc := &EncCC{factory.GetDefault()} + stub := shim.NewMockStub("enccc", scc) + + stub.MockTransactionStart("a") + res := scc.Encrypter(stub, []string{"key1", "value1"}, []byte(AESKEY1), []byte(IV1)) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) + + c1, err := stub.GetState("key1") + assert.NoError(t, err) + assert.NotNil(t, c1) + + stub.MockTransactionStart("a") + res = scc.Encrypter(stub, []string{"key1", "value1"}, []byte(AESKEY1), []byte(IV1)) + stub.MockTransactionEnd("a") + assert.Equal(t, res.Status, int32(shim.OK)) + + c2, err := stub.GetState("key1") + assert.NoError(t, err) + assert.NotNil(t, c1) + assert.True(t, bytes.Equal(c1, c2)) +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/utils.go b/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/utils.go new file mode 100644 index 00000000..9af6e6fa --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/enccc_example/utils.go @@ -0,0 +1,147 @@ +/* +Copyright IBM Corp. All Rights Reserved. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package main + +import ( + "encoding/json" + + "github.com/hyperledger/fabric/core/chaincode/shim" + "github.com/hyperledger/fabric/core/chaincode/shim/ext/entities" + "github.com/pkg/errors" +) + +// the functions below show some best practices on how +// to use entities to perform cryptographic operations +// over the ledger state + +// getStateAndDecrypt retrieves the value associated to key, +// decrypts it with the supplied entity and returns the result +// of the decryption +func getStateAndDecrypt(stub shim.ChaincodeStubInterface, ent entities.Encrypter, key string) ([]byte, error) { + // at first we retrieve the ciphertext from the ledger + ciphertext, err := stub.GetState(key) + if err != nil { + return nil, err + } + + // GetState will return a nil slice if the key does not exist. + // Note that the chaincode logic may want to distinguish between + // nil slice (key doesn't exist in state db) and empty slice + // (key found in state db but value is empty). We do not + // distinguish the case here + if len(ciphertext) == 0 { + return nil, errors.New("no ciphertext to decrypt") + } + + return ent.Decrypt(ciphertext) +} + +// encryptAndPutState encrypts the supplied value using the +// supplied entity and puts it to the ledger associated to +// the supplied KVS key +func encryptAndPutState(stub shim.ChaincodeStubInterface, ent entities.Encrypter, key string, value []byte) error { + // at first we use the supplied entity to encrypt the value + ciphertext, err := ent.Encrypt(value) + if err != nil { + return err + } + + return stub.PutState(key, ciphertext) +} + +// getStateDecryptAndVerify retrieves the value associated to key, +// decrypts it with the supplied entity, verifies the signature +// over it and returns the result of the decryption in case of +// success +func getStateDecryptAndVerify(stub shim.ChaincodeStubInterface, ent entities.EncrypterSignerEntity, key string) ([]byte, error) { + // here we retrieve and decrypt the state associated to key + val, err := getStateAndDecrypt(stub, ent, key) + if err != nil { + return nil, err + } + + // we unmarshal a SignedMessage from the decrypted state + msg := &entities.SignedMessage{} + err = msg.FromBytes(val) + if err != nil { + return nil, err + } + + // we verify the signature + ok, err := msg.Verify(ent) + if err != nil { + return nil, err + } else if !ok { + return nil, errors.New("invalid signature") + } + + return msg.Payload, nil +} + +// signEncryptAndPutState signs the supplied value, encrypts +// the supplied value together with its signature using the +// supplied entity and puts it to the ledger associated to +// the supplied KVS key +func signEncryptAndPutState(stub shim.ChaincodeStubInterface, ent entities.EncrypterSignerEntity, key string, value []byte) error { + // here we create a SignedMessage, set its payload + // to value and the ID of the entity and + // sign it with the entity + msg := &entities.SignedMessage{Payload: value, ID: []byte(ent.ID())} + err := msg.Sign(ent) + if err != nil { + return err + } + + // here we serialize the SignedMessage + b, err := msg.ToBytes() + if err != nil { + return err + } + + // here we encrypt the serialized version associated to args[0] + return encryptAndPutState(stub, ent, key, b) +} + +type keyValuePair struct { + Key string `json:"key"` + Value string `json:"value"` +} + +// getStateByRangeAndDecrypt retrieves a range of KVS pairs from the +// ledger and decrypts each value with the supplied entity; it returns +// a json-marshalled slice of keyValuePair +func getStateByRangeAndDecrypt(stub shim.ChaincodeStubInterface, ent entities.Encrypter, startKey, endKey string) ([]byte, error) { + // we call get state by range to go through the entire range + iterator, err := stub.GetStateByRange(startKey, endKey) + if err != nil { + return nil, err + } + defer iterator.Close() + + // we decrypt each entry - the assumption is that they have all been encrypted with the same key + keyvalueset := []keyValuePair{} + for iterator.HasNext() { + el, err := iterator.Next() + if err != nil { + return nil, err + } + + v, err := ent.Decrypt(el.Value) + if err != nil { + return nil, err + } + + keyvalueset = append(keyvalueset, keyValuePair{el.Key, string(v)}) + } + + bytes, err := json.Marshal(keyvalueset) + if err != nil { + return nil, err + } + + return bytes, nil +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/eventsender/eventsender.go b/hyperledger_fabric/v2.2.8/chaincodes/go/eventsender/eventsender.go new file mode 100644 index 00000000..45606252 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/eventsender/eventsender.go @@ -0,0 +1,92 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "fmt" + "strconv" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric/protos/peer" +) + +// EventSender example simple Chaincode implementation +type EventSender struct { +} + +// Init function +func (t *EventSender) Init(stub shim.ChaincodeStubInterface) pb.Response { + err := stub.PutState("noevents", []byte("0")) + if err != nil { + return shim.Error(err.Error()) + } + + return shim.Success(nil) +} + +// Invoke function +func (t *EventSender) invoke(stub shim.ChaincodeStubInterface, args []string) pb.Response { + b, err := stub.GetState("noevents") + if err != nil { + return shim.Error("Failed to get state") + } + noevts, _ := strconv.Atoi(string(b)) + + tosend := "Event " + string(b) + for _, s := range args { + tosend = tosend + "," + s + } + + err = stub.PutState("noevents", []byte(strconv.Itoa(noevts+1))) + if err != nil { + return shim.Error(err.Error()) + } + + err = stub.SetEvent("evtsender", []byte(tosend)) + if err != nil { + return shim.Error(err.Error()) + } + return shim.Success(nil) +} + +// Query function +func (t *EventSender) query(stub shim.ChaincodeStubInterface, args []string) pb.Response { + b, err := stub.GetState("noevents") + if err != nil { + return shim.Error("Failed to get state") + } + jsonResp := "{\"NoEvents\":\"" + string(b) + "\"}" + return shim.Success([]byte(jsonResp)) +} + +func (t *EventSender) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + if function == "invoke" { + return t.invoke(stub, args) + } else if function == "query" { + return t.query(stub, args) + } + + return shim.Error("Invalid invoke function name. Expecting \"invoke\" \"query\"") +} + +func main() { + err := shim.Start(new(EventSender)) + if err != nil { + fmt.Printf("Error starting EventSender chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/invokereturnsvalue/invokereturnsvalue.go b/hyperledger_fabric/v2.2.8/chaincodes/go/invokereturnsvalue/invokereturnsvalue.go new file mode 100644 index 00000000..78d4ec61 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/invokereturnsvalue/invokereturnsvalue.go @@ -0,0 +1,133 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "fmt" + "strconv" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric/protos/peer" +) + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +// Init method of chaincode +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + _, args := stub.GetFunctionAndParameters() + var A, B string // Entities + var Aval, Bval int // Asset holdings + var err error + + if len(args) != 4 { + return shim.Error("Incorrect number of arguments. Expecting 4") + } + + // Initialize the chaincode + A = args[0] + Aval, err = strconv.Atoi(args[1]) + if err != nil { + return shim.Error("Expecting integer value for asset holding") + } + B = args[2] + Bval, err = strconv.Atoi(args[3]) + if err != nil { + return shim.Error("Expecting integer value for asset holding") + } + fmt.Printf("Aval = %d, Bval = %d\n", Aval, Bval) + + // Write the state to the ledger + err = stub.PutState(A, []byte(strconv.Itoa(Aval))) + if err != nil { + return shim.Error(err.Error()) + } + + err = stub.PutState(B, []byte(strconv.Itoa(Bval))) + if err != nil { + return shim.Error(err.Error()) + } + + return shim.Success([]byte("OK")) +} + +// Invoke transaction makes payment of X units from A to B +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + _, args := stub.GetFunctionAndParameters() + + var A, B string // Entities + var Aval, Bval int // Asset holdings + var X int // Transaction value + var err error + + if len(args) != 3 { + return shim.Error("Incorrect number of arguments. Expecting 3") + } + + A = args[0] + B = args[1] + + // Get the state from the ledger + // TODO: will be nice to have a GetAllState call to ledger + Avalbytes, err := stub.GetState(A) + if err != nil { + return shim.Error("Failed to get state") + } + if Avalbytes == nil { + return shim.Error("Entity not found") + } + Aval, _ = strconv.Atoi(string(Avalbytes)) + + Bvalbytes, err := stub.GetState(B) + if err != nil { + return shim.Error("Failed to get state") + } + if Bvalbytes == nil { + return shim.Error("Entity not found") + } + Bval, _ = strconv.Atoi(string(Bvalbytes)) + + // Perform the execution + X, err = strconv.Atoi(args[2]) + if err != nil { + return shim.Error("Invalid transaction amount, expecting a integer value") + } + Aval = Aval - X + Bval = Bval + X + fmt.Printf("Aval = %d, Bval = %d\n", Aval, Bval) + + // Write the state back to the ledger + err = stub.PutState(A, []byte(strconv.Itoa(Aval))) + if err != nil { + return shim.Error(err.Error()) + } + + err = stub.PutState(B, []byte(strconv.Itoa(Bval))) + if err != nil { + return shim.Error(err.Error()) + } + + return shim.Success([]byte(fmt.Sprintf("{%d,%d}", Aval, Bval))) +} + +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting Simple chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/invokereturnsvalue/invokereturnsvalue_test.go b/hyperledger_fabric/v2.2.8/chaincodes/go/invokereturnsvalue/invokereturnsvalue_test.go new file mode 100644 index 00000000..1d9d1e1f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/invokereturnsvalue/invokereturnsvalue_test.go @@ -0,0 +1,97 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package main + +import ( + "fmt" + "testing" + + "github.com/hyperledger/fabric/core/chaincode/shim" +) + +func checkInit(t *testing.T, stub *shim.MockStub, args [][]byte, retval []byte) { + res := stub.MockInit("1", args) + if res.Status != shim.OK { + fmt.Println("Init failed", string(res.Message)) + t.FailNow() + } + if retval != nil { + if res.Payload == nil { + fmt.Printf("Init returned nil, expected %s", string(retval)) + t.FailNow() + } + if string(res.Payload) != string(retval) { + fmt.Printf("Init returned %s, expected %s", string(res.Payload), string(retval)) + t.FailNow() + } + } +} + +func checkState(t *testing.T, stub *shim.MockStub, name string, value string) { + bytes := stub.State[name] + if bytes == nil { + fmt.Println("State", name, "failed to get value") + t.FailNow() + } + if string(bytes) != value { + fmt.Println("State value", name, "was not", value, "as expected") + t.FailNow() + } +} + +func checkInvoke(t *testing.T, stub *shim.MockStub, args [][]byte, retval []byte) { + res := stub.MockInvoke("1", args) + if res.Status != shim.OK { + fmt.Println("Invoke", args, "failed", string(res.Message)) + t.FailNow() + } + + if retval != nil { + if res.Payload == nil { + fmt.Printf("Invoke returned nil, expected %s", string(retval)) + t.FailNow() + } + if string(res.Payload) != string(retval) { + fmt.Printf("Invoke returned %s, expected %s", string(res.Payload), string(retval)) + t.FailNow() + } + } +} + +func Test_Init(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex02", scc) + + // Init A=123 B=234 + checkInit(t, stub, [][]byte{[]byte("init"), []byte("A"), []byte("123"), []byte("B"), []byte("234")}, []byte("OK")) + + checkState(t, stub, "A", "123") + checkState(t, stub, "B", "234") +} + +func Test_Invoke(t *testing.T) { + scc := new(SimpleChaincode) + stub := shim.NewMockStub("ex02", scc) + + // Init A=567 B=678 + checkInit(t, stub, [][]byte{[]byte("init"), []byte("A"), []byte("567"), []byte("B"), []byte("678")}, []byte("OK")) + + // Invoke A->B for 123 + checkInvoke(t, stub, [][]byte{[]byte("invoke"), []byte("A"), []byte("B"), []byte("123")}, []byte("{444,801}")) + + // Invoke B->A for 234 + checkInvoke(t, stub, [][]byte{[]byte("invoke"), []byte("B"), []byte("A"), []byte("234")}, []byte("{567,678}")) +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/map/map.go b/hyperledger_fabric/v2.2.8/chaincodes/go/map/map.go new file mode 100644 index 00000000..b45b8471 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/map/map.go @@ -0,0 +1,200 @@ +// +build !experimental + +/* +Copyright IBM Corp. All Rights Reserved. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package main + +import ( + "encoding/json" + "fmt" + "strconv" + "time" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric/protos/peer" +) + +// This chaincode implements a simple map that is stored in the state. +// The following operations are available. + +// Invoke operations +// put - requires two arguments, a key and value +// remove - requires a key +// get - requires one argument, a key, and returns a value +// keys - requires no arguments, returns all keys + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +// Init is a no-op +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + return shim.Success(nil) +} + +// Invoke has two functions +// put - takes two arguments, a key and value, and stores them in the state +// remove - takes one argument, a key, and removes if from the state +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + switch function { + + case "put": + if len(args) < 2 { + return shim.Error("put operation must include two arguments: [key, value]") + } + key := args[0] + value := args[1] + + if err := stub.PutState(key, []byte(value)); err != nil { + fmt.Printf("Error putting state %s", err) + return shim.Error(fmt.Sprintf("put operation failed. Error updating state: %s", err)) + } + + indexName := "compositeKeyTest" + compositeKeyTestIndex, err := stub.CreateCompositeKey(indexName, []string{key}) + if err != nil { + return shim.Error(err.Error()) + } + + valueByte := []byte{0x00} + if err := stub.PutState(compositeKeyTestIndex, valueByte); err != nil { + fmt.Printf("Error putting state with compositeKey %s", err) + return shim.Error(fmt.Sprintf("put operation failed. Error updating state with compositeKey: %s", err)) + } + + return shim.Success(nil) + + case "remove": + if len(args) < 1 { + return shim.Error("remove operation must include one argument: [key]") + } + key := args[0] + + err := stub.DelState(key) + if err != nil { + return shim.Error(fmt.Sprintf("remove operation failed. Error updating state: %s", err)) + } + return shim.Success(nil) + + case "get": + if len(args) < 1 { + return shim.Error("get operation must include one argument, a key") + } + key := args[0] + value, err := stub.GetState(key) + if err != nil { + return shim.Error(fmt.Sprintf("get operation failed. Error accessing state: %s", err)) + } + jsonVal, err := json.Marshal(string(value)) + return shim.Success(jsonVal) + + case "keys": + if len(args) < 2 { + return shim.Error("put operation must include two arguments, a key and value") + } + startKey := args[0] + endKey := args[1] + + //sleep needed to test peer's timeout behavior when using iterators + stime := 0 + if len(args) > 2 { + stime, _ = strconv.Atoi(args[2]) + } + + keysIter, err := stub.GetStateByRange(startKey, endKey) + if err != nil { + return shim.Error(fmt.Sprintf("keys operation failed. Error accessing state: %s", err)) + } + defer keysIter.Close() + + var keys []string + for keysIter.HasNext() { + //if sleeptime is specied, take a nap + if stime > 0 { + time.Sleep(time.Duration(stime) * time.Millisecond) + } + + response, iterErr := keysIter.Next() + if iterErr != nil { + return shim.Error(fmt.Sprintf("keys operation failed. Error accessing state: %s", err)) + } + keys = append(keys, response.Key) + } + + for key, value := range keys { + fmt.Printf("key %d contains %s\n", key, value) + } + + jsonKeys, err := json.Marshal(keys) + if err != nil { + return shim.Error(fmt.Sprintf("keys operation failed. Error marshaling JSON: %s", err)) + } + + return shim.Success(jsonKeys) + case "query": + query := args[0] + keysIter, err := stub.GetQueryResult(query) + if err != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error accessing state: %s", err)) + } + defer keysIter.Close() + + var keys []string + for keysIter.HasNext() { + response, iterErr := keysIter.Next() + if iterErr != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error accessing state: %s", err)) + } + keys = append(keys, response.Key) + } + + jsonKeys, err := json.Marshal(keys) + if err != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error marshaling JSON: %s", err)) + } + + return shim.Success(jsonKeys) + case "history": + key := args[0] + keysIter, err := stub.GetHistoryForKey(key) + if err != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error accessing state: %s", err)) + } + defer keysIter.Close() + + var keys []string + for keysIter.HasNext() { + response, iterErr := keysIter.Next() + if iterErr != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error accessing state: %s", err)) + } + keys = append(keys, response.TxId) + } + + for key, txID := range keys { + fmt.Printf("key %d contains %s\n", key, txID) + } + + jsonKeys, err := json.Marshal(keys) + if err != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error marshaling JSON: %s", err)) + } + + return shim.Success(jsonKeys) + + default: + return shim.Success([]byte("Unsupported operation")) + } +} + +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/map/map_experimental.go b/hyperledger_fabric/v2.2.8/chaincodes/go/map/map_experimental.go new file mode 100644 index 00000000..16c9780f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/map/map_experimental.go @@ -0,0 +1,311 @@ +// +build experimental + +/* +Copyright IBM Corp. All Rights Reserved. + +SPDX-License-Identifier: Apache-2.0 +*/ + +package main + +import ( + "encoding/json" + "fmt" + "strconv" + "time" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric/protos/peer" +) + +// This chaincode implements a simple map that is stored in the state. +// The following operations are available. + +// Invoke operations +// put - requires two arguments, a key and value +// remove - requires a key +// get - requires one argument, a key, and returns a value +// keys - requires no arguments, returns all keys + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +// Init is a no-op +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + return shim.Success(nil) +} + +// Invoke has two functions +// put - takes two arguments, a key and value, and stores them in the state +// remove - takes one argument, a key, and removes if from the state +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + switch function { + + case "putPrivate": + if len(args) < 3 { + return shim.Error("put operation on private data must include three arguments: [collection, key, value]") + } + collection := args[0] + key := args[1] + value := args[2] + + if err := stub.PutPrivateData(collection, key, []byte(value)); err != nil { + fmt.Printf("Error putting private data%s", err) + return shim.Error(fmt.Sprintf("put operation failed. Error updating state: %s", err)) + } + + return shim.Success(nil) + + case "removePrivate": + if len(args) < 2 { + return shim.Error("remove operation on private data must include two arguments: [collection, key]") + } + collection := args[0] + key := args[1] + + err := stub.DelPrivateData(collection, key) + if err != nil { + return shim.Error(fmt.Sprintf("remove operation on private data failed. Error updating state: %s", err)) + } + return shim.Success(nil) + + case "getPrivate": + if len(args) < 2 { + return shim.Error("get operation on private data must include two arguments: [collection, key]") + } + collection := args[0] + key := args[1] + value, err := stub.GetPrivateData(collection, key) + if err != nil { + return shim.Error(fmt.Sprintf("get operation on private data failed. Error accessing state: %s", err)) + } + jsonVal, err := json.Marshal(string(value)) + return shim.Success(jsonVal) + + case "keysPrivate": + if len(args) < 3 { + return shim.Error("range query operation on private data must include three arguments, a collection, key and value") + } + collection := args[0] + startKey := args[1] + endKey := args[2] + + //sleep needed to test peer's timeout behavior when using iterators + stime := 0 + if len(args) > 3 { + stime, _ = strconv.Atoi(args[3]) + } + + keysIter, err := stub.GetPrivateDataByRange(collection, startKey, endKey) + if err != nil { + return shim.Error(fmt.Sprintf("keys operation failed on private data. Error accessing state: %s", err)) + } + defer keysIter.Close() + + var keys []string + for keysIter.HasNext() { + //if sleeptime is specied, take a nap + if stime > 0 { + time.Sleep(time.Duration(stime) * time.Millisecond) + } + + response, iterErr := keysIter.Next() + if iterErr != nil { + return shim.Error(fmt.Sprintf("keys operation on private data failed. Error accessing state: %s", err)) + } + keys = append(keys, response.Key) + } + + for key, value := range keys { + fmt.Printf("key %d contains %s\n", key, value) + } + + jsonKeys, err := json.Marshal(keys) + if err != nil { + return shim.Error(fmt.Sprintf("keys operation on private data failed. Error marshaling JSON: %s", err)) + } + + return shim.Success(jsonKeys) + + case "queryPrivate": + collection := args[0] + query := args[1] + keysIter, err := stub.GetPrivateDataQueryResult(collection, query) + if err != nil { + return shim.Error(fmt.Sprintf("query operation on private data failed. Error accessing state: %s", err)) + } + defer keysIter.Close() + + var keys []string + for keysIter.HasNext() { + response, iterErr := keysIter.Next() + if iterErr != nil { + return shim.Error(fmt.Sprintf("query operation on private data failed. Error accessing state: %s", err)) + } + keys = append(keys, response.Key) + } + + jsonKeys, err := json.Marshal(keys) + if err != nil { + return shim.Error(fmt.Sprintf("query operation on private data failed. Error marshaling JSON: %s", err)) + } + + return shim.Success(jsonKeys) + + case "put": + if len(args) < 2 { + return shim.Error("put operation must include two arguments: [key, value]") + } + key := args[0] + value := args[1] + + if err := stub.PutState(key, []byte(value)); err != nil { + fmt.Printf("Error putting state %s", err) + return shim.Error(fmt.Sprintf("put operation failed. Error updating state: %s", err)) + } + + indexName := "compositeKeyTest" + compositeKeyTestIndex, err := stub.CreateCompositeKey(indexName, []string{key}) + if err != nil { + return shim.Error(err.Error()) + } + + valueByte := []byte{0x00} + if err := stub.PutState(compositeKeyTestIndex, valueByte); err != nil { + fmt.Printf("Error putting state with compositeKey %s", err) + return shim.Error(fmt.Sprintf("put operation failed. Error updating state with compositeKey: %s", err)) + } + + return shim.Success(nil) + + case "remove": + if len(args) < 1 { + return shim.Error("remove operation must include one argument: [key]") + } + key := args[0] + + err := stub.DelState(key) + if err != nil { + return shim.Error(fmt.Sprintf("remove operation failed. Error updating state: %s", err)) + } + return shim.Success(nil) + + case "get": + if len(args) < 1 { + return shim.Error("get operation must include one argument, a key") + } + key := args[0] + value, err := stub.GetState(key) + if err != nil { + return shim.Error(fmt.Sprintf("get operation failed. Error accessing state: %s", err)) + } + jsonVal, err := json.Marshal(string(value)) + return shim.Success(jsonVal) + + case "keys": + if len(args) < 2 { + return shim.Error("put operation must include two arguments, a key and value") + } + startKey := args[0] + endKey := args[1] + + //sleep needed to test peer's timeout behavior when using iterators + stime := 0 + if len(args) > 2 { + stime, _ = strconv.Atoi(args[2]) + } + + keysIter, err := stub.GetStateByRange(startKey, endKey) + if err != nil { + return shim.Error(fmt.Sprintf("keys operation failed. Error accessing state: %s", err)) + } + defer keysIter.Close() + + var keys []string + for keysIter.HasNext() { + //if sleeptime is specied, take a nap + if stime > 0 { + time.Sleep(time.Duration(stime) * time.Millisecond) + } + + response, iterErr := keysIter.Next() + if iterErr != nil { + return shim.Error(fmt.Sprintf("keys operation failed. Error accessing state: %s", err)) + } + keys = append(keys, response.Key) + } + + for key, value := range keys { + fmt.Printf("key %d contains %s\n", key, value) + } + + jsonKeys, err := json.Marshal(keys) + if err != nil { + return shim.Error(fmt.Sprintf("keys operation failed. Error marshaling JSON: %s", err)) + } + + return shim.Success(jsonKeys) + case "query": + query := args[0] + keysIter, err := stub.GetQueryResult(query) + if err != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error accessing state: %s", err)) + } + defer keysIter.Close() + + var keys []string + for keysIter.HasNext() { + response, iterErr := keysIter.Next() + if iterErr != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error accessing state: %s", err)) + } + keys = append(keys, response.Key) + } + + jsonKeys, err := json.Marshal(keys) + if err != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error marshaling JSON: %s", err)) + } + + return shim.Success(jsonKeys) + case "history": + key := args[0] + keysIter, err := stub.GetHistoryForKey(key) + if err != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error accessing state: %s", err)) + } + defer keysIter.Close() + + var keys []string + for keysIter.HasNext() { + response, iterErr := keysIter.Next() + if iterErr != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error accessing state: %s", err)) + } + keys = append(keys, response.TxId) + } + + for key, txID := range keys { + fmt.Printf("key %d contains %s\n", key, txID) + } + + jsonKeys, err := json.Marshal(keys) + if err != nil { + return shim.Error(fmt.Sprintf("query operation failed. Error marshaling JSON: %s", err)) + } + + return shim.Success(jsonKeys) + + default: + return shim.Success([]byte("Unsupported operation")) + } +} + +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02/marbles_chaincode.go b/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02/marbles_chaincode.go new file mode 100644 index 00000000..4ea4654a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02/marbles_chaincode.go @@ -0,0 +1,627 @@ +/* +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +*/ + +// ====CHAINCODE EXECUTION SAMPLES (CLI) ================== + +// ==== Invoke marbles ==== +// peer chaincode invoke -C myc1 -n marbles -c '{"Args":["initMarble","marble1","blue","35","tom"]}' +// peer chaincode invoke -C myc1 -n marbles -c '{"Args":["initMarble","marble2","red","50","tom"]}' +// peer chaincode invoke -C myc1 -n marbles -c '{"Args":["initMarble","marble3","blue","70","tom"]}' +// peer chaincode invoke -C myc1 -n marbles -c '{"Args":["transferMarble","marble2","jerry"]}' +// peer chaincode invoke -C myc1 -n marbles -c '{"Args":["transferMarblesBasedOnColor","blue","jerry"]}' +// peer chaincode invoke -C myc1 -n marbles -c '{"Args":["delete","marble1"]}' + +// ==== Query marbles ==== +// peer chaincode query -C myc1 -n marbles -c '{"Args":["readMarble","marble1"]}' +// peer chaincode query -C myc1 -n marbles -c '{"Args":["getMarblesByRange","marble1","marble3"]}' +// peer chaincode query -C myc1 -n marbles -c '{"Args":["getHistoryForMarble","marble1"]}' + +// Rich Query (Only supported if CouchDB is used as state database): +// peer chaincode query -C myc1 -n marbles -c '{"Args":["queryMarblesByOwner","tom"]}' +// peer chaincode query -C myc1 -n marbles -c '{"Args":["queryMarbles","{\"selector\":{\"owner\":\"tom\"}}"]}' + +//The following examples demonstrate creating indexes on CouchDB +//Example hostname:port configurations +// +//Docker or vagrant environments: +// http://couchdb:5984/ +// +//Inside couchdb docker container +// http://127.0.0.1:5984/ + +// Index for chaincodeid, docType, owner. +// Note that docType and owner fields must be prefixed with the "data" wrapper +// chaincodeid must be added for all queries +// +// Definition for use with Fauxton interface +// {"index":{"fields":["chaincodeid","data.docType","data.owner"]},"ddoc":"indexOwnerDoc", "name":"indexOwner","type":"json"} +// +// example curl definition for use with command line +// curl -i -X POST -H "Content-Type: application/json" -d "{\"index\":{\"fields\":[\"chaincodeid\",\"data.docType\",\"data.owner\"]},\"name\":\"indexOwner\",\"ddoc\":\"indexOwnerDoc\",\"type\":\"json\"}" http://hostname:port/myc1/_index +// + +// Index for chaincodeid, docType, owner, size (descending order). +// Note that docType, owner and size fields must be prefixed with the "data" wrapper +// chaincodeid must be added for all queries +// +// Definition for use with Fauxton interface +// {"index":{"fields":[{"data.size":"desc"},{"chaincodeid":"desc"},{"data.docType":"desc"},{"data.owner":"desc"}]},"ddoc":"indexSizeSortDoc", "name":"indexSizeSortDesc","type":"json"} +// +// example curl definition for use with command line +// curl -i -X POST -H "Content-Type: application/json" -d "{\"index\":{\"fields\":[{\"data.size\":\"desc\"},{\"chaincodeid\":\"desc\"},{\"data.docType\":\"desc\"},{\"data.owner\":\"desc\"}]},\"ddoc\":\"indexSizeSortDoc\", \"name\":\"indexSizeSortDesc\",\"type\":\"json\"}" http://hostname:port/myc1/_index + +// Rich Query with index design doc and index name specified (Only supported if CouchDB is used as state database): +// peer chaincode query -C myc1 -n marbles -c '{"Args":["queryMarbles","{\"selector\":{\"docType\":\"marble\",\"owner\":\"tom\"}, \"use_index\":[\"_design/indexOwnerDoc\", \"indexOwner\"]}"]}' + +// Rich Query with index design doc specified only (Only supported if CouchDB is used as state database): +// peer chaincode query -C myc1 -n marbles -c '{"Args":["queryMarbles","{\"selector\":{\"docType\":{\"$eq\":\"marble\"},\"owner\":{\"$eq\":\"tom\"},\"size\":{\"$gt\":0}},\"fields\":[\"docType\",\"owner\",\"size\"],\"sort\":[{\"size\":\"desc\"}],\"use_index\":\"_design/indexSizeSortDoc\"}"]}' + +package main + +import ( + "bytes" + "encoding/json" + "fmt" + "strconv" + "strings" + "time" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric/protos/peer" +) + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +type marble struct { + ObjectType string `json:"docType"` //docType is used to distinguish the various types of objects in state database + Name string `json:"name"` //the fieldtags are needed to keep case from bouncing around + Color string `json:"color"` + Size int `json:"size"` + Owner string `json:"owner"` +} + +// =================================================================================== +// Main +// =================================================================================== +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting Simple chaincode: %s", err) + } +} + +// Init initializes chaincode +// =========================== +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + return shim.Success(nil) +} + +// Invoke - Our entry point for Invocations +// ======================================== +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + fmt.Println("invoke is running " + function) + + // Handle different functions + if function == "initMarble" { //create a new marble + return t.initMarble(stub, args) + } else if function == "transferMarble" { //change owner of a specific marble + return t.transferMarble(stub, args) + } else if function == "transferMarblesBasedOnColor" { //transfer all marbles of a certain color + return t.transferMarblesBasedOnColor(stub, args) + } else if function == "delete" { //delete a marble + return t.delete(stub, args) + } else if function == "readMarble" { //read a marble + return t.readMarble(stub, args) + } else if function == "queryMarblesByOwner" { //find marbles for owner X using rich query + return t.queryMarblesByOwner(stub, args) + } else if function == "queryMarbles" { //find marbles based on an ad hoc rich query + return t.queryMarbles(stub, args) + } else if function == "getHistoryForMarble" { //get history of values for a marble + return t.getHistoryForMarble(stub, args) + } else if function == "getMarblesByRange" { //get marbles based on range query + return t.getMarblesByRange(stub, args) + } + + fmt.Println("invoke did not find func: " + function) //error + return shim.Error("Received unknown function invocation") +} + +// ============================================================ +// initMarble - create a new marble, store into chaincode state +// ============================================================ +func (t *SimpleChaincode) initMarble(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var err error + + // 0 1 2 3 + // "asdf", "blue", "35", "bob" + if len(args) != 4 { + return shim.Error("Incorrect number of arguments. Expecting 4") + } + + // ==== Input sanitation ==== + fmt.Println("- start init marble") + if len(args[0]) <= 0 { + return shim.Error("1st argument must be a non-empty string") + } + if len(args[1]) <= 0 { + return shim.Error("2nd argument must be a non-empty string") + } + if len(args[2]) <= 0 { + return shim.Error("3rd argument must be a non-empty string") + } + if len(args[3]) <= 0 { + return shim.Error("4th argument must be a non-empty string") + } + marbleName := args[0] + color := strings.ToLower(args[1]) + owner := strings.ToLower(args[3]) + size, err := strconv.Atoi(args[2]) + if err != nil { + return shim.Error("3rd argument must be a numeric string") + } + + // ==== Check if marble already exists ==== + marbleAsBytes, err := stub.GetState(marbleName) + if err != nil { + return shim.Error("Failed to get marble: " + err.Error()) + } else if marbleAsBytes != nil { + fmt.Println("This marble already exists: " + marbleName) + return shim.Error("This marble already exists: " + marbleName) + } + + // ==== Create marble object and marshal to JSON ==== + objectType := "marble" + marble := &marble{objectType, marbleName, color, size, owner} + marbleJSONasBytes, err := json.Marshal(marble) + if err != nil { + return shim.Error(err.Error()) + } + //Alternatively, build the marble json string manually if you don't want to use struct marshalling + //marbleJSONasString := `{"docType":"Marble", "name": "` + marbleName + `", "color": "` + color + `", "size": ` + strconv.Itoa(size) + `, "owner": "` + owner + `"}` + //marbleJSONasBytes := []byte(str) + + // === Save marble to state === + err = stub.PutState(marbleName, marbleJSONasBytes) + if err != nil { + return shim.Error(err.Error()) + } + + // ==== Index the marble to enable color-based range queries, e.g. return all blue marbles ==== + // An 'index' is a normal key/value entry in state. + // The key is a composite key, with the elements that you want to range query on listed first. + // In our case, the composite key is based on indexName~color~name. + // This will enable very efficient state range queries based on composite keys matching indexName~color~* + indexName := "color~name" + colorNameIndexKey, err := stub.CreateCompositeKey(indexName, []string{marble.Color, marble.Name}) + if err != nil { + return shim.Error(err.Error()) + } + // Save index entry to state. Only the key name is needed, no need to store a duplicate copy of the marble. + // Note - passing a 'nil' value will effectively delete the key from state, therefore we pass null character as value + value := []byte{0x00} + stub.PutState(colorNameIndexKey, value) + + // ==== Marble saved and indexed. Return success ==== + fmt.Println("- end init marble") + return shim.Success(nil) +} + +// =============================================== +// readMarble - read a marble from chaincode state +// =============================================== +func (t *SimpleChaincode) readMarble(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var name, jsonResp string + var err error + + if len(args) != 1 { + return shim.Error("Incorrect number of arguments. Expecting name of the marble to query") + } + + name = args[0] + valAsbytes, err := stub.GetState(name) //get the marble from chaincode state + if err != nil { + jsonResp = "{\"Error\":\"Failed to get state for " + name + "\"}" + return shim.Error(jsonResp) + } else if valAsbytes == nil { + jsonResp = "{\"Error\":\"Marble does not exist: " + name + "\"}" + return shim.Error(jsonResp) + } + + return shim.Success(valAsbytes) +} + +// ================================================== +// delete - remove a marble key/value pair from state +// ================================================== +func (t *SimpleChaincode) delete(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var jsonResp string + var marbleJSON marble + if len(args) != 1 { + return shim.Error("Incorrect number of arguments. Expecting 1") + } + marbleName := args[0] + + // to maintain the color~name index, we need to read the marble first and get its color + valAsbytes, err := stub.GetState(marbleName) //get the marble from chaincode state + if err != nil { + jsonResp = "{\"Error\":\"Failed to get state for " + marbleName + "\"}" + return shim.Error(jsonResp) + } else if valAsbytes == nil { + jsonResp = "{\"Error\":\"Marble does not exist: " + marbleName + "\"}" + return shim.Error(jsonResp) + } + + err = json.Unmarshal([]byte(valAsbytes), &marbleJSON) + if err != nil { + jsonResp = "{\"Error\":\"Failed to decode JSON of: " + marbleName + "\"}" + return shim.Error(jsonResp) + } + + err = stub.DelState(marbleName) //remove the marble from chaincode state + if err != nil { + return shim.Error("Failed to delete state:" + err.Error()) + } + + // maintain the index + indexName := "color~name" + colorNameIndexKey, err := stub.CreateCompositeKey(indexName, []string{marbleJSON.Color, marbleJSON.Name}) + if err != nil { + return shim.Error(err.Error()) + } + + // Delete index entry to state. + err = stub.DelState(colorNameIndexKey) + if err != nil { + return shim.Error("Failed to delete state:" + err.Error()) + } + return shim.Success(nil) +} + +// =========================================================== +// transfer a marble by setting a new owner name on the marble +// =========================================================== +func (t *SimpleChaincode) transferMarble(stub shim.ChaincodeStubInterface, args []string) pb.Response { + + // 0 1 + // "name", "bob" + if len(args) < 2 { + return shim.Error("Incorrect number of arguments. Expecting 2") + } + + marbleName := args[0] + newOwner := strings.ToLower(args[1]) + fmt.Println("- start transferMarble ", marbleName, newOwner) + + marbleAsBytes, err := stub.GetState(marbleName) + if err != nil { + return shim.Error("Failed to get marble:" + err.Error()) + } else if marbleAsBytes == nil { + return shim.Error("Marble does not exist") + } + + marbleToTransfer := marble{} + err = json.Unmarshal(marbleAsBytes, &marbleToTransfer) //unmarshal it aka JSON.parse() + if err != nil { + return shim.Error(err.Error()) + } + marbleToTransfer.Owner = newOwner //change the owner + + marbleJSONasBytes, _ := json.Marshal(marbleToTransfer) + err = stub.PutState(marbleName, marbleJSONasBytes) //rewrite the marble + if err != nil { + return shim.Error(err.Error()) + } + + fmt.Println("- end transferMarble (success)") + return shim.Success(nil) +} + +// =========================================================================================== +// getMarblesByRange performs a range query based on the start and end keys provided. + +// Read-only function results are not typically submitted to ordering. If the read-only +// results are submitted to ordering, or if the query is used in an update transaction +// and submitted to ordering, then the committing peers will re-execute to guarantee that +// result sets are stable between endorsement time and commit time. The transaction is +// invalidated by the committing peers if the result set has changed between endorsement +// time and commit time. +// Therefore, range queries are a safe option for performing update transactions based on query results. +// =========================================================================================== +func (t *SimpleChaincode) getMarblesByRange(stub shim.ChaincodeStubInterface, args []string) pb.Response { + + if len(args) < 2 { + return shim.Error("Incorrect number of arguments. Expecting 2") + } + + startKey := args[0] + endKey := args[1] + + resultsIterator, err := stub.GetStateByRange(startKey, endKey) + if err != nil { + return shim.Error(err.Error()) + } + defer resultsIterator.Close() + + // buffer is a JSON array containing QueryResults + var buffer bytes.Buffer + buffer.WriteString("[") + + bArrayMemberAlreadyWritten := false + for resultsIterator.HasNext() { + queryResponse, err := resultsIterator.Next() + if err != nil { + return shim.Error(err.Error()) + } + // Add a comma before array members, suppress it for the first array member + if bArrayMemberAlreadyWritten == true { + buffer.WriteString(",") + } + buffer.WriteString("{\"Key\":") + buffer.WriteString("\"") + buffer.WriteString(queryResponse.Key) + buffer.WriteString("\"") + + buffer.WriteString(", \"Record\":") + // Record is a JSON object, so we write as-is + buffer.WriteString(string(queryResponse.Value)) + buffer.WriteString("}") + bArrayMemberAlreadyWritten = true + } + buffer.WriteString("]") + + fmt.Printf("- getMarblesByRange queryResult:\n%s\n", buffer.String()) + + return shim.Success(buffer.Bytes()) +} + +// ==== Example: GetStateByPartialCompositeKey/RangeQuery ========================================= +// transferMarblesBasedOnColor will transfer marbles of a given color to a certain new owner. +// Uses a GetStateByPartialCompositeKey (range query) against color~name 'index'. +// Committing peers will re-execute range queries to guarantee that result sets are stable +// between endorsement time and commit time. The transaction is invalidated by the +// committing peers if the result set has changed between endorsement time and commit time. +// Therefore, range queries are a safe option for performing update transactions based on query results. +// =========================================================================================== +func (t *SimpleChaincode) transferMarblesBasedOnColor(stub shim.ChaincodeStubInterface, args []string) pb.Response { + + // 0 1 + // "color", "bob" + if len(args) < 2 { + return shim.Error("Incorrect number of arguments. Expecting 2") + } + + color := args[0] + newOwner := strings.ToLower(args[1]) + fmt.Println("- start transferMarblesBasedOnColor ", color, newOwner) + + // Query the color~name index by color + // This will execute a key range query on all keys starting with 'color' + coloredMarbleResultsIterator, err := stub.GetStateByPartialCompositeKey("color~name", []string{color}) + if err != nil { + return shim.Error(err.Error()) + } + defer coloredMarbleResultsIterator.Close() + + // Iterate through result set and for each marble found, transfer to newOwner + var i int + for i = 0; coloredMarbleResultsIterator.HasNext(); i++ { + // Note that we don't get the value (2nd return variable), we'll just get the marble name from the composite key + responseRange, err := coloredMarbleResultsIterator.Next() + if err != nil { + return shim.Error(err.Error()) + } + + // get the color and name from color~name composite key + objectType, compositeKeyParts, err := stub.SplitCompositeKey(responseRange.Key) + if err != nil { + return shim.Error(err.Error()) + } + returnedColor := compositeKeyParts[0] + returnedMarbleName := compositeKeyParts[1] + fmt.Printf("- found a marble from index:%s color:%s name:%s\n", objectType, returnedColor, returnedMarbleName) + + // Now call the transfer function for the found marble. + // Re-use the same function that is used to transfer individual marbles + response := t.transferMarble(stub, []string{returnedMarbleName, newOwner}) + // if the transfer failed break out of loop and return error + if response.Status != shim.OK { + return shim.Error("Transfer failed: " + response.Message) + } + } + + responsePayload := fmt.Sprintf("Transferred %d %s marbles to %s", i, color, newOwner) + fmt.Println("- end transferMarblesBasedOnColor: " + responsePayload) + return shim.Success([]byte(responsePayload)) +} + +// =======Rich queries ========================================================================= +// Two examples of rich queries are provided below (parameterized query and ad hoc query). +// Rich queries pass a query string to the state database. +// Rich queries are only supported by state database implementations +// that support rich query (e.g. CouchDB). +// The query string is in the syntax of the underlying state database. +// With rich queries there is no guarantee that the result set hasn't changed between +// endorsement time and commit time, aka 'phantom reads'. +// Therefore, rich queries should not be used in update transactions, unless the +// application handles the possibility of result set changes between endorsement and commit time. +// Rich queries can be used for point-in-time queries against a peer. +// ============================================================================================ + +// ===== Example: Parameterized rich query ================================================= +// queryMarblesByOwner queries for marbles based on a passed in owner. +// This is an example of a parameterized query where the query logic is baked into the chaincode, +// and accepting a single query parameter (owner). +// Only available on state databases that support rich query (e.g. CouchDB) +// ========================================================================================= +func (t *SimpleChaincode) queryMarblesByOwner(stub shim.ChaincodeStubInterface, args []string) pb.Response { + + // 0 + // "bob" + if len(args) < 1 { + return shim.Error("Incorrect number of arguments. Expecting 1") + } + + owner := strings.ToLower(args[0]) + + queryString := fmt.Sprintf("{\"selector\":{\"docType\":\"marble\",\"owner\":\"%s\"}}", owner) + + queryResults, err := getQueryResultForQueryString(stub, queryString) + if err != nil { + return shim.Error(err.Error()) + } + return shim.Success(queryResults) +} + +// ===== Example: Ad hoc rich query ======================================================== +// queryMarbles uses a query string to perform a query for marbles. +// Query string matching state database syntax is passed in and executed as is. +// Supports ad hoc queries that can be defined at runtime by the client. +// If this is not desired, follow the queryMarblesForOwner example for parameterized queries. +// Only available on state databases that support rich query (e.g. CouchDB) +// ========================================================================================= +func (t *SimpleChaincode) queryMarbles(stub shim.ChaincodeStubInterface, args []string) pb.Response { + + // 0 + // "queryString" + if len(args) < 1 { + return shim.Error("Incorrect number of arguments. Expecting 1") + } + + queryString := args[0] + + queryResults, err := getQueryResultForQueryString(stub, queryString) + if err != nil { + return shim.Error(err.Error()) + } + return shim.Success(queryResults) +} + +// ========================================================================================= +// getQueryResultForQueryString executes the passed in query string. +// Result set is built and returned as a byte array containing the JSON results. +// ========================================================================================= +func getQueryResultForQueryString(stub shim.ChaincodeStubInterface, queryString string) ([]byte, error) { + + fmt.Printf("- getQueryResultForQueryString queryString:\n%s\n", queryString) + + resultsIterator, err := stub.GetQueryResult(queryString) + if err != nil { + return nil, err + } + defer resultsIterator.Close() + + // buffer is a JSON array containing QueryRecords + var buffer bytes.Buffer + buffer.WriteString("[") + + bArrayMemberAlreadyWritten := false + for resultsIterator.HasNext() { + queryResponse, err := resultsIterator.Next() + if err != nil { + return nil, err + } + // Add a comma before array members, suppress it for the first array member + if bArrayMemberAlreadyWritten == true { + buffer.WriteString(",") + } + buffer.WriteString("{\"Key\":") + buffer.WriteString("\"") + buffer.WriteString(queryResponse.Key) + buffer.WriteString("\"") + + buffer.WriteString(", \"Record\":") + // Record is a JSON object, so we write as-is + buffer.WriteString(string(queryResponse.Value)) + buffer.WriteString("}") + bArrayMemberAlreadyWritten = true + } + buffer.WriteString("]") + + fmt.Printf("- getQueryResultForQueryString queryResult:\n%s\n", buffer.String()) + + return buffer.Bytes(), nil +} + +func (t *SimpleChaincode) getHistoryForMarble(stub shim.ChaincodeStubInterface, args []string) pb.Response { + + if len(args) < 1 { + return shim.Error("Incorrect number of arguments. Expecting 1") + } + + marbleName := args[0] + + fmt.Printf("- start getHistoryForMarble: %s\n", marbleName) + + resultsIterator, err := stub.GetHistoryForKey(marbleName) + if err != nil { + return shim.Error(err.Error()) + } + defer resultsIterator.Close() + + // buffer is a JSON array containing historic values for the marble + var buffer bytes.Buffer + buffer.WriteString("[") + + bArrayMemberAlreadyWritten := false + for resultsIterator.HasNext() { + response, err := resultsIterator.Next() + if err != nil { + return shim.Error(err.Error()) + } + // Add a comma before array members, suppress it for the first array member + if bArrayMemberAlreadyWritten == true { + buffer.WriteString(",") + } + buffer.WriteString("{\"TxId\":") + buffer.WriteString("\"") + buffer.WriteString(response.TxId) + buffer.WriteString("\"") + + buffer.WriteString(", \"Value\":") + // if it was a delete operation on given key, then we need to set the + //corresponding value null. Else, we will write the response.Value + //as-is (as the Value itself a JSON marble) + if response.IsDelete { + buffer.WriteString("null") + } else { + buffer.WriteString(string(response.Value)) + } + + buffer.WriteString(", \"Timestamp\":") + buffer.WriteString("\"") + buffer.WriteString(time.Unix(response.Timestamp.Seconds, int64(response.Timestamp.Nanos)).String()) + buffer.WriteString("\"") + + buffer.WriteString(", \"IsDelete\":") + buffer.WriteString("\"") + buffer.WriteString(strconv.FormatBool(response.IsDelete)) + buffer.WriteString("\"") + + buffer.WriteString("}") + bArrayMemberAlreadyWritten = true + } + buffer.WriteString("]") + + fmt.Printf("- getHistoryForMarble returning:\n%s\n", buffer.String()) + + return shim.Success(buffer.Bytes()) +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/collections_config.json b/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/collections_config.json new file mode 100644 index 00000000..e26017bd --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/collections_config.json @@ -0,0 +1,18 @@ +[ + { + "name": "collectionMarbles", + "policy": "OR('Org1MSP.member', 'Org2MSP.member')", + "requiredPeerCount": 0, + "maxPeerCount": 3, + "blockToLive":99999, + "memberOnlyRead": true +}, + { + "name": "collectionMarblePrivateDetails", + "policy": "OR('Org1MSP.member')", + "requiredPeerCount": 0, + "maxPeerCount": 3, + "blockToLive":3, + "memberOnlyRead": true + } +] diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/collections_config_new.json b/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/collections_config_new.json new file mode 100644 index 00000000..33ddd71a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/collections_config_new.json @@ -0,0 +1,16 @@ +[ + { + "name": "collectionMarbles", + "policy": "OR('Org1MSP.member', 'Org2MSP.member')", + "requiredPeerCount": 0, + "maxPeerCount": 3, + "blockToLive":99999 +}, + { + "name": "collectionMarblePrivateDetails", + "policy": "OR('Org1MSP.member', 'Org2MSP.member')", + "requiredPeerCount": 0, + "maxPeerCount": 3, + "blockToLive":99999 + } +] diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/go/META-INF/statedb/couchdb/collections/collectionMarbles/indexes/indexOwner.json b/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/go/META-INF/statedb/couchdb/collections/collectionMarbles/indexes/indexOwner.json new file mode 100644 index 00000000..305f0904 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/go/META-INF/statedb/couchdb/collections/collectionMarbles/indexes/indexOwner.json @@ -0,0 +1 @@ +{"index":{"fields":["docType","owner"]},"ddoc":"indexOwnerDoc", "name":"indexOwner","type":"json"} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/go/marbles_chaincode_private.go b/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/go/marbles_chaincode_private.go new file mode 100644 index 00000000..385687c0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/marbles02_private/go/marbles_chaincode_private.go @@ -0,0 +1,634 @@ +/* +Copyright IBM Corp. All Rights Reserved. + +SPDX-License-Identifier: Apache-2.0 +*/ + +// ====CHAINCODE EXECUTION SAMPLES (CLI) ================== + +// ==== Invoke marbles ==== +// peer chaincode invoke -C mychannel -n marblesp -c '{"Args":["initMarble","marble1","blue","35","tom","99"]}' +// peer chaincode invoke -C mychannel -n marblesp -c '{"Args":["initMarble","marble2","red","50","tom","102"]}' +// peer chaincode invoke -C mychannel -n marblesp -c '{"Args":["initMarble","marble3","blue","70","tom","103"]}' +// peer chaincode invoke -C mychannel -n marblesp -c '{"Args":["transferMarble","marble2","jerry"]}' +// peer chaincode invoke -C mychannel -n marblesp -c '{"Args":["delete","marble1"]}' + +// ==== Query marbles ==== +// peer chaincode query -C mychannel -n marblesp -c '{"Args":["readMarble","marble1"]}' +// peer chaincode query -C mychannel -n marblesp -c '{"Args":["readMarblePrivateDetails","marble1"]}' +// peer chaincode query -C mychannel -n marblesp -c '{"Args":["getMarblesByRange","marble1","marble3"]}' + +// Rich Query (Only supported if CouchDB is used as state database): +// peer chaincode query -C mychannel -n marblesp -c '{"Args":["queryMarblesByOwner","tom"]}' +// peer chaincode query -C mychannel -n marblesp -c '{"Args":["queryMarbles","{\"selector\":{\"owner\":\"tom\"}}"]}' + +// INDEXES TO SUPPORT COUCHDB RICH QUERIES +// +// Indexes in CouchDB are required in order to make JSON queries efficient and are required for +// any JSON query with a sort. As of Hyperledger Fabric 1.1, indexes may be packaged alongside +// chaincode in a META-INF/statedb/couchdb/indexes directory. Or for indexes on private data +// collections, in a META-INF/statedb/couchdb/collections//indexes directory. +// Each index must be defined in its own text file with extension *.json with the index +// definition formatted in JSON following the CouchDB index JSON syntax as documented at: +// http://docs.couchdb.org/en/2.1.1/api/database/find.html#db-index +// +// This marbles02_private example chaincode demonstrates a packaged index which you +// can find in META-INF/statedb/couchdb/collection/collectionMarbles/indexes/indexOwner.json. +// For deployment of chaincode to production environments, it is recommended +// to define any indexes alongside chaincode so that the chaincode and supporting indexes +// are deployed automatically as a unit, once the chaincode has been installed on a peer and +// instantiated on a channel. See Hyperledger Fabric documentation for more details. +// +// If you have access to the your peer's CouchDB state database in a development environment, +// you may want to iteratively test various indexes in support of your chaincode queries. You +// can use the CouchDB Fauxton interface or a command line curl utility to create and update +// indexes. Then once you finalize an index, include the index definition alongside your +// chaincode in the META-INF/statedb/couchdb/indexes directory or +// META-INF/statedb/couchdb/collections//indexes directory, for packaging +// and deployment to managed environments. +// +// In the examples below you can find index definitions that support marbles02_private +// chaincode queries, along with the syntax that you can use in development environments +// to create the indexes in the CouchDB Fauxton interface. +// + +//Example hostname:port configurations to access CouchDB. +// +//To access CouchDB docker container from within another docker container or from vagrant environments: +// http://couchdb:5984/ +// +//Inside couchdb docker container +// http://127.0.0.1:5984/ + +// Index for docType, owner. +// Note that docType and owner fields must be prefixed with the "data" wrapper +// +// Index definition for use with Fauxton interface +// {"index":{"fields":["data.docType","data.owner"]},"ddoc":"indexOwnerDoc", "name":"indexOwner","type":"json"} + +// Index for docType, owner, size (descending order). +// Note that docType, owner and size fields must be prefixed with the "data" wrapper +// +// Index definition for use with Fauxton interface +// {"index":{"fields":[{"data.size":"desc"},{"data.docType":"desc"},{"data.owner":"desc"}]},"ddoc":"indexSizeSortDoc", "name":"indexSizeSortDesc","type":"json"} + +// Rich Query with index design doc and index name specified (Only supported if CouchDB is used as state database): +// peer chaincode query -C mychannel -n marblesp -c '{"Args":["queryMarbles","{\"selector\":{\"docType\":\"marble\",\"owner\":\"tom\"}, \"use_index\":[\"_design/indexOwnerDoc\", \"indexOwner\"]}"]}' + +// Rich Query with index design doc specified only (Only supported if CouchDB is used as state database): +// peer chaincode query -C mychannel -n marblesp -c '{"Args":["queryMarbles","{\"selector\":{\"docType\":{\"$eq\":\"marble\"},\"owner\":{\"$eq\":\"tom\"},\"size\":{\"$gt\":0}},\"fields\":[\"docType\",\"owner\",\"size\"],\"sort\":[{\"size\":\"desc\"}],\"use_index\":\"_design/indexSizeSortDoc\"}"]}' + +package main + +import ( + "bytes" + "encoding/json" + "fmt" + "strconv" + "strings" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric/protos/peer" +) + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +type marble struct { + ObjectType string `json:"docType"` //docType is used to distinguish the various types of objects in state database + Name string `json:"name"` //the fieldtags are needed to keep case from bouncing around + Color string `json:"color"` + Size int `json:"size"` + Owner string `json:"owner"` +} + +type marblePrivateDetails struct { + ObjectType string `json:"docType"` //docType is used to distinguish the various types of objects in state database + Name string `json:"name"` //the fieldtags are needed to keep case from bouncing around + Price int `json:"price"` +} + +// =================================================================================== +// Main +// =================================================================================== +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting Simple chaincode: %s", err) + } +} + +// Init initializes chaincode +// =========================== +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + return shim.Success(nil) +} + +// Invoke - Our entry point for Invocations +// ======================================== +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + fmt.Println("invoke is running " + function) + + // Handle different functions + switch function { + case "initMarble": + //create a new marble + return t.initMarble(stub, args) + case "readMarble": + //read a marble + return t.readMarble(stub, args) + case "readMarblePrivateDetails": + //read a marble private details + return t.readMarblePrivateDetails(stub, args) + case "transferMarble": + //change owner of a specific marble + return t.transferMarble(stub, args) + case "transferMarblesBasedOnColor": + //transfer all marbles of a certain color + return t.transferMarblesBasedOnColor(stub, args) + case "delete": + //delete a marble + return t.delete(stub, args) + case "queryMarblesByOwner": + //find marbles for owner X using rich query + return t.queryMarblesByOwner(stub, args) + case "queryMarbles": + //find marbles based on an ad hoc rich query + return t.queryMarbles(stub, args) + case "getMarblesByRange": + //get marbles based on range query + return t.getMarblesByRange(stub, args) + default: + //error + fmt.Println("invoke did not find func: " + function) + return shim.Error("Received unknown function invocation") + } +} + +// ============================================================ +// initMarble - create a new marble, store into chaincode state +// ============================================================ +func (t *SimpleChaincode) initMarble(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var err error + + // 0-name 1-color 2-size 3-owner 4-price + // "asdf", "blue", "35", "bob", "99" + if len(args) != 5 { + return shim.Error("Incorrect number of arguments. Expecting 5") + } + + // ==== Input sanitation ==== + fmt.Println("- start init marble") + if len(args[0]) == 0 { + return shim.Error("1st argument must be a non-empty string") + } + if len(args[1]) == 0 { + return shim.Error("2nd argument must be a non-empty string") + } + if len(args[2]) == 0 { + return shim.Error("3rd argument must be a non-empty string") + } + if len(args[3]) == 0 { + return shim.Error("4th argument must be a non-empty string") + } + if len(args[4]) == 0 { + return shim.Error("5th argument must be a non-empty string") + } + marbleName := args[0] + color := strings.ToLower(args[1]) + owner := strings.ToLower(args[3]) + size, err := strconv.Atoi(args[2]) + if err != nil { + return shim.Error("3rd argument must be a numeric string") + } + price, err := strconv.Atoi(args[4]) + if err != nil { + return shim.Error("5th argument must be a numeric string") + } + + // ==== Check if marble already exists ==== + marbleAsBytes, err := stub.GetPrivateData("collectionMarbles", marbleName) + if err != nil { + return shim.Error("Failed to get marble: " + err.Error()) + } else if marbleAsBytes != nil { + fmt.Println("This marble already exists: " + marbleName) + return shim.Error("This marble already exists: " + marbleName) + } + + // ==== Create marble object and marshal to JSON ==== + objectType := "marble" + marble := &marble{objectType, marbleName, color, size, owner} + marbleJSONasBytes, err := json.Marshal(marble) + if err != nil { + return shim.Error(err.Error()) + } + //Alternatively, build the marble json string manually if you don't want to use struct marshalling + //marbleJSONasString := `{"docType":"Marble", "name": "` + marbleName + `", "color": "` + color + `", "size": ` + strconv.Itoa(size) + `, "owner": "` + owner + `"}` + //marbleJSONasBytes := []byte(str) + + // === Save marble to state === + err = stub.PutPrivateData("collectionMarbles", marbleName, marbleJSONasBytes) + if err != nil { + return shim.Error(err.Error()) + } + + // ==== Save marble private details ==== + objectType = "marblePrivateDetails" + marblePrivateDetails := &marblePrivateDetails{objectType, marbleName, price} + marblePrivateDetailsBytes, err := json.Marshal(marblePrivateDetails) + if err != nil { + return shim.Error(err.Error()) + } + err = stub.PutPrivateData("collectionMarblePrivateDetails", marbleName, marblePrivateDetailsBytes) + if err != nil { + return shim.Error(err.Error()) + } + + // ==== Index the marble to enable color-based range queries, e.g. return all blue marbles ==== + // An 'index' is a normal key/value entry in state. + // The key is a composite key, with the elements that you want to range query on listed first. + // In our case, the composite key is based on indexName~color~name. + // This will enable very efficient state range queries based on composite keys matching indexName~color~* + indexName := "color~name" + colorNameIndexKey, err := stub.CreateCompositeKey(indexName, []string{marble.Color, marble.Name}) + if err != nil { + return shim.Error(err.Error()) + } + // Save index entry to state. Only the key name is needed, no need to store a duplicate copy of the marble. + // Note - passing a 'nil' value will effectively delete the key from state, therefore we pass null character as value + value := []byte{0x00} + stub.PutPrivateData("collectionMarbles", colorNameIndexKey, value) + + // ==== Marble saved and indexed. Return success ==== + fmt.Println("- end init marble") + return shim.Success(nil) +} + +// =============================================== +// readMarble - read a marble from chaincode state +// =============================================== +func (t *SimpleChaincode) readMarble(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var name, jsonResp string + var err error + + if len(args) != 1 { + return shim.Error("Incorrect number of arguments. Expecting name of the marble to query") + } + + name = args[0] + valAsbytes, err := stub.GetPrivateData("collectionMarbles", name) //get the marble from chaincode state + if err != nil { + jsonResp = "{\"Error\":\"Failed to get state for " + name + "\"}" + return shim.Error(jsonResp) + } else if valAsbytes == nil { + jsonResp = "{\"Error\":\"Marble does not exist: " + name + "\"}" + return shim.Error(jsonResp) + } + + return shim.Success(valAsbytes) +} + +// =============================================== +// readMarblereadMarblePrivateDetails - read a marble private details from chaincode state +// =============================================== +func (t *SimpleChaincode) readMarblePrivateDetails(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var name, jsonResp string + var err error + + if len(args) != 1 { + return shim.Error("Incorrect number of arguments. Expecting name of the marble to query") + } + + name = args[0] + valAsbytes, err := stub.GetPrivateData("collectionMarblePrivateDetails", name) //get the marble private details from chaincode state + if err != nil { + jsonResp = "{\"Error\":\"Failed to get private details for " + name + ": " + err.Error() + "\"}" + return shim.Error(jsonResp) + } else if valAsbytes == nil { + jsonResp = "{\"Error\":\"Marble private details does not exist: " + name + "\"}" + return shim.Error(jsonResp) + } + + return shim.Success(valAsbytes) +} + +// ================================================== +// delete - remove a marble key/value pair from state +// ================================================== +func (t *SimpleChaincode) delete(stub shim.ChaincodeStubInterface, args []string) pb.Response { + var jsonResp string + var marbleJSON marble + if len(args) != 1 { + return shim.Error("Incorrect number of arguments. Expecting 1") + } + marbleName := args[0] + + // to maintain the color~name index, we need to read the marble first and get its color + valAsbytes, err := stub.GetPrivateData("collectionMarbles", marbleName) //get the marble from chaincode state + if err != nil { + jsonResp = "{\"Error\":\"Failed to get state for " + marbleName + "\"}" + return shim.Error(jsonResp) + } else if valAsbytes == nil { + jsonResp = "{\"Error\":\"Marble does not exist: " + marbleName + "\"}" + return shim.Error(jsonResp) + } + + err = json.Unmarshal([]byte(valAsbytes), &marbleJSON) + if err != nil { + jsonResp = "{\"Error\":\"Failed to decode JSON of: " + marbleName + "\"}" + return shim.Error(jsonResp) + } + + err = stub.DelPrivateData("collectionMarbles", marbleName) //remove the marble from chaincode state + if err != nil { + return shim.Error("Failed to delete state:" + err.Error()) + } + + // maintain the index + indexName := "color~name" + colorNameIndexKey, err := stub.CreateCompositeKey(indexName, []string{marbleJSON.Color, marbleJSON.Name}) + if err != nil { + return shim.Error(err.Error()) + } + + // Delete index entry to state. + err = stub.DelPrivateData("collectionMarbles", colorNameIndexKey) + if err != nil { + return shim.Error("Failed to delete state:" + err.Error()) + } + + // Delete private details of marble + err = stub.DelPrivateData("collectionMarblePrivateDetails", marbleName) + if err != nil { + return shim.Error(err.Error()) + } + + return shim.Success(nil) +} + +// =========================================================== +// transfer a marble by setting a new owner name on the marble +// =========================================================== +func (t *SimpleChaincode) transferMarble(stub shim.ChaincodeStubInterface, args []string) pb.Response { + + // 0 1 + // "name", "bob" + if len(args) < 2 { + return shim.Error("Incorrect number of arguments. Expecting 2") + } + + marbleName := args[0] + newOwner := strings.ToLower(args[1]) + fmt.Println("- start transferMarble ", marbleName, newOwner) + + marbleAsBytes, err := stub.GetPrivateData("collectionMarbles", marbleName) + if err != nil { + return shim.Error("Failed to get marble:" + err.Error()) + } else if marbleAsBytes == nil { + return shim.Error("Marble does not exist") + } + + marbleToTransfer := marble{} + err = json.Unmarshal(marbleAsBytes, &marbleToTransfer) //unmarshal it aka JSON.parse() + if err != nil { + return shim.Error(err.Error()) + } + marbleToTransfer.Owner = newOwner //change the owner + + marbleJSONasBytes, _ := json.Marshal(marbleToTransfer) + err = stub.PutPrivateData("collectionMarbles", marbleName, marbleJSONasBytes) //rewrite the marble + if err != nil { + return shim.Error(err.Error()) + } + + fmt.Println("- end transferMarble (success)") + return shim.Success(nil) +} + +// =========================================================================================== +// getMarblesByRange performs a range query based on the start and end keys provided. + +// Read-only function results are not typically submitted to ordering. If the read-only +// results are submitted to ordering, or if the query is used in an update transaction +// and submitted to ordering, then the committing peers will re-execute to guarantee that +// result sets are stable between endorsement time and commit time. The transaction is +// invalidated by the committing peers if the result set has changed between endorsement +// time and commit time. +// Therefore, range queries are a safe option for performing update transactions based on query results. +// =========================================================================================== +func (t *SimpleChaincode) getMarblesByRange(stub shim.ChaincodeStubInterface, args []string) pb.Response { + + if len(args) < 2 { + return shim.Error("Incorrect number of arguments. Expecting 2") + } + + startKey := args[0] + endKey := args[1] + + resultsIterator, err := stub.GetPrivateDataByRange("collectionMarbles", startKey, endKey) + if err != nil { + return shim.Error(err.Error()) + } + defer resultsIterator.Close() + + // buffer is a JSON array containing QueryResults + var buffer bytes.Buffer + buffer.WriteString("[") + + bArrayMemberAlreadyWritten := false + for resultsIterator.HasNext() { + queryResponse, err := resultsIterator.Next() + if err != nil { + return shim.Error(err.Error()) + } + // Add a comma before array members, suppress it for the first array member + if bArrayMemberAlreadyWritten == true { + buffer.WriteString(",") + } + buffer.WriteString("{\"Key\":") + buffer.WriteString("\"") + buffer.WriteString(queryResponse.Key) + buffer.WriteString("\"") + + buffer.WriteString(", \"Record\":") + // Record is a JSON object, so we write as-is + buffer.WriteString(string(queryResponse.Value)) + buffer.WriteString("}") + bArrayMemberAlreadyWritten = true + } + buffer.WriteString("]") + + fmt.Printf("- getMarblesByRange queryResult:\n%s\n", buffer.String()) + + return shim.Success(buffer.Bytes()) +} + +// ==== Example: GetStateByPartialCompositeKey/RangeQuery ========================================= +// transferMarblesBasedOnColor will transfer marbles of a given color to a certain new owner. +// Uses a GetStateByPartialCompositeKey (range query) against color~name 'index'. +// Committing peers will re-execute range queries to guarantee that result sets are stable +// between endorsement time and commit time. The transaction is invalidated by the +// committing peers if the result set has changed between endorsement time and commit time. +// Therefore, range queries are a safe option for performing update transactions based on query results. +// =========================================================================================== +func (t *SimpleChaincode) transferMarblesBasedOnColor(stub shim.ChaincodeStubInterface, args []string) pb.Response { + + // 0 1 + // "color", "bob" + if len(args) < 2 { + return shim.Error("Incorrect number of arguments. Expecting 2") + } + + color := args[0] + newOwner := strings.ToLower(args[1]) + fmt.Println("- start transferMarblesBasedOnColor ", color, newOwner) + + // Query the color~name index by color + // This will execute a key range query on all keys starting with 'color' + coloredMarbleResultsIterator, err := stub.GetPrivateDataByPartialCompositeKey("collectionMarbles", "color~name", []string{color}) + if err != nil { + return shim.Error(err.Error()) + } + defer coloredMarbleResultsIterator.Close() + + // Iterate through result set and for each marble found, transfer to newOwner + var i int + for i = 0; coloredMarbleResultsIterator.HasNext(); i++ { + // Note that we don't get the value (2nd return variable), we'll just get the marble name from the composite key + responseRange, err := coloredMarbleResultsIterator.Next() + if err != nil { + return shim.Error(err.Error()) + } + + // get the color and name from color~name composite key + objectType, compositeKeyParts, err := stub.SplitCompositeKey(responseRange.Key) + if err != nil { + return shim.Error(err.Error()) + } + returnedColor := compositeKeyParts[0] + returnedMarbleName := compositeKeyParts[1] + fmt.Printf("- found a marble from index:%s color:%s name:%s\n", objectType, returnedColor, returnedMarbleName) + + // Now call the transfer function for the found marble. + // Re-use the same function that is used to transfer individual marbles + response := t.transferMarble(stub, []string{returnedMarbleName, newOwner}) + // if the transfer failed break out of loop and return error + if response.Status != shim.OK { + return shim.Error("Transfer failed: " + response.Message) + } + } + + responsePayload := fmt.Sprintf("Transferred %d %s marbles to %s", i, color, newOwner) + fmt.Println("- end transferMarblesBasedOnColor: " + responsePayload) + return shim.Success([]byte(responsePayload)) +} + +// =======Rich queries ========================================================================= +// Two examples of rich queries are provided below (parameterized query and ad hoc query). +// Rich queries pass a query string to the state database. +// Rich queries are only supported by state database implementations +// that support rich query (e.g. CouchDB). +// The query string is in the syntax of the underlying state database. +// With rich queries there is no guarantee that the result set hasn't changed between +// endorsement time and commit time, aka 'phantom reads'. +// Therefore, rich queries should not be used in update transactions, unless the +// application handles the possibility of result set changes between endorsement and commit time. +// Rich queries can be used for point-in-time queries against a peer. +// ============================================================================================ + +// ===== Example: Parameterized rich query ================================================= +// queryMarblesByOwner queries for marbles based on a passed in owner. +// This is an example of a parameterized query where the query logic is baked into the chaincode, +// and accepting a single query parameter (owner). +// Only available on state databases that support rich query (e.g. CouchDB) +// ========================================================================================= +func (t *SimpleChaincode) queryMarblesByOwner(stub shim.ChaincodeStubInterface, args []string) pb.Response { + + // 0 + // "bob" + if len(args) < 1 { + return shim.Error("Incorrect number of arguments. Expecting 1") + } + + owner := strings.ToLower(args[0]) + + queryString := fmt.Sprintf("{\"selector\":{\"docType\":\"marble\",\"owner\":\"%s\"}}", owner) + + queryResults, err := getQueryResultForQueryString(stub, queryString) + if err != nil { + return shim.Error(err.Error()) + } + return shim.Success(queryResults) +} + +// ===== Example: Ad hoc rich query ======================================================== +// queryMarbles uses a query string to perform a query for marbles. +// Query string matching state database syntax is passed in and executed as is. +// Supports ad hoc queries that can be defined at runtime by the client. +// If this is not desired, follow the queryMarblesForOwner example for parameterized queries. +// Only available on state databases that support rich query (e.g. CouchDB) +// ========================================================================================= +func (t *SimpleChaincode) queryMarbles(stub shim.ChaincodeStubInterface, args []string) pb.Response { + + // 0 + // "queryString" + if len(args) < 1 { + return shim.Error("Incorrect number of arguments. Expecting 1") + } + + queryString := args[0] + + queryResults, err := getQueryResultForQueryString(stub, queryString) + if err != nil { + return shim.Error(err.Error()) + } + return shim.Success(queryResults) +} + +// ========================================================================================= +// getQueryResultForQueryString executes the passed in query string. +// Result set is built and returned as a byte array containing the JSON results. +// ========================================================================================= +func getQueryResultForQueryString(stub shim.ChaincodeStubInterface, queryString string) ([]byte, error) { + + fmt.Printf("- getQueryResultForQueryString queryString:\n%s\n", queryString) + + resultsIterator, err := stub.GetPrivateDataQueryResult("collectionMarbles", queryString) + if err != nil { + return nil, err + } + defer resultsIterator.Close() + + // buffer is a JSON array containing QueryRecords + var buffer bytes.Buffer + buffer.WriteString("[") + + bArrayMemberAlreadyWritten := false + for resultsIterator.HasNext() { + queryResponse, err := resultsIterator.Next() + if err != nil { + return nil, err + } + // Add a comma before array members, suppress it for the first array member + if bArrayMemberAlreadyWritten == true { + buffer.WriteString(",") + } + buffer.WriteString("{\"Key\":") + buffer.WriteString("\"") + buffer.WriteString(queryResponse.Key) + buffer.WriteString("\"") + + buffer.WriteString(", \"Record\":") + // Record is a JSON object, so we write as-is + buffer.WriteString(string(queryResponse.Value)) + buffer.WriteString("}") + bArrayMemberAlreadyWritten = true + } + buffer.WriteString("]") + + fmt.Printf("- getQueryResultForQueryString queryResult:\n%s\n", buffer.String()) + + return buffer.Bytes(), nil +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/passthru/passthru.go b/hyperledger_fabric/v2.2.8/chaincodes/go/passthru/passthru.go new file mode 100644 index 00000000..49d978bf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/passthru/passthru.go @@ -0,0 +1,72 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "fmt" + "strings" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric/protos/peer" +) + +// PassthruChaincode passes thru invoke and query to another chaincode where +// called ChaincodeID = function +// called chaincode's function = args[0] +// called chaincode's args = args[1:] +type PassthruChaincode struct { +} + +func toChaincodeArgs(args ...string) [][]byte { + bargs := make([][]byte, len(args)) + for i, arg := range args { + bargs[i] = []byte(arg) + } + return bargs +} + +//Init func will return error if function has string "error" anywhere +func (p *PassthruChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + function, _ := stub.GetFunctionAndParameters() + if strings.Index(function, "error") >= 0 { + return shim.Error(function) + } + return shim.Success([]byte(function)) +} + +//helper +func (p *PassthruChaincode) iq(stub shim.ChaincodeStubInterface, function string, args []string) pb.Response { + if function == "" { + return shim.Error("Chaincode ID not provided") + } + chaincodeID := function + + return stub.InvokeChaincode(chaincodeID, toChaincodeArgs(args...), "") +} + +// Invoke passes through the invoke call +func (p *PassthruChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + return p.iq(stub, function, args) +} + +func main() { + err := shim.Start(new(PassthruChaincode)) + if err != nil { + fmt.Printf("Error starting Passthru chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/sleeper/sleeper.go b/hyperledger_fabric/v2.2.8/chaincodes/go/sleeper/sleeper.go new file mode 100644 index 00000000..088b598c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/sleeper/sleeper.go @@ -0,0 +1,124 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +// Sleeper chaincode sleeps and works with one state variable +// Init - 1 param, a sleep time in millisecs +// Invoke - 4 or 3 params, "put" or "get", value to set and sleep time in millisecs +// +// Sleeper can be used to test the "chaincode.executetimeout" property + +import ( + "fmt" + "strconv" + "time" + + "github.com/hyperledger/fabric/core/chaincode/shim" + pb "github.com/hyperledger/fabric/protos/peer" +) + +// SleeperChaincode example simple Chaincode implementation +type SleeperChaincode struct { +} + +func (t *SleeperChaincode) sleep(sleepTime string) { + st, _ := strconv.Atoi(sleepTime) + if st >= 0 { + time.Sleep(time.Duration(st) * time.Millisecond) + } +} + +// Init initializes chaincode...all it does is sleep a bi +func (t *SleeperChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + args := stub.GetStringArgs() + + if len(args) != 1 { + return shim.Error("Incorrect number of arguments. Expecting 1") + } + + sleepTime := args[0] + + t.sleep(sleepTime) + + return shim.Success(nil) +} + +// Invoke sets key/value and sleeps a bit +func (t *SleeperChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + if function == "put" { + if len(args) != 3 { + return shim.Error("Incorrect number of arguments. Expecting 3") + } + + // Make payment of X units from A to B + return t.invoke(stub, args) + } else if function == "get" { + if len(args) != 2 { + return shim.Error("Incorrect number of arguments. Expecting 2") + } + + // the old "Query" is now implemtned in invoke + return t.query(stub, args) + } + + return shim.Error("Invalid invoke function name. Expecting \"put\" or \"get\"") +} + +// Transaction makes payment of X units from A to B +func (t *SleeperChaincode) invoke(stub shim.ChaincodeStubInterface, args []string) pb.Response { + // set state + key := args[0] + val := args[1] + + err := stub.PutState(key, []byte(val)) + if err != nil { + return shim.Error(err.Error()) + } + + sleepTime := args[2] + + //sleep for a bit + t.sleep(sleepTime) + + return shim.Success([]byte("OK")) +} + +// query callback representing the query of a chaincode +func (t *SleeperChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response { + key := args[0] + + // Get the state from the ledger + val, err := stub.GetState(key) + if err != nil { + return shim.Error(err.Error()) + } + + sleepTime := args[1] + + //sleep for a bit + t.sleep(sleepTime) + + return shim.Success(val) +} + +func main() { + err := shim.Start(new(SleeperChaincode)) + if err != nil { + fmt.Printf("Error starting Sleeper chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/Dockerfile b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/Dockerfile new file mode 100644 index 00000000..e3aa5d5f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/Dockerfile @@ -0,0 +1,40 @@ +# FIXME: someone from the UTXO team will need to verify or rework this +# Copyright London Stock Exchange Group All Rights Reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# +FROM ubuntu:latest + +RUN apt-get update && apt-get install pkg-config autoconf libtool -y +RUN cd /tmp && git clone https://github.com/bitcoin/secp256k1.git && cd secp256k1/ +WORKDIR /tmp/secp256k1 +RUN ./autogen.sh +RUN ./configure --enable-module-recovery +RUN make +RUN ./tests +RUN make install + +WORKDIR /tmp +RUN apt-get install libtool libboost1.55-all-dev -y +RUN git clone https://github.com/libbitcoin/libbitcoin-consensus.git +WORKDIR /tmp/libbitcoin-consensus +RUN ./autogen.sh +RUN ./configure +RUN make +RUN make install + +# Now SWIG +WORKDIR /tmp +# Need pcre lib for building +RUN apt-get install libpcre3-dev -y +RUN wget http://prdownloads.sourceforge.net/swig/swig-3.0.8.tar.gz && tar xvf swig-3.0.8.tar.gz +WORKDIR /tmp/swig-3.0.8 +RUN ./autogen.sh +RUN ./configure +RUN make +RUN make install + +# Now add this for SWIG execution requirement to get missing stubs-32.h header file +RUN apt-get install g++-multilib -y + +ENV CGO_LDFLAGS="-L/usr/local/lib/ -lbitcoin-consensus -lstdc++" diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/README.md b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/README.md new file mode 100644 index 00000000..6b7f42c1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/README.md @@ -0,0 +1,79 @@ +### UTXO Chaincode + +The UTXO example chaincode contains a single invocation function named `execute`. This function accepts BASE64 encoded transactions from the Bitcoin network. This chaincode will parse the transactions and pass the transaction components to the Bitcoin libconsensus C library for script verification. + +The purpose of this chaincode is to + +1. Demonstrate how the world state can be used to store and process unspent transaction outputs (UTXO). + +2. Demonstrate how to include and use a C library from within a chaincode. + +A client for exercising this chaincode is avilable at https://github.com/srderson/hyperledger-fabric-utxo-client-java. + + +The following are instructions for building and deploying the UTXO chaincode in Hypereledger Fabric. All commands should be run with vagrant. + +First, build the Docker image for the UTXO chaincode. + +``` +cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/utxo/ +docker build -t utxo:0.1.0 . +``` + +Next, modify the `core.yaml` file in the Hyperledger Fabric project to point to the local Docker image that was built in the previous step. In the core.yaml file find `chaincode.golang.Dockerfile` and change it from from `hyperledger/fabric-baseimage` to `utxo:0.1.0` + +Start the peer using the following commands +``` +peer node start +``` + +In a second window, deploy the example UTXO chaincode +``` +CORE_PEER_ADDRESS=localhost:7051 peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/utxo -c '{"Function":"init", "Args": []}' +``` +Wait about 30 seconds for the chaincode to be deployed. Output from the window where the peer is running will indicate that this is successful. + +Next, find the `image ID` for the deployed chaincode. Run +``` +docker images +``` +and look for the image ID of the most recently deployed chaincode. The image ID will likely be similar to +``` + dev-jdoe-cbe6be7ed67931b9be2ce31dd833e523702378bef91b29917005f0eaa316b57e268e19696093d48b91076f1134cbf4b06afd78e6afd947133f43cb51bf40b0a4 + ``` + Make a note of this as we'll be using it later. + +Stop the running peer. + +Build a peer docker image by running the following test. This will allow for easy testing of the chaincode by giving us the ability to reset the database to a clean state. +``` +go test github.com/hyperledger/fabric/core/container -run=BuildImage_Peer +``` + +Using the Docker image that we just built, start a peer within a container in `chaincodedev` mode. +``` +docker run -it -p 7051:7051 -p 7053:7053 hyperledger/fabric-peer peer node start --peer-chaincodedev +``` + + +In another window, start UTXO chaincode in a container. The refers to the UTXO image ID noted in a prior step. +``` +docker run -it /bin/bash +``` + +Build the UTXO chaincode. +``` +cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/utxo/ +go build +CORE_PEER_ADDRESS=172.17.0.2:7051 CORE_CHAINCODE_ID_NAME=utxo ./utxo +``` + +In another window, deploy the chaincode +``` +peer chaincode deploy -n utxo -c '{"Function":"init", "Args": []}' +``` + +The chaincode is now deployed and ready to accept transactions. + +Creative Commons License
    This work is licensed under a Creative Commons Attribution 4.0 International License. +s diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/chaincode.go b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/chaincode.go new file mode 100644 index 00000000..ca1a2878 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/chaincode.go @@ -0,0 +1,104 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "encoding/base64" + "errors" + "fmt" + + "github.com/hyperledger/fabric/core/chaincode/shim" + "github.com/hyperledger/fabric/examples/chaincode/go/utxo/util" +) + +// The UTXO example chaincode contains a single invocation function named execute. This function accepts BASE64 +// encoded transactions from the Bitcoin network. This chaincode will parse the transactions and pass the transaction +// components to the Bitcoin libconsensus C library for script verification. A table of UTXOs is maintained to ensure +// each transaction is valid. +// Documentation can be found at +// https://github.com/hyperledger/fabric/blob/master/examples/chaincode/go/utxo/README.md + +// SimpleChaincode example simple Chaincode implementation +type SimpleChaincode struct { +} + +// Init does nothing in the UTXO chaincode +func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { + return nil, nil +} + +// Invoke callback representing the invocation of a chaincode +func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { + function, args := stub.GetFunctionAndParameters() + switch function { + + case "execute": + + if len(args) < 1 { + return nil, errors.New("execute operation must include single argument, the base64 encoded form of a bitcoin transaction") + } + txDataBase64 := args[0] + txData, err := base64.StdEncoding.DecodeString(txDataBase64) + if err != nil { + return nil, fmt.Errorf("Error decoding TX as base64: %s", err) + } + + utxo := util.MakeUTXO(MakeChaincodeStore(stub)) + execResult, err := utxo.Execute(txData) + if err != nil { + return nil, fmt.Errorf("Error executing TX: %s", err) + } + + fmt.Printf("\nExecResult: Coinbase: %t, SumInputs %d, SumOutputs %d\n\n", execResult.IsCoinbase, execResult.SumPriorOutputs, execResult.SumCurrentOutputs) + + if execResult.IsCoinbase == false { + if execResult.SumCurrentOutputs > execResult.SumPriorOutputs { + return nil, fmt.Errorf("sumOfCurrentOutputs > sumOfPriorOutputs: sumOfCurrentOutputs = %d, sumOfPriorOutputs = %d", execResult.SumCurrentOutputs, execResult.SumPriorOutputs) + } + } + + return nil, nil + + case "getTran": + + if len(args) < 1 { + return nil, errors.New("queryBTC operation must include single argument, the TX hash hex") + } + + utxo := util.MakeUTXO(MakeChaincodeStore(stub)) + tx, err := utxo.Query(args[0]) + if err != nil { + return nil, fmt.Errorf("Error querying for transaction: %s", err) + } + if tx == nil { + var data []byte + return data, nil + } + return tx, nil + + default: + return nil, errors.New("Unsupported operation") + } + +} + +func main() { + err := shim.Start(new(SimpleChaincode)) + if err != nil { + fmt.Printf("Error starting chaincode: %s", err) + } +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/consensus/consensus.go b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/consensus/consensus.go new file mode 100644 index 00000000..74b5b20c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/consensus/consensus.go @@ -0,0 +1,482 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 3.0.8 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + +// source: consensus.swg + +package consensus + +/* +#define intgo swig_intgo +typedef void *swig_voidp; + +#include + + +typedef int intgo; +typedef unsigned int uintgo; + + + +typedef struct { char *p; intgo n; } _gostring_; +typedef struct { void* array; intgo len; intgo cap; } _goslice_; + + +typedef long long swig_type_1; +typedef long long swig_type_2; +extern void _wrap_Swig_free_consensus_0731991c73947514(uintptr_t arg1); +extern swig_intgo _wrap_verify_result_eval_false_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_eval_true_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_script_size_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_push_size_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_op_count_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_stack_size_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_sig_count_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_pubkey_count_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_verify_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_equalverify_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_checkmultisigverify_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_checksigverify_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_numequalverify_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_bad_opcode_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_disabled_opcode_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_invalid_stack_operation_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_invalid_altstack_operation_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_unbalanced_conditional_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_sig_hashtype_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_sig_der_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_minimaldata_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_sig_pushonly_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_sig_high_s_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_sig_nulldummy_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_pubkeytype_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_cleanstack_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_discourage_upgradable_nops_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_op_return_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_unknown_error_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_tx_invalid_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_tx_size_invalid_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_tx_input_invalid_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_negative_locktime_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_result_unsatisfied_locktime_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_flags_none_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_flags_p2sh_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_flags_strictenc_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_flags_dersig_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_flags_low_s_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_flags_nulldummy_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_flags_sigpushonly_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_flags_minimaldata_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_flags_discourage_upgradable_nops_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_flags_cleanstack_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_flags_checklocktimeverify_consensus_0731991c73947514(void); +extern swig_intgo _wrap_verify_script_consensus_0731991c73947514(swig_voidp arg1, swig_type_1 arg2, swig_voidp arg3, swig_type_2 arg4, swig_intgo arg5, swig_intgo arg6); +#undef intgo +*/ +import "C" + +import "unsafe" +import _ "runtime/cgo" +import "sync" + +type _ unsafe.Pointer + +var Swig_escape_always_false bool +var Swig_escape_val interface{} + +type _swig_fnptr *byte +type _swig_memberptr *byte + +type _ sync.Mutex + +func Swig_free(arg1 uintptr) { + _swig_i_0 := arg1 + C._wrap_Swig_free_consensus_0731991c73947514(C.uintptr_t(_swig_i_0)) +} + +const LIBBITCOIN_CONSENSUS_VERSION string = "2.0.0" +const LIBBITCOIN_CONSENSUS_MAJOR_VERSION int = 2 +const LIBBITCOIN_CONSENSUS_MINOR_VERSION int = 0 +const LIBBITCOIN_CONSENSUS_PATCH_VERSION int = 0 + +type LibbitcoinConsensusVerify_result_type int + +func _swig_getverify_result_eval_false() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_eval_false_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_eval_false LibbitcoinConsensusVerify_result_type = _swig_getverify_result_eval_false() + +func _swig_getverify_result_eval_true() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_eval_true_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_eval_true LibbitcoinConsensusVerify_result_type = _swig_getverify_result_eval_true() + +func _swig_getverify_result_script_size() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_script_size_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_script_size LibbitcoinConsensusVerify_result_type = _swig_getverify_result_script_size() + +func _swig_getverify_result_push_size() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_push_size_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_push_size LibbitcoinConsensusVerify_result_type = _swig_getverify_result_push_size() + +func _swig_getverify_result_op_count() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_op_count_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_op_count LibbitcoinConsensusVerify_result_type = _swig_getverify_result_op_count() + +func _swig_getverify_result_stack_size() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_stack_size_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_stack_size LibbitcoinConsensusVerify_result_type = _swig_getverify_result_stack_size() + +func _swig_getverify_result_sig_count() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_sig_count_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_sig_count LibbitcoinConsensusVerify_result_type = _swig_getverify_result_sig_count() + +func _swig_getverify_result_pubkey_count() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_pubkey_count_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_pubkey_count LibbitcoinConsensusVerify_result_type = _swig_getverify_result_pubkey_count() + +func _swig_getverify_result_verify() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_verify_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_verify LibbitcoinConsensusVerify_result_type = _swig_getverify_result_verify() + +func _swig_getverify_result_equalverify() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_equalverify_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_equalverify LibbitcoinConsensusVerify_result_type = _swig_getverify_result_equalverify() + +func _swig_getverify_result_checkmultisigverify() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_checkmultisigverify_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_checkmultisigverify LibbitcoinConsensusVerify_result_type = _swig_getverify_result_checkmultisigverify() + +func _swig_getverify_result_checksigverify() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_checksigverify_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_checksigverify LibbitcoinConsensusVerify_result_type = _swig_getverify_result_checksigverify() + +func _swig_getverify_result_numequalverify() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_numequalverify_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_numequalverify LibbitcoinConsensusVerify_result_type = _swig_getverify_result_numequalverify() + +func _swig_getverify_result_bad_opcode() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_bad_opcode_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_bad_opcode LibbitcoinConsensusVerify_result_type = _swig_getverify_result_bad_opcode() + +func _swig_getverify_result_disabled_opcode() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_disabled_opcode_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_disabled_opcode LibbitcoinConsensusVerify_result_type = _swig_getverify_result_disabled_opcode() + +func _swig_getverify_result_invalid_stack_operation() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_invalid_stack_operation_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_invalid_stack_operation LibbitcoinConsensusVerify_result_type = _swig_getverify_result_invalid_stack_operation() + +func _swig_getverify_result_invalid_altstack_operation() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_invalid_altstack_operation_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_invalid_altstack_operation LibbitcoinConsensusVerify_result_type = _swig_getverify_result_invalid_altstack_operation() + +func _swig_getverify_result_unbalanced_conditional() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_unbalanced_conditional_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_unbalanced_conditional LibbitcoinConsensusVerify_result_type = _swig_getverify_result_unbalanced_conditional() + +func _swig_getverify_result_sig_hashtype() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_sig_hashtype_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_sig_hashtype LibbitcoinConsensusVerify_result_type = _swig_getverify_result_sig_hashtype() + +func _swig_getverify_result_sig_der() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_sig_der_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_sig_der LibbitcoinConsensusVerify_result_type = _swig_getverify_result_sig_der() + +func _swig_getverify_result_minimaldata() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_minimaldata_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_minimaldata LibbitcoinConsensusVerify_result_type = _swig_getverify_result_minimaldata() + +func _swig_getverify_result_sig_pushonly() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_sig_pushonly_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_sig_pushonly LibbitcoinConsensusVerify_result_type = _swig_getverify_result_sig_pushonly() + +func _swig_getverify_result_sig_high_s() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_sig_high_s_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_sig_high_s LibbitcoinConsensusVerify_result_type = _swig_getverify_result_sig_high_s() + +func _swig_getverify_result_sig_nulldummy() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_sig_nulldummy_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_sig_nulldummy LibbitcoinConsensusVerify_result_type = _swig_getverify_result_sig_nulldummy() + +func _swig_getverify_result_pubkeytype() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_pubkeytype_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_pubkeytype LibbitcoinConsensusVerify_result_type = _swig_getverify_result_pubkeytype() + +func _swig_getverify_result_cleanstack() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_cleanstack_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_cleanstack LibbitcoinConsensusVerify_result_type = _swig_getverify_result_cleanstack() + +func _swig_getverify_result_discourage_upgradable_nops() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_discourage_upgradable_nops_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_discourage_upgradable_nops LibbitcoinConsensusVerify_result_type = _swig_getverify_result_discourage_upgradable_nops() + +func _swig_getverify_result_op_return() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_op_return_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_op_return LibbitcoinConsensusVerify_result_type = _swig_getverify_result_op_return() + +func _swig_getverify_result_unknown_error() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_unknown_error_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_unknown_error LibbitcoinConsensusVerify_result_type = _swig_getverify_result_unknown_error() + +func _swig_getverify_result_tx_invalid() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_tx_invalid_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_tx_invalid LibbitcoinConsensusVerify_result_type = _swig_getverify_result_tx_invalid() + +func _swig_getverify_result_tx_size_invalid() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_tx_size_invalid_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_tx_size_invalid LibbitcoinConsensusVerify_result_type = _swig_getverify_result_tx_size_invalid() + +func _swig_getverify_result_tx_input_invalid() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_tx_input_invalid_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_tx_input_invalid LibbitcoinConsensusVerify_result_type = _swig_getverify_result_tx_input_invalid() + +func _swig_getverify_result_negative_locktime() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_negative_locktime_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_negative_locktime LibbitcoinConsensusVerify_result_type = _swig_getverify_result_negative_locktime() + +func _swig_getverify_result_unsatisfied_locktime() (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_result_unsatisfied_locktime_consensus_0731991c73947514()) + return swig_r +} + +var Verify_result_unsatisfied_locktime LibbitcoinConsensusVerify_result_type = _swig_getverify_result_unsatisfied_locktime() + +type LibbitcoinConsensusVerify_flags_type int + +func _swig_getverify_flags_none() (_swig_ret LibbitcoinConsensusVerify_flags_type) { + var swig_r LibbitcoinConsensusVerify_flags_type + swig_r = (LibbitcoinConsensusVerify_flags_type)(C._wrap_verify_flags_none_consensus_0731991c73947514()) + return swig_r +} + +var Verify_flags_none LibbitcoinConsensusVerify_flags_type = _swig_getverify_flags_none() + +func _swig_getverify_flags_p2sh() (_swig_ret LibbitcoinConsensusVerify_flags_type) { + var swig_r LibbitcoinConsensusVerify_flags_type + swig_r = (LibbitcoinConsensusVerify_flags_type)(C._wrap_verify_flags_p2sh_consensus_0731991c73947514()) + return swig_r +} + +var Verify_flags_p2sh LibbitcoinConsensusVerify_flags_type = _swig_getverify_flags_p2sh() + +func _swig_getverify_flags_strictenc() (_swig_ret LibbitcoinConsensusVerify_flags_type) { + var swig_r LibbitcoinConsensusVerify_flags_type + swig_r = (LibbitcoinConsensusVerify_flags_type)(C._wrap_verify_flags_strictenc_consensus_0731991c73947514()) + return swig_r +} + +var Verify_flags_strictenc LibbitcoinConsensusVerify_flags_type = _swig_getverify_flags_strictenc() + +func _swig_getverify_flags_dersig() (_swig_ret LibbitcoinConsensusVerify_flags_type) { + var swig_r LibbitcoinConsensusVerify_flags_type + swig_r = (LibbitcoinConsensusVerify_flags_type)(C._wrap_verify_flags_dersig_consensus_0731991c73947514()) + return swig_r +} + +var Verify_flags_dersig LibbitcoinConsensusVerify_flags_type = _swig_getverify_flags_dersig() + +func _swig_getverify_flags_low_s() (_swig_ret LibbitcoinConsensusVerify_flags_type) { + var swig_r LibbitcoinConsensusVerify_flags_type + swig_r = (LibbitcoinConsensusVerify_flags_type)(C._wrap_verify_flags_low_s_consensus_0731991c73947514()) + return swig_r +} + +var Verify_flags_low_s LibbitcoinConsensusVerify_flags_type = _swig_getverify_flags_low_s() + +func _swig_getverify_flags_nulldummy() (_swig_ret LibbitcoinConsensusVerify_flags_type) { + var swig_r LibbitcoinConsensusVerify_flags_type + swig_r = (LibbitcoinConsensusVerify_flags_type)(C._wrap_verify_flags_nulldummy_consensus_0731991c73947514()) + return swig_r +} + +var Verify_flags_nulldummy LibbitcoinConsensusVerify_flags_type = _swig_getverify_flags_nulldummy() + +func _swig_getverify_flags_sigpushonly() (_swig_ret LibbitcoinConsensusVerify_flags_type) { + var swig_r LibbitcoinConsensusVerify_flags_type + swig_r = (LibbitcoinConsensusVerify_flags_type)(C._wrap_verify_flags_sigpushonly_consensus_0731991c73947514()) + return swig_r +} + +var Verify_flags_sigpushonly LibbitcoinConsensusVerify_flags_type = _swig_getverify_flags_sigpushonly() + +func _swig_getverify_flags_minimaldata() (_swig_ret LibbitcoinConsensusVerify_flags_type) { + var swig_r LibbitcoinConsensusVerify_flags_type + swig_r = (LibbitcoinConsensusVerify_flags_type)(C._wrap_verify_flags_minimaldata_consensus_0731991c73947514()) + return swig_r +} + +var Verify_flags_minimaldata LibbitcoinConsensusVerify_flags_type = _swig_getverify_flags_minimaldata() + +func _swig_getverify_flags_discourage_upgradable_nops() (_swig_ret LibbitcoinConsensusVerify_flags_type) { + var swig_r LibbitcoinConsensusVerify_flags_type + swig_r = (LibbitcoinConsensusVerify_flags_type)(C._wrap_verify_flags_discourage_upgradable_nops_consensus_0731991c73947514()) + return swig_r +} + +var Verify_flags_discourage_upgradable_nops LibbitcoinConsensusVerify_flags_type = _swig_getverify_flags_discourage_upgradable_nops() + +func _swig_getverify_flags_cleanstack() (_swig_ret LibbitcoinConsensusVerify_flags_type) { + var swig_r LibbitcoinConsensusVerify_flags_type + swig_r = (LibbitcoinConsensusVerify_flags_type)(C._wrap_verify_flags_cleanstack_consensus_0731991c73947514()) + return swig_r +} + +var Verify_flags_cleanstack LibbitcoinConsensusVerify_flags_type = _swig_getverify_flags_cleanstack() + +func _swig_getverify_flags_checklocktimeverify() (_swig_ret LibbitcoinConsensusVerify_flags_type) { + var swig_r LibbitcoinConsensusVerify_flags_type + swig_r = (LibbitcoinConsensusVerify_flags_type)(C._wrap_verify_flags_checklocktimeverify_consensus_0731991c73947514()) + return swig_r +} + +var Verify_flags_checklocktimeverify LibbitcoinConsensusVerify_flags_type = _swig_getverify_flags_checklocktimeverify() + +func Verify_script(arg1 *byte, arg2 int64, arg3 *byte, arg4 int64, arg5 uint, arg6 uint) (_swig_ret LibbitcoinConsensusVerify_result_type) { + var swig_r LibbitcoinConsensusVerify_result_type + _swig_i_0 := arg1 + _swig_i_1 := arg2 + _swig_i_2 := arg3 + _swig_i_3 := arg4 + _swig_i_4 := arg5 + _swig_i_5 := arg6 + swig_r = (LibbitcoinConsensusVerify_result_type)(C._wrap_verify_script_consensus_0731991c73947514(C.swig_voidp(_swig_i_0), C.swig_type_1(_swig_i_1), C.swig_voidp(_swig_i_2), C.swig_type_2(_swig_i_3), C.swig_intgo(_swig_i_4), C.swig_intgo(_swig_i_5))) + return swig_r +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/consensus/consensus_wrap.cxx b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/consensus/consensus_wrap.cxx new file mode 100644 index 00000000..a2259cd0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/consensus/consensus_wrap.cxx @@ -0,0 +1,812 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 3.0.8 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + +// source: consensus.swg + +#define SWIGMODULE consensus + +#ifdef __cplusplus +/* SwigValueWrapper is described in swig.swg */ +template class SwigValueWrapper { + struct SwigMovePointer { + T *ptr; + SwigMovePointer(T *p) : ptr(p) { } + ~SwigMovePointer() { delete ptr; } + SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; } + } pointer; + SwigValueWrapper& operator=(const SwigValueWrapper& rhs); + SwigValueWrapper(const SwigValueWrapper& rhs); +public: + SwigValueWrapper() : pointer(0) { } + SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; } + operator T&() const { return *pointer.ptr; } + T *operator&() { return pointer.ptr; } +}; + +template T SwigValueInit() { + return T(); +} +#endif + +/* ----------------------------------------------------------------------------- + * This section contains generic SWIG labels for method/variable + * declarations/attributes, and other compiler dependent labels. + * ----------------------------------------------------------------------------- */ + +/* template workaround for compilers that cannot correctly implement the C++ standard */ +#ifndef SWIGTEMPLATEDISAMBIGUATOR +# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# elif defined(__HP_aCC) +/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ +/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ +# define SWIGTEMPLATEDISAMBIGUATOR template +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +#endif + +/* inline attribute */ +#ifndef SWIGINLINE +# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define SWIGINLINE inline +# else +# define SWIGINLINE +# endif +#endif + +/* attribute recognised by some compilers to avoid 'unused' warnings */ +#ifndef SWIGUNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +# elif defined(__ICC) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +#endif + +#ifndef SWIG_MSC_UNSUPPRESS_4505 +# if defined(_MSC_VER) +# pragma warning(disable : 4505) /* unreferenced local function has been removed */ +# endif +#endif + +#ifndef SWIGUNUSEDPARM +# ifdef __cplusplus +# define SWIGUNUSEDPARM(p) +# else +# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# endif +#endif + +/* internal SWIG method */ +#ifndef SWIGINTERN +# define SWIGINTERN static SWIGUNUSED +#endif + +/* internal inline SWIG method */ +#ifndef SWIGINTERNINLINE +# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE +#endif + +/* exporting methods */ +#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef GCC_HASCLASSVISIBILITY +# define GCC_HASCLASSVISIBILITY +# endif +#endif + +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +/* calling conventions for Windows */ +#ifndef SWIGSTDCALL +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define SWIGSTDCALL __stdcall +# else +# define SWIGSTDCALL +# endif +#endif + +/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ +#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) +# define _CRT_SECURE_NO_DEPRECATE +#endif + +/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ +#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) +# define _SCL_SECURE_NO_DEPRECATE +#endif + +/* Deal with Apple's deprecated 'AssertMacros.h' from Carbon-framework */ +#if defined(__APPLE__) && !defined(__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES) +# define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0 +#endif + +/* Intel's compiler complains if a variable which was never initialised is + * cast to void, which is a common idiom which we use to indicate that we + * are aware a variable isn't used. So we just silence that warning. + * See: https://github.com/swig/swig/issues/192 for more discussion. + */ +#ifdef __INTEL_COMPILER +# pragma warning disable 592 +#endif + + +#include +#include +#include +#include +#include + + + +typedef int intgo; +typedef unsigned int uintgo; + + + +typedef struct { char *p; intgo n; } _gostring_; +typedef struct { void* array; intgo len; intgo cap; } _goslice_; + + + + +#define swiggo_size_assert_eq(x, y, name) typedef char name[(x-y)*(x-y)*-2+1]; +#define swiggo_size_assert(t, n) swiggo_size_assert_eq(sizeof(t), n, swiggo_sizeof_##t##_is_not_##n) + +swiggo_size_assert(char, 1) +swiggo_size_assert(short, 2) +swiggo_size_assert(int, 4) +typedef long long swiggo_long_long; +swiggo_size_assert(swiggo_long_long, 8) +swiggo_size_assert(float, 4) +swiggo_size_assert(double, 8) + +#ifdef __cplusplus +extern "C" { +#endif +extern void crosscall2(void (*fn)(void *, int), void *, int); +extern char* _cgo_topofstack(void) __attribute__ ((weak)); +extern void _cgo_allocate(void *, int); +extern void _cgo_panic(void *, int); +#ifdef __cplusplus +} +#endif + +static char *_swig_topofstack() { + if (_cgo_topofstack) { + return _cgo_topofstack(); + } else { + return 0; + } +} + +static void _swig_gopanic(const char *p) { + struct { + const char *p; + } a; + a.p = p; + crosscall2(_cgo_panic, &a, (int) sizeof a); +} + + + + +#define SWIG_contract_assert(expr, msg) \ + if (!(expr)) { _swig_gopanic(msg); } else + + +static void Swig_free(void* p) { + free(p); +} + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void _wrap_Swig_free_consensus_0731991c73947514(void *_swig_go_0) { + void *arg1 = (void *) 0 ; + + arg1 = *(void **)&_swig_go_0; + + Swig_free(arg1); + +} + + +intgo _wrap_verify_result_eval_false_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_eval_false; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_eval_true_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_eval_true; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_script_size_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_script_size; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_push_size_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_push_size; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_op_count_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_op_count; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_stack_size_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_stack_size; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_sig_count_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_sig_count; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_pubkey_count_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_pubkey_count; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_verify_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_verify; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_equalverify_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_equalverify; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_checkmultisigverify_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_checkmultisigverify; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_checksigverify_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_checksigverify; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_numequalverify_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_numequalverify; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_bad_opcode_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_bad_opcode; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_disabled_opcode_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_disabled_opcode; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_invalid_stack_operation_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_invalid_stack_operation; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_invalid_altstack_operation_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_invalid_altstack_operation; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_unbalanced_conditional_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_unbalanced_conditional; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_sig_hashtype_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_sig_hashtype; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_sig_der_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_sig_der; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_minimaldata_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_minimaldata; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_sig_pushonly_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_sig_pushonly; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_sig_high_s_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_sig_high_s; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_sig_nulldummy_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_sig_nulldummy; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_pubkeytype_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_pubkeytype; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_cleanstack_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_cleanstack; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_discourage_upgradable_nops_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_discourage_upgradable_nops; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_op_return_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_op_return; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_unknown_error_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_unknown_error; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_tx_invalid_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_tx_invalid; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_tx_size_invalid_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_tx_size_invalid; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_tx_input_invalid_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_tx_input_invalid; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_negative_locktime_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_negative_locktime; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_result_unsatisfied_locktime_consensus_0731991c73947514() { + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_result_unsatisfied_locktime; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_flags_none_consensus_0731991c73947514() { + libbitcoin::consensus::verify_flags_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_flags_none; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_flags_p2sh_consensus_0731991c73947514() { + libbitcoin::consensus::verify_flags_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_flags_p2sh; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_flags_strictenc_consensus_0731991c73947514() { + libbitcoin::consensus::verify_flags_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_flags_strictenc; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_flags_dersig_consensus_0731991c73947514() { + libbitcoin::consensus::verify_flags_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_flags_dersig; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_flags_low_s_consensus_0731991c73947514() { + libbitcoin::consensus::verify_flags_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_flags_low_s; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_flags_nulldummy_consensus_0731991c73947514() { + libbitcoin::consensus::verify_flags_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_flags_nulldummy; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_flags_sigpushonly_consensus_0731991c73947514() { + libbitcoin::consensus::verify_flags_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_flags_sigpushonly; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_flags_minimaldata_consensus_0731991c73947514() { + libbitcoin::consensus::verify_flags_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_flags_minimaldata; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_flags_discourage_upgradable_nops_consensus_0731991c73947514() { + libbitcoin::consensus::verify_flags_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_flags_discourage_upgradable_nops; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_flags_cleanstack_consensus_0731991c73947514() { + libbitcoin::consensus::verify_flags_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_flags_cleanstack; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_flags_checklocktimeverify_consensus_0731991c73947514() { + libbitcoin::consensus::verify_flags_type result; + intgo _swig_go_result; + + + result = libbitcoin::consensus::verify_flags_checklocktimeverify; + + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +intgo _wrap_verify_script_consensus_0731991c73947514(char *_swig_go_0, long long _swig_go_1, char *_swig_go_2, long long _swig_go_3, intgo _swig_go_4, intgo _swig_go_5) { + unsigned char *arg1 = (unsigned char *) 0 ; + size_t arg2 ; + unsigned char *arg3 = (unsigned char *) 0 ; + size_t arg4 ; + unsigned int arg5 ; + unsigned int arg6 ; + libbitcoin::consensus::verify_result_type result; + intgo _swig_go_result; + + arg1 = *(unsigned char **)&_swig_go_0; + arg2 = (size_t)_swig_go_1; + arg3 = *(unsigned char **)&_swig_go_2; + arg4 = (size_t)_swig_go_3; + arg5 = (unsigned int)_swig_go_4; + arg6 = (unsigned int)_swig_go_5; + + result = (libbitcoin::consensus::verify_result_type)libbitcoin::consensus::verify_script((unsigned char const *)arg1,arg2,(unsigned char const *)arg3,arg4,arg5,arg6); + _swig_go_result = (intgo)result; + return _swig_go_result; +} + + +#ifdef __cplusplus +} +#endif + diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/store.go b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/store.go new file mode 100644 index 00000000..cc107411 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/store.go @@ -0,0 +1,91 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "fmt" + + "github.com/golang/protobuf/proto" + "github.com/hyperledger/fabric/core/chaincode/shim" + "github.com/hyperledger/fabric/examples/chaincode/go/utxo/util" +) + +// Store struct uses a chaincode stub for state access +type Store struct { + stub shim.ChaincodeStubInterface +} + +// MakeChaincodeStore returns a store for storing keys in the state +func MakeChaincodeStore(stub shim.ChaincodeStubInterface) util.Store { + store := &Store{} + store.stub = stub + return store +} + +func keyToString(key *util.Key) string { + return key.TxHashAsHex + ":" + string(key.TxIndex) +} + +// GetState returns the transaction for a given key +func (s *Store) GetState(key util.Key) (*util.TX_TXOUT, bool, error) { + keyToFetch := keyToString(&key) + data, err := s.stub.GetState(keyToFetch) + if err != nil { + return nil, false, fmt.Errorf("Error getting state from stub: %s", err) + } + if data == nil { + return nil, false, nil + } + // Value found, unmarshal + var value = &util.TX_TXOUT{} + err = proto.Unmarshal(data, value) + if err != nil { + return nil, false, fmt.Errorf("Error unmarshalling value: %s", err) + } + return value, true, nil +} + +// DelState deletes the transaction for the given key +func (s *Store) DelState(key util.Key) error { + return s.stub.DelState(keyToString(&key)) +} + +// PutState stores the given transaction and key +func (s *Store) PutState(key util.Key, value *util.TX_TXOUT) error { + data, err := proto.Marshal(value) + if err != nil { + return fmt.Errorf("Error marshalling value to bytes: %s", err) + } + return s.stub.PutState(keyToString(&key), data) +} + +// GetTran returns a transaction for the given hash +func (s *Store) GetTran(key string) ([]byte, bool, error) { + data, err := s.stub.GetState(key) + if err != nil { + return nil, false, fmt.Errorf("Error getting state from stub: %s", err) + } + if data == nil { + return nil, false, nil + } + return data, true, nil +} + +// PutTran adds a transaction to the state with the hash as a key +func (s *Store) PutTran(key string, value []byte) error { + return s.stub.PutState(key, value) +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/First_500_transactions_base64_encoded_on_testnet3.txt b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/First_500_transactions_base64_encoded_on_testnet3.txt new file mode 100644 index 00000000..36fb2e3a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/First_500_transactions_base64_encoded_on_testnet3.txt @@ -0,0 +1,908 @@ +Block: 0 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////9NBP//AB0BBEVUaGUgVGltZXMgMDMvSmFuLzIwMDkgQ2hhbmNlbGxvciBvbiBicmluayBvZiBzZWNvbmQgYmFpbG91dCBmb3IgYmFua3P/////AQDyBSoBAAAAQ0EEZ4r9sP5VSCcZZ/GmcTC3EFzWqCjgOQmmeWLg6h9h3rZJ9rw/TO84xPNVBOUewRLeXDhN97oLjVeKTHAra/EdX6wAAAAA +Block: 1 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBCDnSU0BfwYvUDJTSC//////AQDyBSoBAAAAIyECGury+GOKEpoxVvvn5e9jUiawuv1JX/A6/iyEPX46S1GsAAAAAA== +Block: 2 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDLnSU0BDgYvUDJTSC//////AQDyBSoBAAAAIyEDin9u8cjKDFiKpT+oYBKAd8nmwR5oMPTX7k52Ola3cY+sAAAAAA== +Block: 3 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIbnSU0BUQYvUDJTSC//////AQDyBSoBAAAAIyED9tn/TBKVlEXKVUnIEWg7+ciOY3siLdLgMRFUxMhc9COsAAAAAA== +Block: 4 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKrnSU0BHQYvUDJTSC//////AQDyBSoBAAAAIyECH3LeHP8Xd6lYTzGtxFgEGBTDvDnGYkGsTUMTbXEGrr6sAAAAAA== +Block: 5 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBjoSU0BagYvUDJTSC//////AQDyBSoBAAAAIyEDc+pzmn503u60Qxptd99BlywYXm6D4cMA65ExCWM5g+esAAAAAA== +Block: 6 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDHoSU0BFgYvUDJTSC//////AQDyBSoBAAAAIyEDoO+Q7VYFbhJuvloUwRLwuciQyU/ytKvp5xSIo6qUABasAAAAAA== +Block: 7 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIHoSU0BUAYvUDJTSC//////AQDyBSoBAAAAIyEChbxHksK4djxvfgi4VoytTM664Bd6zgo+7E8+TQRHFE+sAAAAAA== +Block: 8 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKDoSU0BGQYvUDJTSC//////AQDyBSoBAAAAIyECMETlaS4M62G/iAGKu5m89dAGPi8IKk5Fh5oWQHKNtbysAAAAAA== +Block: 9 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBP3oSU0BWwYvUDJTSC//////AQDyBSoBAAAAIyEDnBGEA/SSj8H0oPqm/ML/5R5FShONBOGCB2tmehT/dUasAAAAAA== +Block: 10 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDXpSU0BNgYvUDJTSC//////AQDyBSoBAAAAIyEDjIZh3LP/iadr3RHpVxLAn7AZWAajLl8O1zmwZHVne/+sAAAAAA== +Block: 11 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBH3pSU0BRwYvUDJTSC//////AQDyBSoBAAAAIyEDH96UU8YWwE7gP4Cf+gSH7sk0QMqxrQbuaga2oYw4kpasAAAAAA== +Block: 12 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBELqSU0CwgAGL1AyU0gv/////wEA8gUqAQAAACMhAgIKNC4+LiDFAAd8tDBKMVXae1qYWOoTaazXtuyzwyUErAAAAAA= +Block: 13 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJnqSU0BUgYvUDJTSC//////AQDyBSoBAAAAIyECKjNeYBvHflQBDnsV9ZeC1vcEhbC64+uF3yW6QeOtfIesAAAAAA== +Block: 14 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKHqSU0BBQYvUDJTSC//////AQDyBSoBAAAAIyEDrIfcVRiUMUkBOa7g5pC4wNQedwKRq5DOjaHqqOE732isAAAAAA== +Block: 15 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBK3qSU0BCQYvUDJTSC//////AQDyBSoBAAAAIyECpAwbcwsLplZwrckU2YVwjav4xSSwMl1E7id30QVVbKGsAAAAAA== +Block: 16 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMPqSU0BEgYvUDJTSC//////AQDyBSoBAAAAIyECwfrFEBgeQHRGx3JzWrx2WrgZdbsMPKmxYXSY6SnIhW+sAAAAAA== +Block: 17 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBFHrSU0CiQAGL1AyU0gv/////wEA8gUqAQAAACMhAu9x/ERPDFCLH+Zz9EkGacdLHUNJBNJlrjHPj8qij36nrAAAAAA= +Block: 18 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBH3rSU0BKQYvUDJTSC//////AQDyBSoBAAAAIyEDsbskjzdWg95PsEVNPlF9UYlBUaDX7pRlaPutz07igl2sAAAAAA== +Block: 19 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBLDrSU0BLwYvUDJTSC//////AQDyBSoBAAAAIyECAela3YC/7QecmoXpwcVBHvmq9Igg7/pPrp6+po6gOeasAAAAAA== +Block: 20 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBLPrSU0BAwYvUDJTSC//////AQDyBSoBAAAAIyECOCTb7SV0yI7jdXiNlWnfDqCyTM/Socpx6ix0Q2fec1usAAAAAA== +Block: 21 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBnsSU0BYwYvUDJTSC//////AQDyBSoBAAAAIyEDOxvsrCrf3LzfkqF6sW2hdDI0STQcvDDKFaguehlJhjSsAAAAAA== +Block: 22 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBBbtSU0C+gAGL1AyU0gv/////wEA8gUqAQAAACMhA7eHkgWUy0f7/M7pFb765ArC4rKVIkRg7uB1rQraTAxUrAAAAAA= +Block: 23 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBE3tSU0BNgYvUDJTSC//////AQDyBSoBAAAAIyECKifvqihaTQSfERtUPc1YLGxxuyHyCyKniRx3yXX7O8OsAAAAAA== +Block: 24 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBGnuSU0CFwEGL1AyU0gv/////wEA8gUqAQAAACMhA8BULZnHhUkkwRuChgNlmiruT0O6R8lNAKmIjwuhr7/zrAAAAAA= +Block: 25 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBP/wSU0CjQIGL1AyU0gv/////wEA8gUqAQAAACMhAxGkBMZd+Vjgbo7VWoLTzgo/gcV4AiFLSVS9x890lFRirAAAAAA= +Block: 26 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDrxSU0BMwYvUDJTSC//////AQDyBSoBAAAAIyECffJ5kZ4Q7JLmSbsjk86Kh21LCmDi2MuN4ESioZnesPKsAAAAAA== +Block: 27 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFnxSU0BGQYvUDJTSC//////AQDyBSoBAAAAIyECcJP3Vfc3TUatwc3raJDpEf2EI3rQ30yLph5MO/sy012sAAAAAA== +Block: 28 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBF7xSU0BAwYvUDJTSC//////AQDyBSoBAAAAIyEDhOZsm1BYwtjpDfh7mAKxflVlaFthoun6idSM7fGafSOsAAAAAA== +Block: 29 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNrxSU0BdwYvUDJTSC//////AQDyBSoBAAAAIyECWXKM/kRtVcixvUPEg9y21vCzgqdLCEQG4Ig8mZMlzKisAAAAAA== +Block: 30 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBIHySU0CowAGL1AyU0gv/////wEA8gUqAQAAACMhAs/LJ+fERSyRleiLOeSxjUX14Ecz5yzVWDF3lx/L0wJTrAAAAAA= +Block: 31 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKrySU0BJwYvUDJTSC//////AQDyBSoBAAAAIyECPU5mVU5PatRnuw8wIibdoUzITkeZQhk67Kpv5ezUjTSsAAAAAA== +Block: 32 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBL/ySU0BEwYvUDJTSC//////AQDyBSoBAAAAIyECtvPaaw1EP0rmDVLOibHEztobgYLCWYhVSXZJArIwpHusAAAAAA== +Block: 33 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBM7ySU0BCQYvUDJTSC//////AQDyBSoBAAAAIyEDzFQB490ZDRQ1WMOuhSC4sZ651G9sh2DJ+ZcuWuIflWCsAAAAAA== +Block: 34 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNPySU0BAQYvUDJTSC//////AQDyBSoBAAAAIyECSylQW41EXWOZ31CvExD6+aXabV0TrFSinEwMY9+pj86sAAAAAA== +Block: 35 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBTzSU0BPgYvUDJTSC//////AQDyBSoBAAAAIyECE8p6oDbtxI7jSmW2lNfLn6oxtoLi88KLdQB7BfBeBlusAAAAAA== +Block: 36 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBG3zSU0BVgYvUDJTSC//////AQDyBSoBAAAAIyEChAl8To2kjVb58pc1oWzLfRImNg9q8srVh4VHczZYV12sAAAAAA== +Block: 37 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBH3zSU0BDgYvUDJTSC//////AQDyBSoBAAAAIyEDE5yzxxZ4WFoduT16wym78lpcAw+rP70r2eMnHZ94ScqsAAAAAA== +Block: 38 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBN/0SU0CXwEGL1AyU0gv/////wEA8gUqAQAAACMhAhPWoDG6689omfxxvV8+TJgHb8Id0gkb2k3i0rkvZ/oorAAAAAA= +Block: 39 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBA71SU0BKgYvUDJTSC//////AQDyBSoBAAAAIyEDQIng3kzxC1cm+G0Bnth9Sa7KOHFuCm3z4xLyYCJ7O4+sAAAAAA== +Block: 40 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJD1SU0BfgYvUDJTSC//////AQDyBSoBAAAAIyECoY1wflhE9PVB9dwhSknejApBY/eIE0CvIKObEuf6B+asAAAAAA== +Block: 41 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBNL2SU0CPwEGL1AyU0gv/////wEA8gUqAQAAACMhAmcdzpOspNYs6o/TN5CzDiqhx9K96neEhROlO47zm49arAAAAAA= +Block: 42 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOP2SU0BDQYvUDJTSC//////AQDyBSoBAAAAIyEDfO7OWX00d7xOLX5GiwhH9WSnZqMSzmnOLg1oZ86i4cGsAAAAAA== +Block: 43 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBE/3SU0BawYvUDJTSC//////AQDyBSoBAAAAIyEDOsp3p/iuhz87/hjiQaW5MLFTEAMjdHBG9toI78bR6CWsAAAAAA== +Block: 44 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBI/3SU0BPQYvUDJTSC//////AQDyBSoBAAAAIyEDWGIJZypV1ghaNLShPzAtGfr2hY41jb8JAJ8hk9v2NwusAAAAAA== +Block: 45 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBC34SU0CmgAGL1AyU0gv/////wEA8gUqAQAAACMhAp+9ICcmETU29ZlGo4RRY25HXEhmg91nRnSBASYH18B7rAAAAAA= +Block: 46 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBFD6SU0CHQIGL1AyU0gv/////wEA8gUqAQAAACMhA4XwdH0k+Heveh7uQ3phvM9SVCbtT1l9Eq0Y3fPYsjtQrAAAAAA= +Block: 47 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBGb6SU0BEgYvUDJTSC//////AQDyBSoBAAAAIyEDZhcjinxBQXVgFLA+iAGp1VZsalDx+gptnX5pzTFgLomsAAAAAA== +Block: 48 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBHv6SU0BEQYvUDJTSC//////AQDyBSoBAAAAIyEC1/pOUjVLwQLKHrbmzekcK3mM5m27Pw2DfceQQWGPIAesAAAAAA== +Block: 49 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBKD7SU0CIgEGL1AyU0gv/////wEA8gUqAQAAACMhAiDrQHypfIhJFYRfd0eD5sw0sUdED2ddyxZjTYRiTU0OrAAAAAA= +Block: 50 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNn7SU0BNgYvUDJTSC//////AQDyBSoBAAAAIyECzrgonxvoWIwfydrc0JwZfPFzpoqE7TRNHP6fDLJXYR6sAAAAAA== +Block: 51 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFz8SU0BfQYvUDJTSC//////AQDyBSoBAAAAIyEDr0DSfmYfDJs++dvPnylmZNXo6w+uI1FSJ9pE0/LgxQisAAAAAA== +Block: 52 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBGX8SU0BBgYvUDJTSC//////AQDyBSoBAAAAIyECR0ME6erPMG6zEPONKd2e4PkWuxQbS3McimdcBviLh5SsAAAAAA== +Block: 53 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBBX9SU0CrgAGL1AyU0gv/////wEA8gUqAQAAACMhA/EIOKqd9tFpqUFm5q8D3f0UmaPOpXYHzC+BdKh9Q11lrAAAAAA= +Block: 54 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDX9SU0BGgYvUDJTSC//////AQDyBSoBAAAAIyEClk2EdET+f2E7Kt/Ayfl+I9X7zZ6Mz8jkqR2flAMszmusAAAAAA== +Block: 55 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBPn9SU0CwQAGL1AyU0gv/////wEA8gUqAQAAACMhA8v9vShdzgiq3fYDiu7o2fmp0vTpVdo8k7kTuWLDU+xtrAAAAAA= +Block: 56 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBP39SU0BAQYvUDJTSC//////AQDyBSoBAAAAIyECmp028rYoYhYHasQ1vK47uroaK1B6WLIP1WHqfo4iAzisAAAAAA== +Block: 57 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEr+SU0BSQYvUDJTSC//////AQDyBSoBAAAAIyECej6GuUWYaRu62yUOCQje4vi8K9C+VTDELG/6lMPSPbqsAAAAAA== +Block: 58 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBF/+SU0BEQYvUDJTSC//////AQDyBSoBAAAAIyECcEE7ucUapHJFm85zreQ3upb18xlIoRNc+wdnsfzPUVSsAAAAAA== +Block: 59 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKP+SU0BQgYvUDJTSC//////AQDyBSoBAAAAIyECyPrrEQItHPOXtZlEQ9qQrCdLxzTF327jDNhBP+e9kHmsAAAAAA== +Block: 60 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBLP+SU0BDgYvUDJTSC//////AQDyBSoBAAAAIyECyEpYC2LXJzJqHz8198VHG19CD1+n/kSCnxc2e6ZpBfqsAAAAAA== +Block: 61 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBCX/SU0BbwYvUDJTSC//////AQDyBSoBAAAAIyEC5QZU5g1XN84Sap0NGdZwTrxu4t3M+0A+VJ1mYM0LMcSsAAAAAA== +Block: 62 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBH7/SU0BVwYvUDJTSC//////AQDyBSoBAAAAIyEDydEjy+7iKghK4PUM8ZyOqRFwsROlC5uw/gNCN2Q9UdqsAAAAAA== +Block: 63 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNL/SU0BTQYvUDJTSC//////AQDyBSoBAAAAIyED1WiZB9m6NTr+d+ME7Wj2XpWGXSnNkIsP72cPYxEHU42sAAAAAA== +Block: 64 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBD0ASk0BZgYvUDJTSC//////AQDyBSoBAAAAIyECzGG9c2zi1DiTrg9QPSeB2rX+VIf/oONq+eJVPLX0qgasAAAAAA== +Block: 65 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJQASk0BUgYvUDJTSC//////AQDyBSoBAAAAIyEDeVzpequjyO8ZQQeEmHHhsoYTJsewby6iJGgc6KSWwpqsAAAAAA== +Block: 66 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKMASk0BCQYvUDJTSC//////AQDyBSoBAAAAIyECAiEO+Qdmz5FpUwry8Ro1MOTfWXk5J1THOTFvnXFi6VysAAAAAA== +Block: 67 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKgASk0BAgYvUDJTSC//////AQDyBSoBAAAAIyECirk7Gw8pjP7Ir8lsWfcMStVKPfkms+Go/OqOJmr0lXGsAAAAAA== +Block: 68 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOIASk0BNwYvUDJTSC//////AQDyBSoBAAAAIyECh5wT3uZUInQ/YidZdpAh8mLwMJ7VCQxJR6ieVMBNRrGsAAAAAA== +Block: 69 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBMBSk0BLgYvUDJTSC//////AQDyBSoBAAAAIyEDA66EL4cQecB7lIS2SvJhOKdVbBqDvMz2sUpg3XCrwK6sAAAAAA== +Block: 70 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBC4BSk0BFgYvUDJTSC//////AQDyBSoBAAAAIyEDk1oBxCVyg2vY53MZolz9+ZSWC+MZx9p3j3k8OFAHJ9GsAAAAAA== +Block: 71 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBGYBSk0BNQYvUDJTSC//////AQDyBSoBAAAAIyECDmH2JO8GPQAM7t9hooYcj5sUinvZ78qBuw4Dd4n0K5usAAAAAA== +Block: 72 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKUBSk0BOgYvUDJTSC//////AQDyBSoBAAAAIyECFF5f5/Z+jml3cQzeXcJRDdK8UipNynl5WxeDmlSjq1SsAAAAAA== +Block: 73 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPwBSk0BUQYvUDJTSC//////AQDyBSoBAAAAIyECnhA+aRuRezF2e8WEGG/s7V8nc8EtaztPL+0EpbfjPZqsAAAAAA== +Block: 74 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBM0CSk0CzQAGL1AyU0gv/////wEA8gUqAQAAACMhA8IkXPeRF5hovk2URYw48sE8qBZN2/hVmGHDTqfIOUPqrAAAAAA= +Block: 75 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBCEESk0CTwEGL1AyU0gv/////wEA8gUqAQAAACMhAyF77cSm6Fcc1+7SixaXLAjqbcACJueGouOB/8fL9KdbrAAAAAA= +Block: 76 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBNgESk0CsQAGL1AyU0gv/////wEA8gUqAQAAACMhA4Q4ZrFzL7O+rRNPn1GlFZSj1QPbpIB2mB+Nl8BtW3JgrAAAAAA= +Block: 77 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEEFSk0BZQYvUDJTSC//////AQDyBSoBAAAAIyEDBWUMsPAGRZhzGK/mJPCnGUdp9Uv+IEvklL2r1UTpj8CsAAAAAA== +Block: 78 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBLgFSk0BdQYvUDJTSC//////AQDyBSoBAAAAIyEDeN6b8cqvdr+sNsSTYFnPf1UdCFbmKi0gWv1FKVHr7mqsAAAAAA== +Block: 79 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNcFSk0BHQYvUDJTSC//////AQDyBSoBAAAAIyECxtpvDSQjzrxLIXUx1r9SY34QVRzE+AzhV/lFnFMV2aisAAAAAA== +Block: 80 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBP8GSk0CIQEGL1AyU0gv/////wEA8gUqAQAAACMhA4fXPIkMjM8Fw51yXPpY0LpoBqIRi49vNM2NvDZZRrNCrAAAAAA= +Block: 81 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBoHSk0BFwYvUDJTSC//////AQDyBSoBAAAAIyEDPiCVXPu1XICM1gydMr47Nc0ePwNmnm7hUBXmqskaY0SsAAAAAA== +Block: 82 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBI4HSk0BcwYvUDJTSC//////AQDyBSoBAAAAIyED4YYspc2ccGWimDbH1cofSdDAkepk8ackLroibbzSpIusAAAAAA== +Block: 83 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJ8HSk0BDwYvUDJTSC//////AQDyBSoBAAAAIyECTp/aW1UTcPN28O7w1Go7jamne+51lR8QCiSC57OzxWWsAAAAAA== +Block: 84 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBLwHSk0BGwYvUDJTSC//////AQDyBSoBAAAAIyEDLD0fFf178690BLd3hIBRMWutBwHaeksqee/yOiAdxNmsAAAAAA== +Block: 85 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBPkISk0COgEGL1AyU0gv/////wEA8gUqAQAAACMhA8ku4jTOrGgCQdXBhEmQwa8CIcIYVrgKek4mIuFlxOr8rAAAAAA= +Block: 86 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBH4JSk0CgwAGL1AyU0gv/////wEA8gUqAQAAACMhArdNqbvb9LnevbFlhSY+uK9qvP7Ue7psxbAcg4rlJ3eWrAAAAAA= +Block: 87 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBPUKSk0CcgEGL1AyU0gv/////wEA8gUqAQAAACMhA6S52CxTnl/IQyoeBkQYmzBZckrsJoGYVwOEOiZERacPrAAAAAA= +Block: 88 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDcLSk0BPwYvUDJTSC//////AQDyBSoBAAAAIyEC/xp5RA5PGqknb6ogNmXbB87Wz3BDHcexnVgIQRSCbeysAAAAAA== +Block: 89 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDsLSk0BAwYvUDJTSC//////AQDyBSoBAAAAIyECERJMGxQyGb/271PHI4bhd1jU9F3RNHBSRzEgBKCY0BmsAAAAAA== +Block: 90 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBEgMSk0CCQEGL1AyU0gv/////wEA8gUqAQAAACMhAknGp243wvzVZofd5rdbvfcvze6rb+gVYanEGskNnR9IrAAAAAA= +Block: 91 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIkMSk0BPwYvUDJTSC//////AQDyBSoBAAAAIyECC6nvDf8UAxjJV0TJgszNp0/vSx6s/xp3jS9KNQPNECqsAAAAAA== +Block: 92 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBLMMSk0BJgYvUDJTSC//////AQDyBSoBAAAAIyEDX/Pb/4LxrP8BUqJ5toAAX7zLYkAnR6CSS73Mza4uJ/SsAAAAAA== +Block: 93 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBAYNSk0BTQYvUDJTSC//////AQDyBSoBAAAAIyED238//BrNaXpFgoJQqhDfbG03KklVowE63vIF/LhRwzWsAAAAAA== +Block: 94 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBDgOSk0CKQEGL1AyU0gv/////wEA8gUqAQAAACMhA3Lt3dFjLO00uwOF5Qi0rbMWM5i4w1Px/zIKRDhJNU8ArAAAAAA= +Block: 95 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBD0OSk0BAQYvUDJTSC//////AQDyBSoBAAAAIyEDuKDxIuMDhmTrMmCxNE6VDkEzSChCj8yFp/VZ9ydLsASsAAAAAA== +Block: 96 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEEOSk0BAwYvUDJTSC//////AQDyBSoBAAAAIyEDaMPL9oFu1z1Q8EjbqHa/qAZLxBTLLyVrKxEi3Yok30SsAAAAAA== +Block: 97 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFsOSk0BFQYvUDJTSC//////AQDyBSoBAAAAIyECA23/zJ/0yI3V3PGTelRLpNJwSDDjSmV4vwATu0APHSusAAAAAA== +Block: 98 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBGIOSk0BBQYvUDJTSC//////AQDyBSoBAAAAIyECseBU+/S+VjT6CZMxNhF7s7MdCesDGFzR3+7ebDcDIJGsAAAAAA== +Block: 99 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBHQOSk0BDQYvUDJTSC//////AQDyBSoBAAAAIyEDYJIpTSiKIZSZb4WuYs6egFJKl/UljgFQHNA+aU+wlzSsAAAAAA== +Block: 100 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOEOSk0BaQYvUDJTSC//////AQDyBSoBAAAAIyECp0EHEWS0CwHErSiRPEqioQFcxbBk8MgCJyVS8Xrgh1CsAAAAAA== +Block: 101 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBN8PSk0C/AAGL1AyU0gv/////wEA8gUqAQAAACMhAuDXugKxeyPjCOvbF3DocZCvUcibYhIRvwm6c4WnnLOErAAAAAA= +Block: 102 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOgPSk0BBgYvUDJTSC//////AQDyBSoBAAAAIyECjWrD9Yi8FDFKE0YTDEAIqat0AqqfwVq+Fc2LFSEwSbKsAAAAAA== +Block: 103 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBO4PSk0BAwYvUDJTSC//////AQDyBSoBAAAAIyEDYorAJhhfbpTZx4n/5cuSwMREKksSS49oEfoujNLXrtqsAAAAAA== +Block: 104 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBAQSk0BHgYvUDJTSC//////AQDyBSoBAAAAIyEC3XXrVkgaG+NMvqLawe0bJMcD/ULrIQ+8MBEt9Tc+zBGsAAAAAA== +Block: 105 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFMQSk0BPgYvUDJTSC//////AQDyBSoBAAAAIyEDKziPAFRNIxoclk2zUULokJ6weapTPItw8jlHqKMAKomsAAAAAA== +Block: 106 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJIQSk0BPwYvUDJTSC//////AQDyBSoBAAAAIyECnap6EmSxNxBja9sb9WKBjEOc+IaVL11ZEfuhicQETSKsAAAAAA== +Block: 107 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPoQSk0BYQYvUDJTSC//////AQDyBSoBAAAAIyEDQbRZLdFqTyYVWs1rOWpWBLenSg+e/GvSst+fkWElJtysAAAAAA== +Block: 108 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBM8RSk0C0gAGL1AyU0gv/////wEA8gUqAQAAACMhAlCVtoPrkh4/BjYdI2SNmZQslxj2Ai6F4L9nsNGOSQ94rAAAAAA= +Block: 109 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBHsSSk0CqQAGL1AyU0gv/////wEA8gUqAQAAACMhAkVeiQoVVJnM3cKkTS2KpE6VtNM7Hv5m81yM0OLoeE35rAAAAAA= +Block: 110 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJ4SSk0BIQYvUDJTSC//////AQDyBSoBAAAAIyED/MYoWE+Nakd/ASdja62uaaDg8YBaBlPId6zNo9QvOeCsAAAAAA== +Block: 111 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBAETSk0BXgYvUDJTSC//////AQDyBSoBAAAAIyEDulAFvCPjIXYYydMeS9Hy9GgxGV1FMXPhjeXT4TAsWwisAAAAAA== +Block: 112 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBMETSk0CugAGL1AyU0gv/////wEA8gUqAQAAACMhApYlJaLMQwsCUvCvE2GitF+TAmd3RtY1/OlpcSRgBxWhrAAAAAA= +Block: 113 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBAUUSk0BQQYvUDJTSC//////AQDyBSoBAAAAIyEDKEdW/gN0khwyVjZKfx9nJcvH4qOOczj8zqJLykLlCwesAAAAAA== +Block: 114 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBoUSk0BEwYvUDJTSC//////AQDyBSoBAAAAIyEDL/EK5v6tK6oGqFFqe8//IV0PA4SAAQSL9oBlHCE7+I2sAAAAAA== +Block: 115 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDAUSk0BEgYvUDJTSC//////AQDyBSoBAAAAIyEDrFOsSWu4ejinHQ0ZyCsYeFn2lmOi0IZCNlCN7jEiEVOsAAAAAA== +Block: 116 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFIUSk0BHwYvUDJTSC//////AQDyBSoBAAAAIyECj0sipvPHM6oX2Suk6PK+LqKb1d4d/p1V/1QzP9w28zasAAAAAA== +Block: 117 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBDsVSk0C5wAGL1AyU0gv/////wEA8gUqAQAAACMhAmeMh63HQmd8cON/IfxgbUeQ7dFT1K21wLz9pxQS4Ry8rAAAAAA= +Block: 118 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBHEVSk0BMQYvUDJTSC//////AQDyBSoBAAAAIyECN/Qd2eah2UkEmQg2RIfkcLW0ioNNergQqVMdEfek6resAAAAAA== +Block: 119 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBI4WSk0CGwEGL1AyU0gv/////wEA8gUqAQAAACMhAzMl14BRqQarAAF+6UfE6MZ9xSjCdSfs1kvgxHmb655FrAAAAAA= +Block: 120 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBIsXSk0C9wAGL1AyU0gv/////wEA8gUqAQAAACMhAl/2wZV0zb65Vo0vpQlAoAGfK6mW/XdHHHGupdwMOK4vrAAAAAA= +Block: 121 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBAMYSk0BdwYvUDJTSC//////AQDyBSoBAAAAIyEDFeUkW4kgurJkKtZppFFONYbuCUqngDiX/Pt9+H0NJHSsAAAAAA== +Block: 122 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBAYSk0BCwYvUDJTSC//////AQDyBSoBAAAAIyECjMDQibQYuqWWAFTuz6dY6kNMSlqIosrrvIdLsUQmfRusAAAAAA== +Block: 123 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBoYSk0BBwYvUDJTSC//////AQDyBSoBAAAAIyEDxmWiC8T1BP8SGur/FIWgXfxYYcHKeL4npwGuFq67ACKsAAAAAA== +Block: 124 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBEgZSk0CKwEGL1AyU0gv/////wEA8gUqAQAAACMhAwHf2sC7W2d2IH994GJVVX7tRHe32CbuCtrzo2MLuMYVrAAAAAA= +Block: 125 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFUZSk0BCwYvUDJTSC//////AQDyBSoBAAAAIyED0hDa6WdJtpZ6p98G6m2UjqiixKyIuJ0MFPajGmjssBmsAAAAAA== +Block: 126 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKEZSk0BSwYvUDJTSC//////AQDyBSoBAAAAIyEC6Tum2NedfqmBS8N+FQE+NDwZ9KFXXPVWJyzmRk8JCCqsAAAAAA== +Block: 127 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBO8ZSk0BSgYvUDJTSC//////AQDyBSoBAAAAIyEC7KD44OHRMoAgeSAAC7x0Oj84FPEZi1Xg4SBSggQS4t2sAAAAAA== +Block: 128 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBCEaSk0BLQYvUDJTSC//////AQDyBSoBAAAAIyED03efe2zTPZ5E5IEp9ISyf0FMMZEaBTOW03/yCvR2GM+sAAAAAA== +Block: 129 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBE4aSk0BKgYvUDJTSC//////AQDyBSoBAAAAIyECwalSu7EuBcSrjEG2inHKaIpIuFyoK1DRQJVYLf+HSjWsAAAAAA== +Block: 130 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBGwaSk0BGgYvUDJTSC//////AQDyBSoBAAAAIyEDnJcLkSa7HVF9W8TBdvX3Vc0B5uy2lxV8HzLiYl89CSSsAAAAAA== +Block: 131 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBKcbSk0CNgEGL1AyU0gv/////wEA8gUqAQAAACMhAgwI2E8OE8zFqqaK+g+tivMz9gGHpo+bHjh6ezyFdarBrAAAAAA= +Block: 132 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMUbSk0BGgYvUDJTSC//////AQDyBSoBAAAAIyED3vQjnrHezODS7A3yL6p+uEqBalS+A3ZcnJv1TGYlmdusAAAAAA== +Block: 133 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBAAcSk0BNwYvUDJTSC//////AQDyBSoBAAAAIyECPgylKGKmLvlCsYsvfc6etncxnBfkOzyCsUc+2f/5/D+sAAAAAA== +Block: 134 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDkcSk0BNwYvUDJTSC//////AQDyBSoBAAAAIyEDmAG3xKRdjqz1TlXMHkjy8VCwBa7Z0BXDgSFyRhbSsiCsAAAAAA== +Block: 135 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBNQcSk0ClwAGL1AyU0gv/////wEA8gUqAQAAACMhAql6KbWWtQ3glHcRUGYj3ZoP5FNTn8LrGsWCelXHorCDrAAAAAA= +Block: 136 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOYcSk0BDgYvUDJTSC//////AQDyBSoBAAAAIyEDI8XxVM4wiDQ8N0moqKA3aYzTf30OHKpT/oNa8gWnr2qsAAAAAA== +Block: 137 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBMwdSk0C4QAGL1AyU0gv/////wEA8gUqAQAAACMhAo49WfWmzQi7F5tzwpGkvJ6e8RKR7OYSVJSeKT9IiGhtrAAAAAA= +Block: 138 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNodSk0BCQYvUDJTSC//////AQDyBSoBAAAAIyECi017LAVObSf/5Rwfix/FhWBC2jNRTlZ4KfrnUnvfmTOsAAAAAA== +Block: 139 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBO8dSk0BFAYvUDJTSC//////AQDyBSoBAAAAIyECW2XIUIXSxutXOlHs48KS0x7TKI/XXyPp59+kvgAFu6isAAAAAA== +Block: 140 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPcdSk0BAwYvUDJTSC//////AQDyBSoBAAAAIyEDpl1cLBpqfSzONTnwQsdqHOFjhHH0fdVVFDXhrKHzcz2sAAAAAA== +Block: 141 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBIkeSk0CjwAGL1AyU0gv/////wEA8gUqAQAAACMhAo639YmdK+SsumPwiPgosjcIPN4bguWzANGhJONA6npKrAAAAAA= +Block: 142 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBP4eSk0BcwYvUDJTSC//////AQDyBSoBAAAAIyEDh1Y6ou0Q7r88w3LyFO4Ou+VAckXDrbCqK+ieFH3jksCsAAAAAA== +Block: 143 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBAcfSk0BBgYvUDJTSC//////AQDyBSoBAAAAIyECgYYEfoORKB4/4+fBR2LN2pELTRbhJSpFEos+/kwqOWmsAAAAAA== +Block: 144 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBJofSk0CjwAGL1AyU0gv/////wEA8gUqAQAAACMhAlR7Ij1Y612nx2kHSPcKO6sVCct1ePqskDI5nwtrzjHWrAAAAAA= +Block: 145 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBDsgSk0CngAGL1AyU0gv/////wEA8gUqAQAAACMhA//fMrrnSOufu49dboDO10CHqbQrMLK8IVpadlmbklNIrAAAAAA= +Block: 146 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBH0gSk0BPQYvUDJTSC//////AQDyBSoBAAAAIyEC5OG3sNSMSlP9KpYGnUWZdDg5VNohjMPMsH5fW6AxYNesAAAAAA== +Block: 147 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOggSk0BZQYvUDJTSC//////AQDyBSoBAAAAIyEDeEPHfTsL4Bfb3ccC4idXbDyNqcTkrZKEZVvj17uvpRSsAAAAAA== +Block: 148 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBAAhSk0BGAYvUDJTSC//////AQDyBSoBAAAAIyED57ygEjbUgyC3aieMvHbX1pcm4LCUC3IOfdl+PP4fbGWsAAAAAA== +Block: 149 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBC4hSk0BKwYvUDJTSC//////AQDyBSoBAAAAIyED+FCDPTLkqxp0MVfJluKh57I19Dn9Iih7Woi6Tb8afRWsAAAAAA== +Block: 150 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBJIiSk0CXgEGL1AyU0gv/////wEA8gUqAQAAACMhA+mAqc9h4nD0t45VfLx2UUUA0/p4kqxabd2ZmYuq6gbkrAAAAAA= +Block: 151 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBLQjSk0CHwEGL1AyU0gv/////wEA8gUqAQAAACMhAmPucb2v4yUFUs+fsMFzQHJ1j/9ce58LGgRe6RRh/euHrAAAAAA= +Block: 152 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBB0kSk0BZQYvUDJTSC//////AQDyBSoBAAAAIyEC9xVG/Fl+Y+KnLa3u61DAymQHmlpTDLAd2TlxbUHp1ICsAAAAAA== +Block: 153 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIckSk0BZwYvUDJTSC//////AQDyBSoBAAAAIyECTRtIq6UP01DI9p7iiDVWNa/jito7eNknrlptxob8CMmsAAAAAA== +Block: 154 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMUkSk0BOQYvUDJTSC//////AQDyBSoBAAAAIyEDRUuy+NWMnk9ILuZ8DsapFVsOEDCC2KhTZXhMPg/0pLGsAAAAAA== +Block: 155 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBCglSk0BXQYvUDJTSC//////AQDyBSoBAAAAIyECpWAAkqzDwjMqnXaDKK1kwh8APDmky4ymzsjsiQwAPIysAAAAAA== +Block: 156 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBOklSk0CvwAGL1AyU0gv/////wEA8gUqAQAAACMhAyNBmkFIDhmpISxIaAl8BYhRlGkBGV02hWlvr5HUQ8SNrAAAAAA= +Block: 157 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPMlSk0BBwYvUDJTSC//////AQDyBSoBAAAAIyECVUwl8GtKXoE/NvfIsnO79lk3xtuTS0whn0U9xaWNfZ2sAAAAAA== +Block: 158 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBIEmSk0CiwAGL1AyU0gv/////wEA8gUqAQAAACMhA2eaRhiZvGK0In2a/nKOXB769+5t51fHwe27IRDD8RDWrAAAAAA= +Block: 159 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJUmSk0BEgYvUDJTSC//////AQDyBSoBAAAAIyECSnRxC9g7iWyJOp5+YM/FZgmbcbPsmVh5aSkjv/1Fr+KsAAAAAA== +Block: 160 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBL8mSk0BJwYvUDJTSC//////AQDyBSoBAAAAIyEC5D7rknn6lh1+hyHQtrGTqi5eDm7RQ3kZ9nTgfZeqQO2sAAAAAA== +Block: 161 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBIAnSk0CvgAGL1AyU0gv/////wEA8gUqAQAAACMhAky0lADzyWXLORNQEhDBS4Y+ALXvKIBDqAc++PzHoWMfrAAAAAA= +Block: 162 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPwnSk0BeQYvUDJTSC//////AQDyBSoBAAAAIyEDZl+fHnBeazj0LWAi5pTzm/sexX+/HOAWCH1HgkKwPJGsAAAAAA== +Block: 163 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBMkoSk0CygAGL1AyU0gv/////wEA8gUqAQAAACMhA8WnNOO3JQUBUrPDxen13ndh2yW+n3MxlW+XRd2iTLcCrAAAAAA= +Block: 164 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOooSk0BHQYvUDJTSC//////AQDyBSoBAAAAIyEC/lxWWAay2wT4o39Tr2Ns7nwO+lyMF5SZq8rI1U1X/FKsAAAAAA== +Block: 165 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBHspSk0CjwAGL1AyU0gv/////wEA8gUqAQAAACMhAk3t/tXOCj9LycCuXAWJ0v8jtOUZvOEgiA/jVcpaDVusrAAAAAA= +Block: 166 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBBIqSk0CkwAGL1AyU0gv/////wEA8gUqAQAAACMhA9xfxtKVRJeu2iyjBtle7aNf4PX9iJp49sOdNZngbhberAAAAAA= +Block: 167 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBUqSk0BAwYvUDJTSC//////AQDyBSoBAAAAIyEDzt1mHK9GZEgenCDf5gVQ9pkqBW2ynXSIx+R/u1p4+7+sAAAAAA== +Block: 168 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBB8qSk0BBgYvUDJTSC//////AQDyBSoBAAAAIyECcmG4uffmlftTc8/q0HovvNkqByGT9iSYD1JLoD3T2KGsAAAAAA== +Block: 169 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBCQqSk0BAQYvUDJTSC//////AQDyBSoBAAAAIyECKJDBT07ersXWrdbd1y6AZ2YDmQQ6+Vp4g6NLUMTJ+qysAAAAAA== +Block: 170 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBGgqSk0BQgYvUDJTSC//////AQDyBSoBAAAAIyECZWWUoDCWh1c1W9w74ve+UH981Eo1UM5e/1v5cAU6fOSsAAAAAA== +Block: 171 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIYqSk0BGQYvUDJTSC//////AQDyBSoBAAAAIyEDF2fHjUsx87d2NosEP+141eCTd+K3U51XYtvUrlrtDN6sAAAAAA== +Block: 172 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBK4qSk0BJwYvUDJTSC//////AQDyBSoBAAAAIyEDFRrbmh92qUy24UA0dOBXZkjabZdjzX09/eehBoXur4WsAAAAAA== +Block: 173 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBDQsSk0CgwEGL1AyU0gv/////wEA8gUqAQAAACMhA9V0fQUO8S9LLUYyAF/C1pjsS4Nj04HBCWOIMBeJQpIfrAAAAAA= +Block: 174 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJIsSk0BWgYvUDJTSC//////AQDyBSoBAAAAIyEDUY2+hN3z/qi3FLQeVdbXeo2qvk+n2HI7YnmL++mj2JqsAAAAAA== +Block: 175 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBA0tSk0BdwYvUDJTSC//////AQDyBSoBAAAAIyED2ajBIKQoSY0sQtN9UXzjxN9RdlATZuFxZtE/VNb8TRGsAAAAAA== +Block: 176 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBCktSk0BGgYvUDJTSC//////AQDyBSoBAAAAIyED0zYlPDsSgALLnDg8eSTEv1O+XSZip7udyNxu6mct6dysAAAAAA== +Block: 177 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBD4tSk0BEwYvUDJTSC//////AQDyBSoBAAAAIyECnmCVvaEzV5T+87o5aRJ7V+zCO1cDMiN8RQrpstQoIC2sAAAAAA== +Block: 178 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEEtSk0BAQYvUDJTSC//////AQDyBSoBAAAAIyECw1GLuJsZoO7CcGxZqIj0Fde9iM46b2hCOkkPzYbPpVCsAAAAAA== +Block: 179 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBNQtSk0CjwAGL1AyU0gv/////wEA8gUqAQAAACMhA9FiMoAzSvLf//IuTOJ7iIr42iWVGqjSPJgOwD/I11G1rAAAAAA= +Block: 180 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBIkuSk0CsQAGL1AyU0gv/////wEA8gUqAQAAACMhAgzoxgCUp6u2tfbFsyVyNtQa1/eOlPEKsP22ypizmbPArAAAAAA= +Block: 181 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNcuSk0BSQYvUDJTSC//////AQDyBSoBAAAAIyED/KDiunzajPWWBt5052FD09r91nJKgwvJUXu9j+zK8qCsAAAAAA== +Block: 182 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOQuSk0BCwYvUDJTSC//////AQDyBSoBAAAAIyECAbjIKatNox8k1l5eferyl5W0rT74d1W4ZMHOlBmCypWsAAAAAA== +Block: 183 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDYvSk0BTQYvUDJTSC//////AQDyBSoBAAAAIyECDCHJxkNMLSKT4njHLAKf6Fie9Y6EIKdO1Sh7OpFaHB2sAAAAAA== +Block: 184 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBNgvSk0CngAGL1AyU0gv/////wEA8gUqAQAAACMhAkuwZCiL1dTp6Gkdi29dKmRdOduF1BfZOSTmEeGVX6b0rAAAAAA= +Block: 185 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPkvSk0BHwYvUDJTSC//////AQDyBSoBAAAAIyECxpIXgk3R2CVVVDs9VbcrPR9+ENIS/+EmgydRuJb02CisAAAAAA== +Block: 186 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBJgwSk0CmQAGL1AyU0gv/////wEA8gUqAQAAACMhAtL4lYkIp7ccSXLAtdvkK4ItTk1+TGDCEzuV5nEyBVErrAAAAAA= +Block: 187 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOwwSk0BUgYvUDJTSC//////AQDyBSoBAAAAIyECPCzw98DWpVH8vkz5wB/gBPPv/PSW9hpJuvuBmUzqyyKsAAAAAA== +Block: 188 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBPsxSk0CCwEGL1AyU0gv/////wEA8gUqAQAAACMhAvngQPVLq7NX+R44ubEpXFXPa54gDs75/TuqqNVfIISqrAAAAAA= +Block: 189 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBCQySk0BJQYvUDJTSC//////AQDyBSoBAAAAIyECcV6R030jneqDLxRg6R42gRXYymzCOn2pZnlautnjtpmsAAAAAA== +Block: 190 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEIySk0BGgYvUDJTSC//////AQDyBSoBAAAAIyECOsJ4ba9fVJTKq/sBzn8ZyEMY40Xde7mq8IqgxzJsiP2sAAAAAA== +Block: 191 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBHwySk0BNgYvUDJTSC//////AQDyBSoBAAAAIyEDYaxjeSGC4vmLLnZSBiOQoVs/N8OQhh1VjbsmvSJWDeOsAAAAAA== +Block: 192 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKcySk0BKgYvUDJTSC//////AQDyBSoBAAAAIyEDE6nEK2vcgUcSPaAGG1lcRoVpH9pMgMELnLyWp8PSEtSsAAAAAA== +Block: 193 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPkySk0BTwYvUDJTSC//////AQDyBSoBAAAAIyECgiabwnuNypax6R76wnwP+WoSo5URuQfZJNXGzMJMDHCsAAAAAA== +Block: 194 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDozSk0BPAYvUDJTSC//////AQDyBSoBAAAAIyECRpq1+j+DYgxIgFHEm9UXzHN17P9kTVK05kSzXTwJbgusAAAAAA== +Block: 195 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBPUzSk0CtQAGL1AyU0gv/////wEA8gUqAQAAACMhA255L0d5BkzSHLyHyk1k2g8YQ+rO+KUmbt2wRBdI4IAXrAAAAAA= +Block: 196 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBE0Sk0BGQYvUDJTSC//////AQDyBSoBAAAAIyECAIZcl1++mP3bwjoeLm+zNyIQs+IvDkC1PCV4PTBlmtGsAAAAAA== +Block: 197 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBHI0Sk0BXQYvUDJTSC//////AQDyBSoBAAAAIyECjLR7uNNby9GgkoGEDLZJ9E+5jbEpdYjmn+DIaqV7EICsAAAAAA== +Block: 198 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIc0Sk0BEgYvUDJTSC//////AQDyBSoBAAAAIyED2qBTZEmx5B7uBDjoBvifJC47pnN69ttFkXMLKYbIV/2sAAAAAA== +Block: 199 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBN40Sk0BVwYvUDJTSC//////AQDyBSoBAAAAIyEDqq5d+o3hT8+n8SFTXNxKed5P2hHyzqF5aueZsBs8q/isAAAAAA== +Block: 200 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFw1Sk0BegYvUDJTSC//////AQDyBSoBAAAAIyECfYhreF3fEPCFznCYEHUP49yTjI2+QNlrB/Gnq5CcsF+sAAAAAA== +Block: 201 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIE1Sk0BIQYvUDJTSC//////AQDyBSoBAAAAIyED/MnOAprXSvn+yszmi8x3XMbvywAKC4zCs6rK1IULxLCsAAAAAA== +Block: 202 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIQ1Sk0BAQYvUDJTSC//////AQDyBSoBAAAAIyEDGLR8jsPYWgkNOT25W2J35cPx1tEynq0CqOcvIzc+/JesAAAAAA== +Block: 203 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKg1Sk0BIQYvUDJTSC//////AQDyBSoBAAAAIyEDpTE0hjwmpiIpprcrlfdySjeIXsPXiHcRsbc1nuzsNeCsAAAAAA== +Block: 204 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBM81Sk0BJQYvUDJTSC//////AQDyBSoBAAAAIyECFv8YWuZ34zrgQrQJtZm7l1uU/+VAiK+MPKNp6LwyK/CsAAAAAA== +Block: 205 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNw1Sk0BCQYvUDJTSC//////AQDyBSoBAAAAIyEDqIiMpDLtIWiJdsenyU/cG+8Dkb1K6fFgIw0+xtrJpH+sAAAAAA== +Block: 206 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDg2Sk0BWwYvUDJTSC//////AQDyBSoBAAAAIyEDkkPygwnlTXCiX1sKhnXsLegIt0Ljcr9xpFA1SAchL5usAAAAAA== +Block: 207 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEY2Sk0BCQYvUDJTSC//////AQDyBSoBAAAAIyEC0cirEKovJKnAWPMlnZASXhXiq5hBtVY9NmHia/SDip6sAAAAAA== +Block: 208 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIs2Sk0BQQYvUDJTSC//////AQDyBSoBAAAAIyEDR3mrcSLWZyPk+AEZeqDYbMU369AyilWs62jasGgH/FisAAAAAA== +Block: 209 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPc2Sk0BZgYvUDJTSC//////AQDyBSoBAAAAIyECI1tcjpvtgMvY13MdVfn9cI0Q66cYW5MEW2YTmMF0DGqsAAAAAA== +Block: 210 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBKU3Sk0CqwAGL1AyU0gv/////wEA8gUqAQAAACMhA4UT2yCaEBXO8+K1tsUXtXvcF/gUyER4o6Mp88+7U7o4rAAAAAA= +Block: 211 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBM43Sk0BJwYvUDJTSC//////AQDyBSoBAAAAIyEDQztds6F7JDGdYV3FwkUj1r7QuyPBfdtwItfxQpwDjPSsAAAAAA== +Block: 212 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNc3Sk0BBgYvUDJTSC//////AQDyBSoBAAAAIyEDkO6NUxYzgjwm87IpiOTuAOggdX4N8eq3yLWExeVjzxWsAAAAAA== +Block: 213 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEM4Sk0BaQYvUDJTSC//////AQDyBSoBAAAAIyECVggb+D65XJ0dUkYoiY6b8dQ2WrI/1Slbqnx1ksHEndSsAAAAAA== +Block: 214 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKo4Sk0BYwYvUDJTSC//////AQDyBSoBAAAAIyECBIkqmiTU8fNIMESRp4yM/BAhwbuwjyf3JgY3lYArr06sAAAAAA== +Block: 215 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBI85Sk0C4gAGL1AyU0gv/////wEA8gUqAQAAACMhAkuKR3KQysRLoewC6BecSqjM+t3ka1XFiNlBB86Te8ARrAAAAAA= +Block: 216 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBKE6Sk0CDQEGL1AyU0gv/////wEA8gUqAQAAACMhA7jPtN3qUeGA6atc5I6F+797GlFI9rOt/oDjZhAEJ/x6rAAAAAA= +Block: 217 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBCE7Sk0BfwYvUDJTSC//////AQDyBSoBAAAAIyECGcFv4b+90LIVuMhMZrmZrBL2HElwCE/ZeIwp2lSkbFOsAAAAAA== +Block: 218 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDI7Sk0BDwYvUDJTSC//////AQDyBSoBAAAAIyECVMM/t4acgW2wl3m7rNrmW2Bcb6o9eysiGc5ZkimmKk2sAAAAAA== +Block: 219 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEU7Sk0BDwYvUDJTSC//////AQDyBSoBAAAAIyED9fuhtvoIzHBSYAYPUi18+TxpIuT3xLBEo5jugxaqzJKsAAAAAA== +Block: 220 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJg7Sk0BTQYvUDJTSC//////AQDyBSoBAAAAIyEChBswuJJl+LxHr3C8ZIa0nhEHu9dF7CBr9KIg9nc3UWesAAAAAA== +Block: 221 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBN07Sk0BQwYvUDJTSC//////AQDyBSoBAAAAIyECTfrdKVALUbJ2oTu3TOt89rmu14vx8AzqVBauraYZGgWsAAAAAA== +Block: 222 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDM8Sk0BUQYvUDJTSC//////AQDyBSoBAAAAIyEDEV1Fnz7h+T1mFnKt5rmQfzQyPHUQ1+2t4ggDkaMcc9GsAAAAAA== +Block: 223 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIE8Sk0BSgYvUDJTSC//////AQDyBSoBAAAAIyEC2sGJQbO4JHenGo2TZQQJcET2SFD2GiXBolI5/CuAU7ysAAAAAA== +Block: 224 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIk8Sk0BBQYvUDJTSC//////AQDyBSoBAAAAIyECAvjkjnxZZ5iWH+/mxnKPN4D4g5CowExSUXPQpoi3S42sAAAAAA== +Block: 225 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBM88Sk0BQgYvUDJTSC//////AQDyBSoBAAAAIyEDEuJepCVFIAzYpkz71pIQRcbXJntufmttiYSx4Je26desAAAAAA== +Block: 226 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNo8Sk0BDAYvUDJTSC//////AQDyBSoBAAAAIyECLZc94YDLPFptsR2czEZhaZ+pcdPoLYYVJB751wF34FesAAAAAA== +Block: 227 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOI8Sk0BBgYvUDJTSC//////AQDyBSoBAAAAIyECfG5yGKhAyG0ZcdqyJU/qSksw97f/IiRxi+V5VaeyOn6sAAAAAA== +Block: 228 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBC89Sk0BSgYvUDJTSC//////AQDyBSoBAAAAIyEDLtOWt889VoeQivkM0OD5gPvu4EZjsearjW+6aAktEIusAAAAAA== +Block: 229 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDM9Sk0BAgYvUDJTSC//////AQDyBSoBAAAAIyECANaEjBFFTE1JizLMEMoGfQVkfiSwJHqradz50PWbYwqsAAAAAA== +Block: 230 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBGo+Sk0CMwEGL1AyU0gv/////wEA8gUqAQAAACMhAiRR64mo80zoSkOCKV95wLrA3gRJbNMCE9T0oxAIvcjYrAAAAAA= +Block: 231 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMQ+Sk0BVwYvUDJTSC//////AQDyBSoBAAAAIyEDcn8cAvoY/POn5kd0YqL63Ub6xgexr8TqR0Tls7wu60msAAAAAA== +Block: 232 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPA+Sk0BKQYvUDJTSC//////AQDyBSoBAAAAIyECjWiw8RmTXPx4gsMqorvySezHazpv92KB9eZ9PHj04BqsAAAAAA== +Block: 233 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBA4/Sk0BGgYvUDJTSC//////AQDyBSoBAAAAIyECNdE1/RytMjMSHbHimpZmjabjB+8EYqZniTebq7N+ghKsAAAAAA== +Block: 234 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFE/Sk0BQgYvUDJTSC//////AQDyBSoBAAAAIyEDmekRYSKx5XfTCkyZVAdiP6Q4DTHxwNivraFaO97GvEKsAAAAAA== +Block: 235 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBNY/Sk0CggAGL1AyU0gv/////wEA8gUqAQAAACMhAkHJPaTCsoHXiY2be2mOKtscOGlv2qpYRa79Jz7Vp3UnrAAAAAA= +Block: 236 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEBASk0BZQYvUDJTSC//////AQDyBSoBAAAAIyEDeDF4XubIYSUDpx4+aosCmjB7gkUp08Nr6gs7QBx18N2sAAAAAA== +Block: 237 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJZASk0BUwYvUDJTSC//////AQDyBSoBAAAAIyEDq6NpbCSWZNlsn+fgnTEBAHEYnACZXZVzAmrrV+4Y4UKsAAAAAA== +Block: 238 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBChBSk0CjQAGL1AyU0gv/////wEA8gUqAQAAACMhAtyS1H1w3anahuWIOZyrKS1kex0IvtxmonHeXFfUWmEDrAAAAAA= +Block: 239 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBM9BSk0CoQAGL1AyU0gv/////wEA8gUqAQAAACMhAlNuTA+BQrHA0LOtsgkwKzhzIuzDbyjyHdMgEQOc+ANSrAAAAAA= +Block: 240 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOBBSk0BCgYvUDJTSC//////AQDyBSoBAAAAIyEDdrS5vHRcn6Akg58B/WI11I9TDq5rwQxpB87c95kCDOusAAAAAA== +Block: 241 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBO1BSk0BCQYvUDJTSC//////AQDyBSoBAAAAIyEC+sHBligYx4TtS+cWEZhv2wbBlXfUEPREeqnI5wWYNgmsAAAAAA== +Block: 242 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBPFCSk0C/gAGL1AyU0gv/////wEA8gUqAQAAACMhAz5/DxQyf8ROkF4Pg2gD8MYJED0F/URrV0awvF4FMRKNrAAAAAA= +Block: 243 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBJ1DSk0CqgAGL1AyU0gv/////wEA8gUqAQAAACMhAvEL6Z0o6OqWZOUYN/3jknjg73MN6uEfYrO8U0szpYcOrAAAAAA= +Block: 244 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMVDSk0BJgYvUDJTSC//////AQDyBSoBAAAAIyEDgzMUayirzRYw3yrhUGTSSwIKEH7UVviFj4UC72FDRlesAAAAAA== +Block: 245 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBClESk0BYwYvUDJTSC//////AQDyBSoBAAAAIyEDsknmetlzUMelgrf+MTCgNbpc6IsOyW0170PjRJT2dFusAAAAAA== +Block: 246 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBLJESk0ChQAGL1AyU0gv/////wEA8gUqAQAAACMhAuNLBd7+swlxHxCEeLiXEOYRW/gFQdlgwnIg1JmHbbFKrAAAAAA= +Block: 247 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBAZFSk0BUQYvUDJTSC//////AQDyBSoBAAAAIyED8NnbkMpwQSlCl2bnp7p9Ah38qaf/idUQWm5qElWt89OsAAAAAA== +Block: 248 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBNxFSk0C1AAGL1AyU0gv/////wEA8gUqAQAAACMhAt7m1hSRY4iYKgdUxenze6Z4eKAe2wA3KD8ldqOw8IohrAAAAAA= +Block: 249 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPtFSk0BGwYvUDJTSC//////AQDyBSoBAAAAIyECoxw6WUVf3l0sGw5/qht59qsliYPKImFMIBrzITNSvbOsAAAAAA== +Block: 250 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBB5GSk0BHQYvUDJTSC//////AQDyBSoBAAAAIyEDa/5HErDUCl+ilct1eVsU1FR8A3nFJHHBJX3myJtQuSusAAAAAA== +Block: 251 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJtGSk0BewYvUDJTSC//////AQDyBSoBAAAAIyEDOfeN78x5nXPqNHxfujrEVkRbFrgKArtNuKQz4umMDMKsAAAAAA== +Block: 252 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBO5GSk0BTwYvUDJTSC//////AQDyBSoBAAAAIyECgARqRE+dW6czGMxEd4Qp62s/tOtSOf2yfqTXLQigx/isAAAAAA== +Block: 253 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBCFHSk0BLQYvUDJTSC//////AQDyBSoBAAAAIyECGlK3+ujjmC3/bNJUwmrULEeC9wxE6uUTymGByu0Nop2sAAAAAA== +Block: 254 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBHJHSk0BTQYvUDJTSC//////AQDyBSoBAAAAIyEDr1fLoRViqetDWdhvOnfoTg/YbqmCjZK6n5vUAjOHw1OsAAAAAA== +Block: 255 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBKJISk0CKgEGL1AyU0gv/////wEA8gUqAQAAACMhAiF850NCmPpCLZg6E1c2vK8Y12mh0SRqj5UHoiwegTE0rAAAAAA= +Block: 256 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBN9ISk0BOwYvUDJTSC//////AQDyBSoBAAAAIyEDVsPykwKGvHLHzZXEaKdvUxqXECAP9vU1aEunYXrtTQCsAAAAAA== +Block: 257 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFhJSk0BdQYvUDJTSC//////AQDyBSoBAAAAIyEDa7ISIXjuDKz+uNL5/TL3KYXhTFXj2qfjr02EURWSut2sAAAAAA== +Block: 258 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBDFKSk0C1gAGL1AyU0gv/////wEA8gUqAQAAACMhA/VtPpHLdmU8spftyBYtXH857a+QxbZ/5G3YSxObE+lhrAAAAAA= +Block: 259 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDdKSk0BAQYvUDJTSC//////AQDyBSoBAAAAIyEChiMwbDSEP/9mZGdOsFD4JM/8Vhhu8zcqulQnDwtEhQKsAAAAAA== +Block: 260 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEhKSk0BDQYvUDJTSC//////AQDyBSoBAAAAIyECKsh+x8WJnVho7hFgccsYTtUwz0slkPW7SKfrY3QC0FysAAAAAA== +Block: 261 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEtKSk0BAgYvUDJTSC//////AQDyBSoBAAAAIyEDTn70G2FwjOklF1WM+0/h6OHxm6gEkcgB1gXdJ+wxo0CsAAAAAA== +Block: 262 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBHxKSk0BLQYvUDJTSC//////AQDyBSoBAAAAIyEDypCWFxqTkpoIgRo1OgVBTuxOMkz4n0IODvsmMFEG2kSsAAAAAA== +Block: 263 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBAJLSk0CgwAGL1AyU0gv/////wEA8gUqAQAAACMhA7Zo5osQ9NKd6UJNOmEqvjmveXdSUeIUkQHv7qSlQ6HVrAAAAAA= +Block: 264 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDZLSk0BMgYvUDJTSC//////AQDyBSoBAAAAIyEDfIBMO0DZ7ILWnWPjgPsbCXd2iCFmDhdnCL9+17M2bcusAAAAAA== +Block: 265 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKRLSk0BagYvUDJTSC//////AQDyBSoBAAAAIyECAMcAWmPnFWdAjyLXES99MTnr6TbIp9rkinzUOV0b04esAAAAAA== +Block: 266 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBJ9NSk0C+AEGL1AyU0gv/////wEA8gUqAQAAACMhAtK3cpic/viQVF/p4GRN7ZuuFbmka41cnYUgfhae21zLrAAAAAA= +Block: 267 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOZNSk0BRAYvUDJTSC//////AQDyBSoBAAAAIyECHZsSLy6OzVh6BTL+lnMJdJUFg/y+lNn1gQdFlQIu5iCsAAAAAA== +Block: 268 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPZNSk0BDAYvUDJTSC//////AQDyBSoBAAAAIyECR26G1B7pkR0TbXpUbz0JJ3gA+J4ijsBy72VgfDV/xyysAAAAAA== +Block: 269 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBVOSk0BGwYvUDJTSC//////AQDyBSoBAAAAIyECuBY3aJnhxeMerlYihgEGBGF9vCfoypFS7Z1Xjm9P6I6sAAAAAA== +Block: 270 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBPdOSk0C3gAGL1AyU0gv/////wEA8gUqAQAAACMhApd8Sk/3u6WL5vWSHaDvg3UUaZ604WHJfqODwT7TyA+QrAAAAAA= +Block: 271 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDNPSk0BNwYvUDJTSC//////AQDyBSoBAAAAIyEDnBENVP9DDw7ClCIT+HHnwbXsUqh9MJ0TupDZ8rDdBoOsAAAAAA== +Block: 272 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBERQSk0CDQEGL1AyU0gv/////wEA8gUqAQAAACMhA7GPp0LHwkqy4FBy0SgDqXYhTiWEsCWs7GNqKgM1iYRPrAAAAAA= +Block: 273 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFdQSk0BEwYvUDJTSC//////AQDyBSoBAAAAIyECt+vOKLtL9wKpEUjVVVWrSsQ99sgx/YqV+8/CkUiY9HqsAAAAAA== +Block: 274 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIlQSk0BLwYvUDJTSC//////AQDyBSoBAAAAIyECs2+OzzEBWMfTShnFaTJnjEVCXava4psybbPWVrovnDqsAAAAAA== +Block: 275 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBI1QSk0BAwYvUDJTSC//////AQDyBSoBAAAAIyECTZvPfgwKuXVlOrX5UJ54Mpxb4uVzFgSN7HYolgaJbMWsAAAAAA== +Block: 276 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKZQSk0BFwYvUDJTSC//////AQDyBSoBAAAAIyEDU498ZAACzeVS1BhC1r6RWvBYcBlbiq9lLkteirNrzQisAAAAAA== +Block: 277 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBHJRSk0CxwAGL1AyU0gv/////wEA8gUqAQAAACMhA/RFf4WMmTOKzPGcvMS3CZmOYRCCC+fZzAFrhrULAvuPrAAAAAA= +Block: 278 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBAtSSk0ClwAGL1AyU0gv/////wEA8gUqAQAAACMhAn4j+GKryGb9RE6dVgrP62b6Nq6hK3rEjZ+ZmLvWwOsNrAAAAAA= +Block: 279 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBKBSSk0CkwAGL1AyU0gv/////wEA8gUqAQAAACMhAu76Jj0FzhyaSUZQlcV3LuFbz1pOz1IfyvdlM4Oos8yHrAAAAAA= +Block: 280 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBFlTSk0CtQAGL1AyU0gv/////wEA8gUqAQAAACMhAs1FOotXlgkLRDgWQU/yi/aE0U8U/zQpR6PbM6pu0q4hrAAAAAA= +Block: 281 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBLBUSk0CUQEGL1AyU0gv/////wEA8gUqAQAAACMhAkdpln3V9AtTGVHXI7VTPBdGiI9Rnb/wO28AHp//mHFnrAAAAAA= +Block: 282 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBM5USk0BGQYvUDJTSC//////AQDyBSoBAAAAIyEDRMzrgAFXp9wnzwC8uCQqwgnar1WobSiC9WzGZNzfXVasAAAAAA== +Block: 283 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBG9VSk0CngAGL1AyU0gv/////wEA8gUqAQAAACMhA3j5R+g938N7rDkoun/hCAMimKYCp+86cJn/7z13BjXWrAAAAAA= +Block: 284 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBFpWSk0C5gAGL1AyU0gv/////wEA8gUqAQAAACMhAgjV9Yp7qlyyUjp5/dIb2fmwXBp7gClhYOOpnlKCdQHSrAAAAAA= +Block: 285 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBLlWSk0BXQYvUDJTSC//////AQDyBSoBAAAAIyECcSk5hCxpm5aMlEGVoaA9RywmsnNHrssmAsRGksFNnT2sAAAAAA== +Block: 286 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMRWSk0BBwYvUDJTSC//////AQDyBSoBAAAAIyECv7BfnETqQMg9qkxrz2QfCbDysKg25BOhNICvsMqjw1ysAAAAAA== +Block: 287 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBP5WSk0BNwYvUDJTSC//////AQDyBSoBAAAAIyED4HbHp25RfjeF4/IL8+qUbozO7SV8OKJ4XkJ2OZmx+9usAAAAAA== +Block: 288 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBGRYSk0CYgEGL1AyU0gv/////wEA8gUqAQAAACMhAtEEIYRvVcin+cG9/gPyEcuYrmfYMyuHqS3SzgnHr5ddrAAAAAA= +Block: 289 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBN5YSk0BdwYvUDJTSC//////AQDyBSoBAAAAIyEC05rigcMpbb2gI6UjOmpb/88BwcYraM/jY2DxyM3FJmesAAAAAA== +Block: 290 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPxYSk0BGQYvUDJTSC//////AQDyBSoBAAAAIyECYiGYIUzxQ9c4YeyROSxocG03qkh20EfIbzSHcErfvZ2sAAAAAA== +Block: 291 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBA9ZSk0BEQYvUDJTSC//////AQDyBSoBAAAAIyECjyOgf/1GIcunyn0Cfe3RSX+sTQvyqAi7qJY2IPQ3bgqsAAAAAA== +Block: 292 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBHRZSk0BYgYvUDJTSC//////AQDyBSoBAAAAIyEC0V1OVIMreuaIkQHBRjxouu1+JiPFsRewlyid9DhqlC2sAAAAAA== +Block: 293 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBPhaSk0CfgEGL1AyU0gv/////wEA8gUqAQAAACMhAxu9yrpjkeru+WGSNSNnYZsFVyczB75DrMuFS0O1yfCjrAAAAAA= +Block: 294 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBM1bSk0C0gAGL1AyU0gv/////wEA8gUqAQAAACMhA0YYJPx+9uCN8vVD4mM5yy4P1OuyBMGfQWXC3hHWShEprAAAAAA= +Block: 295 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBM9cSk0C/wAGL1AyU0gv/////wEA8gUqAQAAACMhAsPL3L0C3ePoQz3QeR49kSGk172zGa8GOtvgXF3j8AsLrAAAAAA= +Block: 296 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEhdSk0BdgYvUDJTSC//////AQDyBSoBAAAAIyECGX/6hW/UpcmWJHDxEiKvpWKpxfMAM0UaWGEZX90iA96sAAAAAA== +Block: 297 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBHddSk0BLgYvUDJTSC//////AQDyBSoBAAAAIyEDDkC6bD0vBFNhdHlq71Fra3jvriynTUE+Tf8VCLYcE4ysAAAAAA== +Block: 298 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMBdSk0BRgYvUDJTSC//////AQDyBSoBAAAAIyECV+oP9slNLFb1OX8bo+r1BWGUuIA1T7cz+9WfbiDfyQCsAAAAAA== +Block: 299 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMtdSk0BCQYvUDJTSC//////AQDyBSoBAAAAIyECT/h+SGj1AvaJDPeLhBajxkANRuZel1P/8lBAXGHmxB2sAAAAAA== +Block: 300 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBCNeSk0BVwYvUDJTSC//////AQDyBSoBAAAAIyECUDdwpPmbGWv7WSTQzccC+ZGKRZMQMw9ueAQebmL/Fm6sAAAAAA== +Block: 301 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDVeSk0BDgYvUDJTSC//////AQDyBSoBAAAAIyEDShd/ShSrI5j25YHL6AdMyynwXwPLE7RA3zih+25NfPSsAAAAAA== +Block: 302 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKteSk0BcwYvUDJTSC//////AQDyBSoBAAAAIyEDm5d0lWNxKRpg4haXTbnqyGGh4TkM6vqhwN5cKO9uET2sAAAAAA== +Block: 303 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBJ5gSk0C7gEGL1AyU0gv/////wEA8gUqAQAAACMhAxNe3FaWa8OEIOs7vES7Q1oobsGXPC+ZdrkgxtAxIxCGrAAAAAA= +Block: 304 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBI5hSk0C7wAGL1AyU0gv/////wEA8gUqAQAAACMhAiND40HQsVyLEQ9MBsuL2VRt2j781ePe+RlnqwIjCn3HrAAAAAA= +Block: 305 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNlhSk0BRQYvUDJTSC//////AQDyBSoBAAAAIyECskvdq1owUIMtUU0/wCJxztKXIn+SEb9h0o9tmH8Dbk2sAAAAAA== +Block: 306 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBpiSk0BPQYvUDJTSC//////AQDyBSoBAAAAIyECiHXTU2Qrp89KYrw5yarUE55ZxOgJK5p4QOC7f3Li5jWsAAAAAA== +Block: 307 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBHNjSk0CVgEGL1AyU0gv/////wEA8gUqAQAAACMhA+bmB9+1FT/JHTSR0DXe9L5qTZMUGMkeCyAqvAh9x33GrAAAAAA= +Block: 308 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMZjSk0BTgYvUDJTSC//////AQDyBSoBAAAAIyED04A+WhT5nJIlRChBs3K3PqoDj3GKt6Xs2ib+bI0EQlasAAAAAA== +Block: 309 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBDZlSk0CawEGL1AyU0gv/////wEA8gUqAQAAACMhA9sulRR4GAhwIIoWySbA7Dv8JiHu3R25D1UuAZgUdmnBrAAAAAA= +Block: 310 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDtlSk0BAwYvUDJTSC//////AQDyBSoBAAAAIyECRAZ0utIh6PixGzYmncAGio8s9Er18UDGf8YOrr9qkC+sAAAAAA== +Block: 311 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBMBlSk0CgwAGL1AyU0gv/////wEA8gUqAQAAACMhAp2lvs7yS4KPZo+Rzl3O5r2U8zxJqx9BAe4RNWejmdmRrAAAAAA= +Block: 312 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBChoSk0CYwIGL1AyU0gv/////wEA8gUqAQAAACMhApggy0FpE/aiEX61RBVgGj/jLyb+aEJkkApHWkP8SjlNrAAAAAA= +Block: 313 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDBoSk0BBQYvUDJTSC//////AQDyBSoBAAAAIyEC1RZXAXheb0vne7pyxo0wJ+6gdMp8KrGy1ogtsA90N5GsAAAAAA== +Block: 314 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDloSk0BBwYvUDJTSC//////AQDyBSoBAAAAIyEDu6E6EXgrPYWgrmSNq2HKl3o8Huo6YETBMtmnEkv4jh+sAAAAAA== +Block: 315 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKJoSk0BZwYvUDJTSC//////AQDyBSoBAAAAIyECn0ZcxFfxFSVd1QxxYiQy+4Xr4WgsyIV+bOGMSNJoxLOsAAAAAA== +Block: 316 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBK1oSk0BCQYvUDJTSC//////AQDyBSoBAAAAIyECDR8TNLIw3DOojCFg18iSDPPyHd5Hr0dY4xZU/AbTpCusAAAAAA== +Block: 317 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBD1pSk0CiQAGL1AyU0gv/////wEA8gUqAQAAACMhAx/cpRd4jHhU40CZ3Tt09V6NV6fRnY6oops5AaK9hFkHrAAAAAA= +Block: 318 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBExpSk0BDgYvUDJTSC//////AQDyBSoBAAAAIyEDWz3ypJACXosV1QLe/I8ajC08ezpMgRdpPO4RCyt0oP+sAAAAAA== +Block: 319 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMRpSk0BdwYvUDJTSC//////AQDyBSoBAAAAIyEDEQInMLJ9QQ6q+X9sFucLwJ22KlvRzbpgCcd0bRFvMdasAAAAAA== +Block: 320 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPJpSk0BKgYvUDJTSC//////AQDyBSoBAAAAIyEDzDSFi5e6rt2VKVQUkHqaUJtMy4mH3KJzocE3/EqmW9msAAAAAA== +Block: 321 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBLVqSk0CwQAGL1AyU0gv/////wEA8gUqAQAAACMhA1wQCXL/jFctyA6qFalYq5kGTXxrnlXw5kCN7BHt1N67rAAAAAA= +Block: 322 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPdqSk0BPQYvUDJTSC//////AQDyBSoBAAAAIyECYcgeGzWMxdkmN3wHj3FqGdiqCZ/s1gvDeaiJl6GW/m+sAAAAAA== +Block: 323 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBANsSk0CCwEGL1AyU0gv/////wEA8gUqAQAAACMhArOwhWKN7fNEsylQYOs9FrELB8SbVvlhYfyWK1AIUYPyrAAAAAA= +Block: 324 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBA1sSk0BBQYvUDJTSC//////AQDyBSoBAAAAIyED6SIqWnTyJt0LeaMotEXe1vnDoifwcnOYzQ3GYPtKBbSsAAAAAA== +Block: 325 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBZsSk0BBQYvUDJTSC//////AQDyBSoBAAAAIyECW7o6ef/zh8wZx+wqvW+PGW49b2dGgXC3Olhnx8pUaWusAAAAAA== +Block: 326 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBHdsSk0BXgYvUDJTSC//////AQDyBSoBAAAAIyEC54WZrmPKmTwjRDgZxaPojONpKtkTfLE1MDfDfNR7So+sAAAAAA== +Block: 327 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBI5sSk0BFQYvUDJTSC//////AQDyBSoBAAAAIyEDjSNUWZW6G78p6QlDKas3EGrj5TtxwcWmCpdLrLQ78CSsAAAAAA== +Block: 328 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJ9sSk0BEQYvUDJTSC//////AQDyBSoBAAAAIyEDzm4l+afXBIHj0t8M3TF9aBPC0y2yb2ShJrweti1oJ8GsAAAAAA== +Block: 329 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBCxtSk0CiQAGL1AyU0gv/////wEA8gUqAQAAACMhAq+s961cy+5zZRwWiP64GdvmGWaCNG57f8agT/pQs78OrAAAAAA= +Block: 330 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJNtSk0BYQYvUDJTSC//////AQDyBSoBAAAAIyECeYMamvcTAjuxTSHsVdyGrWsBE+DREQ5pcDlZFwbdJOSsAAAAAA== +Block: 331 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBM1tSk0BNQYvUDJTSC//////AQDyBSoBAAAAIyEDd/5YWLMVLlnl0XfU8rV5PwVj48yLh1H0H+xLZX1pTESsAAAAAA== +Block: 332 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOltSk0BGwYvUDJTSC//////AQDyBSoBAAAAIyEDE9MeitjuD8RJO44P/dQhK8nRfb4w+WbPJQBn3TuQbyesAAAAAA== +Block: 333 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBG5uSk0ChAAGL1AyU0gv/////wEA8gUqAQAAACMhA7TFGsk9cOJsjGgjkZUqCZ1InChkARUKbSqHyGXzb8WHrAAAAAA= +Block: 334 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBAlvSk0ClwAGL1AyU0gv/////wEA8gUqAQAAACMhAgkQvHJqWPZWjZhL3O8FWochVbyoXZvKo8mRAAlsubADrAAAAAA= +Block: 335 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBGtvSk0BXQYvUDJTSC//////AQDyBSoBAAAAIyEDToi/gEVC+9ATssGR+xe8TrEGe7xT087HDfTpEaFQ4JOsAAAAAA== +Block: 336 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBL9vSk0BTgYvUDJTSC//////AQDyBSoBAAAAIyEDpcbNO3Den8ygi53GyDQNLhsM0AFsemnf+q5+f1SZ3TGsAAAAAA== +Block: 337 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMRvSk0BAQYvUDJTSC//////AQDyBSoBAAAAIyEDjTbrEyBGn55+QMdhMTW0ALOjMiBxJVdTv7O8vjz0PbKsAAAAAA== +Block: 338 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNxvSk0BFgYvUDJTSC//////AQDyBSoBAAAAIyECv++suofydbTR2BshSi4TFSv9weOt3ziWGZSuXgyzsEesAAAAAA== +Block: 339 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBLZwSk0C1gAGL1AyU0gv/////wEA8gUqAQAAACMhA7QLYU686ntrf/wH45PCQjghwcPS0KP7GuUWIrqCcE+lrAAAAAA= +Block: 340 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBMFwSk0BCwYvUDJTSC//////AQDyBSoBAAAAIyEDqkfWcPmElLwGnloEQGeiJaKbvS1ttNJcSJsrwc4t9FisAAAAAA== +Block: 341 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBEJxSk0BfAYvUDJTSC//////AQDyBSoBAAAAIyECnfOs+lLcdqrdzKNb7tGW6n++dVtSQ/Uz6mTcWZwsHhGsAAAAAA== +Block: 342 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBM1ySk0ChwEGL1AyU0gv/////wEA8gUqAQAAACMhAj0hDV0TQPXA4+ZuWecJc39kBtnueq0mwtFSnezLLUv+rAAAAAA= +Block: 343 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBH5zSk0CrgAGL1AyU0gv/////wEA8gUqAQAAACMhAtgsz0IPBasVvf73ZzDk/OUgRonWeLSaOTCswNvd48zdrAAAAAA= +Block: 344 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBAB0Sk0BfQYvUDJTSC//////AQDyBSoBAAAAIyECcEHP7r1zbYuawJrt6no2y8N8tnUk9Mib+I/26ZgMoAmsAAAAAA== +Block: 345 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBR0Sk0BEgYvUDJTSC//////AQDyBSoBAAAAIyECAfxLln08efJ1y0XyGJRaEiNLIUELSr/LQk2DOL63wDCsAAAAAA== +Block: 346 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDl0Sk0BIQYvUDJTSC//////AQDyBSoBAAAAIyEDViUFv+39ptdQjCVo0V3s5b1sna+2UM37QPdSQEGR+KKsAAAAAA== +Block: 347 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBNx0Sk0CnwAGL1AyU0gv/////wEA8gUqAQAAACMhA7W6nNXsPLrQGlqXYLjbrH4QA7Yew5XzfwgmmJ3++u0wrAAAAAA= +Block: 348 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBOJ0Sk0BAgYvUDJTSC//////AQDyBSoBAAAAIyEDjWYOqswb4F95Qu4QnQD73TpcFfXYuTI5UHMx8qONuY+sAAAAAA== +Block: 349 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBKJ1Sk0CuwAGL1AyU0gv/////wEA8gUqAQAAACMhAvUBO2CyHCfprywohcYCrObMWDjWh4iGylfRt42/1Ke2rAAAAAA= +Block: 350 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNB1Sk0BKgYvUDJTSC//////AQDyBSoBAAAAIyEDY8Id8oMz8KkrFlWs2zYsO5n/HftyDzj3GKHxJ9V9CiisAAAAAA== +Block: 351 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPt1Sk0BJwYvUDJTSC//////AQDyBSoBAAAAIyECpw3MG+iKsTO2dOw/kPpg2bYgLtbrx+NRY3tAjb+cTVasAAAAAA== +Block: 352 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBP91Sk0BAwYvUDJTSC//////AQDyBSoBAAAAIyEDJcoHYbHrsuX1EfRdUswfmhHkLNFPDIkdzadoUN7QPEqsAAAAAA== +Block: 353 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBH12Sk0BewYvUDJTSC//////AQDyBSoBAAAAIyEDHumdK3hqs7CZEyXy3oSJJGpqP9twD20FEbHYDPX0zUOsAAAAAA== +Block: 354 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJp2Sk0BGwYvUDJTSC//////AQDyBSoBAAAAIyEDHqOre8xHkf6rEaOlIqsM4UBRkFatZaXfGW/BGLvg9CusAAAAAA== +Block: 355 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBCp3Sk0CjQAGL1AyU0gv/////wEA8gUqAQAAACMhAoKaYUbtTnM73y3uxNDqKy2EjGcfb32Ucwh9Md77ea1crAAAAAA= +Block: 356 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBF93Sk0BMQYvUDJTSC//////AQDyBSoBAAAAIyEDBIr7jOb7aJ0a/iUHTn7M+cx5guxmfURqOuKR91Hfm5OsAAAAAA== +Block: 357 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBAR4Sk0CoQAGL1AyU0gv/////wEA8gUqAQAAACMhAtnHD4P5OuLMEOMkwaIhv/0BZgFPVfwHf+doYzMyMdTbrAAAAAA= +Block: 358 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBLl4Sk0CtAAGL1AyU0gv/////wEA8gUqAQAAACMhA0dcBAU1zrAGZtQrALMpjf60ui9Aio1qm+lL9lzAHraVrAAAAAA= +Block: 359 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDR5Sk0BdwYvUDJTSC//////AQDyBSoBAAAAIyECu2AGwvBdGHsRUnGxV3tYL18ftxBRiUhHSPiZ31qmXcWsAAAAAA== +Block: 360 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDh5Sk0BAQYvUDJTSC//////AQDyBSoBAAAAIyECdJAbBaGTd0AVUcdVxiIt31Liw14t1rADGJpqXUlSbvysAAAAAA== +Block: 361 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBGh7Sk0CKwIGL1AyU0gv/////wEA8gUqAQAAACMhA9D5EgGSNwefKx9VG7GdxvuZGSqjQoPzZM2jAI23Yo1YrAAAAAA= +Block: 362 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBBN8Sk0CpQAGL1AyU0gv/////wEA8gUqAQAAACMhAxGnoExVuiond8iy2n41H7oZmGcEX6VQWZz+3O0c9cXprAAAAAA= +Block: 363 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBKV8Sk0CjQAGL1AyU0gv/////wEA8gUqAQAAACMhAky76WsHdHTJbAkvnuv71R2saHBNel6F+sWbfPnJ+TyKrAAAAAA= +Block: 364 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBKh8Sk0BAQYvUDJTSC//////AQDyBSoBAAAAIyECwZ+K9C9cBS1I97OKfXeQJ5tvV2pyVJBYOT928W8+IKesAAAAAA== +Block: 365 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNF8Sk0BJQYvUDJTSC//////AQDyBSoBAAAAIyEDPW+87EPmSI5uMg5P8lfuj1SXRMdSzCHcu3EnOKEaTh2sAAAAAA== +Block: 366 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBN98Sk0BCgYvUDJTSC//////AQDyBSoBAAAAIyECmpEQKEnlGICR+RkxXGObpraJYmDOMJRTixqGZnZYADmsAAAAAA== +Block: 367 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPx8Sk0BGwYvUDJTSC//////AQDyBSoBAAAAIyECLTqckuVJ7uIQT0VfNhCToauL6WpF8Ou/lrtUqn/k1+KsAAAAAA== +Block: 368 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBJt9Sk0CmgAGL1AyU0gv/////wEA8gUqAQAAACMhAxyoEW56li5Lxiceziox0uHpnsRqAMLMJFxCOLte8oCBrAAAAAA= +Block: 369 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNR9Sk0BNQYvUDJTSC//////AQDyBSoBAAAAIyECsCKD2KHnlrbyu6WUGTT4JIEZZvQMv9PmvEbRwSoD4DCsAAAAAA== +Block: 370 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBMp+Sk0C8gAGL1AyU0gv/////wEA8gUqAQAAACMhAoIdJ/fOa8RZvWU7iU/aGUaiOrQCMgKT5ZMJb2Vjk6SbrAAAAAA= +Block: 371 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNJ+Sk0BAgYvUDJTSC//////AQDyBSoBAAAAIyEDMXygp4z7PzMk9L7OEaGTetj4XOyHhWB29UHISJMqUIKsAAAAAA== +Block: 372 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBP9+Sk0BKQYvUDJTSC//////AQDyBSoBAAAAIyEDVX1IbruQG/FSHMZBck9prAvpQODDfxT75baRcm5iw2KsAAAAAA== +Block: 373 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBBB/Sk0BDgYvUDJTSC//////AQDyBSoBAAAAIyED7q6wlz4R1zS4FOXOMyh4RLvVCAQ8AldHstZlA6PlZe+sAAAAAA== +Block: 374 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBN5/Sk0CywAGL1AyU0gv/////wEA8gUqAQAAACMhAu5RJpSItwynYmPLEtbLfLzyCaG8cyfnEx8VTm4LOk+brAAAAAA= +Block: 375 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBO9/Sk0BDQYvUDJTSC//////AQDyBSoBAAAAIyEDH/sHLBmnyAmHAmSlPZLUclfVIzBOl1ZgxCXL6yX14MesAAAAAA== +Block: 376 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBG6ASk0BeQYvUDJTSC//////AQDyBSoBAAAAIyEC5GhzlVJNLsDjLR/rP04KbenNO/6fkglYm+N1Wuo4LwisAAAAAA== +Block: 377 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBDaBSk0CxwAGL1AyU0gv/////wEA8gUqAQAAACMhA/kTeZISeowcv6IKrLBhWHjeB2wqtRN4gvvHh8CmHR+trAAAAAA= +Block: 378 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBCuCSk0C7wAGL1AyU0gv/////wEA8gUqAQAAACMhA9/eKmncdXdW9oiyDggTgYtgoZarW7FmkalS/WmZTHnprAAAAAA= +Block: 379 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBMqCSk0CmQAGL1AyU0gv/////wEA8gUqAQAAACMhA+zqQs/smSu3+uNnC6Wfr3epSEQDCasZgNQ221DSkdYvrAAAAAA= +Block: 380 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNKCSk0BBgYvUDJTSC//////AQDyBSoBAAAAIyEDlg7ykxqE16PC4P4V7m7mW+KY7t61w2tV1aq/4EyVrdSsAAAAAA== +Block: 381 +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 +Block: 382 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBJSDSk0BIgYvUDJTSC//////AQDyBSoBAAAAIyECyQc/AvZwyrHTCiSHE7OVE3hiXYaMb6HcDqixfIzW5AusAAAAAA== +Block: 383 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBNiDSk0BPwYvUDJTSC//////AQDyBSoBAAAAIyEC76d0dqCFNEIwEJdooWxlngL6mw6wnOzB3G/MzEq8qAmsAAAAAA== +AQAAAAJDTSsPKYh0w/bYRnwH3qaIOmUN4A1IKYzW+0joMi4QWAAAAABIRzBEAiAr8Xh4YIOG+y576Bs5z26mLrlAc/tSCVdA3AoYdZ6eOAIgPmpvra1X7KfblGuLSMBoyHx6m68HXlsomUEWwrMSa6oB/////+c5F21itYhWavpH9fu8DsAao/BYwDbKDujzzRPkIj4BAAAAAElIMEUCIQCiUWkgI7wj6Ls2yBHmgQoCSA/shxmxAnBLCnlimmuvmwIgJpQT7kHtd56+dMGlQKwc0knzs823gDNzP1cirD63EToB/////wJAT8PtAAAAABl2qRSyIFpNvB1YfF0Hdpl3lisXPqtQdoiswJRIZgEAAAAXqRRB+2UE+LyyggZZYYT9QKXtQrzlPYcAAAAA +AQAAAAJsfZDmPcVCGCJ1ODFlyl7mkUVv029WqDmwSocC6x5ifgAAAABsSTBGAiEAl0A6zPd6BxFwZo+o+MJIyjIeDRBNW3IC3DXAoWh67MACIQC4o5tDaAYqIV7qU/+lm3dRIIEiYwZ3SNPge1XCDegKWQEhApcd1yLs7nu8PNvIxqc2XbdBErbsQTarPVdzS9gNeEHf/////6ru+FspdiLs8xHcXSlmn9TjhjRUxv7qNh7OT1R7pS5qAAAAAEhHMEQCIGQTIa3I+y5klSwSm2zDINek016Q8pokSLGPrELPIZXDAiAeLkfySMQvKc2L0/DtY9eXCYud5hIc57VEkDZfxXNcjgH/////AoBAtigBAAAAGXapFLyfR0jI5kmy0HcomI7spk3zCtfjiKzAyq0qAQAAABepFCkLujKkkxV4mgMLtAsAR/j7kP9mhwAAAAA= +Block: 384 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBHGESk0CjgAGL1AyU0gv/////wEA8gUqAQAAACMhAjEGa4bqDL3auhqvd6WOXyPzubyhsKYufOFrPP0fx2yXrAAAAAA= +AQAAAAKONDBXPP3i8+Huzorv5mHdhBvLZl01gyQVurT3UmeFIgAAAABJSDBFAiEAnMqPscSjSYLE6aWf0VhWQEwCCF+SYEPPxmZJJKW5420CIFgR+Fs5XENJIWS4szhn10UhHYx//c0bKI5W9029rtFbAf/////jq/WYGhvWRX7Azcq3bMKhdtwNfhb203ga68aE8TzE/QAAAABIRzBEAiA4e7zumeNw6iEV6sz9jEjrOAZTMDtmxpRuCQP7C7xvhgIgKy7wSFGdRVJUE/ZLcnodhf8s99katGBzCCJLTDDVhGgB/////wJA8fI6AAAAABl2qRQiA8pZ7fZpaXV+bMkjixs29Nw1uIiswPIYGQIAAAAXqRSeshmA3J1BPY6sJzFJOLnakg7lPocAAAAA +AQAAAAJzosVNU2wZ8NCRVu+60Yym+WsenzvISQNClY8k7Y/DLQAAAABJSDBFAiBMhuLgS149dvF38s3XyBcLJctyfM8cmxTOkmK2vGfp0QIhAPp2suH3JfxZ+04h48HWZ40QgcHt04ESfQJjzRuypfBTAf/////oBzpcCoD5jhX8Auz9GV1ioEUEKyc8ZVyLNg9mYOjnIgAAAABrSDBFAiAtloB14eFcqB/nJUQNxjV+AgMBlyXDygW3fL04vMVdBwIhAMZAhqcGKbMHV4U1XYtcVXdyvsnG/JZiNfkwUw0ympNkASECOZ3dTkuqwZZe/E2IJlbySGa+FM9bz2QiIzTx/dWSBIH/////AoDi5XUAAAAAGXapFHzHj+QlGySumyOjmeIWCHnxiDNiiKzAXuOhAQAAABepFONxeCWCpK3bVBNixVVl0s31b2SYhwAAAAA= +AQAAAAKjDj8UKb8qjtFMpuyfM5a4WTuLtqweTTW9Q18FBYCU6gAAAABIRzBEAiATvXKkQqFB1YzKA4QXAM1WETClMNONxQymJ4EMqf6DbQIgZpBxlR1C+pCwJjN1I+H/PKQvojKsHUp3ZpLoXXBjjJYB/////yQ1aPL/a/kDhqTXV20jzZIqgpx9mK0SUdeNnlGk32HyAAAAAGpHMEQCIGom075AfeA/vSILSItlgz4/T7VRZM1a69VJr4UGADTVAiAjOn1iq3gqJGfXl+IHbwQ/lgzkqx9gfCkiuxRlhPyrZQEhAsukzpMrON2dpTZox4fT/D0ks37RFtlrQsWIWFqGWf1W/////wLACT51AAAAABl2qRS0Qdm9GwTXUvkfFNxk7Xx7eu4TT4iswCh+3QEAAAAXqRQJ9wuJYWnDeYHStUs3HfDYGhNqLIcAAAAA +Block: 385 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBCOJSk0BYQYvUDJTSC//////AaB4ByoBAAAAIyEDumW4wKCi0CnkzevDkYheRm5ly9+odjj4tkYNDSvo1aKsAAAAAA== +AQAAAAMozhDHGJAmhmvPwdBrJ4mB3fIewONk4o4pQ2W1wyjNQwEAAAD9RgEASTBGAiEAp48YD1hR6+nefmrm+I7PNu2fFl5d8eF+7BayLmOX3AsCIQDDrohAApSuRkZl1juANfHeS7Gd3XzAzFwdWj/ij0/K5wFHMEQCIG8DXOQ2+jBwOL9LrBWouX+ts8gJttkonq594ND51SexAiAmU01pW+LXrb69pdLEze6D4nAV7tMqX/lQ7PE2oduFdgFHMEQCIBoKasD0iOfcj8fJrKXXm1QdYNetGq9h9V7lfmH/LatKAiACZ7/M5SeBDXr1SjDr+wztNxqiS/d5HuckdMX/VwPTUgFMaVMhAsoqgQqxckm2AzoDjeVjmDiBtAaScBg/PAq6lFZT5EIWIQP0gPG2SNDVFngErU1Ybg51fMM/3g4TP9A25F1g0ttZ4SEDwYEx2N6Z1F+3KndMqwzMJYzSq9lgVhDaILmiMsiKPLZTrv////964AGu9Wb4Jzp80U3LwdK815J955LFBCN1AzmR71UjwwEAAAD9/gAASDBFAiEAtI8WWuCTGlQKXSFR6pQIpVESLbrge6T+JrLYQNiBKuACIHzIc0bC3qOtKHOVF20VqWOWFB+xsb2qu6nb80ZQb2AVAUgwRQIgJvLblShumDHC78YMKmXD5JKKX6nwRVYVQPaJ2N6FYiECIQCuzXd+F7B+7wRtQARtoLkPzqhpOLIUeasO8NFYq4Y53AFMaVIhAsoqgQqxckm2AzoDjeVjmDiBtAaScBg/PAq6lFZT5EIWIQP0gPG2SNDVFngErU1Ybg51fMM/3g4TP9A25F1g0ttZ4SEDwYEx2N6Z1F+3KndMqwzMJYzSq9lgVhDaILmiMsiKPLZTrv////+lG+N67kx28jRhFo7m2C26BxgbMYOQYluayy7CvhAEugEAAADcAEgwRQIhAOSi6NuNAg/BXsg5YYIPAhvO3HSAdeW0mF7r+gBt7BTsAiAW6lFGG+rILHrvBZqDWQFShmcpY/pXH8P5hJfuMwOzdAFJMEYCIQCObY1WDjvY6uKvYukM00OdgPaOTEUyfBbZikRcj/lBqgIhANOb7g//ImwmQEcmTbtCG/N4NiyJML9EY7sJ7xtP34pyAUdSIQLKKoEKsXJJtgM6A43lY5g4gbQGknAYPzwKupRWU+RCFiED9IDxtkjQ1RZ4BK1NWG4OdXzDP94OEz/QNuRdYNLbWeFSrv////8FwMqtKgEAAAAXqRQdnKce+jbYFEJOpsoUN+Zyh66+NIfAlEhmAQAAABepFCT7x3zcYnAq3nTc+YnBXl0/kkC8h8Be46EBAAAAF6kUr7+3TumUx9RfZphzi8QibQZSZveHYEOZOwAAAAAZdqkU0qN84grJ7E8V3QWnxujp+9uZhQ6IrADyBSoBAAAAGXapFGsgRBRqRDjm5b+8ZfFHr+tk0U+7iKwAAAAA +Block: 386 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDKJSk0BCgYvUDJTSC//////AQDyBSoBAAAAIyEDeTdOC2CP5ahK99R/fs1AWCY1BuzhE4oiDZ/tLY00/x+sAAAAAA== +Block: 387 +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 +Block: 388 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBKGLSk0CHQEGL1AyU0gv/////wEA8gUqAQAAACMhAwX9IJKSmlcapcG4YDQm05VDWbbhumnE3UuFJurVG6j/rAAAAAA= +AQAAAAFsfZDmPcVCGCJ1ODFlyl7mkUVv029WqDmwSocC6x5ifgEAAABrSDBFAiEA2eqQkvC+WlQ3MHYZM3373Scyzz8j+Zd/tDW0pbS/RmgCIAw33THNfTjV9LmgDHUekFk1b+8O1OiPUqdbTnx0PzRNASECyiqBCrFySbYDOgON5WOYOIG0BpJwGD88CrqUVlPkQhb/////AsDOGB8WAAAAGXapFCOVLLskny8m3VZ8LoNF14XGNUN+iKwA8gUqAQAAABl2qRQyBAF4xc+ByyAKuZrxEx8Yd0W1FYisAAAAAA== +AQAAAAEkNWjy/2v5A4ak11dtI82SKoKcfZitElHXjZ5RpN9h8gEAAABwAEgwRQIhAOmPoLEPUZJMoLIdyy8enTg7ZSzi9RkWyu7x5H0T/2ekAiAmy5/zI82unted3YKaDMG0nJN0wmKT9U2RnLbcX48K4gElUSECyiqBCrFySbYDOgON5WOYOIG0BpJwGD88CrqUVlPkQhZRrv////8CwNinAAAAAAAZdqkUSy0ZmkDUiL5v5TBaHUX0kFOvS/6IrADyBSoBAAAAGXapFGsgRBRqRDjm5b+8ZfFHr+tk0U+7iKwAAAAA +Block: 389 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBAuMSk0BZQYvUDJTSC//////AVC1BioBAAAAIyEDJGxAijhRNKm/X0EFXtwmUwawz0PM+8WvaeoSnQegJsmsAAAAAA== +AQAAAAJSJqjPEi4VVb4BqQCCGW1UhFTnPFG0i0G7IE7FOPIZ9QEAAACMSTBGAiEAuW4v0gFbs/4iwjxxLDrEqGNtSnjffWabq9ZOq6MUwjYCIQD0AtfjOS0XcM4r4Mgj6rASK7g+4L1l9d5Uof61PkUu7QFBBMS+5ebbtcFlFDfLQ4bBUVx3dsZFNQdyBMbyTwWjfQSjK8eL6yGTtTsQTJlUxEsM4Wi8eO/V8eHH251sIbMBZZn/////cRmMYXCfjZiDFfRfo/kWCnDwUlX72tDY+6yriJwASNcAAAAAa0gwRQIhAJLpb0GF/Bu3S02cJYIZ3F/8ca+0PnPsDni92RuvvjhuAiAZ/Fs9lgIAW2H13HXnvU3eHBmgcAwKeVhQNSgBTTkBkQEhAidOrgHTkbvsMtS2DiTV0k+cwjyo2mcIz2wGI4G/pxAG/////wEA8gUqAQAAABl2qRTb+JUJF2qXXkHQTMCvJM/I3kOUqYisAAAAAA== +Block: 390 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFmMSk0BSgYvUDJTSC//////AVC1BioBAAAAIyEDfDnB8DlD9eTbYyQ10IiEdqtdt+iuGlZQ79UD9qNfIXusAAAAAA== +AQAAAAboBzpcCoD5jhX8Auz9GV1ioEUEKyc8ZVyLNg9mYOjnIgEAAACSAEgwRQIhAJBBmeGlaJDYHZVXilP7vGU7cdJTv3r7amIwhMR/d2oiAiBLCE75DLf+MR9xDlFsEicgKLcHFnZ9oJKTjUE1kaobhwFHUSECyiqBCrFySbYDOgON5WOYOIG0BpJwGD88CrqUVlPkQhYhA/SA8bZI0NUWeAStTVhuDnV8wz/eDhM/0DbkXWDS21nhUq7/////cRmMYXCfjZiDFfRfo/kWCnDwUlX72tDY+6yriJwASNcBAAAA/UgBAEgwRQIhAKw06INxKPXAIAp3h4XdxMp4lNsgehkH6l8Hvg+qU3gHAiALmCUQrc2gBtRykbvnIMXsTxqmZl+ussn02o7Kgu2dSAFIMEUCIQC8Uuohl7lOF/B+vPq5rc8Ngog0SbkOG/FKc/VY3dToDgIgUkflx+QlIbxHuyHr83M5oGpBvQF4NK+EpHKPVegLxt0BSTBGAiEApsB3UUPvfleMYVn+Ln/0B1PZYiMLilAq0xqY82mnfLoCIQDgTVrBnqsoV8PEphIESZBCtZ3j01qvPjyNvws2yzvgHQFMaVMhAsoqgQqxckm2AzoDjeVjmDiBtAaScBg/PAq6lFZT5EIWIQP0gPG2SNDVFngErU1Ybg51fMM/3g4TP9A25F1g0ttZ4SEDwYEx2N6Z1F+3KndMqwzMJYzSq9lgVhDaILmiMsiKPLZTrv////+yyBJsy4LbegArWg61VwLSRQwVwpcxOUYPwsu8yK/XEwAAAABrSDBFAiBhi6lNXcCQCSQGyymONwRsC0dtDlKax/X/Z/HXZKJ81gIhAOl6XNOJyFP9l6HLVkpn9ka2xi1Y8H+2/MbxK+ksTOEAASEDEnxLvPb/FM/YU7+SF2lxMIy3shLaKORrKJ1ERMQhXlT/////ssgSbMuC23oAK1oOtVcC0kUMFcKXMTlGD8LLvMiv1xMBAAAAakcwRAIgARPiavSxwFKjCTfQpdu271OiaQMiwWa1c2soASiVUlECICoikRfdzJJoZBcygWBPfIfgoF4iaW5V4gXntkCti64hASECyiqBCrFySbYDOgON5WOYOIG0BpJwGD88CrqUVlPkQhb/////UiaozxIuFVW+AakAghltVIRU5zxRtItBuyBOxTjyGfUAAAAAa0gwRQIgB9HtDBH9oIsz6+c+OdWR27B2zo6Z8ZhPxlH60Yzol8cCIQDgtVEqPco7rZ4LEqPzsF487AA6rT0qNti+K4OhzoofWgEhAr/BmwSVNL5aaSq0IHiWiAfDuHu1DKR330rNKW4p5RVz/////7EkzKfpaGN1OAyEXQ/QAu1wSu9EcvTMGT/KSqGzQE2kAwAAAGpHMEQCIEnw8K/fx/3SDZ9lT+ozvSqcdZ3kkVnpgoDVMeXkyxWSAiAc2Vz/wIYiwy8Q3uzcvAbj1Uhjg9BfdDAXmjSJwKBkxAEhA4c2LbJ9I8veyiFmSLo7pRnVO3dqYDHPjucKh5ODqZ1x/////wLQ3QYAAAAAABl2qRR+my2sJ4obHRDml7wpo2A8Cy43pIisgHN9SB4AAAAZdqkU2/iVCRdql15B0EzAryTPyN5DlKmIrAAAAAA= +Block: 391 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBI+MSk0BMQYvUDJTSC//////AQDyBSoBAAAAIyEC9TSrbZ8/QJobDAd6MZORdK4GdzdThyfnkyXDILNNmn6sAAAAAA== +Block: 392 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBFKPSk0BOgYvUDJTSC//////AVC1BioBAAAAIyEDvoTLWezyb45BZ7zEyR3Us3sUS0mYCzmelEbXIY64AUesAAAAAA== +AQAAAAHOQV6rnLo1SuBCwirJ8Gwaadel26ZxNvq++T2C83TdPgAAAABJSDBFAiB3NTA++3Fv5asTpCQePVx2VWuL5ToC8wKbhih4iuS8igIhAMZyNEufv2E8KRo+dfJfmzBLeevpe9ryVLihAw4NKiLiAf////8BAPIFKgEAAAAXqRQpC7oypJMVeJoDC7QLAEf4+5D/ZocAAAAA +AQAAAAGDKMjO0oyVqz+XgfONl6reqgfFgmf9roJ6x8plzhnwKQAAAABrSDBFAiB7cPcRvrTWTdVObIsT4VYcgwJdynx08WdNHm99d1PgwgIhAPJAUfw4vVIT147Ze6bYJCz+d6m+GcuIT81RaeHrRQKJASECZmcCPB/PiNe87QJpmXx7gTbPIOmu3oP/WVFORzQPHvT/////AYAaBgAAAAAAGXapFNv4lQkXapdeQdBMwK8kz8jeQ5SpiKwAAAAA +Block: 393 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBIGPSk0BKwYvUDJTSC//////AQDyBSoBAAAAIyEDNpb7mdoBVlmuNermDC62XfiJkUfwG8ur8R0qSulSX4WsAAAAAA== +Block: 394 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBM6PSk0BSwYvUDJTSC//////AVC1BioBAAAAIyEDn+iPQp+cSxRdE0IKHAFZmt2djOluPWsZhmm1BjnavT6sAAAAAA== +AQAAAAHkoS/eVsA+6hrLXrG1fTWrHablXVROghLEfOJ3QWsbPgAAAABKSTBGAiEA7es8koOmJhXkaSVtgxuox0Ggavk/t3eKgZp0LwcMRpwCIQDrYPJhNBhf4pz+OvDnT7vMhX+UrcxmFmDdjF2VPlotbwH/////AQDyBSoBAAAAF6kUQftlBPi8soIGWWGE/UCl7UK85T2HAAAAAA== +AQAAAAEARQQA2oX+EPd8W3TQYEMAO8TVxDpZyEeAEdKBR1IaXgAAAAAmJVEhAsoqgQqxckm2AzoDjeVjmDiBtAaScBg/PAq6lFZT5EIWUa7/////AbAuBSoBAAAAGXapFNv4lQkXapdeQdBMwK8kz8jeQ5SpiKwAAAAA +Block: 395 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPmPSk0BJQYvUDJTSC//////AQDyBSoBAAAAIyEDOcEdldIyfNcAZe0ChYQJazMtYhbi9QeycTlbwnTERmisAAAAAA== +Block: 396 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBA6TSk0BRwYvUDJTSC//////AQDyBSoBAAAAIyEDtvkQ28+OY54ki+oXYvWa0fw11k8vxB/B4cMH7V58twOsAAAAAA== +Block: 397 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBPyTSk0BIgYvUDJTSC//////AQDyBSoBAAAAIyECx9UHjpCRe3FVOjaiFqNnSgnF3v2HBWMDbbwmwU43LEOsAAAAAA== +Block: 398 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8OBDiUSk0BYQYvUDJTSC//////AQDyBSoBAAAAIyED6NynJo7IyuATbKSg3y1fpVP8O+mZS7AI0jEGsnyk6TusAAAAAA== +AQAAAAMozhDHGJAmhmvPwdBrJ4mB3fIewONk4o4pQ2W1wyjNQwAAAABsSTBGAiEAuRiVHMVfuyhRaABN5+qyHnAuidxDwWe6D8GwknPinPUCIQD5XCS2x0DiMGpFvqHnoMjyAyydTaTY0cxrXEFm0fq/5QEhAzst1v5TYR7z0RK3CYqJmfSL8nx7+UvQRUOdh6nsEfyj//////xPHtSYxfMf6QsQOJ8SVmozUKUIDbHbofAfiDTlgTypAAAAAEhHMEQCIBYe4n760oLoyYQFFBj8wrymhU8/XU4kAxuVC814U5Q6AiArVWbHKur/IpXbgsedUtiNvpRQ4BxslR1dAUjCkPbLvgH//////F7s+pDUau7aNrsaLy2mHk+b6BJTAzrlViXQCssT7zUAAAAASkkwRgIhAPfZlrw57wCyFwFO4+f4tJ7XFPzOL+lwoq2iuah6dBwtAiEAxVpgicKyPsh8UGNRPGyKv8FMkT+Ktpz06+1qWMIglGkB/////wNA8fI6AAAAABl2qRTwaXVv/Z0zERnlQwJoQ3rtFCEK+4isAPIFKgEAAAAXqRQpC7oypJMVeJoDC7QLAEf4+5D/ZocA8gUqAQAAABepFB2cpx76NtgUQk6myhQ35nKHrr40hwAAAAA= +Block: 399 +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 +Block: 400 +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 +Block: 401 +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 +Block: 402 +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 +Block: 403 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBNeYSk0CigAGL1AyU0gv/////wEA8gUqAQAAACMhAvSAIBforWw9d5r61WUFwLbKiqG7Tp+aErawLUcCCw9BrAAAAAA= +Block: 404 +AQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8PBEuZSk0C5wAGL1AyU0gv/////wGQwgkqAQAAACMhA2M90osFInstoaaOr1OuVZ68aSxOd4R1qmtfVh38juDPrAAAAAA= +AQAAAAHUz5ov//pM08kXm1o2SBNfLeyYmaP9/7v6utrFI8jiZQAAAABqRzBEAiAvPMxWNCWyfhfCGKBsu9BBnfGhj/Z4TOZCOh53+ypBMAIgKQTG1IJA/WaHUP4uWOi6nsRW42jVmqH539sowoy5eTMBIQMtlAKfQyMs9rD7Od6KLeXjL83x0LAqYCg9Jl0P6nO9Y/////8CnoyJJwEAAAAZdqkUhcLH3x399PH5vfZsvUgypPnj1YWIrKCXDQAAAAAAGXapFJI6pCiACahG/QRJoZ57kFlM9aW5iKwAAAAA +AQAAAAETJi/Em9crkuHXMYc4av2HOPRwgR0bl+5K21jgh+/dbgAAAABrSDBFAiEAs5Bs1KcJLYpbPRJXfCLDiPfAoy5Z9mXt+mN3Wh0VK9wCIHEtTY79qYP865OodCc7J9qQde7OPZi+TRLAK+KzVyNPASEDcl0mtwg9OItg6p4NEsMl1rPtf1dkb4dBturQdRnx9rr/////AvIyfCcBAAAAGXapFPjNQHXq/0oRUc1H5trANhjd1Hd+iKxclgwAAAAAABl2qRQYXsXAUBKpQ4ooqiBjAJcVOQe4uYisAAAAAA== +AQAAAAHNH3Yh//0+QlQ4KMVm0wi4AB+4LI7tE+KFvtp9KEWiEwAAAABsSTBGAiEAi09l6CH4tlTGfpJpsLIJoES+MglJXJ0scV3lvYuiDvcCIQDcYqnWS71lO40xjwaDeGlQU1Tfpt4NVo1cKNwDgAC3tAEhAmay0ZebRYarD30nSlO4rKAX/8h63499dbdXXyKNIFM//////wI3YngnAQAAABl2qRSugUfjKIsvTmPoR1eYaPGrIsGx+Yisaw0DAAAAAAAXqRTMrfNVbSe2QIbGg1B57YfKTlV8vYcAAAAA +AQAAAAFBe12aREF9QTLAfeZARnqRBNgvc8cHVdGU8IfO40uWsQAAAABqRzBEAiB/xOllg6Pqly0rhU3mKT65GThAvBQIhaOBLK+tQr6+NAIgE5cposZIj9e+jGhBxrFoEX/+muYz8NJMwyRg5wPjvSYBIQPdNRiHz07EbettCy4OQRw/v9mo3o8AAG0kDOCT7lO0Zv////8Cz0xzJwEAAAAZdqkU6HnXJoHyQItNzFADHpdOkG6L+8+IrBhSBAAAAAAAF6kUr7+3TumUx9RfZphzi8QibQZSZveHAAAAAA== +AQAAAAGIjBCCsjgls53v4HcZvaWIlbJAn1W6eTiqefPP9NTwDgAAAABqRzBEAiB4evy04bEzyTTB1l1MfmvnFET5FSmUO4uVvOuvAvB3YwIgd8cCiHMcB/kGWp4xpUnZtRL+LLRZVUWQvTpMsZ5JilwBIQNsVirqETKlqd8w7wMTdW3YrscT6ZELH6ts7jJNTei5U/////8CAiltJwEAAAAZdqkUqOjsIat4A4FqxXwrWQ7Ilm42vaiIrH1gBQAAAAAAF6kUZfb3FRfJ/UhUFwScLe1SdVPC0QeHAAAAAA== +Block: 405 +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 \ No newline at end of file diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/Hashes_for_first_500_transactions_on_testnet3.txt b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/Hashes_for_first_500_transactions_on_testnet3.txt new file mode 100644 index 00000000..3850b45e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/Hashes_for_first_500_transactions_on_testnet3.txt @@ -0,0 +1,908 @@ +Block: 0 +Transacion 0: A4E5E1B4AA8BF9A32315A8883CB18CF716F86776E3C27CA72B21B7A7DFDE3AB3 +Block: 1 +Transacion 0: 0F13F5CF8307D907DA65742E028453D83D47F5C33E7824328CA0C729AF0B8CAB +Block: 2 +Transacion 0: 0222E29BF085595596621C21BBA50AFDA45BBA3C01E7126A59A0CEB3E253142E +Block: 3 +Transacion 0: 174261297DDA0C89C010E867A40579F4951E56B78AA8B15130EAA235CFA5AB14 +Block: 4 +Transacion 0: D2F156E779F027C4C46D099414258AB32D79DC018EE69D03AD2ADD6775D679C4 +Block: 5 +Transacion 0: 8610BC1457372250463CEC3CD43DA980972EE47AA5C71AABA6B3C8111C6C6C3B +Block: 6 +Transacion 0: 8E541CF5D114C509F18BBA0D04816D6BBABCE03F3A58B5B742DC9A6896207E1D +Block: 7 +Transacion 0: DA362EAC5D49076F8B3800BCF91C84DA1CD14A083928BE397C9144EC95F17D1C +Block: 8 +Transacion 0: 6796EC299FF3A9DF15FFEA42E34070B64E5E80C86F5910AA6BEDE9EDC5334120 +Block: 9 +Transacion 0: 25AEB9B769B7906FA26CFEC93E56CED4FC80AAABD601ED6FD843D51627447916 +Block: 10 +Transacion 0: 45461B3C2F15060F81F3DA864A6038D8D2A10CEA0E950970E2EC9423C6622CE2 +Block: 11 +Transacion 0: 5EE1217BDAF7E1AB3716DA73AF2E048DEA39CEFAF09C1D62A3F85BDFA594BF92 +Block: 12 +Transacion 0: 1831BACF2664CE54943CE4B34683608DB0E8E23A26CC810F8C5757554435D8E7 +Block: 13 +Transacion 0: B69E8C913E734AF35B8327569232EAE99927D9055BEDBA6B8ECA0F3E53EB3FAE +Block: 14 +Transacion 0: FD0025868F865136D4050245D0CE6BF6EC90F7529B49B23FB88DB8AF3443C44D +Block: 15 +Transacion 0: 9E4D7F149C78A036E538B1D03AE8C8D734C25FC2C842AA56A7910E932C85FE0A +Block: 16 +Transacion 0: 0D58283D17F1570D586C8178F40B0D94EA905DCE59CEF6A5DB82F9B44517C245 +Block: 17 +Transacion 0: 71920001780EECEB8A1DD41E56D3C55F69829D47B61CEA567F671FBCFA7FBEDA +Block: 18 +Transacion 0: FC357DCC8DA390A9FCCB13E91EC0E1B3013E4DB26A575B96DF6D6BC98B2DBDE4 +Block: 19 +Transacion 0: 374A89A8FD64B25604FC5A09790814472B89FC4A937FC3A170C2C2F6DBEB757C +Block: 20 +Transacion 0: 4DF5D97A639197E9D9B70DC32C097E8057AEC4AB5DB6B8FF1A1553BFBBD39FAE +Block: 21 +Transacion 0: 17A43D53A865866049E18BF7144FC2A9896AB17AC368370C6B7569A190EAD705 +Block: 22 +Transacion 0: D22CC7D8B4895F2EDE00C9CF61A44C99F0810EC3D4B5177E089F8C7B2B5C1F15 +Block: 23 +Transacion 0: F36ACF2E619EC1D99C6A6217869E8DFB4BEA75EA0C2D560944C2EF6C8E326328 +Block: 24 +Transacion 0: 9FED83E8D0CBA6F70DA131CCA8A7072DA5032DCBE98E792858C47A5A452E9EEF +Block: 25 +Transacion 0: F43C1FC65D59123D5E042E7E2AF1AB855683B347F0529D7AA24488C84F984F09 +Block: 26 +Transacion 0: 2A19795218960268DEF8E2C4D882027ED2A31CDEFF6584BCF66B61089C355D6B +Block: 27 +Transacion 0: 02371302C953F1C670BB9A40ABAEDC9F6095882B51859EEA03999F324DD43F2F +Block: 28 +Transacion 0: F3DAD74E05BD02BF367339E434B3D170233D661DCF8F9F5CB198E8883AEB5C6E +Block: 29 +Transacion 0: 3DBCC2BF111806EDD2AF70D8C999399395F796A88B93F0F31469335A1798E62E +Block: 30 +Transacion 0: A2D96809C737AA708BF5F195662F25E2D21D0FC2D95317A77E8E8ACAF8D6BFC4 +Block: 31 +Transacion 0: B16C8BCA53554A697CF4C3BB66A80BA195647EF11810283D5E9AAD453783B822 +Block: 32 +Transacion 0: 8939616292F1BF479806F15D6E07E26B50F06A73020EE334929E28956B3D04E5 +Block: 33 +Transacion 0: C196190DE8616BF4E140104CA8437B0B693E9AB9B7770B748112116A4CA10B5E +Block: 34 +Transacion 0: F4AA9D561AA29BE53CF4E220E2DF856E45B5F565495565FA795C7C29E1CAC19A +Block: 35 +Transacion 0: 5D503E8FC5B7ECF3C0222D9F1281814F1A3A0A613122833D2050A07F8219F19E +Block: 36 +Transacion 0: E65228ABB7A5968CB8D820718E33D34932CA4B6B8451DE66569547CF55DBAC96 +Block: 37 +Transacion 0: 57379ADBBC73CA97E43ADCB4022DA01F02EAF8F14C17493A1CCE9784AF2904F2 +Block: 38 +Transacion 0: 70195C1C86B83B8BE6B9C59297BF20A1B91E0CA561152BBA72366B36CBDF3ECE +Block: 39 +Transacion 0: E6169C8D9A63269D482903A22C8153374537F6597F4FAF9436F26D3412ABC234 +Block: 40 +Transacion 0: 56815D13D9AA1FF1A596BD66A2D2B04A88B356BBB8521FB5A823FCA752BB3A11 +Block: 41 +Transacion 0: 4C959D16CC06A721FACDA6A802E0481FDAE802122C47F51EE22013DD09AC64EB +Block: 42 +Transacion 0: A9E267F4B01648CE18FF63C5A117889D71DD0580EDDA12F65CB1DDC709435279 +Block: 43 +Transacion 0: 6323464AD31CC13367992E482999DACA95F9229AC152B1648699675AA1F11A78 +Block: 44 +Transacion 0: E1E929712E75314C38EF659CB11ABB8DF7C4EF3E83C190236E94229BAF73189A +Block: 45 +Transacion 0: C3369FDA7A0C7FA6AC29A63239DDB3B6172487AB9DB8B4214C2D3D891175125D +Block: 46 +Transacion 0: E880D69D5CBFD81FBA371A352C353B372B768D602510D1942D0F97958F05C4D2 +Block: 47 +Transacion 0: CD491CE8CD04CDAC46011ADE0EB98D6769111E35FC28251BAA6B35A4C6980B7B +Block: 48 +Transacion 0: 4B188DFB56D2D2A93FFCCAD074CE30C573A74F89BF156416ABA374BA6901E1C1 +Block: 49 +Transacion 0: 782CA94DD3DAF11B870CF1949F2A0E5FE2B4F6EB13617CCB413CF80AD93086F6 +Block: 50 +Transacion 0: 42C2FAC11C4F42A172391E5E70CCD95C272F36D9AFCAE0FCDBAD3AB935122D09 +Block: 51 +Transacion 0: 764FC1684F34CAE7004F49DDB6D52B9E99AA467EA735778290C64EBA233F71D0 +Block: 52 +Transacion 0: 73A4FA7498AE0294544540944B51AF0861AB49FD925EAFC0441384899A13CB7F +Block: 53 +Transacion 0: 8253DF0375A4A60B066C1BB8116ADB52E053D7BF63729DAD48EADDF29046F8F3 +Block: 54 +Transacion 0: EBF19047FB8CE2031DC0032639494C929749114DB29F4AA179FEA5452808FAF6 +Block: 55 +Transacion 0: 27FE886C65EE305D083A9530E0279958D85439EDBCE8E888CCD2E704F837D90A +Block: 56 +Transacion 0: 85312A3737DDFE943B0FFEF9A7D638A04781C968880EA63CD76C6B4375EAB744 +Block: 57 +Transacion 0: 2E2A48C47DF96F22D71BC451973C5FDD9F2AA3CAFA70B88BDA463A946742555B +Block: 58 +Transacion 0: 750AEEBD659E338668035B0EE706A0E540D5E0A8EC6030575BED6ECD524DFE5D +Block: 59 +Transacion 0: 77109E090BF6B6C5AF69876DB8DDDC30AC2EF21B65587F50EACCFDA9B2D41CE5 +Block: 60 +Transacion 0: 2E8E9E02EF089A5F847FD4511A2B36DE7C824641119FBF08DA6E9D7A072A3583 +Block: 61 +Transacion 0: 7F64EE18122B5CE6ADF968E2297FD1D3F5BD58964018D8D3EAE6149C2C7E397D +Block: 62 +Transacion 0: B6E7B6D0E4D21A650F5B5300327B63C21DF5213C8AC376ECDAF428578854DFC3 +Block: 63 +Transacion 0: 72AE85BAEC608215D46636BD4024989D8FCF76067FC416E5C3D1B519F58802AC +Block: 64 +Transacion 0: E469C10131523AC7CDD85870D87D0D302BB2794349759FF70C96A3667DBB4DAD +Block: 65 +Transacion 0: 793780DFDBAD331F77D5ADE2935AFD53EB760B80C606A0C7AF6564DEE6F39DA7 +Block: 66 +Transacion 0: 1CE9C6F3F200A2EFABE5644DCBF0DC2E70853537610A27AC9982C8422CE110D2 +Block: 67 +Transacion 0: EEF95E45637283470BDCACEB0E072B6653278CEA847BD9D46C535D0D2FB01AE8 +Block: 68 +Transacion 0: 42CC2E40E3ECA94551B6924C1C08C4C10D50EC9C79410F8C25065840D1C9B9D5 +Block: 69 +Transacion 0: 21F032E8663935EC5E621C874216AA93FC0F54ED14BD7C7224452E846FE339AB +Block: 70 +Transacion 0: 381D5FD0F83F0BABE7073E2605D7E31E60B5D94513F9320EF595BB97F6A4E79A +Block: 71 +Transacion 0: 11845976ACC2AD8E319F3ED6269EA60727C35423177389BE28DCC83B5748DAB2 +Block: 72 +Transacion 0: B5B337F698A9F4CBC31747616B17B61BA79C8CEE5FF3F28F82DBA2098C25E844 +Block: 73 +Transacion 0: B9F945589F1A2EEE2EA3AF7557D395F59C516F541D42EC4C66C3E35E98705578 +Block: 74 +Transacion 0: 6B2DFA54A31F104C4156AE706290E0B0E824E1FBD840F15A3C7EBB4855C2879C +Block: 75 +Transacion 0: 41C1793B12E76424EB296D61BB88128EE51CCE046C7D51A42A136B08D4B0F88B +Block: 76 +Transacion 0: 8ADCB38D0A4F4B5F59A9D52D3997771E607FA98EDB434F1E07F8737A1DEEFEA2 +Block: 77 +Transacion 0: C933E3D8FF83C1572E442B5084AA1B9487246F3373574D848BB6F2ACBCAB27B5 +Block: 78 +Transacion 0: F2FD55491D4D47650EB4061908525D02C5C0B15570D0BBA65387B75DB9DBFDC0 +Block: 79 +Transacion 0: A53BE0523C9E8C5E30F7CE58BB550AFEABE45209773318A922E997A1693D2A03 +Block: 80 +Transacion 0: 79AB45C7B83B56ABAA1385698CC7B40086621C71B43382AAF8E2E4802BF37B53 +Block: 81 +Transacion 0: 1DE8145EDC1A55C11121C4879C7DF75A0E604BC7A73E2F2417A4028F7C5D0F6F +Block: 82 +Transacion 0: 22C793F05837F6613DF3992FAC656E9D3D52A92526FA3CFCCA8F9F31C043756D +Block: 83 +Transacion 0: 864C4D0E50425D23128C84B739454B8FCD9BE09F5312D78D547C496DE51A4980 +Block: 84 +Transacion 0: BB756A5FF9F3D0FEC49872DCA7D3EBDF26691D5B752856E80FC30B46022FB9FD +Block: 85 +Transacion 0: 0723C7FB8998BD250C8924F52199CDBB59D370C0FB157EECA1203DEB69833377 +Block: 86 +Transacion 0: FFF9F5E1DCC63AB8813C971890CD7E5DC18EE0D135921DBA4F149D469A89C3E5 +Block: 87 +Transacion 0: 4929B967E61B21C313A6067D70CA568672599E87CA7959844CC415D064D917CA +Block: 88 +Transacion 0: BED49855568974D074D6622FBB032A2A57F835C16D942DA543BFAF47E2B821AC +Block: 89 +Transacion 0: 5EA4267AEF9246E30A721EA9C7077C6664B7491F8A6F613C5CB2C323EA5EBEAB +Block: 90 +Transacion 0: 20C5F74B054FC5C921E778D60136E3B9F8AA258B3D5ECDAE28EE68AD15B2B1A4 +Block: 91 +Transacion 0: 39BDFB42528C6BBD24F6F8B6821A70F0B1689310B5BB7F96F413B42DF591B4E5 +Block: 92 +Transacion 0: C7DDABEAC231AFDD3FA7860FBD86E032094B3ADB545BDD96EAEE0ECC0DA31A52 +Block: 93 +Transacion 0: 1CA2A5AC3EFE7D880F88CFAFD662E74D68181AEAD4F274B7AF060C0520476BEB +Block: 94 +Transacion 0: 462F13E5224DE320453FADC2F713BB02CEE41306C13A536AE5E06428F3380B5D +Block: 95 +Transacion 0: BBD413A6AC23D5915F4631137266B8DE22860A905AB9982E577B21E53B614DF4 +Block: 96 +Transacion 0: 9443F91C59B440AF8D136CEE76E5CC3DE5D654BA4BA801F131ADD3A79FB68F61 +Block: 97 +Transacion 0: 0CC41453670377733FDA84FE5E5D90BE8C381E0D84223B2ACEFCA6084A849223 +Block: 98 +Transacion 0: 6DCC0DA064CE086B24F46978169C4C0334C7587260C5D0F76EF380FF04183241 +Block: 99 +Transacion 0: B5A09B3E75769B73FC5557E4CD840B6F39BC64187122282C578707A634DC09D0 +Block: 100 +Transacion 0: 274AF90F85926F3CA180A9C9473194C81B1809FF8C9302E8762AC71C95332A89 +Block: 101 +Transacion 0: 1D24FF86321874A2D276316822CC09A63B37097F56A7D37431E3D420A315F90E +Block: 102 +Transacion 0: 6FEE3ADDF456635330445A533EA7148771B0AB818B174A426D691E694D3D5B55 +Block: 103 +Transacion 0: 95D84FF92436C233ACA0BF8357DD8A3219DA6BACFC1EC56D60A7B7FA8029FA94 +Block: 104 +Transacion 0: 769467A22E021C7050557699CDCEB96B5AA4B788E14B9B1623A333360BD05B81 +Block: 105 +Transacion 0: 5BF2FC3095ABD4EA10EFECD4FB99704F9593F67F55EF3CFA44741A058B6456F8 +Block: 106 +Transacion 0: 4107D20DB19E32342C40AF84C8B0738FF1245008A7CF3395B71F41122B94E8A7 +Block: 107 +Transacion 0: B9845C6516211C96AB876A27700C30294947E14F5BBEED573E0D42EBFBA3B9B8 +Block: 108 +Transacion 0: 82F63509F597F986634B6185C242D8ECD6D34E2145F57DEAE3E2606C3574B5EB +Block: 109 +Transacion 0: 6EE27EAACAA4DEF6C905360A881A830C2FF3A8311C83BCAD467B44A014E14CB8 +Block: 110 +Transacion 0: 8F5CD5C2A31B270EAA3F2AB70DEC42362949D26AA350C4F6C8C52F6EDA19E28E +Block: 111 +Transacion 0: E3DD473F28D39FEBAF63176ABD5A7D96A1C60F9CA22C240EA453ABC9BAE514EC +Block: 112 +Transacion 0: 4600AE9F51506E4F515F5FE34975A5368C6669942D1B381D3FE14141272B33FF +Block: 113 +Transacion 0: 55C4C9F33F9B01148A29F909FE97E92185787F5B4BD7A7D888A8617B00C77719 +Block: 114 +Transacion 0: 810CD8B85D8152783330E9722BA547D58B6A928C77E22A6631C17078F2AD078A +Block: 115 +Transacion 0: F08DA27F8BC70DBC5A1DCE77D509A44DD0751FA2AB3EF3973AD3424DC863D45D +Block: 116 +Transacion 0: D2438452865CB38913FE6725085FF91D153C8FCE908F88766F8BD579D4F0DEEE +Block: 117 +Transacion 0: FDA9353057B3F0871A690DABF5826BC3C353D0407A6C89DB7455D6496592717D +Block: 118 +Transacion 0: B4518A34A3D058AD7A9A07842B9CFA718CF9A2C13458DF883F30B74D69210758 +Block: 119 +Transacion 0: B99BCC672614F4E61E78834B9FB955CA2AD7E7D17584465C8D604D91D5651C7B +Block: 120 +Transacion 0: 9700FF159A785C679924EC104DF962CFC18A229B725B2C1E84A8005A3629A690 +Block: 121 +Transacion 0: 1985DEF8BDCC65373924FE62694B041113B198DDB9732AC3BD674201D7D37E5B +Block: 122 +Transacion 0: 6B417A4E70C86DDE0CC3CC7833349DA8E71D4087081CDD36CF87A2C676804B83 +Block: 123 +Transacion 0: 9F558EBCCE91D5B1E59AE27DEA61235FAE1155B1CF7D3AF0DED0B6508C5734C1 +Block: 124 +Transacion 0: 4B27CA6FE3FADAC37657E04307DB40C59C0065F332A955AFFDB11F20F5896624 +Block: 125 +Transacion 0: A9F3AC66CD6D2E0E314B36045CF0D40808C2AF3E078B997B97DA25304325605C +Block: 126 +Transacion 0: 17588504EFF9F3706D3ECC205BF7486F5B48CD831228FB2759A78C618BC4592D +Block: 127 +Transacion 0: 32456269E0F40C03DC0A5A20A429CE3DBF4D69C2E0EDA2A09240375DCA2417B1 +Block: 128 +Transacion 0: 52BE53C2ACE54B98C9FCAE139E2214D6FFB9AB7E47B96DB9C23F66BB14029496 +Block: 129 +Transacion 0: 30A5899E2FC047CCFB11098C5447BECE0837A9DE522509EF73124ECB0052D5F0 +Block: 130 +Transacion 0: 5ADD490797C2A96DDF1A014D1BC9F9B2B270BE692D9335A0E0E10C1BF2A0CA8C +Block: 131 +Transacion 0: B7F959E0BAA981D1FBA7FEAD3D11C95ACF8C96C679153EE8C22754D4226B7251 +Block: 132 +Transacion 0: FF862E8F129AA42D1972281B3F9690AD2D1AA073840BCC87EB30631A78FD7B96 +Block: 133 +Transacion 0: A643E43EBB13BA2BFF89AD6996C3F0DCFD135384E992C0439B79775E49DAAD58 +Block: 134 +Transacion 0: 26DE07B5373DEAABF450F9ED0DADECCD0091E48EF1174675D0A379E845203600 +Block: 135 +Transacion 0: 7DD993C21FE2B29B85F4C71E7EF53EBD7591143E65828A5C99203F3D235661FF +Block: 136 +Transacion 0: DAAC50396C315BB389AAAA3D0BF7398D589519BAA6C6225184B6D87746EFFB7C +Block: 137 +Transacion 0: F1FF402E25DF797B4AAC64F3FF0263D4E9814A7B9190AEBC09599E6F150C8ADB +Block: 138 +Transacion 0: D2A49B49F0E0D2FDFA3A5DC8A12AD55E93B172104FFD454C6E672FEBE480AAC4 +Block: 139 +Transacion 0: 182497B07A3AFB497AD8B0ED1E675476A134E828801F9C3BBCB2FF5D745CE559 +Block: 140 +Transacion 0: 410A7CE37AA854449C6DF6A0D358FA15722F95FBE0FBBF1EB33486EA6CBB545C +Block: 141 +Transacion 0: B974F15E4BD428D4347F78E3317103BBEB186DA4F3A6077E98C42E40D8453653 +Block: 142 +Transacion 0: CC687462C47BC20D806651C62A464A1D1466C2989941FFA95BEE16FA9473A0F1 +Block: 143 +Transacion 0: 274DCF34CA75A6B4F2F1531E3B012A8DA301213AF6CD8731CE326764592033FC +Block: 144 +Transacion 0: 225876257F4BAB51423853D566BCB148DD166EFEA8ECEE1E3F2EDFC3750343E8 +Block: 145 +Transacion 0: 704E6A2D1F74223161491ABBF6FD90C69E81E68A96E110F40E14F69FCC09E622 +Block: 146 +Transacion 0: D54D07B9630AC02A00CA412E4CF349DB09E9378A92556E28558532837F86DBA0 +Block: 147 +Transacion 0: 95312925CD6AFAAA7F6583B02C3654652878C93992BE93F11015025FD6625E87 +Block: 148 +Transacion 0: F65FDFDE5D6BABC425105B36248BEE7D0C4082BD326C488135CA6AD833F16B2D +Block: 149 +Transacion 0: B142EC4CEC5091FD20A84F1439F461C1F3BD6CBB6F113DF33FE9B0860FC30B1F +Block: 150 +Transacion 0: C50C6A5AA28A141998510D930F40A523A1BF6AF9428142BA2544D2A0F9E66987 +Block: 151 +Transacion 0: 8501E2238E84BF6DC89284D00ED056A3886AED70C7648D6F3C478892F0B2D434 +Block: 152 +Transacion 0: 10040CB5759E5A8280DC82B0BFE7A00DB0C8838C0E220C24E5825237815101B5 +Block: 153 +Transacion 0: DE79DB20034CCFE9356ECA2D088A37BD65930A78FF8547EF086A470CA8986EF1 +Block: 154 +Transacion 0: CC4CCC27B0A3F659F4B6E25E13B86B1BF9B40B76CC7E176D6C7D4692754BC71B +Block: 155 +Transacion 0: D23CF8DE42F8592430948CB3F9E1B69F6AC81DABFE65190D0F91C635D45C2A37 +Block: 156 +Transacion 0: 4AF5A9429D64EFADB1C6E275B19A14CA9051F5D4A6953753689EFC3120C58DF6 +Block: 157 +Transacion 0: B97AF236B791CCCAE09A7FB91B00088096DB3D254646E7CEB9F286CA4AF76569 +Block: 158 +Transacion 0: 1B24142042F0976925620B518F8DD4F6E9A6FB566070F15407DDE707A728A5CE +Block: 159 +Transacion 0: 081275A54425179975884E95FC8C180898F999A7588F2E8C0C5D864DAFD2803E +Block: 160 +Transacion 0: A9124A08448259A61650202556D2B59B56002CD250F15FA089BEBBEF6CEC1AEC +Block: 161 +Transacion 0: C77230FD6B2B7CD4703C5FA4F7B146480DD7D7F703BF2EEF5107EDEBB6902F96 +Block: 162 +Transacion 0: ECC90E655EC6FFE481925BF7DC580CD1897DED8086B2C92E8C223A1A3C15B82B +Block: 163 +Transacion 0: F4F1F722AF674BAABDF6F9039029056E71D4A16E1F9C0D67CF26E4EBE50E1416 +Block: 164 +Transacion 0: CF0D80464703DAC273D32425212096528400C3D0607237605C22AEF50E20B2E4 +Block: 165 +Transacion 0: 2BED756E9291332DA0CC14CA5EEAA6A86DE4F98B483EB1806E8548E7108A89F5 +Block: 166 +Transacion 0: 1380A067B7AF4AF7C6193A4B03C2397C8D8BF11CFD686473B012BEC5909BFC5D +Block: 167 +Transacion 0: 65A1C9B523CBAF222290FF857AA9E0FFBCFF830E7CD8AE046AA284A751E11F57 +Block: 168 +Transacion 0: 34D14A443C5B63788468855A5E74DAFF6EB08B50A7FD1BBA6D8657AA23BB3054 +Block: 169 +Transacion 0: FA95FAA636E0896DD940F57A818305AD3054497B5582AAD4CE821F7DA7D5AE13 +Block: 170 +Transacion 0: 98BE93DF4054D67C601A6627BCDE85C2CDEA7DB1A6A4E2832AC4266BF8592EEB +Block: 171 +Transacion 0: 1E50E1C396BEE2AC32A307206C864D39EE9EC198EE133AC010AF002E34EC0EA1 +Block: 172 +Transacion 0: 5BA5B3BEB03EA33C268EB90D54C37555046348A430B69080D1FBAA9A40879264 +Block: 173 +Transacion 0: 776BAB8BF26A81F3A1387B50152EB2A75542B074F98027FAD943AB5E1D45851D +Block: 174 +Transacion 0: 4840EE9C31A591F83FF72F3F6B503FD4BE863B451C8E6AD0898C1EA9CABB6457 +Block: 175 +Transacion 0: 2F8DB71AD63FFD8D5BC13CE4E9E7B375C6BDBB27340C041278F33E784EE4BAD8 +Block: 176 +Transacion 0: 974F39F6A3DDC1831508C61E5911554B21601E1828697A975A7CB47760737516 +Block: 177 +Transacion 0: 7BB7EF28041E793A0C403E416431BA92CCC5DBD63F28BA5E689DD818EECEBB4B +Block: 178 +Transacion 0: E15FB5A869FB5ACA8AD56C68458CEDB4BF9C724E1B31BD65727E0652ABA18CD7 +Block: 179 +Transacion 0: 3291B6FDDDE92D944AD9A840561781E92A89F6D0FD542A113CBC367A2C442CA5 +Block: 180 +Transacion 0: 2EB377CDC77C8DFF306E0A34311BE354DAE5B9961F22A353D3CDF3DAF24E6E06 +Block: 181 +Transacion 0: BE5D1FA61FE999FEE18004D11ABA8A4D50DE218BE962385009FE4122D2F7632A +Block: 182 +Transacion 0: 9AC3185E4388F10F1ABD1BD0805A0533A66521F98301B09EF13F5C894DE1F4CF +Block: 183 +Transacion 0: 7DF85C829FE00738F2DC6BBF81C1835A33651D5F6AB862DA14EF502671666522 +Block: 184 +Transacion 0: 0A920E24FDB994B503FC591C8C78E698E2D93552D09716CF15B5F9C33F94DC19 +Block: 185 +Transacion 0: 53FE31BCA00D52655EA33035218EB9F4E16AD2F2A1BB63ADEEA64D09AFCEE5CF +Block: 186 +Transacion 0: 4013E6BE12D943854C7AA15FCBA3F5979BA2C2024EC2484808A509F27B17D474 +Block: 187 +Transacion 0: 75DB616F062ED403F6F326C69BC51DB6D70C6196D770475107182FA20EE34CCB +Block: 188 +Transacion 0: F44515939990A0DC688902918CC2A267EE2A544465A80ECA0C15BE23798BC1AC +Block: 189 +Transacion 0: 00038DB28BDAD97D66F49D2ECB410DEAD3C93BD4C25DD685865EFB98A92BF4C2 +Block: 190 +Transacion 0: 1E25E57201E1F145446D5B1984E2A1E6F30D785974E22F60F6FEB28232B19E86 +Block: 191 +Transacion 0: 8513A31BA0E68D6F694E67B9062A7E9F4AE5A828684D89BD32357B7B01B9D23A +Block: 192 +Transacion 0: 84478A66084ABB4935D771A69BE6D6466EF8716325EAFE3AB7311AA56FD4EBFE +Block: 193 +Transacion 0: 3D9DF8495896FADD682451329A4558743743E6BB638D47D773D5DC8D37B7CCE0 +Block: 194 +Transacion 0: B25A526C33669B7E184112E42681A27E7BA4E6ADFAAD8F07568308EF17960C33 +Block: 195 +Transacion 0: 72E9408813BCE244D1B6DA2B04F295129CE5A2D11B0143F4F9C26AB430637848 +Block: 196 +Transacion 0: 046F44EFE24A07E4DD99AE2ECF3E1ADD608C4252D0250FAF0106307140E1E557 +Block: 197 +Transacion 0: DDE670E27B0E29CACA83621C3D6412C881D807875940CF6197E5156A650A39E9 +Block: 198 +Transacion 0: 05E31685EE3F88D6F6DBD9731CBF0E4A471D64E98A149575A68E2C024DF20B96 +Block: 199 +Transacion 0: F7603D45451CE00405E3304B776E359DA698FE741CE054896F33EF6F5B8BF0FC +Block: 200 +Transacion 0: 547104DB4D373CC3A29D12D341318778EDD268281DFA38363244BBA44C214D88 +Block: 201 +Transacion 0: DF4CC31F486CBEA1873D6F61E7D0CD671A2CC67BACDC0CE7546DB1A1895FBA3E +Block: 202 +Transacion 0: B32F74E782D6748C99977B415F130798ED9546FD94A423719C6E8DDDBD0DDB41 +Block: 203 +Transacion 0: 335E2EAC0B5ACCFEFF0AAD66F5B8FDBD78902612B864538CF4FAFE5F64A7AD7E +Block: 204 +Transacion 0: E7E9EC57FEBB95FD3BE82454AF9174346336D62B355806A6ED1C2C13F7A686FD +Block: 205 +Transacion 0: EA0F17D9ADC6C33B9C30D98BB6C3A19AD79A32828B92B1F927E9EC88514731C9 +Block: 206 +Transacion 0: 646E19BB59854C33324257C02137DD229968837178B8F8BE7C784D180ECD5898 +Block: 207 +Transacion 0: 5F38A6A30CFBC62554127E6CE228FC63AAAACFDCA30B736AD4718FA75455DE96 +Block: 208 +Transacion 0: 26C32873E5596D430ED220A8A56FA7E379002CB526183EE7A7DD352D4331FBE5 +Block: 209 +Transacion 0: 2EEB010E97A954ACB04CF95567229A5AC8157F5979E32AA864A1B20BBDC818F3 +Block: 210 +Transacion 0: EC42B7CE0A6A9B2997975941A07444A6730A484EF154EE479BD4A9550ED4A433 +Block: 211 +Transacion 0: BFE7DAA72079393E28C925A3ADFFC3D6AED7CC12798C331527D1F269FA63092D +Block: 212 +Transacion 0: 92BF17129D0C1347508907DD878F2BBC976E0934EA9C8FC3B91972CA46465F4A +Block: 213 +Transacion 0: 5ED0C457ACC8B1E615B51BD74543E8FFA861DE7A959D3C33A21CFED0CED063A8 +Block: 214 +Transacion 0: 29B1E8AD9C4BFB47F97643BE82945CB59C5EF685559504844DDD46A1DCC37BE2 +Block: 215 +Transacion 0: 243260DA2118368CFD808A484B7959012F833A869AEA72141F86FDA89DE4F58F +Block: 216 +Transacion 0: 722B3FAEAFE96569BE678A69C05905E227B746F043D430A13A5C99B19AEF622D +Block: 217 +Transacion 0: B0283F61968394BA35B7F9601FFAC6F1B8A177E16179A0BEC4AF62F47ADC88F3 +Block: 218 +Transacion 0: 7178A912E54E192CF1DB3E2EBD090F735E171E673208A8E3AC533C71110FD7B5 +Block: 219 +Transacion 0: 24FB2B2C07ED381C3EBC1F32C374E609C6E568A4A29D8C04842F0F0DC0242997 +Block: 220 +Transacion 0: AE49085050F534DB53D4E1CA6BB8B3958B6933F9CE6AC41DE8A2FB9241F3E03A +Block: 221 +Transacion 0: 0338BC898080D83A808870F3A59C253C0AB25A249337B63CE26DF34D641B11C3 +Block: 222 +Transacion 0: 93D392D2650FEDD9D2CD4CD67AF8792526BDF7509AD9C4104F766EFCAEB3C71B +Block: 223 +Transacion 0: BF2A8B59866740CD1BD0C1A399FDB1B5801AAA84EB632B9FE70B5A89C54DF42E +Block: 224 +Transacion 0: 4C365AE469930A4CE2C2B52BB6CB0CC25328A3C424F8A948C34F07B4B40F23C8 +Block: 225 +Transacion 0: C5DAF96771C7646ACEEEC484892CD4E8D9778FB9EC7C8579941C298DBD060F95 +Block: 226 +Transacion 0: 17F898824DE670FDDAC71EE77474FE3235F638968995840020CD834AE06C046F +Block: 227 +Transacion 0: 67C3B1FE96340ED2C96069BE1E3829E26275C584D9FE709A9B98AFDA73C3CA95 +Block: 228 +Transacion 0: FD784B0505E776DF56731C579985984CF739864F1B349FBE031827506353E52E +Block: 229 +Transacion 0: 2124DD113F28088226FF292FD05D9AE665C9FD9D0A45028A47F7388BF1FEA351 +Block: 230 +Transacion 0: AB3D904C6C32198304D1ABEE9A3EDEF06DD3173DE598069F18964443B8693812 +Block: 231 +Transacion 0: 2B2F2AF6E7FCD81AB3AF6D453ADDA38E7CAECF2A4AF76D7330CB4B0F8A1E8F7F +Block: 232 +Transacion 0: B5EE6BF7B6A0B0B70CFEE686E58CD51B97F95595F4B4BF0131A4A904A2C9B46E +Block: 233 +Transacion 0: E3B1B614772EC74C2128E445D55E6AD1BA53D75B1BE5BCA1AEE30C65EDF21A4E +Block: 234 +Transacion 0: 35DC0CBE986E28ACC5532DE06D6F067403CAF57CA129B7985FB0DF8C88A53AF0 +Block: 235 +Transacion 0: 0FC94817E1476C418BAF9E387A37CB7BA744FF999977401482D86FB87D99CE3B +Block: 236 +Transacion 0: 550377252E9922FBAAB445B1393944288094831059B54D7148F6DF463C8B52C1 +Block: 237 +Transacion 0: A6E25AB745F4ECE163AEEF6C4543683E4DF96692D5CD113FCE226792B58FEEAA +Block: 238 +Transacion 0: B59FEB8D4DBFF34EE30262E81875DE29ED1B85643D577BA8A222B6368A381DAC +Block: 239 +Transacion 0: CC16AB9F1835608FADF8D91E5020F3EDD0CD9462D9A86CA7F6C3881B94A2D95D +Block: 240 +Transacion 0: 760DB09C3A33EB03DCAC07BC773D0DCB980529751D1C20799C667B42A3B0992A +Block: 241 +Transacion 0: 10E3224E31DC3F8EE0AC630C850F3AA10CE0CBBF5F74AFA665885B26D671937E +Block: 242 +Transacion 0: BF15760DEA728B80335BEC2797EC77FFC1A01F2B4E8C2812217E5DD2CEC2F5AF +Block: 243 +Transacion 0: E146943CD1D6EFD812B1D7059A9455277E71F39CB1A5643A3A81A853E3D58F17 +Block: 244 +Transacion 0: A47E3DE47480ED9CDFBF0158FE838286A5F7D789E6724867E029F9E8A033A046 +Block: 245 +Transacion 0: 64290A6A8911A348C1820C333039F770052AC4981B0199B46AAD556A270F60C8 +Block: 246 +Transacion 0: 11C47D4554BCFA439E844A2137E6F09E62DE50AA741EF9FA90BF187AF1EA3903 +Block: 247 +Transacion 0: C2C27A64DD86B0F2B02E626AF8CF2F945F9805C43B590E0108C0D69CA6290E2F +Block: 248 +Transacion 0: E04FB7918E070C886A4044B7B56BF7EB35F2743685088C58511A3DBDF4DE503C +Block: 249 +Transacion 0: CCB64DA9DB3AC1752806F2C9EF207B55E77D110B9A9320C1BCA749C596CFE804 +Block: 250 +Transacion 0: F09D91F3D8AAEFD8F100E54C5955A0EB05ADBD2C502B9141E595F77ED04D35CF +Block: 251 +Transacion 0: C6F00826031E4E572D3BF8C5E4E89262C0F34B3F2451D1D8B15D49EBE6E156C3 +Block: 252 +Transacion 0: 238AA765770816A8BDE3A8B039E42AA470613CF7E5A915F7C314962EB02E0B29 +Block: 253 +Transacion 0: 15AE5DD71A77AAD7B14B9D62AE93A2C416D5158DC1DC12ABAFB2CBC737ECEECE +Block: 254 +Transacion 0: 904A5F0927AA6AA53DEAB0E4743BF9F8176AC0B5BD99BCEFAA13B876AE3EC218 +Block: 255 +Transacion 0: 3A0E1E9B7A22020A156DAA08F1B1248DA8A64D76344EE5B97E10763AC2612691 +Block: 256 +Transacion 0: 7B64E63E637AC7F9128B792FCC9ACF026AF45A21892C6E21731DEBDCD68187AB +Block: 257 +Transacion 0: 708CDF710539593B56B92626DB7ED741782E1AD739718DDE0F39C6651F097105 +Block: 258 +Transacion 0: 5AE06A6FF0F242FA09997DFC47761E948943F50DE170BB951F4A9B3F8B01A8F5 +Block: 259 +Transacion 0: 952A69E8A179A49B4DA6C55ACDC5CF022678D9813385E7D14BFADEB917C59847 +Block: 260 +Transacion 0: 8358B279FF43030387BA5D95BCDB85A4900E1BD6BFB8AE53390DB20EDD88B6C4 +Block: 261 +Transacion 0: 3A29DF8EB46B59C66AF3F2299994F9163CDE3E759B676D2B2B93AD2E7D47AD41 +Block: 262 +Transacion 0: 36927167905873357B104C399B47C243774CC70283AE55B54BD5C2B443D4FC67 +Block: 263 +Transacion 0: 2A4957FBF6A80F74D6F344A094114EE338E5A5C576A85D5A3278DB4F554A8CD2 +Block: 264 +Transacion 0: EE8167476C693DB55DE1500619C39EC674318193E9B2327C1B8D7A36598FE070 +Block: 265 +Transacion 0: EAA56C2DAC02C8E12A663273D16561C9421209CD5264F84078E764A22BE94FA4 +Block: 266 +Transacion 0: F4DBE6D395C7E93CF0E527C3D6C5FB14F1CAB10088B2FE0B782C4CB04329D437 +Block: 267 +Transacion 0: 3FAD31404D8404988697F3C3221E26C3E5CE81FB4523F368AC5F29F358758257 +Block: 268 +Transacion 0: 0A4FE4E326D3E9FE15FDE6732B39DFB5A1AC26691A6515EDF71F866AB394CD62 +Block: 269 +Transacion 0: 68F723467C0D39CD822314E57CD56554C3C93C19C135536B4A50C3E9E738A35E +Block: 270 +Transacion 0: 975E17E211AFAB0674B881B4FB820360C3A31A2A2CC77B60DBC27C2F531C3080 +Block: 271 +Transacion 0: 418F2343797ACB0990B77634CFF89B8004736186731DA21B69C1170BBD4291DA +Block: 272 +Transacion 0: E8AE5D397F893664281E375F02B9D4ACF7ACB9CF3BB9D86862A064881C8B0155 +Block: 273 +Transacion 0: 87A7327727E0B63577808F62DED3FB460253A34A0AE03176E7CDD965E37F4D45 +Block: 274 +Transacion 0: DF4A6FC4671F456EF277B6719EE69E16244F81ECE8F20DEC7A8AA13A5EB5A6A6 +Block: 275 +Transacion 0: C8E3DF1808DCB932EDD2903EF5DAF5B228A294373F075A4C0FE1A7AF76737081 +Block: 276 +Transacion 0: BCB248F3CA047C720068837652DBD2F6FD18928D328269713F41972E7090A51E +Block: 277 +Transacion 0: 3B224AC24234E0C9699ECBE3C00EF8FA0830BACDA03D039E88FC498C1E88CD6F +Block: 278 +Transacion 0: 884967FF0184272F9CA36C15FE924B6C4F08D061E1F28A951F88CC839E2BC118 +Block: 279 +Transacion 0: 7D6294D1EDD1E8D094BDA5E171C8629932E3B5C7A47AF7F5DDAAC3922F89FFB0 +Block: 280 +Transacion 0: 07927F55432755A5424FBAA5772907614EE972A65BC2EBA6A2DC80D1A7005B77 +Block: 281 +Transacion 0: A286B5736560D59ECF4478C802303B897387BB2EC900AC3038C573CF5D503405 +Block: 282 +Transacion 0: 7F5CA571B6BC1D00A863777A6029F426FA98E4A450E9AF3D959C4F493D9C9761 +Block: 283 +Transacion 0: B760A4BD2C34A782B9B7165B4C404853FAF145B21C73E7E6738DA21E29D6BD52 +Block: 284 +Transacion 0: E3E040D88DA72F2B805D1A73CB86E132BBD2BBA436437AB5B0D24DE3487B0619 +Block: 285 +Transacion 0: E291A329072C2310F6DCA22D6F96F6A98F8E700B98992524094B7E4943A91851 +Block: 286 +Transacion 0: 4DF437A5C7CEB7150BCBA89AE850226E322E591F5FD304B8A958767B4344EF6C +Block: 287 +Transacion 0: 9009265BBE017E7739030E7D75292A37E77017137AE671DCC7385606098F6D21 +Block: 288 +Transacion 0: CBBF961139F9F8B1330A9B2FCA606B9BC12AE77ECF9C1B4CFB6FE33F5754BA54 +Block: 289 +Transacion 0: 880A09AB0ED3D5C360A48DCEF4982A6C92FABD0738C9ADD39ECE4530D04FE272 +Block: 290 +Transacion 0: 6FD4837D07212F04C08278CD4BFB7DF567D1F3DD871ED9FF20E39913BFDB57F1 +Block: 291 +Transacion 0: 1C3CD06143D410F638D51A29CFB3CBB7C74F2C27285B83270B2D45EAC36422A7 +Block: 292 +Transacion 0: ED567767572E73D8C36543265DC07ADDA68D9D77030EDCCEC80F6D1DB2E89937 +Block: 293 +Transacion 0: A0807C71A404637606295AA2C34E64360B0C3FDC3AF5B6BCEADBD1D6B896D840 +Block: 294 +Transacion 0: 6F0284045D2E8CEDB02B8361A907A88676FEB700DE502F10148EC08C1C5F48FE +Block: 295 +Transacion 0: FB9928BC2D57A6E23B3F134BA687B3D7E33B94B111D2C148DA88D4BF0EB7B02D +Block: 296 +Transacion 0: 2B544C2144C96E18865BDC2587608994B3040870C3203EEC4764BB05D901F57F +Block: 297 +Transacion 0: 5349C232586129C7199A903B2AF1BE9D952BD5AD46E5E22315329452876B1DFC +Block: 298 +Transacion 0: 5237D9837A59972316691BA82D8B865F301CCE5FEC64640FBF82A78CBFD2C421 +Block: 299 +Transacion 0: EE408DEF96C7F38E05378E9069B597343499C04694CFD51A64680FC0C158F69C +Block: 300 +Transacion 0: FED86F29C1533394C0EF76A659C00A830C369D816221C40BEE701A8E87CBEE57 +Block: 301 +Transacion 0: 8E27628916CCDCAAD5D7379057C6D79C40AC21250E51A06E79E18751A970C937 +Block: 302 +Transacion 0: 2AF236410966662C0C5257F46DA184C3830272F6D5551966C75C262B2B645B6A +Block: 303 +Transacion 0: 34578F62E43649464CCE0E9AA54763376DC8D7511336C03290F36350121C99AB +Block: 304 +Transacion 0: 70DADADF7728CD087A77EB7E3AB9B8E72A12C0D135AD63BAF78572AA0F00D6FD +Block: 305 +Transacion 0: 40610F7D6525C7EADFE147D8BB4C13239BAE3EAE77B8191AF083020FCC65E016 +Block: 306 +Transacion 0: 73363375BAB4F662B4FD2FBDCE2BEC3A5E0B9DFE83DDBE7D7FAE14C95099FFAF +Block: 307 +Transacion 0: 90E5BE62397951A3BD95AD76AF33B4DC3E7A19B3494E8CE0A18AC54AA485A0EB +Block: 308 +Transacion 0: 18D2236DB947FCC7FA2D81158C747BE4D473143D55394FEE3E32391051FC095C +Block: 309 +Transacion 0: F4D9F729573ABF344386410355B456CF9B8587E4812810A9747C1C04E1731F7A +Block: 310 +Transacion 0: 98D9C4D7A64D0689B5EEF36BE54E98F5497339DAB2D8E3C44A3CA3DB47AC4940 +Block: 311 +Transacion 0: 6639E7E42AE559FCF44A940EDDCEE8E63C39932FC637576F9E3C5D238AE18006 +Block: 312 +Transacion 0: 515EA5F03C185AA49F3E728FC522700028AF4B05CE1F0CD826F39CC07D2B1DF6 +Block: 313 +Transacion 0: F38E4AD932FCEE2878C9FEF03AEAA968FC7CB938FF10EEA71EA5EE458788CC4A +Block: 314 +Transacion 0: BC39041B0E204EAAF5E609C48C634B6B68EAF6B8009AA902D8584F9A0C77185E +Block: 315 +Transacion 0: B2EFF3AC5056EE12E2B5A96AF746F5973818AAB93FCF4738B3F391F27C66B159 +Block: 316 +Transacion 0: 18993059912EC40D6E99D0DA4EEAB6B6C68B9F959B31DC0C2D4D2D30498A62E2 +Block: 317 +Transacion 0: B100A150AEF9B61591B6CA2CFD8692925204627EE2F661B37D151E08885A446A +Block: 318 +Transacion 0: DD3925C652A893370AC0D0D3B5DEC42AF6391A3AAFF91996EE48E71E58DB290F +Block: 319 +Transacion 0: 835FFAFF59E532597D29F974049EC861AB865AD8991DD054EDCFBB4DA5C945BB +Block: 320 +Transacion 0: C026E8D8047E96DA914FB6EBE3BF7ECFBCFAA19D8A1DD6732C2D4B8787C315BC +Block: 321 +Transacion 0: 30F086EEFFEF66AB6314B07C9617FC740DB852B92C2A9D79AE2115038D0E3A16 +Block: 322 +Transacion 0: 6CFDF75F7A699B9856521D5982DA57E5668D02E94AA614F9669763A784C8FDBC +Block: 323 +Transacion 0: 817ED60CCE3E03EA3BA82C06EFCFA7441861E7BD3EE016852596BAFF29EA61FC +Block: 324 +Transacion 0: 6C2B940931F1F4807BA24CB13ACA6B13F26100E84D5C4BA55CBFB679895CEE71 +Block: 325 +Transacion 0: 2B3F28B6368049E01917F44EEAF8EF96844B9D0CC72475C86323BFA4AF8DEF0A +Block: 326 +Transacion 0: 21512B092BDE6528C9840184F1D78E665C78BD1C765C829803B0A482A5D46161 +Block: 327 +Transacion 0: 8B8C325B6B2C154F774CF1DDB46EA98494963793D38EC3E416980CD89D33FB24 +Block: 328 +Transacion 0: 06DE54975CC13CB84CB43B229496ED9D1F004BEE7C2B52601C8031591D60E3B7 +Block: 329 +Transacion 0: 0569C1508BF9FB344A65935BD8AF967F7C72B2DE7D1ED6A3BC9AF082517B3EBE +Block: 330 +Transacion 0: 39AEF4674D4C0B262F46D7737A9A19A9CDB6E567F8585BA57C30489C3DFA0641 +Block: 331 +Transacion 0: 8720B1B397FF28606E4EA4317F9D5E7B01EF8C89617A37516215D8FC443D31AC +Block: 332 +Transacion 0: 5629FA1E2E63C145471455E7FA87A47165572007EA1324B5CF7147C91B143F41 +Block: 333 +Transacion 0: 70B0FE7E9F9A287348DFA35A534BAD004A064403E9B8029DB18B705B7D5CB82A +Block: 334 +Transacion 0: 7CCFECBAE66AF4EAFAF3306F1CDE711ABE277E216DF252A3D74F10B79C76926A +Block: 335 +Transacion 0: 3F9AE2B0505EAD2BD2B701C419DF519538AFF99CC036A174AE2B6C569CA2CABC +Block: 336 +Transacion 0: C098334CCD1B4BB48FC6B460A3F6FF3E1184AB9776181E55A80097E0B690FF3B +Block: 337 +Transacion 0: CB090B2BD2CDB73C3ED8A828AA20FFC3EAFFE72B53A345363E15C0DF188E4447 +Block: 338 +Transacion 0: 3DDEC50405754518AD33CA09D9B35D4AC00439AA88D8A5B5D57D72765135F787 +Block: 339 +Transacion 0: 0D46267788252FCC1C88FEA3C59AC443DC8A058127121AB83A4FA078B94850DF +Block: 340 +Transacion 0: F0AA1AF92FD3E1287043D7B3B9CCD1798454776D87D1985BEEB24F2F6EBFA80E +Block: 341 +Transacion 0: AADC016A5DC27002B6B7D5BC70ADE49F46A3E83A86D48C1BA0F68D003383E6E1 +Block: 342 +Transacion 0: 32BA3D2E00F08F8A89461B76261DDFB73388AA230C1271D5215CF163DBB40F1C +Block: 343 +Transacion 0: BCC5E3AE406243C4DF00290D31DDBE4827575C0B6F929C2C5DB775BF69A84255 +Block: 344 +Transacion 0: 6743246DCA88E466A693633F39A4D68C95404506ECEB214C40855310C2C05C53 +Block: 345 +Transacion 0: F38136E53DA65AB5367A0EC73B6A495A5050D49133B1DDC5C6D90F409710F62C +Block: 346 +Transacion 0: D71CBADDDBD255A7321C73FA552BEA8AD8969A2D3DBCBBA2652DC9BF604BF089 +Block: 347 +Transacion 0: 3D756DF956E48B9A6E376B17C8C6A3A98D85B3CD47903AF1F3FFBFE52648A139 +Block: 348 +Transacion 0: ABB7EE4AAEDE4D65C06245655ACA8F4035284A6947D686AF6D2314351346FD9D +Block: 349 +Transacion 0: E771ADC73320CD15D1374E3B406ACBA471A17894927BC034F8004C2E9EF94C29 +Block: 350 +Transacion 0: B791A0CA3698AF9FD0F9D0D67AFFE631C3A5D3BBC6F65085C00C96E7843BBC93 +Block: 351 +Transacion 0: 39AC112A53A81BD270242242CF853DB983F793268C817AE29383B90D5315721A +Block: 352 +Transacion 0: 4EA1F74C4877C69D3133945CDD07285D34431E0E0697C123BCAB0F4779BBE9AB +Block: 353 +Transacion 0: 10A40D28A379C75B8A5AB4DF9CAA72EC94768CF31DC5F4F97220856827D51E0C +Block: 354 +Transacion 0: 18FF334A67C25F9312F923895F7100BF7D64FA4BC8D84944FBBB4BB7AD2640E3 +Block: 355 +Transacion 0: 3B938EFA4F754E3E457DFD664FDF088EDEBF787220FAB267C44433E0CFE47713 +Block: 356 +Transacion 0: F09ED1E006F39C4B9D49E3CEC362EE052438DFEE57B60D3BB8B31DD1194D3B6B +Block: 357 +Transacion 0: 5EF8635853C98DB3FB1BFBCFB08E1617BC24CBE442CE0AF56AF8F21AA99A2F53 +Block: 358 +Transacion 0: DFC03A58B170B6244A97C2207188601D2C93FFE61483CDF6B95B3D34C4A8EC5A +Block: 359 +Transacion 0: 78FF80396E51F5688468B6F2CE72BFEF36E5B474AEF07772059FE3A1008DE4DD +Block: 360 +Transacion 0: DE2386BEFCE7D2934F53FEEB632A291EB329069816E708784269F382F880D3FB +Block: 361 +Transacion 0: B8F38E7AA14AFF384CEF118EAFE364AEAE6DB1BE7BD57D016C11EB2BA2FA588E +Block: 362 +Transacion 0: 85A87B92A8A4393F2602BA45179FA9296C0C72FE3036AA9AFDD83B1D5330D7E1 +Block: 363 +Transacion 0: 5C10C7F312B6E5D80363D168430CEA4118FAEB3CD5663BFC155ACF006452CA31 +Block: 364 +Transacion 0: C5E412DDE2BE6FC6C4F150EA2F8C92BDE8FE662ADCFADDEFE1264274EF16D326 +Block: 365 +Transacion 0: D778D6BF6A6EBBA3A4C33838214587F24BED311CB2BF3A1E12AAC926065446C7 +Block: 366 +Transacion 0: 438E41EDAD640494590741B6105EDF9E3DA85730A4D89B8FE0C4E541BF7BBD43 +Block: 367 +Transacion 0: 9FFAA000736EB73EFEAC89AA4F2FCD9358EEA8616A271E8F9F4D7E3E79C35DC7 +Block: 368 +Transacion 0: 178FE851AA72D32A9DA1D93D1F77A699BFB0BEF3742A86264E66411E13730B88 +Block: 369 +Transacion 0: F938C68D867385EE6A891E7E2A4F29FE4A6E69344D5B7DDC3D98E5B0E27D3C0B +Block: 370 +Transacion 0: 7769CDA03EA71EA44847C758A4BC073C8F37A3161A06A83B84FDCEF13B2702E5 +Block: 371 +Transacion 0: B77B35FE0F7C5888EF6846E3DBFAFA65AB7C22F6D5BC66BE90945690CE8B8C50 +Block: 372 +Transacion 0: 55D0DB951F6797C7ED0169E7D9D05C3C88816554D3F8C9202A9FE7A9FFC8AA40 +Block: 373 +Transacion 0: BDC4623D731C77710B3A6590E50279E35504BC1C16B2E1F39C22E5E14820BC72 +Block: 374 +Transacion 0: 5C6E48FC0AB0AAB94A3C133799C40E61A05DB1D1731B71DC69D01EC7EDAED98E +Block: 375 +Transacion 0: D50BD0A86C0AB145BE4F8681AB6827C81041CE05843E311416FF0EE01DE3A4C3 +Block: 376 +Transacion 0: 8B011A55762D2C6B44B934FE325F13855540BA6C7AB340DB803BB4158578C8D4 +Block: 377 +Transacion 0: 27C8C2A828A410A45073E44D08CBFCD761C5F34F4B41EC0D82EFD2D60B183DEA +Block: 378 +Transacion 0: D11603AB55FC62A9BFBB41DFEE89C54D4DE3A6A1DC2C62A4624E95F55C3D86C8 +Block: 379 +Transacion 0: BB6EF035598980E62580AF72361758E315249470CF9E439C013857EE93B129B7 +Block: 380 +Transacion 0: 699EA87979D27AFC031F13272C76B9B316320C9A105C9002748C4FD12DFEE4D7 +Block: 381 +Transacion 0: 8E8518921E64EE0BAAA7DB3C95F0C89502CCF54FD2FA502CB3924DEAB515CF22 +Transacion 1: E726E1BE2078A40B938A65F63DF654196EE5AC561383572281245CD36E09D7C6 +Block: 382 +Transacion 0: D62508A97EB750BA19C9BF50C27A4998F2262BE5D76802C09158905C4BAF9699 +Block: 383 +Transacion 0: 2898FBBE9E8F2E7EADCC82B2FB00F43FE5A6CB4B4492680EFFE435E8B9AEDCEA +Transacion 1: 227E8E0666F063B8C556C372B240540A26D591DFCE20CF51E89F08A0C5A3708E +Transacion 2: 2F16FD4A15E9D87D1521DA89D7C928A229DC32D6757D4A68309FB6FF2F865342 +Block: 384 +Transacion 0: AC520F75AD7B0AF214965F51167958484D8B0C3E21A0B7B257F481EC95C76DB2 +Transacion 1: 34DC823C5B563492E82E463E0CE12FDD189872B60D1CFCB6686209817C01EC82 +Transacion 2: AB4001EB2CE2BCA9B526093813B18170ABD28D6EE86116432F67C4EEA73EB15A +Transacion 3: 3C3255FE1993305732405C297ED7297DCB2D1CBCD41DC7A3728F665FEA100EA7 +Block: 385 +Transacion 0: 04E527C66B6925E81CB850A3B81AD55D3050E4DDD392C2979CFCCBF6B9CC0E81 +Transacion 1: 4AD4043B1AA4ACF391CC4F2744FEA407DE200DF0D548C0835736869E7ACC421B +Block: 386 +Transacion 0: 32B636C9DF02C715EE9159BFC45BFC608B6D06305720BAADD2FD13047BF4EB7E +Block: 387 +Transacion 0: FB83034C0C5DA5874753F2C0FE2F926AAC593AF06748F90FA0A79BF2EA4E9EC0 +Transacion 1: 9AF31C323A2FEC3E1FDBF7064D8982207730A22BE01D0900C443B6CD966E7549 +Transacion 2: 7D8400C988BACABF8D0DADBF55250F07A0619F3AF54F513889D8F90716C89117 +Block: 388 +Transacion 0: D4FBA46266A7D8B70FFA3351A1B2FEA755A3CE47064262A69229A52845E99F07 +Transacion 1: 317DFA8CCBBC2CF0649313792C51C0542D20755BE0A5B200A7BD28BCC6218C2B +Transacion 2: 5F912F835CE402BB14B84B15C37E454845D69128009A10EB5551E221FC8A6225 +Block: 389 +Transacion 0: 5E70FCA75E3E1F0F50878A30097A7F6119DD223C7B3CD8EB699826A555662B0E +Transacion 1: B3E5EC565F885DFB33CCE989EF57993129FB79DB775C83AD260EF01FB2947058 +Block: 390 +Transacion 0: 19F1401F10E728631AF6294CE0C5758A06A60F7CD445A55810145EF0F97D735A +Transacion 1: 920F91EC56AC7CA728EADF76285C70AAEDAA79D83F1879F3BA59C82DEC8C8238 +Block: 391 +Transacion 0: C331B8CE4CAADD98E5038EB84BFA0DAFEBDDCF409917259A12F877B2204F4022 +Block: 392 +Transacion 0: 1916C6C9E984615DB98F97D4BF71B1058E81717B4CD186931186B4E285EBDCA2 +Transacion 1: E5A12574182D1108748C95A34C5D4CB30034060D47B5C77F01EF58AD00405400 +Transacion 2: 86A78DCA2B352AB665FC7E84040CD6A2D160BF8766E7F2C57462A24E7B7C22A0 +Block: 393 +Transacion 0: D7F0AE58D2C8407B8F40426A60801AD0429BEC3A038B9ECD25458DDCFECEDA09 +Block: 394 +Transacion 0: 3673D57B4E344E199CB9FC64EC9424D25007F8386B35539C53ED0E0A8655BEFF +Transacion 1: 20082DF2A8AA12B0E98C050976CE5C32FB9706D93887CC6591867548C84FC24E +Transacion 2: 3B1CD9874B59B39674714AD789258FAEC1DCC49FA354ABE2340A9FD7C7BD6255 +Block: 395 +Transacion 0: 3BE24FBE826513125DD8A21EB33EAEC8A0B5A41F74C3FFB10E33930D53004337 +Block: 396 +Transacion 0: 38D507C7E9C2DCE2F2090B1C2BCB97BDF16942EBE355284102697AA0CA6AA190 +Block: 397 +Transacion 0: 2B714EABF8CC8A4DE641032FE78FB6650D6A8A5161AE7A3FA384D65A77212BCE +Block: 398 +Transacion 0: 5590BA3AF5F8F283307E90941BC59ECA29B66D1C865F415F058C57511218F097 +Transacion 1: F9ED8FA26E2A650122C60DA24277F8E21E207EC17B440E8A7069EEA98616A781 +Block: 399 +Transacion 0: 31F20390249989D70E2945981B0A8A97386BCD187F80AAB6D1549A30564F0997 +Transacion 1: 30E8B9F9ECAA536141F21E7AD0370A60F5094AA74BD49C910450CF5B9966B47D +Transacion 2: 8493E2F7076AEB57F771F35E294D142318B4BBAA01410A739832C23613059763 +Transacion 3: B0E03F28C5F55FBE5D01EAEAA9A87D06C88ABF7D12C469474B3FF000939EF692 +Transacion 4: F8E287D4658934A5B2357704BCC9AF3DCAD329B9EAB2F3F0AB68978D46B81F23 +Transacion 5: B3C539D8E0C3F483779512747737F98CEB3DE907A99287F4D1D56294E17687ED +Transacion 6: F4BAF4CF420BD9DA834D2598B6F41C9F5293B133A2846ED698149CFFA9DC3F55 +Transacion 7: D30051683F838A45B26C9C8970679A144B8FA246D9D5E299E074AC8E5A744BF9 +Transacion 8: 246901E399CA7EADC38AF2067C9EBDA772F7B2BBFB5F850D67F8EC0A4FEAE7C9 +Block: 400 +Transacion 0: AB736A9180F675EE3B9751FC9B83AA726C49998DA7E09227CD3D8B486DD50B6C +Transacion 1: 166E31153CC1AF37C80D88E75B09B41B483656F1823ACF66637EF5F0E109930D +Transacion 2: 801054F7282B2575E17275DA1D7CA714F482DC92EA819B33942588771D0EC9B0 +Transacion 3: 2FDF7AD3E27CA9AC1EAC317215A216AA0EE44E305E5CA894C896A9DBC9FE3C4A +Transacion 4: 60EF5D279702D3060686297D41898CFB1D323F75F4887A4ACA1E9311DF956F0D +Transacion 5: 9C53B59700B0AE869DAF70D8E0375A5AB36D4D4BF66499A3AC2E3835A07A3715 +Transacion 6: 9154CC92C8B025C1DF13EF7D09A0F9662F46B40368175AD76A92948C5C2D86DE +Transacion 7: B01773AB0DFE7D44CA21EBEF4F5A5D9FD1F532C4F16BEA2F8385CE1E3188919C +Transacion 8: 667B07D690B83D6B4E57A57A242F87B101A53B86F521CAD2A54A7FBC63565D89 +Transacion 9: 14F72D1D00EA8092D43191E2D0226D6857F3D36B7CCA0BE8F22DDCA7BA6DD076 +Transacion 10: 9D3A8B333CBE818D9A6AACD363A4A06E7DB158CE136A2EB8AEEF8769DC512F4F +Transacion 11: 506830763DE017845A7D45EB55D49AE8663F3E0C6B0153AEDF67FB6D5EEB64AB +Transacion 12: 34AC918C91C2B47A94FAE82B7F86FEA65368E902BD737B13BAB395CE6C09717B +Transacion 13: 2F75BC9B48BDA054C7203E9BD11F579EDEB1373C269285B39261080E04C074AD +Transacion 14: 2B309C29DA939833FE0D9FA7D8CCA40E0B8F644FAFAC5D44B475EA07BC44A271 +Transacion 15: 02BA2EED6BBE7F432E67AAA254871415DF97FD2AC15379755E5C01637D3EB802 +Transacion 16: 34A6DA66683A4718758BCD0B68B3AB427418A7C3B06AA8B18DA398449BEF3505 +Transacion 17: 1FFBE330992ACBE9D0BD834A97E097E4F78787B2C7DAAE1572357F7E4C4D6239 +Block: 401 +Transacion 0: CC3E7A487087173B934A76752009F90F6689C56994A2EB186B08A9973586A788 +Transacion 1: 5540F54A2BCC34F68E4FA2DDE4C3349BBB4249CDAD285474777B67675A284D98 +Transacion 2: 31B4242928B779163EA407D2CA8F72A32B2FFB326364250AF99561EAE73889F7 +Transacion 3: 2CC456BF4B09A88F94483224A1DCCA468FFBC18E0DFC846542B93B1E15A15DF0 +Transacion 4: 259CC9DEE90C5CE17633F64717A68A171F2450243C79135EDF04EE936946E53C +Transacion 5: 55B8E3917B02EB8DE033D4E2F5F02C195FF7C51621369D3624551CF0CFF3C464 +Transacion 6: 8F0670606178B0BEA00BC79AE337A84E801E4574D082302E39393AEFBCBD288B +Transacion 7: 2B8364FC33E2FCF8C36D8CADBCBD3F3FF85DCCCB3A5A1436347A419676754CF9 +Transacion 8: 497A65786A1FC2BD18DCBA12366F2AAEF3D7AF5D0A74A2C68119CC173FFA6E7E +Transacion 9: E3F2B3DD38EE4A87F6F9B77B5196BE61F74101D5D0D5272F8EEA2D3C1371965A +Transacion 10: 252889D738E6359A7D34DA06C61F825313BD6DB00161D1A7ED3692E895EBB545 +Transacion 11: 63B54B162A7115D16ECC97D304993785BB0585A1BD53C24A861B7D2692C6B5F3 +Transacion 12: E1437992533EEA32784AE5CD2AA3B655B4023D2CC23D154BAAADC93FB7FBFCBA +Transacion 13: 0354A724AF498ACB80DF9142F100E5FE1428309327DC2728C0997785997BBAB2 +Transacion 14: 38476DF82697A98B415802D37D34C15FEB6A1E19EAE5A733F739D48335D7890F +Transacion 15: F3639BE5B1177A21598AAABCCAC919381B9715D00D13E9744B3C57F19DF35DA1 +Transacion 16: F47AA32D864FEB22F17E046FD44C0958462A4AA5B47B6E8B36EC0229BD4E332F +Transacion 17: 63898138C43B38C01B0940C3988CFA95AC78B6C53CB04C3AF9B1EC62EC016E5F +Transacion 18: F9D27109D07A1482192886505A5AD356774E575336AEE5766002520E15443981 +Transacion 19: FADF1E4F4BC5E18D5486E80F6861B14FFABECA1F91061A1364BF47C2CFB136B1 +Transacion 20: 8EF1FDBBD43CD52A85B3F219182164393C72E14E7D371599A4CAC3B8E6F08231 +Transacion 21: 0C449A4923A306883D6DF6B005523BA7B3EA0A575CB285F782CE26DF51B0ADC6 +Transacion 22: CCA520E80023A0CEB3CBBB7B647F866E8FC7FD627F916B4549E65986A06D3FD9 +Transacion 23: 8557C7118BC5C3C952FDE43F0056B5BD3901123A8EC805268765D5349E6740E1 +Transacion 24: 560E22884260B6421D73B23F803BC5493A64D1CB8D04516B501C7B7873ECEFFF +Transacion 25: 0284ADDC20DA18B93C762094AE369FB65CF206AEF66EEB77387A51906D5E1E16 +Transacion 26: D6E0031E30443B61C12670937998A2F91F1F6D51445D61054B8DAC3C2C407EBC +Block: 402 +Transacion 0: 57F707DB2C7C4429E5C97AE81C32E923426A2908A3FEBE51FC9B4F4114C735D7 +Transacion 1: A12FEB03072F6A6E285AE321D281252C1F0E6E0793EC0374AB4950159007EADD +Transacion 2: 9B3FC1BFB5848C8DE86A731BAD35EE81EA4306BABC1937AE6DB548DF7D4BDDBA +Transacion 3: FBE5294B5385A716165C9DFDB1775918A99BEFBAD0417930985DD9C87FBF34D9 +Transacion 4: 760FF5C22245795691FD1643662F55DEDE45473FB2BC2ACDC5C4089C3AF1C469 +Transacion 5: FBE8E5EB3E3624955160FAF7174E2D21C1391E0AE6F50609D7B4367AEA1CC2C9 +Transacion 6: 1E6619B55B40E54E9E59287753EE1D8F44FB3AAF3969B6E99901CC61B4463A3F +Transacion 7: A85001E3B9C55DC71B7326298E01FF46EC9838D8DCEA68F0845856B940FAD036 +Transacion 8: 562E8C325CADABAFBBFFDF3A9989CED2F5318463A5B9719C3DC4AFFFF2A9FC4D +Block: 403 +Transacion 0: 6140D0FDFA767DAB82B9EEE930305EF058B9AB4FEEC0C8B78D3884387E37BE5C +Block: 404 +Transacion 0: E01622E1F3B2E1E99140A5738BE1759FB8653F68B9B0F94F6769A4A69BAD1317 +Transacion 1: E6DDFE780E85BDA4EE79B1D118074F8378DFA68378137D1E29B27DB94CF26231 +Transacion 2: 312A5482D7ADEB582E31DEE8C28BF1008B803D665C82834524E3DFFF1267F1DC +Transacion 3: 1B69B43EEC780F491D55707C37F28D4019A764046ED70C2314D71444A9D5B714 +Transacion 4: E00F4D4FFC3F97AA8397AB55F9042B59885ADB91770EFED93B52832B2801C888 +Transacion 5: A87FE6378BE30A4E1EED78C65017FC8C3FAD65B3D5EA06E88AC30F157D5D5916 +Block: 405 +Transacion 0: A7B74FA49643B6503E5D5ABA47A0984A996C47E0BFFF2307911F0B847446AB67 +Transacion 1: 3CB2A7EAF51C0CA9809C7A4E4017C48E0E1CBA4BF0C95BC9A13FAFCA9C62832B +Transacion 2: 7092DE5D3C8E2BACFAD9706ADED2BCF6A7F56675FA40B42C1C18B46E4D363585 +Transacion 3: B92B2AC3CF40BAC2DE944E938BC3FBBC141BEFEEB19D7AC6ACE2FDD28F563E81 +Transacion 4: 8A354968D7B703167D79E02C8F27DDFF4DAEFC6694CD6050BDA4B0FD89A786FF +Transacion 5: 7DD2AB651779FC13766E1041C28E0F76D4E739ED33BE7A83D496DD9AD974F196 +Transacion 6: A20011493A82E7EBFC8A13E9F4B31B9C21092BAB1674E21854662CBDE888FE00 +Transacion 7: 67ABFB78B7C70BC1390BAE543A5CC8FD93ABDEA82343283307FA69ADD0FEDAAA +Transacion 8: 15748D09E43E2FBC6940C95AA8A77FDE82D27F7CE5A3B600564C606FCFBEC3FA +Transacion 9: 587368B85A026F51DB6967C26E0C1193DEF7320293A6061E07BE30A46AD67559 +Transacion 10: 7EF287E1CF1422C43FD7A10A6CF34A56A5686B743263226E353BE83B3D971BCC +Transacion 11: 8C405B78EFB6BF9BE62CCE6B897A2A0C89CC41D83DC164560E0BCA5A28067EB7 +Transacion 12: 78DA3B5FE00FE94804BC8104CDE134FAC0C2DB8B58B953D61BDE4844AFDD19B0 +Transacion 13: 644E36F29F4166A0BD8DDF25232646953FB21EB5CFBE3DCF845FB40DE17E4E91 +Transacion 14: DC6F7949E46EC006FDF46C84F81499C427E567EC4BE05EF5E720CB5EC540C895 \ No newline at end of file diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/dah.pb.go b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/dah.pb.go new file mode 100644 index 00000000..0db9ed1b --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/dah.pb.go @@ -0,0 +1,197 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: dah.proto + +/* +Package util is a generated protocol buffer package. + +It is generated from these files: + dah.proto + +It has these top-level messages: + TX +*/ +package util + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +type TX struct { + Version uint32 `protobuf:"varint,1,opt,name=version" json:"version,omitempty"` + LockTime uint32 `protobuf:"varint,2,opt,name=lockTime" json:"lockTime,omitempty"` + Txin []*TX_TXIN `protobuf:"bytes,3,rep,name=txin" json:"txin,omitempty"` + Txout []*TX_TXOUT `protobuf:"bytes,4,rep,name=txout" json:"txout,omitempty"` + Blocks [][]byte `protobuf:"bytes,5,rep,name=blocks,proto3" json:"blocks,omitempty"` + Fee uint64 `protobuf:"varint,6,opt,name=fee" json:"fee,omitempty"` +} + +func (m *TX) Reset() { *m = TX{} } +func (m *TX) String() string { return proto.CompactTextString(m) } +func (*TX) ProtoMessage() {} +func (*TX) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } + +func (m *TX) GetVersion() uint32 { + if m != nil { + return m.Version + } + return 0 +} + +func (m *TX) GetLockTime() uint32 { + if m != nil { + return m.LockTime + } + return 0 +} + +func (m *TX) GetTxin() []*TX_TXIN { + if m != nil { + return m.Txin + } + return nil +} + +func (m *TX) GetTxout() []*TX_TXOUT { + if m != nil { + return m.Txout + } + return nil +} + +func (m *TX) GetBlocks() [][]byte { + if m != nil { + return m.Blocks + } + return nil +} + +func (m *TX) GetFee() uint64 { + if m != nil { + return m.Fee + } + return 0 +} + +type TX_TXIN struct { + Ix uint32 `protobuf:"varint,1,opt,name=ix" json:"ix,omitempty"` + SourceHash []byte `protobuf:"bytes,2,opt,name=sourceHash,proto3" json:"sourceHash,omitempty"` + Script []byte `protobuf:"bytes,3,opt,name=script,proto3" json:"script,omitempty"` + Sequence uint32 `protobuf:"varint,4,opt,name=sequence" json:"sequence,omitempty"` +} + +func (m *TX_TXIN) Reset() { *m = TX_TXIN{} } +func (m *TX_TXIN) String() string { return proto.CompactTextString(m) } +func (*TX_TXIN) ProtoMessage() {} +func (*TX_TXIN) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} } + +func (m *TX_TXIN) GetIx() uint32 { + if m != nil { + return m.Ix + } + return 0 +} + +func (m *TX_TXIN) GetSourceHash() []byte { + if m != nil { + return m.SourceHash + } + return nil +} + +func (m *TX_TXIN) GetScript() []byte { + if m != nil { + return m.Script + } + return nil +} + +func (m *TX_TXIN) GetSequence() uint32 { + if m != nil { + return m.Sequence + } + return 0 +} + +type TX_TXOUT struct { + Value uint64 `protobuf:"varint,1,opt,name=value" json:"value,omitempty"` + Script []byte `protobuf:"bytes,2,opt,name=script,proto3" json:"script,omitempty"` + Color []byte `protobuf:"bytes,3,opt,name=color,proto3" json:"color,omitempty"` + Quantity uint64 `protobuf:"varint,4,opt,name=quantity" json:"quantity,omitempty"` +} + +func (m *TX_TXOUT) Reset() { *m = TX_TXOUT{} } +func (m *TX_TXOUT) String() string { return proto.CompactTextString(m) } +func (*TX_TXOUT) ProtoMessage() {} +func (*TX_TXOUT) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 1} } + +func (m *TX_TXOUT) GetValue() uint64 { + if m != nil { + return m.Value + } + return 0 +} + +func (m *TX_TXOUT) GetScript() []byte { + if m != nil { + return m.Script + } + return nil +} + +func (m *TX_TXOUT) GetColor() []byte { + if m != nil { + return m.Color + } + return nil +} + +func (m *TX_TXOUT) GetQuantity() uint64 { + if m != nil { + return m.Quantity + } + return 0 +} + +func init() { + proto.RegisterType((*TX)(nil), "util.TX") + proto.RegisterType((*TX_TXIN)(nil), "util.TX.TXIN") + proto.RegisterType((*TX_TXOUT)(nil), "util.TX.TXOUT") +} + +func init() { proto.RegisterFile("dah.proto", fileDescriptor0) } + +var fileDescriptor0 = []byte{ + // 329 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x91, 0xc1, 0x4b, 0xc3, 0x30, + 0x18, 0xc5, 0x59, 0x9b, 0x4e, 0x8d, 0xdb, 0x90, 0x30, 0x24, 0xec, 0x20, 0x55, 0x3c, 0xf4, 0xd4, + 0x82, 0x9e, 0x45, 0xf0, 0xa4, 0x17, 0x85, 0x50, 0x61, 0x78, 0x6b, 0xb3, 0x6f, 0x6d, 0xb4, 0x6b, + 0xba, 0x34, 0x19, 0xdd, 0xd5, 0xbf, 0x5c, 0x92, 0x76, 0x63, 0x5e, 0x42, 0x7e, 0x79, 0x1f, 0xef, + 0xbd, 0x8f, 0xe0, 0x8b, 0x55, 0x56, 0xc6, 0x8d, 0x92, 0x5a, 0x12, 0x64, 0xb4, 0xa8, 0xee, 0x7e, + 0x7d, 0xec, 0xa5, 0x4b, 0x42, 0xf1, 0xd9, 0x0e, 0x54, 0x2b, 0x64, 0x4d, 0x47, 0xe1, 0x28, 0x9a, + 0xb2, 0x03, 0x92, 0x05, 0x3e, 0xaf, 0x24, 0xff, 0x49, 0xc5, 0x06, 0xa8, 0xe7, 0xa4, 0x23, 0x93, + 0x5b, 0x8c, 0x74, 0x27, 0x6a, 0xea, 0x87, 0x7e, 0x74, 0xf9, 0x30, 0x8d, 0xad, 0x63, 0x9c, 0x2e, + 0xe3, 0x74, 0xf9, 0xf6, 0xce, 0x9c, 0x44, 0xee, 0x71, 0xa0, 0x3b, 0x69, 0x34, 0x45, 0x6e, 0x66, + 0x76, 0x32, 0xf3, 0xf1, 0x99, 0xb2, 0x5e, 0x24, 0xd7, 0x78, 0x9c, 0x5b, 0xd7, 0x96, 0x06, 0xa1, + 0x1f, 0x4d, 0xd8, 0x40, 0xe4, 0x0a, 0xfb, 0x6b, 0x00, 0x3a, 0x0e, 0x47, 0x11, 0x62, 0xf6, 0xba, + 0xf8, 0xc6, 0xc8, 0xba, 0x93, 0x19, 0xf6, 0x44, 0x37, 0x74, 0xf5, 0x44, 0x47, 0x6e, 0x30, 0x6e, + 0xa5, 0x51, 0x1c, 0x5e, 0xb3, 0xb6, 0x74, 0x45, 0x27, 0xec, 0xe4, 0xc5, 0x26, 0xb4, 0x5c, 0x89, + 0x46, 0x53, 0xdf, 0x69, 0x03, 0xd9, 0xf5, 0x5a, 0xd8, 0x1a, 0xa8, 0x39, 0x50, 0xd4, 0xaf, 0x77, + 0xe0, 0x45, 0x81, 0x03, 0xd7, 0x92, 0xcc, 0x71, 0xb0, 0xcb, 0x2a, 0x03, 0x2e, 0x0f, 0xb1, 0x1e, + 0x4e, 0x2c, 0xbd, 0x7f, 0x96, 0x73, 0x1c, 0x70, 0x59, 0x49, 0x35, 0x24, 0xf5, 0x60, 0x83, 0xb6, + 0x26, 0xab, 0xb5, 0xd0, 0x7b, 0x17, 0x84, 0xd8, 0x91, 0x5f, 0x9e, 0xbf, 0x9e, 0x0a, 0xa1, 0x4b, + 0x93, 0xc7, 0x5c, 0x6e, 0x92, 0x72, 0xdf, 0x80, 0xaa, 0x60, 0x55, 0x80, 0x4a, 0xd6, 0x59, 0xae, + 0x04, 0x4f, 0xa0, 0xcb, 0x36, 0x4d, 0x05, 0x6d, 0xc2, 0xcb, 0x4c, 0xd4, 0x5c, 0xae, 0x20, 0x29, + 0x64, 0x62, 0x74, 0x67, 0x0f, 0x51, 0xe5, 0x63, 0xf7, 0xa5, 0x8f, 0x7f, 0x01, 0x00, 0x00, 0xff, + 0xff, 0xbb, 0x8b, 0x8c, 0x33, 0xdf, 0x01, 0x00, 0x00, +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/dah.proto b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/dah.proto new file mode 100644 index 00000000..a87236e8 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/dah.proto @@ -0,0 +1,43 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +syntax = "proto3"; + +option go_package = "github.com/hyperledger/fabric/examples/chaincode/go/utxo/util" ; + +package util; + +message TX { + uint32 version = 1; + uint32 lockTime = 2; + message TXIN { + uint32 ix = 1; + bytes sourceHash = 2; + bytes script = 3; + uint32 sequence = 4; + } + repeated TXIN txin = 3; + + message TXOUT { + uint64 value = 1; + bytes script = 2; + bytes color = 3; + uint64 quantity = 4; + } + repeated TXOUT txout = 4; + repeated bytes blocks = 5; + uint64 fee = 6; +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/store.go b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/store.go new file mode 100644 index 00000000..a4142fab --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/store.go @@ -0,0 +1,72 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +// Store interface describes the storage used by this chaincode. The interface +// was created so either the state database store can be used or a in memory +// store can be used for unit testing. +type Store interface { + GetState(Key) (*TX_TXOUT, bool, error) + PutState(Key, *TX_TXOUT) error + DelState(Key) error + GetTran(string) ([]byte, bool, error) + PutTran(string, []byte) error +} + +// InMemoryStore used for unit testing +type InMemoryStore struct { + Map map[Key]*TX_TXOUT + TranMap map[string][]byte +} + +// MakeInMemoryStore creates a new in memory store +func MakeInMemoryStore() Store { + ims := &InMemoryStore{} + ims.Map = make(map[Key]*TX_TXOUT) + ims.TranMap = make(map[string][]byte) + return ims +} + +// GetState returns the transaction for the given key +func (ims *InMemoryStore) GetState(key Key) (*TX_TXOUT, bool, error) { + value, ok := ims.Map[key] + return value, ok, nil +} + +// DelState deletes the given key and corresponding transactions +func (ims *InMemoryStore) DelState(key Key) error { + delete(ims.Map, key) + return nil +} + +// PutState saves the key and transaction in memory +func (ims *InMemoryStore) PutState(key Key, value *TX_TXOUT) error { + ims.Map[key] = value + return nil +} + +// GetTran returns the transaction for the given hash +func (ims *InMemoryStore) GetTran(key string) ([]byte, bool, error) { + value, ok := ims.TranMap[key] + return value, ok, nil +} + +// PutTran saves the hash and transaction in memory +func (ims *InMemoryStore) PutTran(key string, value []byte) error { + ims.TranMap[key] = value + return nil +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/util.go b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/util.go new file mode 100644 index 00000000..d9094c37 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/util.go @@ -0,0 +1,104 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "bytes" + "encoding/binary" +) + +func decodeInt32(input []byte) (int32, []byte, error) { + var myint32 int32 + buf1 := bytes.NewBuffer(input[0:4]) + binary.Read(buf1, binary.LittleEndian, &myint32) + return myint32, input, nil +} + +// ReadVarInt reads an int that is formatted in the Bitcoin style +// variable int format +func ReadVarInt(buffer *bytes.Buffer) uint64 { + var finalResult uint64 + + var variableLenInt uint8 + binary.Read(buffer, binary.LittleEndian, &variableLenInt) + if variableLenInt < 253 { + finalResult = uint64(variableLenInt) + } else if variableLenInt == 253 { + var result uint16 + binary.Read(buffer, binary.LittleEndian, &result) + finalResult = uint64(result) + } else if variableLenInt == 254 { + var result uint32 + binary.Read(buffer, binary.LittleEndian, &result) + finalResult = uint64(result) + } else if variableLenInt == 255 { + var result uint64 + binary.Read(buffer, binary.LittleEndian, &result) + finalResult = result + } + + return finalResult +} + +// ParseUTXOBytes parses a bitcoin style transaction +func ParseUTXOBytes(txAsUTXOBytes []byte) *TX { + buffer := bytes.NewBuffer(txAsUTXOBytes) + var version int32 + binary.Read(buffer, binary.LittleEndian, &version) + + inputCount := ReadVarInt(buffer) + + newTX := &TX{} + + for i := 0; i < int(inputCount); i++ { + newTXIN := &TX_TXIN{} + + newTXIN.SourceHash = buffer.Next(32) + + binary.Read(buffer, binary.LittleEndian, &newTXIN.Ix) + + // Parse the script length and script bytes + scriptLength := ReadVarInt(buffer) + newTXIN.Script = buffer.Next(int(scriptLength)) + + // Appears to not be used currently + binary.Read(buffer, binary.LittleEndian, &newTXIN.Sequence) + + newTX.Txin = append(newTX.Txin, newTXIN) + + } + + // Now the outputs + outputCount := ReadVarInt(buffer) + + for i := 0; i < int(outputCount); i++ { + newTXOUT := &TX_TXOUT{} + + binary.Read(buffer, binary.LittleEndian, &newTXOUT.Value) + + // Parse the script length and script bytes + scriptLength := ReadVarInt(buffer) + newTXOUT.Script = buffer.Next(int(scriptLength)) + + newTX.Txout = append(newTX.Txout, newTXOUT) + + } + + binary.Read(buffer, binary.LittleEndian, &newTX.LockTime) + + return newTX +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/utxo.go b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/utxo.go new file mode 100644 index 00000000..06e95601 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/utxo.go @@ -0,0 +1,144 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "crypto/sha256" + "encoding/hex" + "fmt" + "math" + + "github.com/hyperledger/fabric/examples/chaincode/go/utxo/consensus" +) + +// UTXO includes the storage for the chaincode API or an in memory +// store for testing +type UTXO struct { + Store Store +} + +// MakeUTXO constructs a new UTXO with the given store +func MakeUTXO(store Store) *UTXO { + utxo := &UTXO{} + utxo.Store = store + return utxo +} + +// Key represents the key for a transaction in storage. It has both a +// hash and index +type Key struct { + TxHashAsHex string + TxIndex uint32 +} + +// GetTransactionHash returns the Bitcoin hash (double sha256) of +// the given transaction +func (u *UTXO) GetTransactionHash(txData []byte) [32]byte { + firstHash := sha256.Sum256(txData) + txHash := sha256.Sum256(firstHash[:]) + return txHash +} + +// IsCoinbase returns true if this is a coinbase transaction, false otherwise +func (u *UTXO) IsCoinbase(index uint32) bool { + return index == math.MaxUint32 +} + +var mandatoryFlags = consensus.Verify_flags_p2sh + +var standardFlags = mandatoryFlags | + consensus.Verify_flags_dersig | + consensus.Verify_flags_strictenc | + consensus.Verify_flags_minimaldata | + consensus.Verify_flags_nulldummy | + consensus.Verify_flags_discourage_upgradable_nops | + consensus.Verify_flags_cleanstack | + consensus.Verify_flags_checklocktimeverify | + consensus.Verify_flags_low_s + +// ExecResult is the result of processing a transaction +type ExecResult struct { + SumCurrentOutputs uint64 + SumPriorOutputs uint64 + IsCoinbase bool +} + +// Execute processes the given transaction and outputs a result +func (u *UTXO) Execute(txData []byte) (*ExecResult, error) { + newTX := ParseUTXOBytes(txData) + txHash := u.GetTransactionHash(txData) + execResult := &ExecResult{} + // Loop through outputs first + for index, output := range newTX.Txout { + currKey := &Key{TxHashAsHex: hex.EncodeToString(txHash[:]), TxIndex: uint32(index)} + _, ok, err := u.Store.GetState(*currKey) + if err != nil { + return nil, fmt.Errorf("Error getting state from store: %s", err) + } + if ok == true { + // COLLISION + return nil, fmt.Errorf("COLLISION detected for key = %v, with output script length = %d", currKey, len(output.Script)) + } + // Store the output in utxo + u.Store.PutState(*currKey, &TX_TXOUT{Script: output.Script, Value: output.Value}) + execResult.SumCurrentOutputs += output.Value + } + // Now loop over inputs, + for index, input := range newTX.Txin { + prevTxHash := input.SourceHash + prevOutputIx := input.Ix + if u.IsCoinbase(prevOutputIx) { + execResult.IsCoinbase = true + //fmt.Println("COINBASE!!") + } else { + //fmt.Println("NOT COINBASE!!") + // NOT coinbase, need to verify + keyToPrevOutput := &Key{TxHashAsHex: hex.EncodeToString(prevTxHash), TxIndex: prevOutputIx} + value, ok, err := u.Store.GetState(*keyToPrevOutput) + if err != nil { + return nil, fmt.Errorf("Error getting state from store: %s", err) + } + if !ok { + // Previous output not fouund, + return nil, fmt.Errorf("Could not find previous transaction output with key = %v", keyToPrevOutput) + } + // Call Verify_script + txInputIndex := uint(index) + result := consensus.Verify_script(&txData[0], int64(len(txData)), &value.Script[0], int64(len(value.Script)), txInputIndex, uint(standardFlags)) + if result != consensus.Verify_result_eval_true { + result = consensus.Verify_script(&txData[0], int64(len(txData)), &value.Script[0], int64(len(value.Script)), txInputIndex, uint(mandatoryFlags)) + if result != consensus.Verify_result_eval_true { + return nil, fmt.Errorf("Unexpected result from verify_script, expected %d, got %d, perhaps it is %d", consensus.Verify_result_eval_true, result, consensus.Verify_result_invalid_stack_operation) + } + } + // Verified, now remove prior outputs + u.Store.DelState(*keyToPrevOutput) + execResult.SumPriorOutputs += value.Value + } + + hex := hex.EncodeToString(txHash[:]) + fmt.Printf("PUT TRAN %s", hex) + u.Store.PutTran(hex, txData) + } + return execResult, nil +} + +// Query search the storage for a given transaction hash +func (u *UTXO) Query(txHashHex string) pb.Response { + tx, _, err := u.Store.GetTran(txHashHex) + return tx, err +} diff --git a/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/utxo_test.go b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/utxo_test.go new file mode 100644 index 00000000..ec979c3d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/chaincodes/go/utxo/util/utxo_test.go @@ -0,0 +1,206 @@ +/* +Copyright IBM Corp. 2016 All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "encoding/base64" + "encoding/hex" + "fmt" + "io/ioutil" + "strings" + "sync" + "testing" + + "github.com/golang/protobuf/proto" + "github.com/hyperledger/fabric/examples/chaincode/go/utxo/consensus" +) + +// func TestMain(m *testing.M) { +// // viper.Set("ledger.blockchain.deploy-system-chaincode", "false") +// +// os.Exit(m.Run()) +// } + +const txFileHashes = "./Hashes_for_first_500_transactions_on_testnet3.txt" +const txFile = "./First_500_transactions_base64_encoded_on_testnet3.txt" + +const consensusScriptVerifyTx = "01000000017d01943c40b7f3d8a00a2d62fa1d560bf739a2368c180615b0a7937c0e883e7c000000006b4830450221008f66d188c664a8088893ea4ddd9689024ea5593877753ecc1e9051ed58c15168022037109f0d06e6068b7447966f751de8474641ad2b15ec37f4a9d159b02af68174012103e208f5403383c77d5832a268c9f71480f6e7bfbdfa44904becacfad66163ea31ffffffff01c8af0000000000001976a91458b7a60f11a904feef35a639b6048de8dd4d9f1c88ac00000000" +const consensusScriptVerifyPreviousOutputScript = "76a914c564c740c6900b93afc9f1bdaef0a9d466adf6ee88ac" + +type block struct { + transactions []string +} + +func makeBlock() *block { + //return &block{transactions: make([]string, 0)} + return &block{} +} + +func (b *block) addTxAsBase64String(txAsString string) error { + b.transactions = append(b.transactions, txAsString) + return nil +} + +//getTransactionsAsUTXOBytes returns a readonly channel of the transactions within this block as UTXO []byte +func (b *block) getTransactionsAsUTXOBytes() <-chan []byte { + resChannel := make(chan []byte) + go func() { + defer close(resChannel) + for _, txAsText := range b.transactions { + data, err := base64.StdEncoding.DecodeString(txAsText) + if err != nil { + panic(fmt.Errorf("Could not decode transaction (%s) into bytes use base64 decoding: %s\n", txAsText, err)) + } + resChannel <- data + } + }() + return resChannel +} + +var blocksFromFile []*block +var once sync.Once + +// getBlocks returns the blocks parsed from txFile, but only parses once. +func getBlocks() ([]*block, error) { + var err error + once.Do(func() { + contents, err := ioutil.ReadFile(txFile) + if err != nil { + return + } + lines := strings.Split(string(contents), string('\n')) + var currBlock *block + for _, line := range lines { + if strings.HasPrefix(line, "Block") { + currBlock = makeBlock() + blocksFromFile = append(blocksFromFile, currBlock) + } else { + // Trim out the 'Transacion XX:' part + //currBlock.addTxAsBase64String(strings.Split(line, ": ")[1]) + currBlock.addTxAsBase64String(line) + } + } + }) + + return blocksFromFile, err +} + +func TestVerifyScript_InvalidTranscation(t *testing.T) { + arg1 := []byte("arg1") + arg2 := int64(4) + arg3 := []byte("arg2") + arg4 := int64(4) + arg5 := uint(100) + arg6 := uint(1) + //func Verify_script(arg1 *byte, arg2 int64, arg3 *byte, arg4 int64, arg5 uint, arg6 uint) (_swig_ret LibbitcoinConsensusVerify_result_type) + result := consensus.Verify_script(&arg1[0], arg2, &arg3[0], arg4, arg5, arg6) + t.Log(result) + t.Log(consensus.Verify_result_tx_invalid) + if result != consensus.Verify_result_tx_invalid { + t.Fatalf("Should have failed to verify transaction") + } +} + +func TestParse_GetBlocksFromFile(t *testing.T) { + blocks, err := getBlocks() + if err != nil { + t.Fatalf("Error getting blocks from tx file: %s", err) + } + for index, b := range blocks { + t.Logf("block %d has len transactions = %d", index, len(b.transactions)) + } + t.Logf("Number of blocks = %d from file %s", len(blocks), txFile) +} + +//TestBlocks_GetTransactionsAsUTXOBytes will range over blocks and then transactions in UTXO bytes form. +func TestBlocks_GetTransactionsAsUTXOBytes(t *testing.T) { + blocks, err := getBlocks() + if err != nil { + t.Fatalf("Error getting blocks from tx file: %s", err) + } + // Loop through the blocks and then range over their transactions in UTXO bytes form. + for index, b := range blocks { + t.Logf("block %d has len transactions = %d", index, len(b.transactions)) + for txAsUTXOBytes := range b.getTransactionsAsUTXOBytes() { + //t.Logf("Tx as bytes = %v", txAsUTXOBytes) + _ = len(txAsUTXOBytes) + } + } +} + +func TestParse_UTXOTransactionBytes(t *testing.T) { + blocks, err := getBlocks() + if err != nil { + t.Fatalf("Error getting blocks from tx file: %s", err) + } + utxo := MakeUTXO(MakeInMemoryStore()) + // Loop through the blocks and then range over their transactions in UTXO bytes form. + for index, b := range blocks { + t.Logf("block %d has len transactions = %d", index, len(b.transactions)) + for txAsUTXOBytes := range b.getTransactionsAsUTXOBytes() { + + newTX := ParseUTXOBytes(txAsUTXOBytes) + t.Logf("Block = %d, txInputCount = %d, outputCount=%d", index, len(newTX.Txin), len(newTX.Txout)) + + // Now store the HEX of txHASH + execResult, err := utxo.Execute(txAsUTXOBytes) + if err != nil { + t.Fatalf("Error executing TX: %s", err) + } + if execResult.IsCoinbase == false { + if execResult.SumCurrentOutputs > execResult.SumPriorOutputs { + t.Fatalf("sumOfCurrentOutputs > sumOfPriorOutputs: sumOfCurrentOutputs = %d, sumOfPriorOutputs = %d", execResult.SumCurrentOutputs, execResult.SumPriorOutputs) + } + } + + txHash := utxo.GetTransactionHash(txAsUTXOBytes) + retrievedTx := utxo.Query(hex.EncodeToString(txHash)) + if !proto.Equal(newTX, retrievedTx) { + t.Fatal("Expected TX to be equal. ") + } + } + } + +} + +func TestParse_LibbitconTX(t *testing.T) { + txData, err := hex.DecodeString(consensusScriptVerifyTx) + if err != nil { + t.Fatalf("Error decoding HEX tx from libbitcoin: %s", err) + return + } + + prevTxScript, err := hex.DecodeString(consensusScriptVerifyPreviousOutputScript) + if err != nil { + t.Fatalf("Error decoding HEX tx from libbitcoin: %s", err) + return + } + + t.Logf("TX data from libbitcoin: %v", txData) + + tx := ParseUTXOBytes(txData) + + // Call Verify_script + txInputIndex := uint(0) + result := consensus.Verify_script(&txData[0], int64(len(txData)), &prevTxScript[0], int64(len(prevTxScript)), txInputIndex, uint(consensus.Verify_flags_p2sh)) + if result != consensus.Verify_result_eval_true { + t.Fatalf("Unexpected result from verify_script, expected %d, got %d", consensus.Verify_result_eval_true, result) + } + t.Log(result) + t.Log(consensus.Verify_result_eval_true) + t.Logf("TX from %v", tx) +} diff --git a/hyperledger_fabric/v2.2.8/crypto-config.yaml b/hyperledger_fabric/v2.2.8/crypto-config.yaml new file mode 100644 index 00000000..44c6f47e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config.yaml @@ -0,0 +1,113 @@ +# Copyright IBM Corp. All Rights Reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# + +# --------------------------------------------------------------------------- +# "OrdererOrgs" - Definition of organizations managing orderer nodes +# --------------------------------------------------------------------------- +OrdererOrgs: + # --------------------------------------------------------------------------- + # Orderer + # --------------------------------------------------------------------------- + - Name: Orderer + Domain: example.com + EnableNodeOUs: true + CA: + Country: US + Province: California + Locality: San Francisco +# Template: +# Count: 2 + # --------------------------------------------------------------------------- + # "Specs" - See OrdererOrgs below for complete description + # --------------------------------------------------------------------------- + Specs: + - Hostname: orderer0 + - Hostname: orderer1 + - Hostname: orderer2 + - Hostname: orderer3 +# --------------------------------------------------------------------------- +# "PeerOrgs" - Definition of organizations managing peer nodes +# --------------------------------------------------------------------------- +PeerOrgs: + # --------------------------------------------------------------------------- + # Org1 + # --------------------------------------------------------------------------- + - Name: Org1 + Domain: org1.example.com + EnableNodeOUs: true + CA: + Country: US + Province: California + Locality: San Francisco + # --------------------------------------------------------------------------- + # "Specs" + # --------------------------------------------------------------------------- + # Uncomment this section to enable the explicit definition of hosts in your + # configuration. Most users will want to use Template, below + # + # Specs is an array of Spec entries. Each Spec entry consists of two fields: + # - Hostname: (Required) The desired hostname, sans the domain. + # - CommonName: (Optional) Specifies the template or explicit override for + # the CN. By default, this is the template: + # + # "{{.Hostname}}.{{.Domain}}" + # + # which obtains its values from the Spec.Hostname and + # Org.Domain, respectively. + # --------------------------------------------------------------------------- + # Specs: + # - Hostname: foo # implicitly "foo.org1.example.com" + # CommonName: foo27.org5.example.com # overrides Hostname-based FQDN set above + # - Hostname: bar + # - Hostname: baz + # --------------------------------------------------------------------------- + # "Template" + # --------------------------------------------------------------------------- + # Allows for the definition of 1 or more hosts that are created sequentially + # from a template. By default, this looks like "peer%d" from 0 to Count-1. + # You may override the number of nodes (Count), the starting index (Start) + # or the template used to construct the name (Hostname). + # + # Note: Template and Specs are not mutually exclusive. You may define both + # sections and the aggregate nodes will be created for you. Take care with + # name collisions + # --------------------------------------------------------------------------- + Template: + Count: 2 + # Start: 5 + # Hostname: {{.Prefix}}{{.Index}} # default + # --------------------------------------------------------------------------- + # "Users" + # --------------------------------------------------------------------------- + # Count: The number of user accounts _in addition_ to Admin + # --------------------------------------------------------------------------- + Users: + Count: 1 + # --------------------------------------------------------------------------- + # Org2: See "Org1" for full specification + # --------------------------------------------------------------------------- + - Name: Org2 + Domain: org2.example.com + EnableNodeOUs: true + CA: + Country: US + Province: California + Locality: San Francisco + Template: + Count: 2 + Users: + Count: 1 + + - Name: Org3 + Domain: org3.example.com + EnableNodeOUs: true + CA: + Country: US + Province: California + Locality: San Francisco + Template: + Count: 2 + Users: + Count: 1 diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem new file mode 100644 index 00000000..42eefa5a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt +cGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp +c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j +b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M +twF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w +azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB +MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq +ljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb +dVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn +fe0= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/ca/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/ca/priv_sk new file mode 100644 index 00000000..0fd5b0a9 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/ca/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgoeHTGavXSX4/uADq +g0KmgmY5CftGocx17SdfGtstGkyhRANCAAQVOup1LKvaHK+D17FMJE4daz/MtwF3 +4tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbi +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/cacerts/ca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/cacerts/ca.example.com-cert.pem new file mode 100644 index 00000000..42eefa5a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/cacerts/ca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt +cGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp +c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j +b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M +twF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w +azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB +MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq +ljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb +dVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn +fe0= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/config.yaml new file mode 100644 index 00000000..8846e9d4 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/cacerts/ca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/cacerts/ca.example.com-cert.pem new file mode 100644 index 00000000..42eefa5a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/cacerts/ca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt +cGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp +c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j +b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M +twF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w +azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB +MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq +ljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb +dVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn +fe0= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/config.yaml new file mode 100644 index 00000000..8846e9d4 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..1da3d2d2 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgSAlpMjRbqK4SdxTU +u+TOpIxSedWsl405V8XmoYbGwCqhRANCAARWogSEnEKfOj04c3/WiQAaIuGV9GlI +sL2Cr4QOUWXx9Y1zb7jki0OCr5bQbuBJN4Dq0smKolfuCNgMhiFVENBA +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/signcerts/orderer0.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/signcerts/orderer0.example.com-cert.pem new file mode 100644 index 00000000..192897f5 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/signcerts/orderer0.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICHjCCAcWgAwIBAgIQNDb6B0YzeJV5mMGwoK8j9TAKBggqhkjOPQQDAjBpMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w +bGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowazELMAkGA1UE +BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz +Y28xEDAOBgNVBAsTB29yZGVyZXIxHTAbBgNVBAMTFG9yZGVyZXIwLmV4YW1wbGUu +Y29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEVqIEhJxCnzo9OHN/1okAGiLh +lfRpSLC9gq+EDlFl8fWNc2+45ItDgq+W0G7gSTeA6tLJiqJX7gjYDIYhVRDQQKNN +MEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgtMB3 +qVaOmMeayPZK97zADZEdlaqWPN26c3Laju2SKXcwCgYIKoZIzj0EAwIDRwAwRAIg +B5sY/L3gUJZviF6NkHxAvHQaOyxApnErIubgtHAbnyoCIH3pq6TU0pyziwRToY4/ +2yQOVApZwlDBr+PfcSZ7X/65 +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/ca.crt new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.crt new file mode 100644 index 00000000..0e1917a5 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l +eGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ +BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh +bmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49 +AgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H +jFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/ +BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E +AjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0 +MCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq +hkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg +RR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.key new file mode 100644 index 00000000..9318c99c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg7yRqjISbIsXT88j6 +hq1zdSC3YN2PaiVJ3HEy/thpRYmhRANCAAQTyo0t3CLxaE0K6gVViZqP22ZARy04 +/Vy7oYa6XpxvB4xWM6NqGPYAUNhzKnKyJOcxq2xVkeBlPp6WcW8DeIZi +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/cacerts/ca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/cacerts/ca.example.com-cert.pem new file mode 100644 index 00000000..42eefa5a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/cacerts/ca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt +cGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp +c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j +b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M +twF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w +azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB +MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq +ljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb +dVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn +fe0= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/config.yaml new file mode 100644 index 00000000..8846e9d4 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..4bedc79b --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgLu6caNc8sKpNVOkR +xfxGc8j6MYWUHS993yayFd/yiw+hRANCAAQmPDs7i6y0CLUF9gEXrkZRvf2m1gOD +DzM2mva+AsLkwbYbGwZPqurIS3h7uHzCyegZXD0OWq3xO8VVi9OUQoVT +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/signcerts/orderer1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/signcerts/orderer1.example.com-cert.pem new file mode 100644 index 00000000..11548f67 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/signcerts/orderer1.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICIDCCAcagAwIBAgIRAK7qHykLY6PQQsxp5DXbpxcwCgYIKoZIzj0EAwIwaTEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt +cGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGsxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp +c2NvMRAwDgYDVQQLEwdvcmRlcmVyMR0wGwYDVQQDExRvcmRlcmVyMS5leGFtcGxl +LmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCY8OzuLrLQItQX2AReuRlG9 +/abWA4MPMzaa9r4CwuTBthsbBk+q6shLeHu4fMLJ6BlcPQ5arfE7xVWL05RChVOj +TTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAILTA +d6lWjpjHmsj2Sve8wA2RHZWqljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUC +IQDoKwu4BR7JbeFSWNxCxVyzM4PNx5Hxcp8NegLhThk3XAIgcI6NVhXZp1wHudTI +Mn3rdsVYqgyhjo4B+16dWifUiA0= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/tlscacerts/tlsca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/tlscacerts/tlsca.example.com-cert.pem new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/tlscacerts/tlsca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/ca.crt new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.crt new file mode 100644 index 00000000..424e695a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C +AQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1 +9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E +BAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC +MAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw +KQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG +SM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI +9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.key new file mode 100644 index 00000000..3b14367a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgqtzk7Ocxzv5ZgejC +yNoMx8zNohDR5Ch2CNTOWqb1aNChRANCAARkValKb1tIXyDR5o7TtwlKZxEpPjYK +OVVuD8IwDA/+4PX2iziiLkQ2EWu5YeJb9EPu2D8X6PltqcbontrYCcVo +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/cacerts/ca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/cacerts/ca.example.com-cert.pem new file mode 100644 index 00000000..42eefa5a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/cacerts/ca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt +cGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp +c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j +b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M +twF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w +azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB +MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq +ljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb +dVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn +fe0= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/config.yaml new file mode 100644 index 00000000..8846e9d4 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..17daddbb --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgmNlrehwWNzs7WsB3 +02TH8nd7XqiYhQ7HbJ5mg36gqHyhRANCAATpVD44jxwLf39JMfMjvJfcau8J/DWI +8tzXrpKC8NIm9xQzIDLE+psLxbyq76zBS9usJnRn9ht+qSqNmPhUnUyT +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/signcerts/orderer2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/signcerts/orderer2.example.com-cert.pem new file mode 100644 index 00000000..902adbe8 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/signcerts/orderer2.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICHjCCAcWgAwIBAgIQMvzQvG0Gs76PvDSDbGKptTAKBggqhkjOPQQDAjBpMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w +bGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowazELMAkGA1UE +BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz +Y28xEDAOBgNVBAsTB29yZGVyZXIxHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUu +Y29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6VQ+OI8cC39/STHzI7yX3Grv +Cfw1iPLc166SgvDSJvcUMyAyxPqbC8W8qu+swUvbrCZ0Z/YbfqkqjZj4VJ1Mk6NN +MEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgtMB3 +qVaOmMeayPZK97zADZEdlaqWPN26c3Laju2SKXcwCgYIKoZIzj0EAwIDRwAwRAIg +eTOjaWR4ZTxxhiYkeVhVdKh5+uwjKl7r6g1sLwMUfSICIFWUdvNDvbcX7fQkjpx6 +HG0dMG1devmZTf2+uNdIYVPg +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/tlscacerts/tlsca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/tlscacerts/tlsca.example.com-cert.pem new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/msp/tlscacerts/tlsca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/ca.crt new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt new file mode 100644 index 00000000..c898d49c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C +AQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR +Fh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E +BAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC +MAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw +KQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG +SM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg +SKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.key new file mode 100644 index 00000000..323ca35a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgy5Uf05Epzfirhdbx +ENQAMw8fyHrIqO8rbEUle+umyIWhRANCAAQR20AbrCeFn7IMypYIMvlcgfT4MOgC +fWzk6DwsZhEPuJEWHoDOWWwwZULQpOBSofPqVlMMd+/m1rXMGfVqhqIK +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/cacerts/ca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/cacerts/ca.example.com-cert.pem new file mode 100644 index 00000000..42eefa5a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/cacerts/ca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt +cGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp +c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j +b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M +twF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w +azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB +MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq +ljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb +dVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn +fe0= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/config.yaml new file mode 100644 index 00000000..8846e9d4 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..c279caec --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghJp8bmd0V217GKRs +xPVgakFQEkoU+TnAplsmRfy4rnqhRANCAAScaGC5m9zUfQInIfVra7dkxvL2J5E/ +IR71QwGzq8y8FiiEP8vqSCP32nPpC7tiqRg6rPuQb4hzm187Uqp5Ssvy +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/signcerts/orderer3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/signcerts/orderer3.example.com-cert.pem new file mode 100644 index 00000000..c4afd3d0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/signcerts/orderer3.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICHzCCAcWgAwIBAgIQdtgg+u1SbB4KtGAmlwGMvjAKBggqhkjOPQQDAjBpMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w +bGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowazELMAkGA1UE +BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz +Y28xEDAOBgNVBAsTB29yZGVyZXIxHTAbBgNVBAMTFG9yZGVyZXIzLmV4YW1wbGUu +Y29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnGhguZvc1H0CJyH1a2u3ZMby +9ieRPyEe9UMBs6vMvBYohD/L6kgj99pz6Qu7YqkYOqz7kG+Ic5tfO1KqeUrL8qNN +MEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgtMB3 +qVaOmMeayPZK97zADZEdlaqWPN26c3Laju2SKXcwCgYIKoZIzj0EAwIDSAAwRQIh +AN4V8T5l5NvnCrBWMa1+UfRHYOmmWev8loR7y7GE/zH3AiAkf0w7Cm427IRmYUhK +7T+3qQln/cYzYidg4QkHRQQ7NQ== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/tlscacerts/tlsca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/tlscacerts/tlsca.example.com-cert.pem new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/msp/tlscacerts/tlsca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/ca.crt new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt new file mode 100644 index 00000000..b335e09d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICXTCCAgOgAwIBAgIRANa/cZn6S0uixKIZ+mV+9uswCgYIKoZIzj0EAwIwbDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l +eGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ +BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh +bmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMy5leGFtcGxlLmNvbTBZMBMGByqGSM49 +AgEGCCqGSM49AwEHA0IABNsb0cD9SPNmRdqPZopFiMR0KWN8hPciaipGeS0lJ/Z/ +wsFJpnR2oji6zLd0nuk9UXycXB7ti9Jgb3wFtIWvvXujgZgwgZUwDgYDVR0PAQH/ +BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E +AjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0 +MCkGA1UdEQQiMCCCFG9yZGVyZXIzLmV4YW1wbGUuY29tgghvcmRlcmVyMzAKBggq +hkjOPQQDAgNIADBFAiEA60Ev2rLGEwg5arQ7sXxqvtJws8cqXkEFQBP+WzyoaRsC +IAKzYGbYL3TUAd1SQoJaVHJY9joxS7ih3506zrNw5Loq +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.key new file mode 100644 index 00000000..681ca01a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/orderers/orderer3.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgrze/h50s+t565pzY +Iy6htnRnVjd/leNTmTSmSLdxyuWhRANCAATbG9HA/UjzZkXaj2aKRYjEdCljfIT3 +ImoqRnktJSf2f8LBSaZ0dqI4usy3dJ7pPVF8nFwe7YvSYG98BbSFr717 +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/tlsca/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/tlsca/priv_sk new file mode 100644 index 00000000..7ab87cdd --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/tlsca/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg9JRpulg9URBd5bQ6 +VCCa8OUAd9++PhgY8k8rFWrqs+WhRANCAASH21O+j4dKss+FHMzS/0HY4YTu63Kk +4PX6R/lQ7PAuJUIvlLJVUVlSqOQvp8VANPW3NhxKDXNfB7H788yhSXae +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/cacerts/ca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/cacerts/ca.example.com-cert.pem new file mode 100644 index 00000000..42eefa5a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/cacerts/ca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt +cGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp +c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j +b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M +twF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w +azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB +MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq +ljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb +dVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn +fe0= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/config.yaml new file mode 100644 index 00000000..8846e9d4 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..ac233356 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgic8PiM9VpYslb5au +G49mYslV2V+7+EMPfzF4K6EqdQ+hRANCAASPvQ6VwDaA1VfwzTSk7Gbx8vw2jpre +ZaCmYPki70Lh3PcvSnqnRo1bpT1tqwN9xBZfGgOSOFxoQ4ig8rjZVX3f +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem new file mode 100644 index 00000000..e735903c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICGjCCAcGgAwIBAgIRAKNWQ49cbPBW3rwEsPYtiSMwCgYIKoZIzj0EAwIwaTEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt +cGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGYxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp +c2NvMQ4wDAYDVQQLEwVhZG1pbjEaMBgGA1UEAwwRQWRtaW5AZXhhbXBsZS5jb20w +WTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASPvQ6VwDaA1VfwzTSk7Gbx8vw2jpre +ZaCmYPki70Lh3PcvSnqnRo1bpT1tqwN9xBZfGgOSOFxoQ4ig8rjZVX3fo00wSzAO +BgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCC0wHepVo6Y +x5rI9kr3vMANkR2VqpY83bpzctqO7ZIpdzAKBggqhkjOPQQDAgNHADBEAiB9JzWA +IAtNAkSahOg5wJnL4nxsuQx8cfwq0YPDHyYqiAIgPWkqS+tar868nPgRvqapP+pR +gOFzH9KQ82ZT6lUtgKA= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/tlscacerts/tlsca.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/tlscacerts/tlsca.example.com-cert.pem new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/tlscacerts/tlsca.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/ca.crt new file mode 100644 index 00000000..6e218ebf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt +cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/ +QdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ +dp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB +BQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw ++pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG +QNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV +mrwsb1hY +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.crt b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.crt new file mode 100644 index 00000000..8584f203 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.crt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKzCCAdKgAwIBAgIQPf/oJZhiAwbge0Ce+jqBzzAKBggqhkjOPQQDAjBsMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 +YW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowVjELMAkG +A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu +Y2lzY28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI +KoZIzj0DAQcDQgAEFdJdGK+qinjaj2gMbfanZad3TiRQkRiLJFybKsmgJ5q2CL22 +9F27S6Y4NKBq/N52894OVFK2/sa8JGMKT1vAwKNsMGowDgYDVR0PAQH/BAQDAgWg +MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMCsG +A1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0MAoGCCqG +SM49BAMCA0cAMEQCIA1kQhHiO6zYUZWY3Kvy3qLNx+/2RFPaZRAyQGEajHHFAiBB +/jhMQreG6USZKiC0awNMyTUJ9qdBbLU+TdYbFf0w9Q== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.key b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.key new file mode 100644 index 00000000..043513b7 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/client.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgexxxP3CPHN0LUpmr +tKsUzjHY2f1ZN/xMNIBey/uC/WehRANCAAQV0l0Yr6qKeNqPaAxt9qdlp3dOJFCR +GIskXJsqyaAnmrYIvbb0XbtLpjg0oGr83nbz3g5UUrb+xrwkYwpPW8DA +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem new file mode 100644 index 00000000..91de63b1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK +WpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +sUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw +RQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK +4fF+MDb2VozFfqOSny+pcCS+lK31dQ== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/ca/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/ca/priv_sk new file mode 100644 index 00000000..35df609e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/ca/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgQDwpOPUMqYfDkXcR +du1/gDcj+xqZRV0PPfUbvRxuBoWhRANCAAQp2/M/1jLTxP0N3WZn+mkolim4j821 +yV6b1EGkaZgGLBc0rmKwk/CJWNy2Y3ToSlqQQlX8fua1eYYDPYpm3ijT +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem new file mode 100644 index 00000000..91de63b1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK +WpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +sUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw +RQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK +4fF+MDb2VozFfqOSny+pcCS+lK31dQ== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/config.yaml new file mode 100644 index 00000000..13af53a2 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem new file mode 100644 index 00000000..a2fc9957 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs +9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E +AwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf +Je855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem new file mode 100644 index 00000000..91de63b1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK +WpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +sUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw +RQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK +4fF+MDb2VozFfqOSny+pcCS+lK31dQ== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/config.yaml new file mode 100644 index 00000000..13af53a2 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..f03d26a3 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgl7KOS+oIusmSNAIS +Ghk77dXkoXacitx7w2eQ5Kl5glShRANCAASUU/fXD94QkrbFqvQf6ILj7BJRFa7R +hnhrRxolNJ+8V02+dKhqhUwZhznqy5aVr211ULdD5RgH9C2N7MPvc8pA +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/signcerts/peer0.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/signcerts/peer0.org1.example.com-cert.pem new file mode 100644 index 00000000..d0e16ce6 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/signcerts/peer0.org1.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKDCCAc6gAwIBAgIQEzcZwcsHYKLID1doYq1d4zAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMS5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa +MGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMC5vcmcx +LmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElFP31w/eEJK2 +xar0H+iC4+wSURWu0YZ4a0caJTSfvFdNvnSoaoVMGYc56suWla9tdVC3Q+UYB/Qt +jezD73PKQKNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j +BCQwIoAgsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0E +AwIDSAAwRQIhAJDzRq7McTeQRIK8pGjp2N85KkWXj6+kEz4ZCFrOqlh5AiBe0GOp +2JQynmIewS7EnhPi/IDGzr/Mp6EowGhKw6PA3w== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem new file mode 100644 index 00000000..a2fc9957 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs +9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E +AwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf +Je855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt new file mode 100644 index 00000000..a2fc9957 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs +9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E +AwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf +Je855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt new file mode 100644 index 00000000..cdc6dac0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICZzCCAg6gAwIBAgIRAMWfJ4mtRvPEvlmTWtz8jx0wCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMS5leGFtcGxlLmNv +bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDSx1BBqfYobInVQqCgnW80RG97P +fupxzfbBCiDhH2AKPbbZpBNosPD/u1sLtQTV+xR9EEX6jOdCDUrlerzk9+WjgZcw +gZQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD +AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIMJfalGKbpmP9A/EqPf7cbI9emAl +pvkQdPW9Uv7jKzV8MCgGA1UdEQQhMB+CFnBlZXIwLm9yZzEuZXhhbXBsZS5jb22C +BXBlZXIwMAoGCCqGSM49BAMCA0cAMEQCIE4lhDnRqqfrznkuIscNAfwBmIuMgddZ +6UdCNa3cTVekAiBrEnf6UDLMuOGkzsE6Z3qw2qhZ+cXFnrAoWKwQikH/0Q== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key new file mode 100644 index 00000000..9afd343f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgyt7NjWxau0uiBUd/ +zQBh24a4PZXQFHlnd3sO2+iqVCyhRANCAAQ0sdQQan2KGyJ1UKgoJ1vNERvez37q +cc32wQog4R9gCj222aQTaLDw/7tbC7UE1fsUfRBF+oznQg1K5Xq85Pfl +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem new file mode 100644 index 00000000..91de63b1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK +WpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +sUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw +RQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK +4fF+MDb2VozFfqOSny+pcCS+lK31dQ== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/config.yaml new file mode 100644 index 00000000..13af53a2 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..b1f018fa --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgNqhWLrfcgQpI60x7 +nOLQDq2k6vaqyIoSjNwuvv/3WMuhRANCAAR2JM0qSprRTO2CJerOKTTVGhdlC5Ax +vP1k8vQxjruEGgi+tXNDtUqfjcf/VxBKjcxYFdrkNlKund5W8cCpYaxA +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/signcerts/peer1.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/signcerts/peer1.org1.example.com-cert.pem new file mode 100644 index 00000000..a42d1dae --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/signcerts/peer1.org1.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKDCCAc6gAwIBAgIQeRiiVDoYgSujF+8jVnC89TAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMS5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa +MGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMS5vcmcx +LmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdiTNKkqa0Uzt +giXqzik01RoXZQuQMbz9ZPL0MY67hBoIvrVzQ7VKn43H/1cQSo3MWBXa5DZSrp3e +VvHAqWGsQKNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j +BCQwIoAgsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0E +AwIDSAAwRQIhAN6CZwTUK/yFccAUcGgFvlMtk5suNJE8a7D6VuAcPKShAiBb5f8q +qffDOmYL1GxHPSLCNzg/V3JcJ0XrKvLDQp8H2w== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem new file mode 100644 index 00000000..a2fc9957 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs +9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E +AwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf +Je855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt new file mode 100644 index 00000000..a2fc9957 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs +9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E +AwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf +Je855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.crt new file mode 100644 index 00000000..6dec40bb --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICZzCCAg6gAwIBAgIRAMBhCfcgESroYS4w2Bb1h9kwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMS5leGFtcGxlLmNv +bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ13ZX/816N7Uz0iqWSiQAwIYQhR +/GfvATgdxnCXJlA0lE2u1d1P3N3NXjlEgiKCF/76cpH203TtDFLqy0ql+LKjgZcw +gZQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD +AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIMJfalGKbpmP9A/EqPf7cbI9emAl +pvkQdPW9Uv7jKzV8MCgGA1UdEQQhMB+CFnBlZXIxLm9yZzEuZXhhbXBsZS5jb22C +BXBlZXIxMAoGCCqGSM49BAMCA0cAMEQCIERgAbEuFfCGDUbJjQR/KPqACT4Yy1z5 +pm+ocQgiWE4QAiAnlxGRz2iLtFDqOeWE4xd4KYbanAu+KNRZAvsy+6h2+Q== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key new file mode 100644 index 00000000..dc5ecb65 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgbDssMumCeZwvtVzt +/fTSO9IhANDRL18GhFYBnIvvIcChRANCAASdd2V//Neje1M9IqlkokAMCGEIUfxn +7wE4HcZwlyZQNJRNrtXdT9zdzV45RIIighf++nKR9tN07QxS6stKpfiy +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/tlsca/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/tlsca/priv_sk new file mode 100644 index 00000000..918a25b3 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/tlsca/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgtK3EsmRTwWR39EW9 +p7si5AWZEsPxMMRTFQXnP+hKbNChRANCAARKyKGe2T8ZlbBDgW8CF4iLeKM9mbSH +2p1wkIsh7NokbyzT0Z1WM6mFrPXUCNm2mQxMbZ3W/X+HoSPKLhbYlUE3 +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem new file mode 100644 index 00000000..a2fc9957 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs +9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E +AwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf +Je855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem new file mode 100644 index 00000000..91de63b1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK +WpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +sUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw +RQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK +4fF+MDb2VozFfqOSny+pcCS+lK31dQ== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/config.yaml new file mode 100644 index 00000000..13af53a2 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..f3ec97d6 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/U3wdxtFG8aXEAux +nDWukppmCftZt/pCkvy9BzTVFZ2hRANCAATsBYaXg90V2VnDl4MILRUoQwwKB/yo +lFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMIJRMHhp8Msvep +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem new file mode 100644 index 00000000..567d2c97 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y +ZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V +2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI +JRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV +HSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO +PQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm +BmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem new file mode 100644 index 00000000..a2fc9957 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs +9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E +AwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf +Je855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/ca.crt new file mode 100644 index 00000000..a2fc9957 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs +9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E +AwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf +Je855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.crt new file mode 100644 index 00000000..1052bfde --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.crt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICOjCCAeGgAwIBAgIQFhe4yJOvIKVo05GTpmuDLjAKBggqhkjOPQQDAjB2MQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1 +MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29t +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEW2LqPalvgAJbDngvSo3eiZhUfWv +Nic1YM5GoHCPtWErBHEzFGpEHOupxZShfE5C8Gg9UW6mr+m9+qegVOAfEKNsMGow +DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM +BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIMJfalGKbpmP9A/EqPf7cbI9emAlpvkQ +dPW9Uv7jKzV8MAoGCCqGSM49BAMCA0cAMEQCIAZkd1FgK6XCWrDjFww3caHeTJpU +OSdFQ22A60+J5b/CAiBlt9+BEetX/4MN3DUwUOyqMAo4IIZ2/APF6ojHql/wiw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.key new file mode 100644 index 00000000..75e0360a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/client.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgHI00UZp3vmyfW27l +sHW4xlIIYy9ywh07S71zFArCJM6hRANCAAQRbYuo9qW+AAlsOeC9Kjd6JmFR9a82 +JzVgzkagcI+1YSsEcTMUakQc66nFlKF8TkLwaD1Rbqav6b36p6BU4B8Q +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem new file mode 100644 index 00000000..91de63b1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK +WpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +sUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw +RQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK +4fF+MDb2VozFfqOSny+pcCS+lK31dQ== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/config.yaml new file mode 100644 index 00000000..13af53a2 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org1.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..e95ab9a0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgFcgcilLQALqK/usA +/Bw5tZjNBm2lcizUSGDjFFGvLmehRANCAAQa+2jl0FkhcTKz5QLhk0SGvpZ78eto +smU/UK8zK1PfdwgaXiOfMGcG4vMaN/ymydc2PykZR5TvMUF9DFRinuM2 +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem new file mode 100644 index 00000000..7b812153 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKjCCAdGgAwIBAgIRAKg6KA8m4X0fcwg9klE1ktMwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBsMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEPMA0GA1UECxMGY2xpZW50MR8wHQYDVQQDDBZVc2VyMUBv +cmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvto5dBZ +IXEys+UC4ZNEhr6We/HraLJlP1CvMytT33cIGl4jnzBnBuLzGjf8psnXNj8pGUeU +7zFBfQxUYp7jNqNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD +VR0jBCQwIoAgsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZI +zj0EAwIDRwAwRAIgAkJpYLtVL+M7FJl+R/tNjUVJgVSbV2CwwIfUdROyBswCIE5H +eNvGpRjWqn3mLXzoUlArEkdSYEEM+p4g1nbI9UOe +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem new file mode 100644 index 00000000..a2fc9957 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs +9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E +AwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf +Je855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/ca.crt new file mode 100644 index 00000000..a2fc9957 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs +9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E +AwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf +Je855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.crt new file mode 100644 index 00000000..f86c709a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.crt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICOzCCAeGgAwIBAgIQUypuiflSUvTeq1ydoyq9LzAKBggqhkjOPQQDAjB2MQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1 +MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcxLmV4YW1wbGUuY29t +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyZnnLofWLWkCY6z9sCnse40jwUdB +TENnBVYhrwI3l8Uiug50eNz44mEq21slrya0baVDkn7gpz2RKC/5EtqSXqNsMGow +DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM +BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIMJfalGKbpmP9A/EqPf7cbI9emAlpvkQ +dPW9Uv7jKzV8MAoGCCqGSM49BAMCA0gAMEUCIQDNLgI03rUT7JsFRSLW4pn7a8ps +YWZPyEQ1ZHL8nPyGMQIgaY1znZYy9WtyXDeLFbGD2rgBKdjmyA4luKrPxxTaQZI= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.key new file mode 100644 index 00000000..e1bac5ad --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/client.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg3g3qZVn/rhNvLQDn +OlEUJy1jnJACawWWgv5vwQ43etGhRANCAATJmecuh9YtaQJjrP2wKex7jSPBR0FM +Q2cFViGvAjeXxSK6DnR43PjiYSrbWyWvJrRtpUOSfuCnPZEoL/kS2pJe +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem new file mode 100644 index 00000000..f67ee86f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF +R5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw +RQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO +r7KAKQ3cwyaUfG8cPKyL6NbphWjBTg== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/ca/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/ca/priv_sk new file mode 100644 index 00000000..ac8ade74 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/ca/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgkesLLs4ybnk8NZVP +dwniCr9GKrc+cdes09M/JW500jihRANCAAQxNAMHoUxf9wWkzLDq6yZQkUnudlP/ +XAfPtRG/cC6xdWspb83d4X+ckwQly6t3BUeRklD5VhQfq1iJJUEv/JZo +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem new file mode 100644 index 00000000..f67ee86f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF +R5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw +RQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO +r7KAKQ3cwyaUfG8cPKyL6NbphWjBTg== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/config.yaml new file mode 100644 index 00000000..6bcd3669 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem new file mode 100644 index 00000000..6efcaed0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr +ce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E +AwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP +1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem new file mode 100644 index 00000000..f67ee86f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF +R5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw +RQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO +r7KAKQ3cwyaUfG8cPKyL6NbphWjBTg== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/config.yaml new file mode 100644 index 00000000..6bcd3669 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..2f2d7117 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg3dkgRHZDZkV7qrJ7 +/Aa080tMzojSm4nao3rgG1CnIoOhRANCAASbc0mrStB/JD+jj/h4A4tLGv6ZnvSF +5NCGiZUoSpMDsuPOuYyioUwRg1peQ8UF/7Fw7OzWLJb42abghIgGXw5V +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/signcerts/peer0.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/signcerts/peer0.org2.example.com-cert.pem new file mode 100644 index 00000000..2c7e4acb --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/signcerts/peer0.org2.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKDCCAc+gAwIBAgIRAJ0gBcAunPeQvOaTpv4EliswCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjAub3Jn +Mi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJtzSatK0H8k +P6OP+HgDi0sa/pme9IXk0IaJlShKkwOy4865jKKhTBGDWl5DxQX/sXDs7NYslvjZ +puCEiAZfDlWjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud +IwQkMCKAIPCsedxctGWTiltvHZq8dcgk5mylcnM7XmVkutrMCzpBMAoGCCqGSM49 +BAMCA0cAMEQCIBUBkqqnD5v0xgJRxfA54dL3djIs8FN171jNLzKs3tuiAiB2gHxh +NFonEhWG6KULmmVcB1LbCg3/Ha/1HhbCY4+0DQ== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem new file mode 100644 index 00000000..6efcaed0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr +ce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E +AwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP +1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt new file mode 100644 index 00000000..6efcaed0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr +ce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E +AwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP +1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt new file mode 100644 index 00000000..68738a88 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICZjCCAg2gAwIBAgIQWjT+3KJuY3xRkN3K96BkfTAKBggqhkjOPQQDAjB2MQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1 +MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcyLmV4YW1wbGUuY29t +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsh3AtoR1HJjfIP53us/830MMyJsW +oM3qWJ8TB0h9xdrD0F6mt05ym1AC+QIVRHTo8Lba9D+aNF3eS78XO0tL/KOBlzCB +lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC +MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgIH/lph/kIHNqGezwpSCTsurPLK+t +A+bY2EacCk3W5p0wKAYDVR0RBCEwH4IWcGVlcjAub3JnMi5leGFtcGxlLmNvbYIF +cGVlcjAwCgYIKoZIzj0EAwIDRwAwRAIgPoTg/savspHbn3Ayq8LOgCOtZGWF/P7o +M2eR4ugwkhwCIAdYt8oezmGjbjLTMJ2aYpNssxENMzy8tEAjdqs2qL+0 +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key new file mode 100644 index 00000000..1c96ed55 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgcxZcU8QgTpCbVpAb +VGBccPr5QRty2qaKNjkLbl9M05uhRANCAASyHcC2hHUcmN8g/ne6z/zfQwzImxag +zepYnxMHSH3F2sPQXqa3TnKbUAL5AhVEdOjwttr0P5o0Xd5Lvxc7S0v8 +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem new file mode 100644 index 00000000..f67ee86f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF +R5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw +RQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO +r7KAKQ3cwyaUfG8cPKyL6NbphWjBTg== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/config.yaml new file mode 100644 index 00000000..6bcd3669 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..81788335 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgSD/bV3+J8M8nwuAZ +GNweTwXNgHBgNdjGNg4Hyax90oKhRANCAAT8lt1RK8hJWwyHoN6yQkoujtFRtFiD +ROUCXIgLJwFM56/Z18BSV9Nh7sr8o4Ds1Rca+US15JAyBlHJPTMCBsyU +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/signcerts/peer1.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/signcerts/peer1.org2.example.com-cert.pem new file mode 100644 index 00000000..21609b50 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/signcerts/peer1.org2.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKDCCAc+gAwIBAgIRAJKI+VxPV+LFCewe06hU6i8wCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjEub3Jn +Mi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPyW3VEryElb +DIeg3rJCSi6O0VG0WINE5QJciAsnAUznr9nXwFJX02HuyvyjgOzVFxr5RLXkkDIG +Uck9MwIGzJSjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud +IwQkMCKAIPCsedxctGWTiltvHZq8dcgk5mylcnM7XmVkutrMCzpBMAoGCCqGSM49 +BAMCA0cAMEQCIAVB47B6po9wRjrLWmgJfP803g6ZrRpt2VwS+WDUoTU6AiBm31/3 ++sDmfeaPKmXPjzj9slypkdKLGBMBVzYW9tS+wA== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem new file mode 100644 index 00000000..6efcaed0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr +ce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E +AwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP +1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt new file mode 100644 index 00000000..6efcaed0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr +ce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E +AwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP +1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.crt new file mode 100644 index 00000000..07906296 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICZzCCAg2gAwIBAgIQbGZbk/Zfgx45zh948TVXtTAKBggqhkjOPQQDAjB2MQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1 +MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMS5vcmcyLmV4YW1wbGUuY29t +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnrG3CQFALMKYbXS9q6kKYlqXMmi1 +jVuiF8PcOOpUF59ovxjx/y0CiaIum5alyJMw8mPPJ2Z/+xd+x1OKFnwMdaOBlzCB +lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC +MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgIH/lph/kIHNqGezwpSCTsurPLK+t +A+bY2EacCk3W5p0wKAYDVR0RBCEwH4IWcGVlcjEub3JnMi5leGFtcGxlLmNvbYIF +cGVlcjEwCgYIKoZIzj0EAwIDSAAwRQIhAMbTIXUaUTG8sYCeF+QxFeHLzblRMFNk +Vt9yusKCZyyzAiAn1tlGA/4/qqkAqzYdMOntK8Xsdl46GJMqc0ksl8a78g== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.key new file mode 100644 index 00000000..84205706 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgO8p7KlGQNj9YnXhe +SfTa7zwBYW/jl3qjBI1U4Rlb/MqhRANCAASesbcJAUAswphtdL2rqQpiWpcyaLWN +W6IXw9w46lQXn2i/GPH/LQKJoi6blqXIkzDyY88nZn/7F37HU4oWfAx1 +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/tlsca/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/tlsca/priv_sk new file mode 100644 index 00000000..cecdbd3f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/tlsca/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg1tVAMy25OQ6w3GrF +TFbqVAfYNnKWo9AbU9pR2g7IRSKhRANCAARfH1xBnjaGJ73nrKr7SiKXi+P48Fi/ +cof6PRf7uCXyAN2nhW5DhXu663Ht+I9c4ZDaF51zdGrJs2a714QHhQBj +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem new file mode 100644 index 00000000..6efcaed0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr +ce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E +AwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP +1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem new file mode 100644 index 00000000..f67ee86f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF +R5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw +RQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO +r7KAKQ3cwyaUfG8cPKyL6NbphWjBTg== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/config.yaml new file mode 100644 index 00000000..6bcd3669 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..aa723502 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg6WX41Mdb1Pz5Q2ua +9lWNYdJRdkEziZInLhI+lkykpGmhRANCAARjL5bo14dhiCmuTP1X9eY2zjGyyIjh +r1wP4xXNb4CGwCgOY0Gxy8JU1vAcE38uDrx0xTIwVmm2RbUQbskCJV0u +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem new file mode 100644 index 00000000..e5dbdace --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKDCCAc+gAwIBAgIQQFHY3XDwrqPVN/4KzWyiWjAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMi5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa +MGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn +Mi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGMvlujXh2GI +Ka5M/Vf15jbOMbLIiOGvXA/jFc1vgIbAKA5jQbHLwlTW8BwTfy4OvHTFMjBWabZF +tRBuyQIlXS6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud +IwQkMCKAIPCsedxctGWTiltvHZq8dcgk5mylcnM7XmVkutrMCzpBMAoGCCqGSM49 +BAMCA0cAMEQCIHnvMSQhQfSHlicIKBLjjXPFii5K4f+jpgg5886Vq8IDAiAOUW2+ +cB2hPtvL1jbbwbTbd/gwX49tzUqMFqLNm/CIAQ== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem new file mode 100644 index 00000000..6efcaed0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr +ce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E +AwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP +1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/ca.crt new file mode 100644 index 00000000..6efcaed0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr +ce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E +AwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP +1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.crt new file mode 100644 index 00000000..d9102aa2 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.crt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICOzCCAeKgAwIBAgIRAOvoj66JkxLdheYsJMOsAp8wCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNv +bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEkRQAOwzu3Tm4GGIFOtdAmsRSUq +RlcXKYgN53KAHU6IYkpm2CJU7tTPIqaBAFSo6d+FxB23ZyGXv2SHdY2qSaqjbDBq +MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw +DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCAgf+WmH+Qgc2oZ7PClIJOy6s8sr60D +5tjYRpwKTdbmnTAKBggqhkjOPQQDAgNHADBEAiA6LEv2vTwSF6jK5Q2YnoyaJXG+ +P7I8R+YLfzzHDflD7AIgKIgdJAf92tjSF1C9LoE7zNUnq3UyZ8HyM2miq38l7/A= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.key new file mode 100644 index 00000000..3abff821 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/client.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgmehHj0WtN7Ujjl9z +s7/Rk4+FLIMJPUdMAfk9NnAgOhOhRANCAARJEUADsM7t05uBhiBTrXQJrEUlKkZX +FymIDedygB1OiGJKZtgiVO7UzyKmgQBUqOnfhcQdt2chl79kh3WNqkmq +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem new file mode 100644 index 00000000..f67ee86f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw +WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE +AxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA +BDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF +R5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU +BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg +8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw +RQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO +r7KAKQ3cwyaUfG8cPKyL6NbphWjBTg== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/config.yaml new file mode 100644 index 00000000..6bcd3669 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org2.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..3fbf1b6f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgKKjp6+dyfI1Lsl7l +v8wQCsDukM0eLpQ58kkcCgZus9mhRANCAARW/9SK4Qps+jO7BUYMNUEWFXaFQdDk +RmTVwC74VhohOZbH9VLtF9pSGrWMQIkQKO4MWwEaWdIMiE3rjLE+YPZC +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem new file mode 100644 index 00000000..4f58bb2e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKjCCAdCgAwIBAgIQce3l2OmNyUIJCmRJcbDAIzAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMi5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa +MGwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMQ8wDQYDVQQLEwZjbGllbnQxHzAdBgNVBAMMFlVzZXIxQG9y +ZzIuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARW/9SK4Qps ++jO7BUYMNUEWFXaFQdDkRmTVwC74VhohOZbH9VLtF9pSGrWMQIkQKO4MWwEaWdIM +iE3rjLE+YPZCo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV +HSMEJDAigCDwrHncXLRlk4pbbx2avHXIJOZspXJzO15lZLrazAs6QTAKBggqhkjO +PQQDAgNIADBFAiEAhNTR6wifvutbftNwUMDOH2k/ndr2vkIUaQlJKqSY2/QCIHgy +/qGtXb5bbIVP76CwA3gxHNP2n+Mzx932PnLSSGEn +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem new file mode 100644 index 00000000..6efcaed0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr +ce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E +AwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP +1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/ca.crt new file mode 100644 index 00000000..6efcaed0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz +NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr +ce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E +AwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP +1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.crt new file mode 100644 index 00000000..62c61dcc --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.crt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICOzCCAeGgAwIBAgIQLXyl/m/fHZSz0x1qaTG6KzAKBggqhkjOPQQDAjB2MQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1 +MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcyLmV4YW1wbGUuY29t +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgZ9fP3iSXqtmf5UyLH95e9J8PcZX +Q/oYR6FNtxIVjoL04o0et4PS9KCG0kEHyO+3jK5V/6UTn/iy4ruv755GQaNsMGow +DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM +BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAICB/5aYf5CBzahns8KUgk7LqzyyvrQPm +2NhGnApN1uadMAoGCCqGSM49BAMCA0gAMEUCIQD234mj2QDtcJnIHDDXcZs+0eTj +2RNtSaxRsACnV+1adQIgGZprKVZoASvlvol+2rE1MXWXXbcsu9ytbBG8z7IcM98= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.key new file mode 100644 index 00000000..9727143f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/client.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgAVrr73k/24dKCyXq +WDsgmHWSZysIoR+UFaO/stOy7o2hRANCAASBn18/eJJeq2Z/lTIsf3l70nw9xldD ++hhHoU23EhWOgvTijR63g9L0oIbSQQfI77eMrlX/pROf+LLiu6/vnkZB +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/ca/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/ca/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..d466d0ad --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/ca/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +kzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo +3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU +68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG +AiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1 +5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/ca/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/ca/priv_sk new file mode 100644 index 00000000..70abef51 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/ca/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg6GGvjiI4hC1JOQv8 +fKhvz7TvzbHf/PxyfphLmiG9502hRANCAASTNTNngtrtNfPOJZKMu8cOlTPrCdHQ +zLvpfOXVcK7G9EeP2p73WesCyUNdany3+ijdhUJ5y6gMwfvCORnWVtFU +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..d466d0ad --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +kzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo +3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU +68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG +AiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1 +5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/config.yaml new file mode 100644 index 00000000..c3272f9c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..7b4b2969 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVjCCAf2gAwIBAgIQa2Xf2Eq7zQsKR/+6IdAQmTAKBggqhkjOPQQDAjB2MQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1 +MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMR8wHQYD +VQQDExZ0bHNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D +AQcDQgAEOMKX8N5yt3y5TA6nBWDnCibo7Shoi2/4IVK0X3vFzrHSjASfuJ/Zbnbr +dlSh9D2jtKBxxasSQr7r9xu54r2+M6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud +JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud +DgQiBCCt87/QSqHqav9ZLX4AKFkUKNTYXuNdUh2ph9CQWqh0mTAKBggqhkjOPQQD +AgNHADBEAiAN1q7E7lBjCDwuRK9j3Ay6hA7Oqpp7PSv5IASOrbBRDwIgJTsvt/BI +x3XxOmRdTlmF6XJrj1/pqOE2sT0pm22UM1s= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..8b270d12 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUTCCAfegAwIBAgIQd1iuO+RaFt55RkVi2tnEQDAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +4bd+kZxverII8ZAaLovQlFcNJtg1QfIZ8oB5Ui+Ce5J0ant/QaP/2+il5BQ3L2Bj +wploSeFCoGlCBlsjdNj156NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCD +Ib8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjOPQQDAgNIADBF +AiEA1ns/3AzS2PkzByAuVDXo5lu4deMSc2OMYFC6fkccqJICIAHDz9ARdP+5UiBO +DGl32RsP79a9+RJcxL29qogVTMDk +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/config.yaml new file mode 100644 index 00000000..c3272f9c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..ee2fe195 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgHSEMvj5+XJWV2VVd +A9mC1GsJI06QIpdqVC3FdM5xeouhRANCAASViD2tXioXmoJZKET+BTxgrXKkxm/4 +vy5P7Zhfzu53//Bm6jKDdrL9wvwJhS0YF6J56TmFEnfALqQeso55w3wE +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/signcerts/peer0.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/signcerts/peer0.org3.example.com-cert.pem new file mode 100644 index 00000000..1a6add2a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/signcerts/peer0.org3.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAc+gAwIBAgIRANIyF8F8HiWD/95m0rN9oXcwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgxOTAw +WjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjAub3Jn +My5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJWIPa1eKhea +glkoRP4FPGCtcqTGb/i/Lk/tmF/O7nf/8GbqMoN2sv3C/AmFLRgXonnpOYUSd8Au +pB6yjnnDfASjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud +IwQkMCKAIIMhvxg9aMQ7QIGfNsWN0RXoeS+j3GYpF0ZeFnZ43f+OMAoGCCqGSM49 +BAMCA0gAMEUCIQDIEpD02O7Qv4pDCJywm4fN3aF9QDPCbdl+ncDbpWygkQIgOprH +M0Bdx59u06wf/gaoFigu00JA7FnnUQn4gwOvCR8= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.crt new file mode 100644 index 00000000..93da516c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.crt @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIIChzCCAi2gAwIBAgIRAK60VXx3EwWlAryWzyamLL4wCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMy5leGFtcGxlLmNv +bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABETRmDFxmg8h5CXgDh+LF7teHpgc +iPuouteDM9zOF9yjnDnch1SbViCCCiL4Tk98l6014TcjSRBv7agmESWUvOGjgbYw +gbMwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD +AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIEqUek1s50dcr/MulF7OEtVz7GsE +Z6JD+vmsjnhp9zi8MEcGA1UdEQRAMD6CFnBlZXIwLm9yZzMuZXhhbXBsZS5jb22C +BXBlZXIwghZwZWVyMC5vcmczLmV4YW1wbGUuY29tggVwZWVyMDAKBggqhkjOPQQD +AgNIADBFAiEAmwsb37LDLJ1g8N8chf9BY/lgHGNcRDmlEJCGaViyD3ACIG3dsne1 +Px8lxcxOj60UG71A5G4d/Uv06rpUyoeQb1Wj +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.key new file mode 100644 index 00000000..94cc4925 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgE2/9snVkr4iGbNPe +P2267hukE8rKPUn/FHP6niSu6QKhRANCAARE0ZgxcZoPIeQl4A4fixe7Xh6YHIj7 +qLrXgzPczhfco5w53IdUm1Ygggoi+E5PfJetNeE3I0kQb+2oJhEllLzh +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..8b270d12 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUTCCAfegAwIBAgIQd1iuO+RaFt55RkVi2tnEQDAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +4bd+kZxverII8ZAaLovQlFcNJtg1QfIZ8oB5Ui+Ce5J0ant/QaP/2+il5BQ3L2Bj +wploSeFCoGlCBlsjdNj156NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCD +Ib8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjOPQQDAgNIADBF +AiEA1ns/3AzS2PkzByAuVDXo5lu4deMSc2OMYFC6fkccqJICIAHDz9ARdP+5UiBO +DGl32RsP79a9+RJcxL29qogVTMDk +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/config.yaml new file mode 100644 index 00000000..c3272f9c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..b1bb47a1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgbnVsfnsxC1l7jj8r +UCSLItEdUpDXJ1Jhkl2UV2S8Qy2hRANCAATBwUif3kQAtau4Agl86pV18vYhgSZT +NeaRDBFj/pldXhTJI1c/o2R7hbnDslWi2Itf/DOm9b6X/dgn94xuVmUR +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/signcerts/peer1.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/signcerts/peer1.org3.example.com-cert.pem new file mode 100644 index 00000000..56628a26 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/signcerts/peer1.org3.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKDCCAc6gAwIBAgIQFGjndVQSInF78CpLVEipujAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMS5vcmcz +LmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwcFIn95EALWr +uAIJfOqVdfL2IYEmUzXmkQwRY/6ZXV4UySNXP6Nke4W5w7JVotiLX/wzpvW+l/3Y +J/eMblZlEaNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j +BCQwIoAggyG/GD1oxDtAgZ82xY3RFeh5L6PcZikXRl4Wdnjd/44wCgYIKoZIzj0E +AwIDSAAwRQIhAPzx9w/KwK4IopNNCFimHeIJTibKve+05/3D+eXNJ6N9AiB5G97o +VjVV2SbZ2xZ4nFij0XAp8949vSXy+aq7/5hwCw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/ca.crt new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.crt new file mode 100644 index 00000000..2506b641 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.crt @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIIChjCCAi2gAwIBAgIRAMpKtSBSh+lAAmY7IcKrm9IwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMy5leGFtcGxlLmNv +bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE3u6PxRUppQ2U1AjKxlyxB5oNKO +FqeQ8+zawkQ7d3Ck6NtBkb8QTNlYFIIOKwpPmCkWPQAPob1ByUhWJH16xmyjgbYw +gbMwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD +AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIEqUek1s50dcr/MulF7OEtVz7GsE +Z6JD+vmsjnhp9zi8MEcGA1UdEQRAMD6CFnBlZXIxLm9yZzMuZXhhbXBsZS5jb22C +BXBlZXIxghZwZWVyMS5vcmczLmV4YW1wbGUuY29tggVwZWVyMTAKBggqhkjOPQQD +AgNHADBEAiAQAWWX0TKLo7XjdA4lbPPotmJf3UivmiI6tO+XVrdDuwIgBSzc+b0F +Q2yYwi7h0xmj1sRRJ9hEb60dbbnuN7ky9gE= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.key new file mode 100644 index 00000000..d98d5611 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgkjj6UFMsaBobi4Er +0SfduOFO40zxjiGzduYSmrXjIrihRANCAARN7uj8UVKaUNlNQIysZcsQeaDSjhan +kPPs2sJEO3dwpOjbQZG/EEzZWBSCDisKT5gpFj0AD6G9QclIViR9esZs +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/tlsca/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/tlsca/priv_sk new file mode 100644 index 00000000..c7842b08 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/tlsca/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgfwyUB3Ni6yIwk2UP +OCxcXCgI3QWtcekooxDowU3i7dihRANCAAQ4wpfw3nK3fLlMDqcFYOcKJujtKGiL +b/ghUrRfe8XOsdKMBJ+4n9ludut2VKH0PaO0oHHFqxJCvuv3G7nivb4z +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/tlsca/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/tlsca/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..7b4b2969 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/tlsca/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVjCCAf2gAwIBAgIQa2Xf2Eq7zQsKR/+6IdAQmTAKBggqhkjOPQQDAjB2MQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1 +MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMR8wHQYD +VQQDExZ0bHNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D +AQcDQgAEOMKX8N5yt3y5TA6nBWDnCibo7Shoi2/4IVK0X3vFzrHSjASfuJ/Zbnbr +dlSh9D2jtKBxxasSQr7r9xu54r2+M6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud +JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud +DgQiBCCt87/QSqHqav9ZLX4AKFkUKNTYXuNdUh2ph9CQWqh0mTAKBggqhkjOPQQD +AgNHADBEAiAN1q7E7lBjCDwuRK9j3Ay6hA7Oqpp7PSv5IASOrbBRDwIgJTsvt/BI +x3XxOmRdTlmF6XJrj1/pqOE2sT0pm22UM1s= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..8b270d12 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUTCCAfegAwIBAgIQd1iuO+RaFt55RkVi2tnEQDAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +4bd+kZxverII8ZAaLovQlFcNJtg1QfIZ8oB5Ui+Ce5J0ant/QaP/2+il5BQ3L2Bj +wploSeFCoGlCBlsjdNj156NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCD +Ib8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjOPQQDAgNIADBF +AiEA1ns/3AzS2PkzByAuVDXo5lu4deMSc2OMYFC6fkccqJICIAHDz9ARdP+5UiBO +DGl32RsP79a9+RJcxL29qogVTMDk +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/config.yaml new file mode 100644 index 00000000..c3272f9c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..d9559efa --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgskw3pmVZiDOeIope +VEMumAFHifDMjmYTlY97FGFjJ7WhRANCAARUcpOP68e8ShK2zLs5Yoytnm7mgmE5 +ZDwwusaELAi0NPaWbeQ5YVRwBIzqLVVAqZ1HGQBiY0cW+AWwdUu7EmmC +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/signcerts/Admin@org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/signcerts/Admin@org3.example.com-cert.pem new file mode 100644 index 00000000..7ce94f01 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/signcerts/Admin@org3.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAdCgAwIBAgIRAK23Ee++17ijWQTLdbjy2EMwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgxOTAw +WjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y +ZzMuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARUcpOP68e8 +ShK2zLs5Yoytnm7mgmE5ZDwwusaELAi0NPaWbeQ5YVRwBIzqLVVAqZ1HGQBiY0cW ++AWwdUu7EmmCo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV +HSMEJDAigCCDIb8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjO +PQQDAgNHADBEAiBCP36k5Vd93zvob2hnYOu/N5ri3xIZhbZiG7yD+/oh1wIgKVLO +etL75xfSa27U7491DviHdOrnfRfV5HYx7nfxFuM= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/ca.crt new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.crt new file mode 100644 index 00000000..f60afbc3 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.crt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICOzCCAeKgAwIBAgIRAMIQ41sm0tpoOOCoHh6ogbAwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMy5leGFtcGxlLmNv +bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNH44A9D4rxA4NeemZMVkFDjrFUc ++pc149EeF8L6h3leoj52Nlsd3CnoH8SogGcgIs5UulIAwpWhjmv4HIjEc+GjbDBq +MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw +DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCBKlHpNbOdHXK/zLpRezhLVc+xrBGei +Q/r5rI54afc4vDAKBggqhkjOPQQDAgNHADBEAiBlYFD3rAMxIzfIEdesa+OaWkRZ +VVwoCI5yL7K13cGhqQIgSiGku0M1bdwhcVKuGrbmTJtP6ZfSuEGUPV0w/036doQ= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.key new file mode 100644 index 00000000..46a6af67 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgAissDKWiFBUWZr/b +ReCdOrZRwRnJMPzqpNBYj9HUjVWhRANCAATR+OAPQ+K8QODXnpmTFZBQ46xVHPqX +NePRHhfC+od5XqI+djZbHdwp6B/EqIBnICLOVLpSAMKVoY5r+ByIxHPh +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..8b270d12 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUTCCAfegAwIBAgIQd1iuO+RaFt55RkVi2tnEQDAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +4bd+kZxverII8ZAaLovQlFcNJtg1QfIZ8oB5Ui+Ce5J0ant/QaP/2+il5BQ3L2Bj +wploSeFCoGlCBlsjdNj156NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCD +Ib8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjOPQQDAgNIADBF +AiEA1ns/3AzS2PkzByAuVDXo5lu4deMSc2OMYFC6fkccqJICIAHDz9ARdP+5UiBO +DGl32RsP79a9+RJcxL29qogVTMDk +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/config.yaml new file mode 100644 index 00000000..c3272f9c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..4f5b981b --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgsJ+2KWoyB0D9v9eV +okIhvlE5OzdSx+qqC6BCaJxWSYqhRANCAAQsuyo42AFEYheWpqkhxuXojxgQYfbT +pW+geSjjyDyBXzZxSC33mGLa9p/WMi0CoMfhgJPvV+s2M/PAqvSt5KVD +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/signcerts/User1@org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/signcerts/User1@org3.example.com-cert.pem new file mode 100644 index 00000000..aabb8ba6 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/signcerts/User1@org3.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAdCgAwIBAgIQJkHet6xXFLLz9DwpvYAv3jAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MGwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMQ8wDQYDVQQLEwZjbGllbnQxHzAdBgNVBAMMFlVzZXIxQG9y +ZzMuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQsuyo42AFE +YheWpqkhxuXojxgQYfbTpW+geSjjyDyBXzZxSC33mGLa9p/WMi0CoMfhgJPvV+s2 +M/PAqvSt5KVDo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV +HSMEJDAigCCDIb8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjO +PQQDAgNHADBEAiBSw3U9MRWqD0+iRBWWdzUYSGALa9qxD4/dTIdVtZ1jpAIgWY/8 +L0c+bRGr/SztKP+pO5+fvHZkyeP0WLMZzhHJWrE= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/ca.crt new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.crt b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.crt new file mode 100644 index 00000000..f5038f24 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.crt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICOzCCAeGgAwIBAgIQV7TVo7RoVvAYO8y7uz+AMTAKBggqhkjOPQQDAjB2MQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5 +MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmczLmV4YW1wbGUuY29t +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnT+X+X16EZ6ucc55dNRwq+K6MA9H +3AxW0ith+hp77GCdUtoOSAWdldSJ0qw46DizYQsqfwDahv35QPNh010ntqNsMGow +DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM +BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIEqUek1s50dcr/MulF7OEtVz7GsEZ6JD ++vmsjnhp9zi8MAoGCCqGSM49BAMCA0gAMEUCIQDAnLM1gOIbB2ZU2WDE7g9Lzm/A +UdRBOf6MnglZ7a66AwIgSkjtOUxmML8YYgUD/nJ4fEbSmMKP2+VYw8qtLjOahpg= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.key b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.key new file mode 100644 index 00000000..771693ba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgn1XW+8po3FF/DvRw +2bnKrqyogbCNYrnWzXhfnOiRuTWhRANCAASdP5f5fXoRnq5xznl01HCr4rowD0fc +DFbSK2H6GnvsYJ1S2g5IBZ2V1InSrDjoOLNhCyp/ANqG/flA82HTXSe2 +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-couchdb.yaml b/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-couchdb.yaml new file mode 100644 index 00000000..18291a49 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-couchdb.yaml @@ -0,0 +1,107 @@ +# github.com/yeasy/docker-compose-files +# fabric network with couchdb as the peer state db. +# including: +# orderer.example.com: orderer node +# peer0.org1.example.com: peer0 node +# peer1.org1.example.com: peer1 node +# peer0.org2.example.com: peer2 node +# peer1.org2.example.com: peer3 node +# couchdb0: couchdb node +# couchdb1: couchdb node +# couchdb2: couchdb node +# couchdb3: couchdb node +# cli: cli node + +version: '2' + +services: + orderer.example.com: + extends: + file: base-solo.yaml + service: orderer.example.com + + peer0.org1.example.com: + extends: + file: base-solo.yaml + service: peer0.org1.example.com + environment: + - CORE_LEDGER_STATE_STATEDATABASE=CouchDB + - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984 + depends_on: + - couchdb0 + + peer1.org1.example.com: + extends: + file: base-solo.yaml + service: peer1.org1.example.com + environment: + - CORE_LEDGER_STATE_STATEDATABASE=CouchDB + - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb1:5984 + depends_on: + - couchdb1 + + peer0.org2.example.com: + extends: + file: base-solo.yaml + service: peer0.org2.example.com + environment: + - CORE_LEDGER_STATE_STATEDATABASE=CouchDB + - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb2:5984 + depends_on: + - couchdb2 + + peer1.org2.example.com: + extends: + file: base-solo.yaml + service: peer1.org2.example.com + environment: + - CORE_LEDGER_STATE_STATEDATABASE=CouchDB + - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb3:5984 + depends_on: + - couchdb3 + + couchdb0: + extends: + file: base.yaml + service: couchdb-base + container_name: couchdb0 + # Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service, + # for example map it to utilize Fauxton User Interface in dev environments. + ports: + - "5984:5984" # this is the restful API addr, can also access fauxton web ui thru http://localhost:5984/_utils/ + + couchdb1: + extends: + file: base.yaml + service: couchdb-base + container_name: couchdb1 + # Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service, + # for example map it to utilize Fauxton User Interface in dev environments. + ports: + - "6984:5984" + + couchdb2: + extends: + file: base.yaml + service: couchdb-base + container_name: couchdb2 + # Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service, + # for example map it to utilize Fauxton User Interface in dev environments. + ports: + - "7984:5984" + + couchdb3: + extends: + file: base.yaml + service: couchdb-base + container_name: couchdb3 + # Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service, + # for example map it to utilize Fauxton User Interface in dev environments. + ports: + - "8984:5984" + + cli: + extends: + file: base-solo.yaml + service: cli + diff --git a/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-dev.yaml b/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-dev.yaml new file mode 100644 index 00000000..28add973 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-dev.yaml @@ -0,0 +1,93 @@ +# https://github.com/yeasy/docker-compose-files/tree/master/hyperledger +# This compose file will start a Hyperledger Fabric 1.4 in dev mode, including +# It will map the $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric on peer0 +# * 2 ca (not in use now) +# * 3 orderers +# * 4 peers in 2 orgs +# * cli for testing + +version: '2.0' + +services: +# ca.org1.example.com: +# extends: +# file: base-raft.yaml +# service: ca.org1.example.com + +# ca.org2.example.com: +# extends: +# file: base-raft.yaml +# service: ca.org2.example.com + + cli: + extends: + file: base-raft.yaml + service: cli + + orderer0.example.com: # There can be multiple orderers + extends: + file: base-raft.yaml + service: orderer0.example.com + volumes: + - $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric + command: /go/src/github.com/hyperledger/fabric/orderer/orderer start + + orderer1.example.com: # There can be multiple orderers + extends: + file: base-raft.yaml + service: orderer1.example.com + volumes: + - $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric + command: /go/src/github.com/hyperledger/fabric/orderer/orderer start + + orderer2.example.com: # There can be multiple orderers + extends: + file: base-raft.yaml + service: orderer2.example.com + volumes: + - $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric + command: /go/src/github.com/hyperledger/fabric/orderer/orderer start + + peer0.org1.example.com: + extends: + file: base-raft.yaml + service: peer0.org1.example.com + volumes: + - $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric + depends_on: + - orderer0.example.com + - orderer1.example.com + - orderer2.example.com + command: /go/src/github.com/hyperledger/fabric/peer/peer node start + + peer1.org1.example.com: + extends: + file: base-raft.yaml + service: peer1.org1.example.com + depends_on: + - orderer0.example.com + - orderer1.example.com + - orderer2.example.com + + peer0.org2.example.com: + extends: + file: base-raft.yaml + service: peer0.org2.example.com + depends_on: + - orderer0.example.com + - orderer1.example.com + - orderer2.example.com + + peer1.org2.example.com: + extends: + file: base-raft.yaml + service: peer1.org2.example.com + depends_on: + - orderer0.example.com + - orderer1.example.com + - orderer2.example.com + +#networks: +# default: +# external: +# name: hyperledger_fabric diff --git a/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-event.yaml b/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-event.yaml new file mode 100644 index 00000000..5c4efd0d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-event.yaml @@ -0,0 +1,59 @@ +# https://github.com/yeasy/docker-compose-files/tree/master/hyperledger +# This compose file will start a Hyperledger Fabric 1.0 MVE, including +# * 1 ca +# * 1 orderer +# * 4 peers in 2 orgs +# * cli for testing + +version: '2.0' + +services: + + orderer.example.com: # There can be multiple orderers + extends: + file: base-event.yaml + service: orderer.example.com + + peer0.org1.example.com: + extends: + file: base-event.yaml + service: peer0.org1.example.com + depends_on: + - orderer.example.com + + peer1.org1.example.com: + extends: + file: base-event.yaml + service: peer1.org1.example.com + depends_on: + - orderer.example.com + + peer0.org2.example.com: + extends: + file: base-event.yaml + service: peer0.org2.example.com + depends_on: + - orderer.example.com + + peer1.org2.example.com: + extends: + file: base-event.yaml + service: peer1.org2.example.com + depends_on: + - orderer.example.com + + cli: + extends: + file: base-event.yaml + service: cli + + event-listener: + extends: + file: base-event.yaml + service: event-listener + depends_on: + - orderer.example.com + - peer0.org1.example.com + - peer1.org1.example.com + - peer0.org2.example.com + - peer1.org2.example.com diff --git a/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-raft.yaml b/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-raft.yaml new file mode 100644 index 00000000..22d9f2d6 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/docker-compose-2orgs-4peers-raft.yaml @@ -0,0 +1,90 @@ +# https://github.com/yeasy/docker-compose-files/tree/master/hyperledger +# This compose file will start a Hyperledger Fabric 2.0 MVE, including +# * 2 ca (not in use now) +# * 3 orderers +# * 4 peers in 2 orgs +# * cli for testing + +version: '2.0' + +services: +# ca.org1.example.com: +# extends: +# file: base-raft.yaml +# service: ca.org1.example.com + +# ca.org2.example.com: +# extends: +# file: base-raft.yaml +# service: ca.org2.example.com + +# sdk-node: +# extends: +# file: base-raft.yaml +# service: sdk-node + +# gateway-java: +# extends: +# file: base-raft.yaml +# service: gateway-java + + cli: + extends: + file: base-raft.yaml + service: cli + + orderer0.example.com: # There can be multiple orderers + extends: + file: base-raft.yaml + service: orderer0.example.com + + orderer1.example.com: # There can be multiple orderers + extends: + file: base-raft.yaml + service: orderer1.example.com + + orderer2.example.com: # There can be multiple orderers + extends: + file: base-raft.yaml + service: orderer2.example.com + + peer0.org1.example.com: + extends: + file: base-raft.yaml + service: peer0.org1.example.com + depends_on: + - orderer0.example.com + - orderer1.example.com + - orderer2.example.com + + peer1.org1.example.com: + extends: + file: base-raft.yaml + service: peer1.org1.example.com + depends_on: + - orderer0.example.com + - orderer1.example.com + - orderer2.example.com + + peer0.org2.example.com: + extends: + file: base-raft.yaml + service: peer0.org2.example.com + depends_on: + - orderer0.example.com + - orderer1.example.com + - orderer2.example.com + + peer1.org2.example.com: + extends: + file: base-raft.yaml + service: peer1.org2.example.com + depends_on: + - orderer0.example.com + - orderer1.example.com + - orderer2.example.com + +#networks: +# default: +# external: +# name: hyperledger_fabric diff --git a/hyperledger_fabric/v2.2.8/explorer-artifacts/config.json b/hyperledger_fabric/v2.2.8/explorer-artifacts/config.json new file mode 100644 index 00000000..1fe07a38 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/explorer-artifacts/config.json @@ -0,0 +1,57 @@ +{ + "network-config": { + "org1": { + "name": "peerOrg1", + "mspid": "Org1MSP", + "peer1": { + "requests": "grpcs://peer0.org1.example.com:7051", + "events": "grpcs://peer0.org1.example.com:7053", + "server-hostname": "peer0.org1.example.com", + "tls_cacerts": "/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpcs://peer1.org1.example.com:7051", + "events": "grpcs://peer1.org1.example.com:7053", + "server-hostname": "peer1.org1.example.com", + "tls_cacerts": "/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + }, + "admin": { + "key": "/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore", + "cert": "/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts" + } + }, + "org2": { + "name": "peerOrg2", + "mspid": "Org2MSP", + "peer1": { + "requests": "grpcs://peer0.org2.example.com:7051", + "events": "grpcs://peer0.org2.example.com:7053", + "server-hostname": "peer0.org2.example.com", + "tls_cacerts": "/first-network/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpcs://peer1.org2.example.com:7051", + "events": "grpcs://peer1.org2.example.com:7053", + "server-hostname": "peer1.org2.example.com", + "tls_cacerts": "/first-network/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + }, + "admin": { + "key": "/first-network/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore", + "cert": "/first-network/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts" + } + } + }, + "host":"explorer", + "port":"8080", + "channel": "businesschannel", + "GOPATH":"/opt/gopath", + "keyValueStore":"/tmp/fabric-client-kvs", + "eventWaitTime":"30000", + "mysql":{ + "host":"mysql", + "port":"3306", + "database":"fabricexplorer", + "username":"root", + "passwd":"root" + } +} diff --git a/hyperledger_fabric/v2.2.8/explorer-artifacts/fabricexplorer.sql b/hyperledger_fabric/v2.2.8/explorer-artifacts/fabricexplorer.sql new file mode 100644 index 00000000..557abb4c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/explorer-artifacts/fabricexplorer.sql @@ -0,0 +1,115 @@ +/* + Navicat MySQL Data Transfer + + Source Server : 172.16.10.162 + Source Server Type : MySQL + Source Server Version : 50635 + Source Host : 172.16.10.162 + Source Database : fabricexplorer + + Target Server Type : MySQL + Target Server Version : 50635 + File Encoding : utf-8 + + Date: 07/07/2017 10:14:31 AM +*/ + +DROP DATABASE IF EXISTS `fabricexplorer`; + +CREATE DATABASE fabricexplorer; + +use fabricexplorer; +SET NAMES utf8; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for `blocks` +-- ---------------------------- +DROP TABLE IF EXISTS `blocks`; +CREATE TABLE `blocks` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', + `blocknum` int(11) DEFAULT NULL, + `datahash` varchar(256) DEFAULT NULL, + `prehash` varchar(256) DEFAULT NULL, + `channelname` varchar(128) DEFAULT NULL, + `txcount` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='blocks'; + +-- ---------------------------- +-- Table structure for `chaincodes` +-- ---------------------------- +DROP TABLE IF EXISTS `chaincodes`; +CREATE TABLE `chaincodes` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) DEFAULT NULL, + `version` varchar(255) DEFAULT NULL, + `path` varchar(255) DEFAULT NULL, + `channelname` varchar(255) DEFAULT NULL, + `txcount` int(11) DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; + +-- ---------------------------- +-- Table structure for `channel` +-- ---------------------------- +DROP TABLE IF EXISTS `channel`; +CREATE TABLE `channel` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', + `name` varchar(64) DEFAULT NULL, + `blocks` int(11) DEFAULT NULL, + `trans` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='channel'; + +-- ---------------------------- +-- Table structure for `peer` +-- ---------------------------- +DROP TABLE IF EXISTS `peer`; +CREATE TABLE `peer` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', + `org` int(11) DEFAULT NULL, + `name` varchar(64) DEFAULT NULL, + `mspid` varchar(64) DEFAULT NULL, + `requests` varchar(64) DEFAULT NULL, + `events` varchar(64) DEFAULT NULL, + `server_hostname` varchar(64) DEFAULT NULL, + `createdt` datetime DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='peer'; + +-- ---------------------------- +-- Table structure for `peer_ref_channel` +-- ---------------------------- +DROP TABLE IF EXISTS `peer_ref_channel`; +CREATE TABLE `peer_ref_channel` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', + `peerid` int(11) DEFAULT NULL, + `channelid` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT=''; + +-- ---------------------------- +-- Table structure for `transaction` +-- ---------------------------- +DROP TABLE IF EXISTS `transaction`; +CREATE TABLE `transaction` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', + `channelname` varchar(64) DEFAULT NULL, + `blockid` int(11) DEFAULT NULL, + `txhash` varchar(256) DEFAULT NULL, + `createdt` datetime DEFAULT NULL, + `chaincodename` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='transtaion'; + +-- ---------------------------- +-- Table structure for `write_lock` +-- ---------------------------- +DROP TABLE IF EXISTS `write_lock`; +CREATE TABLE `write_lock` ( + `write_lock` int(1) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`write_lock`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/hyperledger_fabric/v2.2.8/gateway-java/auto.sh b/hyperledger_fabric/v2.2.8/gateway-java/auto.sh new file mode 100644 index 00000000..c1555d9b --- /dev/null +++ b/hyperledger_fabric/v2.2.8/gateway-java/auto.sh @@ -0,0 +1,11 @@ +# Do patch on the grpc-java +#rm ~/.m2/repository/io/grpc/grpc-netty-shaded/1.38.0/grpc-netty-shaded-1.38.0.jar +#mvn install:install-file -Dfile=grpc-netty-shaded-build/grpc-netty-shaded-1.38.0.jar -DgroupId=io.grpc -DartifactId=grpc-netty-shaded -Dversion=1.38.0 -Dpackaging=jar + +# Compile if the source code is changed +mvn compile + +# Run the method +mvn exec:java \ + -Dexec.cleanupDaemonThreads=false \ + -Dexec.mainClass="sample.Sample" diff --git a/hyperledger_fabric/v2.2.8/gateway-java/connection.yaml b/hyperledger_fabric/v2.2.8/gateway-java/connection.yaml new file mode 100644 index 00000000..e3b22003 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/gateway-java/connection.yaml @@ -0,0 +1,80 @@ +--- +name: basic-network +version: 1.0.0 +client: + organization: Org1 + connection: + timeout: + peer: + endorser: '300' + orderer: '300' +channels: + mychannel: + orderers: + - orderer0.example.com + peers: + peer0.org1.example.com: + endorsingPeer: true + chaincodeQuery: true + ledgerQuery: true + eventSource: true +organizations: + Org1: + mspid: Org1MSP + peers: + - peer0.org1.example.com + certificateAuthorities: + - ca-org1 + adminPrivateKeyPEM: + path: "/opt/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk" + signedCertPEM: + path: "/opt/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" +orderers: + orderer0.example.com: + url: grpcs://orderer0.example.com:7050 + mspid: OrdererMSP + grpcOptions: + ssl-target-name-override: orderer0.example.com + hostnameOverride: orderer0.example.com + tlsCACerts: + path: "/opt/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/ca.crt" + adminPrivateKeyPEM: + path: "/opt/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/priv_sk" + signedCertPEM: + path: "/opt/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" +peers: + peer0.org1.example.com: + url: grpcs://peer0.org1.example.com:7051 + grpcOptions: + ssl-target-name-override: peer0.org1.example.com + hostnameOverride: peer0.org1.example.com + request-timeout: 120001 + tlsCACerts: + path: "/opt/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + peer0.org2.example.com: + url: grpcs://peer0.org2.example.com:7051 + grpcOptions: + ssl-target-name-override: peer0.org2.example.com + hostnameOverride: peer0.org2.example.com + request-timeout: 120001 + tlsCACerts: + path: "/opt/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" +certificateAuthorities: + ca-org1: + url: https://localhost:7054 + grpcOptions: + verify: true + tlsCACerts: + path: "/opt/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem" + registrar: + - enrollId: admin + enrollSecret: adminpw + ca-org2: + url: https://localhost:8054 + grpcOptions: + verify: true + tlsCACerts: + path: "/opt/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem" + registrar: + - enrollId: admin + enrollSecret: adminpw diff --git a/hyperledger_fabric/v2.2.8/gateway-java/pom.xml b/hyperledger_fabric/v2.2.8/gateway-java/pom.xml new file mode 100644 index 00000000..0d16a2d5 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/gateway-java/pom.xml @@ -0,0 +1,86 @@ + + 4.0.0 + sample + sample + 1.0.0 + + + + maven-compiler-plugin + 3.8.0 + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.0 + + + + package + + shade + + + + + false + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + + + + + oss-sonatype + OSS Sonatype + https://oss.sonatype.org/content/repositories/snapshots + + + + + org.hyperledger.fabric + fabric-gateway-java + 2.2.0 + + + org.junit.platform + junit-platform-launcher + 1.4.2 + + + org.junit.jupiter + junit-jupiter-engine + 5.4.1 + test + + + org.junit.vintage + junit-vintage-engine + 5.4.2 + + + org.assertj + assertj-core + 3.12.2 + test + + + + diff --git a/hyperledger_fabric/v2.2.8/gateway-java/src/main/java/sample/ConfigProperties.java b/hyperledger_fabric/v2.2.8/gateway-java/src/main/java/sample/ConfigProperties.java new file mode 100644 index 00000000..3963478f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/gateway-java/src/main/java/sample/ConfigProperties.java @@ -0,0 +1,57 @@ +package sample; + +import java.io.InputStream; +import java.util.Properties; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.io.BufferedInputStream; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.File; + +/** + * The properties handler for this sample + * With demo.properties in resources dir + */ +public class ConfigProperties { + + static Properties pp; + + static{ + pp = new Properties(); + InputStream fps = null; + try { + Path basepath = Paths.get(".").toAbsolutePath().normalize(); + fps = new BufferedInputStream(new FileInputStream(new File(basepath.toString()+"/resources/demo.properties"))); + pp.load(fps); + } catch (IOException e) { + System.out.print("Read config.properties file failed!"); + e.printStackTrace(); + }finally{ + try{ + if(fps!=null) fps.close(); + }catch(IOException e){ + System.out.print("Release the config file failed!"); + e.printStackTrace(); + } + } + } + public static String values(String key) { + String value = pp.getProperty(key); + if (value != null) { + return value.trim(); + } else { + return null; + } + } + public static String[] values_array(String key) { + String value = pp.getProperty(key); + if (value != null) { + if (value.length() != 0) { + return value.split (",", 0); + } + } + return null; + + } +} \ No newline at end of file diff --git a/hyperledger_fabric/v2.2.8/gateway-java/src/main/java/sample/Sample.java b/hyperledger_fabric/v2.2.8/gateway-java/src/main/java/sample/Sample.java new file mode 100644 index 00000000..a6f9c2ee --- /dev/null +++ b/hyperledger_fabric/v2.2.8/gateway-java/src/main/java/sample/Sample.java @@ -0,0 +1,110 @@ +package sample; + +import org.apache.commons.codec.binary.Base64; +import org.hyperledger.fabric.gateway.*; +import org.yaml.snakeyaml.Yaml; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.security.KeyFactory; +import java.security.NoSuchAlgorithmException; +import java.security.PrivateKey; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.PKCS8EncodedKeySpec; +import java.util.Map; +import java.util.concurrent.TimeoutException; + +public class Sample { + + private static String connectProfilePath = "./connection.yaml"; + private static String channelName = ConfigProperties.values("CHANNEL_NAME"); + private static String chaincodeName = ConfigProperties.values("CHAINCODE_NAME"); + + /** + * Initialize a wallet with an admin identity + * + * @param connectionProfilePath file path to the connection profile + * @param wallet wallet to store identity + * @throws IOException io failure + * @throws CertificateException the certificate is with invalid format + * @throws NoSuchAlgorithmException the algorithm is not supported + * @throws InvalidKeySpecException the private key is with invalid format + */ + private static void initWallet(String connectionProfilePath, Wallet wallet) throws IOException, CertificateException, NoSuchAlgorithmException, InvalidKeySpecException { + // Load the network configuration profile file + String profileFullPath = Paths.get(connectionProfilePath).normalize().toRealPath().toString(); + InputStream fis = new FileInputStream(profileFullPath); + Yaml yaml = new Yaml(); + Map yamlMap = yaml.load(fis); + Map clientInfo = (Map) yamlMap.get("client"); + String orgName = clientInfo.get("organization").toString(); + Map orgsInfo = (Map) yamlMap.get("organizations"); + Map orgInfo = (Map) orgsInfo.get(orgName); + String mspId = orgInfo.get("mspid").toString(); + Map signedCert = (Map) orgInfo.get("signedCertPEM"); + String signedCertPath = signedCert.get("path").toString(); + Map privKey = (Map) orgInfo.get("adminPrivateKeyPEM"); + String privKeyPath = privKey.get("path").toString(); + + // Load the certificate and the private key + CertificateFactory fac = CertificateFactory.getInstance("X509"); + FileInputStream is = new FileInputStream(signedCertPath); + X509Certificate cert = (X509Certificate) fac.generateCertificate(is); + byte[] keyBytes = Files.readAllBytes(Paths.get(privKeyPath)); + String temp = new String(keyBytes); + String privKeyPEM = temp.replace("-----BEGIN PRIVATE KEY-----\n", ""); + privKeyPEM = privKeyPEM.replace("-----END PRIVATE KEY-----", ""); + Base64 b64 = new Base64(); + byte[] decoded = b64.decode(privKeyPEM); + PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(decoded); + KeyFactory kf = KeyFactory.getInstance("EC"); + PrivateKey privateKey = kf.generatePrivate(spec); + + X509Identity identity = Identities.newX509Identity(mspId, cert, privateKey); + wallet.put("admin", identity); + } + + public static void main(String[] args) throws IOException, CertificateException, NoSuchAlgorithmException, InvalidKeySpecException { + // Initialize a wallet to hold identities used to access the network. + String walletPath = "/opt/test/wallet"; + Path walletDirectory = Paths.get(walletPath); + Wallet wallet = Wallets.newFileSystemWallet(walletDirectory); + initWallet(connectProfilePath, wallet); + + // Path to a common connection profile describing the network. + Path networkConfigFile = Paths.get(connectProfilePath); + + // Configure the gateway connection used to access the network. + Gateway.Builder builder = Gateway.createBuilder() + .identity(wallet, "admin") + .networkConfig(networkConfigFile); + + // Create a gateway connection + try (Gateway gateway = builder.connect()) { + // Obtain a smart contract deployed on the network. + Network network = gateway.getNetwork(channelName); + Contract contract = network.getContract(chaincodeName); + + // Submit transactions that store state to the ledger. + byte[] createCarResult = contract.createTransaction("invoke") + .submit("a", "b", "1"); + System.out.println(new String(createCarResult, StandardCharsets.UTF_8)); + + // Evaluate transactions that query state from the ledger. + byte[] queryAllCarsResult = contract.evaluateTransaction("query", "a"); + System.out.println(new String(queryAllCarsResult, StandardCharsets.UTF_8)); + + } catch (ContractException | TimeoutException | InterruptedException e) { + e.printStackTrace(); + } + System.exit(0); + } +} diff --git a/hyperledger_fabric/v2.2.8/gateway-java/wallet/admin.id b/hyperledger_fabric/v2.2.8/gateway-java/wallet/admin.id new file mode 100644 index 00000000..b7561a65 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/gateway-java/wallet/admin.id @@ -0,0 +1 @@ +{"version":1,"mspId":"Org1MSP","type":"X.509","credentials":{"certificate":"-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n","privateKey":"-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg4ui7zz4MlrLCpncs\nYHdQQS6qp8M5JE3f8ZowaU+BBfahRANCAASdrp2MhuxRGPaEqtrYLUewDHNLbaN+\nnG8LCxxEOmlTz8GQI5Lk4o+jKUMTH/IHy5cOnHQQPPfGxqy9g5bbZ8DO\n-----END PRIVATE KEY-----\n"}} \ No newline at end of file diff --git a/hyperledger_fabric/v2.2.8/gateway-java/wallet/test-admin.id b/hyperledger_fabric/v2.2.8/gateway-java/wallet/test-admin.id new file mode 100644 index 00000000..80cd7aad --- /dev/null +++ b/hyperledger_fabric/v2.2.8/gateway-java/wallet/test-admin.id @@ -0,0 +1 @@ +{"version":1,"mspId":"mspid","type":"X.509","credentials":{"certificate":"-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n","privateKey":"-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg4ui7zz4MlrLCpncs\nYHdQQS6qp8M5JE3f8ZowaU+BBfahRANCAASdrp2MhuxRGPaEqtrYLUewDHNLbaN+\nnG8LCxxEOmlTz8GQI5Lk4o+jKUMTH/IHy5cOnHQQPPfGxqy9g5bbZ8DO\n-----END PRIVATE KEY-----\n"}} \ No newline at end of file diff --git a/hyperledger_fabric/v2.2.8/network_config.json b/hyperledger_fabric/v2.2.8/network_config.json new file mode 100644 index 00000000..96769bb4 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/network_config.json @@ -0,0 +1,65 @@ +{ + "ordererOrg": { + "name": "OrdererOrg", + "mspid": "Org1MSP", + "type": "ordererOrg", + "peer0": { + "requests": "grpcs://peer0.org1.example.com:7051", + "events": "grpcs://peer0.org1.example.com:7053", + "server-hostname": "peer0.org1.example.com", + "tls_cacerts": "/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + }, + "peer1": { + "requests": "grpcs://peer1.org1.example.com:7051", + "events": "grpcs://peer1.org1.example.com:7053", + "server-hostname": "peer1.org1.example.com", + "tls_cacerts": "/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + }, + "admin": { + "key": "/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore", + "cert": "/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts" + } + }, + "org1": { + "name": "peerOrg1", + "mspid": "Org1MSP", + "type": "ordererOrg", + "peer0": { + "requests": "grpcs://peer0.org1.example.com:7051", + "events": "grpcs://peer0.org1.example.com:7053", + "server-hostname": "peer0.org1.example.com", + "tls_cacerts": "/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + }, + "peer1": { + "requests": "grpcs://peer1.org1.example.com:7051", + "events": "grpcs://peer1.org1.example.com:7053", + "server-hostname": "peer1.org1.example.com", + "tls_cacerts": "/first-network/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + }, + "admin": { + "key": "/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore", + "cert": "/first-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts" + } + }, + "org2": { + "name": "peerOrg2", + "mspid": "Org2MSP", + "type": "peerOrg", + "peer0": { + "requests": "grpcs://peer0.org2.example.com:7051", + "events": "grpcs://peer0.org2.example.com:7053", + "server-hostname": "peer0.org2.example.com", + "tls_cacerts": "/first-network/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + }, + "peer1": { + "requests": "grpcs://peer1.org2.example.com:7051", + "events": "grpcs://peer1.org2.example.com:7053", + "server-hostname": "peer1.org2.example.com", + "tls_cacerts": "/first-network/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + }, + "admin": { + "key": "/first-network/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore", + "cert": "/first-network/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts" + } + } +} \ No newline at end of file diff --git a/hyperledger_fabric/v2.2.8/network_generator/__init__.py b/hyperledger_fabric/v2.2.8/network_generator/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hyperledger_fabric/v2.2.8/network_generator/config_manager.py b/hyperledger_fabric/v2.2.8/network_generator/config_manager.py new file mode 100644 index 00000000..5bf3fef2 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/network_generator/config_manager.py @@ -0,0 +1,6 @@ + + +class ConfigManager(object): + + def __init__(self, peer_base, orderer_base): + return \ No newline at end of file diff --git a/hyperledger_fabric/v2.2.8/network_generator/network.py b/hyperledger_fabric/v2.2.8/network_generator/network.py new file mode 100644 index 00000000..2bff61c6 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/network_generator/network.py @@ -0,0 +1,13 @@ + + +class Network(object): + """ + Network consists of several nodes: + * orderer nodes in a orderer org + * peer nodes in app orgs + * ca nodes + * client nodes + """ + + def __init__(self): + pass \ No newline at end of file diff --git a/hyperledger_fabric/v2.2.8/network_generator/network_generator.py b/hyperledger_fabric/v2.2.8/network_generator/network_generator.py new file mode 100644 index 00000000..f2416b2a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/network_generator/network_generator.py @@ -0,0 +1,242 @@ +#!/usr/bin/env python +# Generate Hyperledger Fabric Network docker-compose.yaml files +# base on input parameters +# github.com/yeasy/docker-compose + +# tested with version 0.15.3 +from ruamel.yaml import YAML +import argparse +import copy +import collections + +DOCKER_COMPOSER_VERSION='2.0' +DEFAULT_CONFIG_FILE = 'network_config.json' +PEER_TEMPLATE_FILE = 'peer.yaml' +ORDERER_TEMPLATE_FILE = 'orderer.yaml' +RESULT_FILE = '{}orgs-{}peers-{}.yaml' + +# Orderer +# consensus_mode, org_name, node_name +ORDERER_GB_VOLUME = './{}/channel-artifacts/orderer.genesis.block' +ORDERER_GB_PATH = '/var/hyperledger/orderer/orderer.genesis.block' +ORDERER_MSP_VOLUME = './{}/crypto-config/ordererOrganizations/{}/orderers/{}/msp' +ORDERER_TLS_VOLUME = './{}/crypto-config/ordererOrganizations/{}/orderers/{}/tls' +ORDERER_MSP_PATH = '/var/hyperledger/orderer/msp' +ORDERER_TLS_PATH = '/var/hyperledger/orderer/tls' + +# PEER +# consensus_mode, org_name, node_name +PEER_MSP_VOLUME = './{}/crypto-config/peerOrganizations/{}/peers/{}/msp' +PEER_TLS_VOLUME = './{}/crypto-config/peerOrganizations/{}/peers/{}/tls' +PEER_MSP_PATH = '/etc/hyperledger/fabric/msp' +PEER_TLS_PATH = '/etc/hyperledger/fabric/tls' + + +yaml = YAML() +yaml.explicit_start = True + + +def list_to_dict(l, sep=':'): + """ + Convert list to dict with order + :param l: list + :param sep: separator + :return: dicted result + + >>> list_to_dict(['a=1','b=2'], '=') + OrderedDict([('a', '1'), ('b', '2')]) + >>> list_to_dict(['a:1','b:2']) + OrderedDict([('a', '1'), ('b', '2')]) + """ + result = collections.OrderedDict() + for x in l: + k, v = x.split(sep, 2) + result[k] = v + return result + + +def dict_to_list(d, sep=':'): + """ + Convert the given dict to list + :param d: dict + :param sep: separator + :return: + + + >>> dict_to_list({'a': '1', 'b': '2'}) + ['a:1', 'b:2'] + """ + result = list() + for k,v in d.items(): + result.append('{}{}{}'.format(k, sep, v)) + return result + +def parse_args(): + """ + Parse the args + :return: + """ + parser = argparse.ArgumentParser() + parser.add_argument('-f', "--config_file", help="Path to the config file", + type=str, default=DEFAULT_CONFIG_FILE) + args = parser.parse_args() + print(args.config_file) + + +def gen_peer(template, org_name, org_msp, node_name, consensus_mode): + """ + Generate peer for given org and name + :param template: Template to use + :param org_name: Name of org, + :param org_msp: MSP ID of the org, + :param node_name: Name of the peer + :param consensus_mode: Mode of consensus + :return: + """ + node = copy.deepcopy(template) + addr = node_name # e.g., peer0.org1.example.com + node['container_name'] = addr + node['hostname'] = addr + + # update environments part + environment = list_to_dict(node['environment'], '=') + environment['CORE_PEER_ID'] = addr # peer id + environment['CORE_PEER_ADDRESS'] = addr+':7051' # peer grpc port + environment['CORE_PEER_CHAINCODELISTENADDRESS'] = addr+':7052' # chaincode + environment['CORE_PEER_GOSSIP_EXTERNALENDPOINT'] = addr+':7051' # gossip + environment['CORE_PEER_LOCALMSPID'] = org_msp # org msp name + node['environment'] = dict_to_list(environment, '=') + + # replace volumes part + volumes = { + PEER_MSP_VOLUME.format(consensus_mode, org_name, node_name): + PEER_MSP_PATH, + PEER_TLS_VOLUME.format(consensus_mode, org_name, node_name): + PEER_TLS_PATH, + } + node['volumes'] = dict_to_list(volumes, ':') + + return node + + +def gen_peers(org_name='org1.example.com', org_msp='Org1MSP', num=2, + consensus_mode='solo'): + """ + Generate given num peers for Organization org_msp + :param org_name: Name of the org, + :param org_msp: MSP of the organization that peer belongs to + :param num: Number of peer nodes to generate + :param consensus_mode: Mode of consensus + :return: + """ + c = yaml.load(open(PEER_TEMPLATE_FILE, 'r')) + peer = c['services']['peer'] + result_peers = dict() + for i in range(num): + name = 'peer{}.{}'.format(i, org_name) # peer0.org1.example.com + result_peers[name] = gen_peer(peer, org_name, org_msp, name, + consensus_mode) + return result_peers + + +def gen_app_orgs(orgs=2, peers=2, consensus_mode='solo'): + """ + Generate peer orgs with given number + :param orgs: Number of app orgs to generate + :param peers: Peers number for each org + :param consensus_mode: Mode of consensus + :return: + """ + services = dict() + for i in range(orgs): + org_name = 'org{}.example.com'.format(i+1) # match crypto-config.yaml + org_msp = 'Org{}MSP'.format(i+1) + services.update(gen_peers(org_name, org_msp, peers, consensus_mode)) + return services + + +def gen_orderer(template, org_name, node_name, consensus_mode): + """ + Generate peer for given org and name + :param template: Template to use + :param org_name: Name of org, + :param org_msp: MSP ID of the org, + :param node_name: Name of the node + :param consensus_mode: Mode of consensus + :return: + """ + node = copy.deepcopy(template) + addr = node_name # e.g., orderer0.orderer.example.com + node['container_name'] = addr + node['hostname'] = addr + + # replace volumes part + volumes = { + ORDERER_GB_VOLUME.format(consensus_mode): ORDERER_GB_PATH, + ORDERER_MSP_VOLUME.format(consensus_mode, org_name, node_name): + ORDERER_MSP_PATH, + ORDERER_TLS_VOLUME.format(consensus_mode, org_name, node_name): + ORDERER_TLS_PATH, + } + node['volumes'] = dict_to_list(volumes, ':') + + return node + + +def gen_orderers(org_name='orderer.example.com', num=2, consensus_mode='solo'): + """ + Generate given num peers for Organization org_msp + :param org_name: Name of the org, + :param num: Number of peer nodes to generate + :param consensus_mode: Mode of consensus + :return: + """ + try: + c = yaml.load(open(ORDERER_TEMPLATE_FILE, 'r')) + orderer = c['services']['orderer-{}'.format(consensus_mode)] + result_nodes = dict() + for i in range(num): + name = 'orderer.example.com' + #name = 'orderer{}.{}'.format(i, org_name) + result_nodes[name] = gen_orderer(orderer, org_name, name, + consensus_mode) + return result_nodes + except Exception as e: + print("Failed to gen_orderers with {}:{}".format(PEER_TEMPLATE_FILE, e)) + return dict() + + +def gen_orderer_orgs(orderers=1, consensus_mode='solo'): + """ + Generate peer orgs with given number + :param orderers: Orderers number for each org + :param consensus_mode: Mode of consensus + :return: + """ + services = dict() + org_name = 'example.com' # match crypto-config.yaml + services.update(gen_orderers(org_name, orderers, consensus_mode)) + return services + + +if __name__ == '__main__': + import doctest + doctest.testmod() + + parse_args() + + # network topology config + app_org_num = 2 + app_org_size = 2 + orderer_org_size = 1 + consensus_mode = 'solo' + + network = dict([('version','2.0'), ('services', dict())]) + network['services'].update(gen_orderer_orgs(orderer_org_size, + consensus_mode)) + network['services'].update(gen_app_orgs(app_org_num, app_org_size, + consensus_mode)) + + with open(RESULT_FILE.format(app_org_num, app_org_num*app_org_size, + 'solo'), 'w') as f: + yaml.dump(network, f) diff --git a/hyperledger_fabric/v2.2.8/network_generator/node.py b/hyperledger_fabric/v2.2.8/network_generator/node.py new file mode 100644 index 00000000..e4898448 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/network_generator/node.py @@ -0,0 +1,15 @@ + + +class Node(object): + """ + Node is a base class, representing a peer/orderer/ca in the network + """ + + def __init__(self, org, name): + """ + + :param org: which org it belongs to + :param name: name of the node + """ + self.org = org + self.name = name diff --git a/hyperledger_fabric/v2.2.8/network_generator/orderer.py b/hyperledger_fabric/v2.2.8/network_generator/orderer.py new file mode 100644 index 00000000..f3637fc2 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/network_generator/orderer.py @@ -0,0 +1,9 @@ + + +class Orderer(object): + """ + An orderer node + """ + + def __init__(self, org_name, node_name): + pass \ No newline at end of file diff --git a/hyperledger_fabric/v2.2.8/network_generator/requirements.txt b/hyperledger_fabric/v2.2.8/network_generator/requirements.txt new file mode 100644 index 00000000..9d42d870 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/network_generator/requirements.txt @@ -0,0 +1,6 @@ +# Copyright, All Rights Reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# + +ruamel.yaml>=0.15.0,<=0.16.0 diff --git a/hyperledger_fabric/v2.2.8/orderer.yaml b/hyperledger_fabric/v2.2.8/orderer.yaml new file mode 100644 index 00000000..5d65476c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/orderer.yaml @@ -0,0 +1,36 @@ +# All elements in this file should depend on the base.yaml +# Provided fabric orderer node in solo and kafka modes + +version: '2' # v3 does not support 'extends' yet + +services: + orderer-solo: # orderer in solo mode + extends: + file: base.yaml + service: orderer-base + container_name: orderer.example.com + hostname: orderer.example.com + expose: + - "7050" + volumes: + - ./solo/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block + - ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp + - ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls + + orderer-kafka: # orderer in kafka mode + extends: + file: base.yaml + service: orderer-base + container_name: orderer.example.com + hostname: orderer.example.com + expose: + - "7050" + environment: + # Kafka related configurations + - ORDERER_KAFKA_RETRY_SHORTINTERVAL=1s + - ORDERER_KAFKA_RETRY_SHORTTOTAL=30s + - ORDERER_KAFKA_VERBOSE=true + volumes: + - ./kafka/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block + - ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp + - ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls diff --git a/hyperledger_fabric/v2.2.8/org3/configtx.yaml b/hyperledger_fabric/v2.2.8/org3/configtx.yaml new file mode 100644 index 00000000..fd92173e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/configtx.yaml @@ -0,0 +1,54 @@ +# Copyright IBM Corp. All Rights Reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# + +--- +################################################################################ +# +# Section: Organizations +# +# - This section defines the different organizational identities which will +# be referenced later in the configuration. +# +################################################################################ +Organizations: + - &Org3 + # DefaultOrg defines the organization which is used in the sampleconfig + # of the fabric.git development environment + Name: Org3MSP + + # SkipAsForeign can be set to true for org definitions which are to be + # inherited from the orderer system channel during channel creation. This + # is especially useful when an admin of a single org without access to the + # MSP directories of the other orgs wishes to create a channel. Note + # this property must always be set to false for orgs included in block + # creation. + SkipAsForeign: false + + # ID to load the MSP definition as + ID: Org3MSP + + # Used by configtxgen + MSPDir: crypto-config/peerOrganizations/org3.example.com/msp + + Policies: + Readers: + Type: Signature + Rule: "OR('Org3MSP.admin', 'Org3MSP.peer', 'Org3MSP.client')" + Writers: + Type: Signature + Rule: "OR('Org3MSP.admin', 'Org3MSP.client')" + Admins: + Type: Signature + Rule: "OR('Org3MSP.admin')" + Endorsement: + Type: Signature + Rule: "OR('Org3MSP.member')" + + AnchorPeers: + # AnchorPeers defines the location of peers which can be used + # for cross org gossip communication. Note, this value is only + # encoded in the genesis block in the Application section context + - Host: peer0.org3.example.com + Port: 7051 diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config.yaml b/hyperledger_fabric/v2.2.8/org3/crypto-config.yaml new file mode 100644 index 00000000..02409282 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config.yaml @@ -0,0 +1,23 @@ +# Copyright IBM Corp. All Rights Reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# + +# --------------------------------------------------------------------------- +# "PeerOrgs" - Definition of organizations managing peer nodes +# --------------------------------------------------------------------------- +PeerOrgs: + # --------------------------------------------------------------------------- + # Org3 + # --------------------------------------------------------------------------- + - Name: Org3 + Domain: org3.example.com + EnableNodeOUs: true + CA: + Country: US + Province: California + Locality: San Francisco + Template: + Count: 2 + Users: + Count: 1 diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/ca/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/ca/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..d466d0ad --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/ca/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +kzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo +3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU +68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG +AiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1 +5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/ca/priv_sk b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/ca/priv_sk new file mode 100644 index 00000000..70abef51 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/ca/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg6GGvjiI4hC1JOQv8 +fKhvz7TvzbHf/PxyfphLmiG9502hRANCAASTNTNngtrtNfPOJZKMu8cOlTPrCdHQ +zLvpfOXVcK7G9EeP2p73WesCyUNdany3+ijdhUJ5y6gMwfvCORnWVtFU +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..d466d0ad --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +kzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo +3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU +68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG +AiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1 +5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/config.yaml new file mode 100644 index 00000000..c3272f9c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..7b4b2969 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVjCCAf2gAwIBAgIQa2Xf2Eq7zQsKR/+6IdAQmTAKBggqhkjOPQQDAjB2MQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1 +MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMR8wHQYD +VQQDExZ0bHNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D +AQcDQgAEOMKX8N5yt3y5TA6nBWDnCibo7Shoi2/4IVK0X3vFzrHSjASfuJ/Zbnbr +dlSh9D2jtKBxxasSQr7r9xu54r2+M6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud +JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud +DgQiBCCt87/QSqHqav9ZLX4AKFkUKNTYXuNdUh2ph9CQWqh0mTAKBggqhkjOPQQD +AgNHADBEAiAN1q7E7lBjCDwuRK9j3Ay6hA7Oqpp7PSv5IASOrbBRDwIgJTsvt/BI +x3XxOmRdTlmF6XJrj1/pqOE2sT0pm22UM1s= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..8b270d12 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUTCCAfegAwIBAgIQd1iuO+RaFt55RkVi2tnEQDAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +4bd+kZxverII8ZAaLovQlFcNJtg1QfIZ8oB5Ui+Ce5J0ant/QaP/2+il5BQ3L2Bj +wploSeFCoGlCBlsjdNj156NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCD +Ib8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjOPQQDAgNIADBF +AiEA1ns/3AzS2PkzByAuVDXo5lu4deMSc2OMYFC6fkccqJICIAHDz9ARdP+5UiBO +DGl32RsP79a9+RJcxL29qogVTMDk +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/config.yaml new file mode 100644 index 00000000..c3272f9c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..ee2fe195 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgHSEMvj5+XJWV2VVd +A9mC1GsJI06QIpdqVC3FdM5xeouhRANCAASViD2tXioXmoJZKET+BTxgrXKkxm/4 +vy5P7Zhfzu53//Bm6jKDdrL9wvwJhS0YF6J56TmFEnfALqQeso55w3wE +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/signcerts/peer0.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/signcerts/peer0.org3.example.com-cert.pem new file mode 100644 index 00000000..1a6add2a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/signcerts/peer0.org3.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAc+gAwIBAgIRANIyF8F8HiWD/95m0rN9oXcwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgxOTAw +WjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjAub3Jn +My5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJWIPa1eKhea +glkoRP4FPGCtcqTGb/i/Lk/tmF/O7nf/8GbqMoN2sv3C/AmFLRgXonnpOYUSd8Au +pB6yjnnDfASjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud +IwQkMCKAIIMhvxg9aMQ7QIGfNsWN0RXoeS+j3GYpF0ZeFnZ43f+OMAoGCCqGSM49 +BAMCA0gAMEUCIQDIEpD02O7Qv4pDCJywm4fN3aF9QDPCbdl+ncDbpWygkQIgOprH +M0Bdx59u06wf/gaoFigu00JA7FnnUQn4gwOvCR8= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.crt new file mode 100644 index 00000000..93da516c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.crt @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIIChzCCAi2gAwIBAgIRAK60VXx3EwWlAryWzyamLL4wCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMy5leGFtcGxlLmNv +bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABETRmDFxmg8h5CXgDh+LF7teHpgc +iPuouteDM9zOF9yjnDnch1SbViCCCiL4Tk98l6014TcjSRBv7agmESWUvOGjgbYw +gbMwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD +AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIEqUek1s50dcr/MulF7OEtVz7GsE +Z6JD+vmsjnhp9zi8MEcGA1UdEQRAMD6CFnBlZXIwLm9yZzMuZXhhbXBsZS5jb22C +BXBlZXIwghZwZWVyMC5vcmczLmV4YW1wbGUuY29tggVwZWVyMDAKBggqhkjOPQQD +AgNIADBFAiEAmwsb37LDLJ1g8N8chf9BY/lgHGNcRDmlEJCGaViyD3ACIG3dsne1 +Px8lxcxOj60UG71A5G4d/Uv06rpUyoeQb1Wj +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.key new file mode 100644 index 00000000..94cc4925 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer0.org3.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgE2/9snVkr4iGbNPe +P2267hukE8rKPUn/FHP6niSu6QKhRANCAARE0ZgxcZoPIeQl4A4fixe7Xh6YHIj7 +qLrXgzPczhfco5w53IdUm1Ygggoi+E5PfJetNeE3I0kQb+2oJhEllLzh +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..8b270d12 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUTCCAfegAwIBAgIQd1iuO+RaFt55RkVi2tnEQDAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +4bd+kZxverII8ZAaLovQlFcNJtg1QfIZ8oB5Ui+Ce5J0ant/QaP/2+il5BQ3L2Bj +wploSeFCoGlCBlsjdNj156NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCD +Ib8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjOPQQDAgNIADBF +AiEA1ns/3AzS2PkzByAuVDXo5lu4deMSc2OMYFC6fkccqJICIAHDz9ARdP+5UiBO +DGl32RsP79a9+RJcxL29qogVTMDk +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/config.yaml new file mode 100644 index 00000000..c3272f9c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..b1bb47a1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgbnVsfnsxC1l7jj8r +UCSLItEdUpDXJ1Jhkl2UV2S8Qy2hRANCAATBwUif3kQAtau4Agl86pV18vYhgSZT +NeaRDBFj/pldXhTJI1c/o2R7hbnDslWi2Itf/DOm9b6X/dgn94xuVmUR +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/signcerts/peer1.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/signcerts/peer1.org3.example.com-cert.pem new file mode 100644 index 00000000..56628a26 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/signcerts/peer1.org3.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKDCCAc6gAwIBAgIQFGjndVQSInF78CpLVEipujAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMS5vcmcz +LmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwcFIn95EALWr +uAIJfOqVdfL2IYEmUzXmkQwRY/6ZXV4UySNXP6Nke4W5w7JVotiLX/wzpvW+l/3Y +J/eMblZlEaNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j +BCQwIoAggyG/GD1oxDtAgZ82xY3RFeh5L6PcZikXRl4Wdnjd/44wCgYIKoZIzj0E +AwIDSAAwRQIhAPzx9w/KwK4IopNNCFimHeIJTibKve+05/3D+eXNJ6N9AiB5G97o +VjVV2SbZ2xZ4nFij0XAp8949vSXy+aq7/5hwCw== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/ca.crt new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.crt b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.crt new file mode 100644 index 00000000..2506b641 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.crt @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIIChjCCAi2gAwIBAgIRAMpKtSBSh+lAAmY7IcKrm9IwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMy5leGFtcGxlLmNv +bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE3u6PxRUppQ2U1AjKxlyxB5oNKO +FqeQ8+zawkQ7d3Ck6NtBkb8QTNlYFIIOKwpPmCkWPQAPob1ByUhWJH16xmyjgbYw +gbMwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD +AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIEqUek1s50dcr/MulF7OEtVz7GsE +Z6JD+vmsjnhp9zi8MEcGA1UdEQRAMD6CFnBlZXIxLm9yZzMuZXhhbXBsZS5jb22C +BXBlZXIxghZwZWVyMS5vcmczLmV4YW1wbGUuY29tggVwZWVyMTAKBggqhkjOPQQD +AgNHADBEAiAQAWWX0TKLo7XjdA4lbPPotmJf3UivmiI6tO+XVrdDuwIgBSzc+b0F +Q2yYwi7h0xmj1sRRJ9hEb60dbbnuN7ky9gE= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.key b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.key new file mode 100644 index 00000000..d98d5611 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/server.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgkjj6UFMsaBobi4Er +0SfduOFO40zxjiGzduYSmrXjIrihRANCAARN7uj8UVKaUNlNQIysZcsQeaDSjhan +kPPs2sJEO3dwpOjbQZG/EEzZWBSCDisKT5gpFj0AD6G9QclIViR9esZs +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/tlsca/priv_sk b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/tlsca/priv_sk new file mode 100644 index 00000000..c7842b08 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/tlsca/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgfwyUB3Ni6yIwk2UP +OCxcXCgI3QWtcekooxDowU3i7dihRANCAAQ4wpfw3nK3fLlMDqcFYOcKJujtKGiL +b/ghUrRfe8XOsdKMBJ+4n9ludut2VKH0PaO0oHHFqxJCvuv3G7nivb4z +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/tlsca/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/tlsca/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..7b4b2969 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/tlsca/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICVjCCAf2gAwIBAgIQa2Xf2Eq7zQsKR/+6IdAQmTAKBggqhkjOPQQDAjB2MQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1 +MDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMR8wHQYD +VQQDExZ0bHNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D +AQcDQgAEOMKX8N5yt3y5TA6nBWDnCibo7Shoi2/4IVK0X3vFzrHSjASfuJ/Zbnbr +dlSh9D2jtKBxxasSQr7r9xu54r2+M6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud +JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud +DgQiBCCt87/QSqHqav9ZLX4AKFkUKNTYXuNdUh2ph9CQWqh0mTAKBggqhkjOPQQD +AgNHADBEAiAN1q7E7lBjCDwuRK9j3Ay6hA7Oqpp7PSv5IASOrbBRDwIgJTsvt/BI +x3XxOmRdTlmF6XJrj1/pqOE2sT0pm22UM1s= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..8b270d12 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUTCCAfegAwIBAgIQd1iuO+RaFt55RkVi2tnEQDAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +4bd+kZxverII8ZAaLovQlFcNJtg1QfIZ8oB5Ui+Ce5J0ant/QaP/2+il5BQ3L2Bj +wploSeFCoGlCBlsjdNj156NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCD +Ib8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjOPQQDAgNIADBF +AiEA1ns/3AzS2PkzByAuVDXo5lu4deMSc2OMYFC6fkccqJICIAHDz9ARdP+5UiBO +DGl32RsP79a9+RJcxL29qogVTMDk +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/config.yaml new file mode 100644 index 00000000..c3272f9c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..d9559efa --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgskw3pmVZiDOeIope +VEMumAFHifDMjmYTlY97FGFjJ7WhRANCAARUcpOP68e8ShK2zLs5Yoytnm7mgmE5 +ZDwwusaELAi0NPaWbeQ5YVRwBIzqLVVAqZ1HGQBiY0cW+AWwdUu7EmmC +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/signcerts/Admin@org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/signcerts/Admin@org3.example.com-cert.pem new file mode 100644 index 00000000..7ce94f01 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/signcerts/Admin@org3.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAdCgAwIBAgIRAK23Ee++17ijWQTLdbjy2EMwCgYIKoZIzj0EAwIwczEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh +Lm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgxOTAw +WjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN +U2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y +ZzMuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARUcpOP68e8 +ShK2zLs5Yoytnm7mgmE5ZDwwusaELAi0NPaWbeQ5YVRwBIzqLVVAqZ1HGQBiY0cW ++AWwdUu7EmmCo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV +HSMEJDAigCCDIb8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjO +PQQDAgNHADBEAiBCP36k5Vd93zvob2hnYOu/N5ri3xIZhbZiG7yD+/oh1wIgKVLO +etL75xfSa27U7491DviHdOrnfRfV5HYx7nfxFuM= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/ca.crt new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.crt b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.crt new file mode 100644 index 00000000..f60afbc3 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.crt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICOzCCAeKgAwIBAgIRAMIQ41sm0tpoOOCoHh6ogbAwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMy5leGFtcGxlLmNv +bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNH44A9D4rxA4NeemZMVkFDjrFUc ++pc149EeF8L6h3leoj52Nlsd3CnoH8SogGcgIs5UulIAwpWhjmv4HIjEc+GjbDBq +MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw +DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCBKlHpNbOdHXK/zLpRezhLVc+xrBGei +Q/r5rI54afc4vDAKBggqhkjOPQQDAgNHADBEAiBlYFD3rAMxIzfIEdesa+OaWkRZ +VVwoCI5yL7K13cGhqQIgSiGku0M1bdwhcVKuGrbmTJtP6ZfSuEGUPV0w/036doQ= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.key b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.key new file mode 100644 index 00000000..46a6af67 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/Admin@org3.example.com/tls/client.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgAissDKWiFBUWZr/b +ReCdOrZRwRnJMPzqpNBYj9HUjVWhRANCAATR+OAPQ+K8QODXnpmTFZBQ46xVHPqX +NePRHhfC+od5XqI+djZbHdwp6B/EqIBnICLOVLpSAMKVoY5r+ByIxHPh +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem new file mode 100644 index 00000000..8b270d12 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/cacerts/ca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICUTCCAfegAwIBAgIQd1iuO+RaFt55RkVi2tnEQDAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD +ExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE +4bd+kZxverII8ZAaLovQlFcNJtg1QfIZ8oB5Ui+Ce5J0ant/QaP/2+il5BQ3L2Bj +wploSeFCoGlCBlsjdNj156NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG +CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCD +Ib8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjOPQQDAgNIADBF +AiEA1ns/3AzS2PkzByAuVDXo5lu4deMSc2OMYFC6fkccqJICIAHDz9ARdP+5UiBO +DGl32RsP79a9+RJcxL29qogVTMDk +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/config.yaml b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/config.yaml new file mode 100644 index 00000000..c3272f9c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/config.yaml @@ -0,0 +1,14 @@ +NodeOUs: + Enable: true + ClientOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: client + PeerOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: peer + AdminOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: admin + OrdererOUIdentifier: + Certificate: cacerts/ca.org3.example.com-cert.pem + OrganizationalUnitIdentifier: orderer diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/keystore/priv_sk b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/keystore/priv_sk new file mode 100644 index 00000000..4f5b981b --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/keystore/priv_sk @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgsJ+2KWoyB0D9v9eV +okIhvlE5OzdSx+qqC6BCaJxWSYqhRANCAAQsuyo42AFEYheWpqkhxuXojxgQYfbT +pW+geSjjyDyBXzZxSC33mGLa9p/WMi0CoMfhgJPvV+s2M/PAqvSt5KVD +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/signcerts/User1@org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/signcerts/User1@org3.example.com-cert.pem new file mode 100644 index 00000000..aabb8ba6 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/signcerts/User1@org3.example.com-cert.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICKTCCAdCgAwIBAgIQJkHet6xXFLLz9DwpvYAv3jAKBggqhkjOPQQDAjBzMQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu +b3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa +MGwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T +YW4gRnJhbmNpc2NvMQ8wDQYDVQQLEwZjbGllbnQxHzAdBgNVBAMMFlVzZXIxQG9y +ZzMuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQsuyo42AFE +YheWpqkhxuXojxgQYfbTpW+geSjjyDyBXzZxSC33mGLa9p/WMi0CoMfhgJPvV+s2 +M/PAqvSt5KVDo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV +HSMEJDAigCCDIb8YPWjEO0CBnzbFjdEV6Hkvo9xmKRdGXhZ2eN3/jjAKBggqhkjO +PQQDAgNHADBEAiBSw3U9MRWqD0+iRBWWdzUYSGALa9qxD4/dTIdVtZ1jpAIgWY/8 +L0c+bRGr/SztKP+pO5+fvHZkyeP0WLMZzhHJWrE= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/msp/tlscacerts/tlsca.org3.example.com-cert.pem @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/ca.crt b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/ca.crt new file mode 100644 index 00000000..81a9518c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/ca.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICWDCCAf6gAwIBAgIRAOnZeYlmrdEWZz3yWUl3MKEwCgYIKoZIzj0EAwIwdjEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG +cmFuY2lzY28xGTAXBgNVBAoTEG9yZzMuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs +c2NhLm9yZzMuZXhhbXBsZS5jb20wHhcNMjAwNzE3MTgxOTAwWhcNMzAwNzE1MTgx +OTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE +BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0G +A1UEAxMWdGxzY2Eub3JnMy5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 +AwEHA0IABNmJ9qVdA/fG4xNPfBtpizwj9lzEoxzt/pInMIBA5l5BOAOevweqln8v +vfySzdHaaQ4nVWt87WVS1Fxj+wYQSkGjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV +HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV +HQ4EIgQgSpR6TWznR1yv8y6UXs4S1XPsawRnokP6+ayOeGn3OLwwCgYIKoZIzj0E +AwIDSAAwRQIhAPlWUutD5Uu5Pm3quAT+4vpX/ieRsz00oaToQKACLit7AiBDzbNv +uLjW3AcCrXv1KhsWkK+DudP2XEbXo8IqPcRKig== +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.crt b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.crt new file mode 100644 index 00000000..f5038f24 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.crt @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICOzCCAeGgAwIBAgIQV7TVo7RoVvAYO8y7uz+AMTAKBggqhkjOPQQDAjB2MQsw +CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy +YW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz +Y2Eub3JnMy5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5 +MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH +Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmczLmV4YW1wbGUuY29t +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnT+X+X16EZ6ucc55dNRwq+K6MA9H +3AxW0ith+hp77GCdUtoOSAWdldSJ0qw46DizYQsqfwDahv35QPNh010ntqNsMGow +DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM +BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIEqUek1s50dcr/MulF7OEtVz7GsEZ6JD ++vmsjnhp9zi8MAoGCCqGSM49BAMCA0gAMEUCIQDAnLM1gOIbB2ZU2WDE7g9Lzm/A +UdRBOf6MnglZ7a66AwIgSkjtOUxmML8YYgUD/nJ4fEbSmMKP2+VYw8qtLjOahpg= +-----END CERTIFICATE----- diff --git a/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.key b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.key new file mode 100644 index 00000000..771693ba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/org3/crypto-config/peerOrganizations/org3.example.com/users/User1@org3.example.com/tls/client.key @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgn1XW+8po3FF/DvRw +2bnKrqyogbCNYrnWzXhfnOiRuTWhRANCAASdP5f5fXoRnq5xznl01HCr4rowD0fc +DFbSK2H6GnvsYJ1S2g5IBZ2V1InSrDjoOLNhCyp/ANqG/flA82HTXSe2 +-----END PRIVATE KEY----- diff --git a/hyperledger_fabric/v2.2.8/peer.yaml b/hyperledger_fabric/v2.2.8/peer.yaml new file mode 100644 index 00000000..5c6c3dbe --- /dev/null +++ b/hyperledger_fabric/v2.2.8/peer.yaml @@ -0,0 +1,37 @@ +# All elements in this file should depend on the base.yaml +# Provided fabric peer node + +version: '2.0' + +services: + peer-solo: # example peer node in solo mode + extends: + file: base.yaml + service: peer-base + container_name: peer0.org1.example.com # will generated automatically + hostname: peer0.org1.example.com # will generated automatically + environment: + - CORE_PEER_ID=peer0.org1.example.com + - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # grpc + - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052 # chaincode + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051 # gossip + - CORE_PEER_LOCALMSPID=Org1MSP + volumes: + - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp + - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls + + peer-kafka: # example peer node in kafka mode + extends: + file: base.yaml + service: peer-base + container_name: peer0.org1.example.com + hostname: peer0.org1.example.com + environment: + - CORE_PEER_ID=peer0.org1.example.com + - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 + - CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051 + - CORE_PEER_LOCALMSPID=Org1MSP + volumes: + - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp + - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls diff --git a/hyperledger_fabric/v2.2.8/prometheus.yml b/hyperledger_fabric/v2.2.8/prometheus.yml new file mode 100644 index 00000000..2efaca40 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/prometheus.yml @@ -0,0 +1,45 @@ +# my global config +global: + scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # scrape_timeout is set to the global default (10s). + +# Alertmanager configuration +alerting: + alertmanagers: + - static_configs: + - targets: + # - alertmanager:9093 + +# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. +rule_files: + # - "first_rules.yml" + # - "second_rules.yml" + +# A scrape configuration containing exactly one endpoint to scrape: +# Here it's Prometheus itself. +scrape_configs: + # The job name is added as a label `job=` to any timeseries scraped from this config. + #- job_name: 'prometheus' + + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + #static_configs: + #- targets: ['localhost:9090'] + + - job_name: 'orderer0' + static_configs: + - targets: ['orderer0.example.com:8443'] + - job_name: 'peer0_org1' + static_configs: + - targets: ['peer0.org1.example.com:9443'] + - job_name: 'peer1_org1' + static_configs: + - targets: ['peer1.org1.example.com:9443'] + - job_name: 'peer0_org2' + static_configs: + - targets: ['peer0.org2.example.com:9443'] + - job_name: 'peer1_org2' + static_configs: + - targets: ['peer1.org2.example.com:9443'] diff --git a/hyperledger_fabric/v2.2.8/raft/README.md b/hyperledger_fabric/v2.2.8/raft/README.md new file mode 100644 index 00000000..ff229433 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/README.md @@ -0,0 +1,8 @@ +## Start a network base on raft + +### Quick testing + +```bash +$ HLF_MODE=raft make +``` +When the fabric-network fully started, it takes about 30~60s to finish all the test. diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/Org1MSP.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/Org1MSP.json new file mode 100644 index 00000000..16de56cf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/Org1MSP.json @@ -0,0 +1,170 @@ +{ + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/Org1MSPanchors.tx b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/Org1MSPanchors.tx new file mode 100644 index 0000000000000000000000000000000000000000..b45aced85dc66bd4c5c955b50cf1dde8f4ec957a GIT binary patch literal 324 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

    AHV&s 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 Naas582D`l9{|(5e^{xN_ literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_1.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_1.block.json new file mode 100644 index 00000000..aa6cd23a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_1.block.json @@ -0,0 +1,1051 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "config": { + "channel_group": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org1.example.com", + "port": 7051 + } + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": "MAJORITY", + "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": { + "ACLs": { + "mod_policy": "Admins", + "value": { + "acls": { + "_lifecycle/CommitChaincodeDefinition": { + "policy_ref": "/Channel/Application/Writers" + }, + "_lifecycle/QueryChaincodeDefinition": { + "policy_ref": "/Channel/Application/Readers" + }, + "_lifecycle/QueryNamespaceDefinitions": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigTree": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/SimulateConfigTreeUpdate": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/Block": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/FilteredBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/ChaincodeExists": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetChaincodeData": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetDeploymentSpec": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetInstantiatedChaincodes": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/ChaincodeToChaincode": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/Propose": { + "policy_ref": "/Channel/Application/Writers" + }, + "qscc/GetBlockByHash": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByNumber": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByTxID": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetChainInfo": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetTransactionByID": { + "policy_ref": "/Channel/Application/Readers" + } + } + }, + "version": "0" + }, + "Capabilities": { + "mod_policy": "Admins", + "value": { + "capabilities": { + "V2_0": {} + } + }, + "version": "0" + } + }, + "version": "1" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "Consortium": { + "mod_policy": "Admins", + "value": { + "name": "SampleConsortium" + }, + "version": "0" + }, + "HashingAlgorithm": { + "mod_policy": "Admins", + "value": { + "name": "SHA256" + }, + "version": "0" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "2" + }, + "last_update": { + "payload": { + "data": { + "config_update": { + "channel_id": "businesschannel", + "isolated_data": {}, + "read_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "MSP": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + }, + "write_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org1.example.com", + "port": 7051 + } + ] + }, + "version": "0" + }, + "MSP": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + } + }, + "signatures": [ + { + "signature": "MEUCIQCkflKyOhjtkS20Is9GfhFQ5J4NG5VzezrlcE3JYYOBjAIgWCL4cEsQekxmrzBv5iYtTglvWo5qsiiK4qetInlT+hE=", + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "x3oe4ZgETrwyHTx3gXNsqXgSXVft9m+b" + } + } + ] + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:41:41Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 2, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "VVdoDYy0Jlmxqz4bafN+fey/s0k4Rt9+" + } + } + }, + "signature": "MEQCIBW+84+AHCo52abxW3ndw21XgbsA5Tb3CsDSQ2vxdfF2AiATwIupyULVVKwxl7DbRxD1/tgrKcDmH5gkNuCJ4p/mrw==" + } + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:41:41Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 1, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNIakNDQWNXZ0F3SUJBZ0lRTkRiNkIwWXplSlY1bU1Hd29LOGo5VEFLQmdncWhrak9QUVFEQWpCcE1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4RnpBVkJnTlZCQU1URG1OaExtVjRZVzF3CmJHVXVZMjl0TUI0WERUSXlNRGd4TWpFNE16VXdNRm9YRFRNeU1EZ3dPVEU0TXpVd01Gb3dhekVMTUFrR0ExVUUKQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJsegpZMjh4RURBT0JnTlZCQXNUQjI5eVpHVnlaWEl4SFRBYkJnTlZCQU1URkc5eVpHVnlaWEl3TG1WNFlXMXdiR1V1ClkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVWcUlFaEp4Q256bzlPSE4vMW9rQUdpTGgKbGZScFNMQzlncStFRGxGbDhmV05jMis0NUl0RGdxK1cwRzdnU1RlQTZ0TEppcUpYN2dqWURJWWhWUkRRUUtOTgpNRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqQkNRd0lvQWd0TUIzCnFWYU9tTWVheVBaSzk3ekFEWkVkbGFxV1BOMjZjM0xhanUyU0tYY3dDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWcKQjVzWS9MM2dVSlp2aUY2TmtIeEF2SFFhT3l4QXBuRXJJdWJndEhBYm55b0NJSDNwcTZUVTBweXppd1JUb1k0LwoyeVFPVkFwWndsREJyK1BmY1NaN1gvNjUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "mspid": "OrdererMSP" + }, + "nonce": "VWJqfBoYiDZCg6/RHHL+FjjBrW4mt0qO" + } + } + }, + "signature": "MEQCIG3Fchkfreee92Vp9xZqxFZHgHs/qGvGQt+XkYn6ye9YAiAJP6uE0yVmOIZixOl+YDtkyQBDucwOiznMaiEU0HtzyQ==" + } + ] + }, + "header": { + "data_hash": "hjLRpDW6fYeWRQt/fKips8q63K935D0bHNAFGMuVRE0=", + "number": "1", + "previous_hash": "HkBPNxrPCF3dpLpSUrn7OzzNIvqBkbuuwB6lRdtzV1Y=" + }, + "metadata": { + "metadata": [ + "ChEKAggBEgsKCQoDAQIDEAQYBRKRBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhig3URWkqUlofgM7ID0s7CyUM7cuslDAKcSRjBEAiBklEgY/e5EJ3Mhoh4EaVrVsXHXS0RASuurCAdORpovCQIgTfqZ4ORL6SYT7bXp9IBqWaqg7xWy4yFsgX4q2UkBs3M=", + "CgIIAQ==", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_1.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_1.block.json-flat.json new file mode 100644 index 00000000..c07ddc0c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_1.block.json-flat.json @@ -0,0 +1,391 @@ +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.value.anchor_peers[0].host=peer0.org1.example.com +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.value.anchor_peers[0].port=7051 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.name=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs\n9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E\nAwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf\nJe855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.version=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.name=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr\nce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E\nAwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP\n1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/CommitChaincodeDefinition.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/QueryChaincodeDefinition.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/QueryNamespaceDefinitions.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/GetConfigBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/GetConfigTree.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/SimulateConfigTreeUpdate.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.event/Block.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.event/FilteredBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/ChaincodeExists.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetChaincodeData.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetDeploymentSpec.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetInstantiatedChaincodes.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.peer/ChaincodeToChaincode.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.peer/Propose.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByHash.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByNumber.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByTxID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetChainInfo.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetTransactionByID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.version=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.name=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt\ncGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/\nQdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ\ndp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw\n+pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG\nQNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV\nmrwsb1hY\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.absolute_max_bytes=10485760 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.max_message_count=500 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.preferred_max_bytes=2097152 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.value.timeout=2s +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.value=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].host=orderer0.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].host=orderer1.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].host=orderer2.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.election_tick=10 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.heartbeat_tick=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.max_inflight_blocks=5 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.snapshot_interval_size=20971520 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.tick_interval=500ms +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.state=STATE_NORMAL +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.type=etcdraft +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.version=0 +.data.data[0].payload.data.config.channel_group.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.value.width=4294967295 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.version=0 +.data.data[0].payload.data.config.channel_group.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.values.Consortium.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Consortium.value.name=SampleConsortium +.data.data[0].payload.data.config.channel_group.values.Consortium.version=0 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.value.name=SHA256 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.version=0 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.version=0 +.data.data[0].payload.data.config.channel_group.version=0 +.data.data[0].payload.data.config.sequence=2 +.data.data[0].payload.data.last_update.payload.data.config_update.channel_id=businesschannel +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Admins.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Admins.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Endorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Endorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Readers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Readers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Writers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Writers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.values.MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.values.MSP.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Admins.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Admins.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Endorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Endorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Readers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Readers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Writers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Writers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.values.AnchorPeers.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.values.AnchorPeers.value.anchor_peers[0].host=peer0.org1.example.com +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.values.AnchorPeers.value.anchor_peers[0].port=7051 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.values.AnchorPeers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.values.MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.values.MSP.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.version=0 +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature=MEUCIQCkflKyOhjtkS20Is9GfhFQ5J4NG5VzezrlcE3JYYOBjAIgWCL4cEsQekxmrzBv5iYtTglvWo5qsiiK4qetInlT+hE= +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.mspid=Org1MSP +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.nonce=x3oe4ZgETrwyHTx3gXNsqXgSXVft9m+b +.data.data[0].payload.data.last_update.payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.data.last_update.payload.header.channel_header.epoch=0 +.data.data[0].payload.data.last_update.payload.header.channel_header.extension=None +.data.data[0].payload.data.last_update.payload.header.channel_header.timestamp=2022-08-12T18:41:41Z +.data.data[0].payload.data.last_update.payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.data.last_update.payload.header.channel_header.tx_id= +.data.data[0].payload.data.last_update.payload.header.channel_header.type=2 +.data.data[0].payload.data.last_update.payload.header.channel_header.version=0 +.data.data[0].payload.data.last_update.payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.header.signature_header.creator.mspid=Org1MSP +.data.data[0].payload.data.last_update.payload.header.signature_header.nonce=VVdoDYy0Jlmxqz4bafN+fey/s0k4Rt9+ +.data.data[0].payload.data.last_update.signature=MEQCIBW+84+AHCo52abxW3ndw21XgbsA5Tb3CsDSQ2vxdfF2AiATwIupyULVVKwxl7DbRxD1/tgrKcDmH5gkNuCJ4p/mrw== +.data.data[0].payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension=None +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:41:41Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id= +.data.data[0].payload.header.channel_header.type=1 +.data.data[0].payload.header.channel_header.version=0 +.data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICHjCCAcWgAwIBAgIQNDb6B0YzeJV5mMGwoK8j9TAKBggqhkjOPQQDAjBpMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w\nbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowazELMAkGA1UE\nBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz\nY28xEDAOBgNVBAsTB29yZGVyZXIxHTAbBgNVBAMTFG9yZGVyZXIwLmV4YW1wbGUu\nY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEVqIEhJxCnzo9OHN/1okAGiLh\nlfRpSLC9gq+EDlFl8fWNc2+45ItDgq+W0G7gSTeA6tLJiqJX7gjYDIYhVRDQQKNN\nMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgtMB3\nqVaOmMeayPZK97zADZEdlaqWPN26c3Laju2SKXcwCgYIKoZIzj0EAwIDRwAwRAIg\nB5sY/L3gUJZviF6NkHxAvHQaOyxApnErIubgtHAbnyoCIH3pq6TU0pyziwRToY4/\n2yQOVApZwlDBr+PfcSZ7X/65\n-----END CERTIFICATE-----\n') +.data.data[0].payload.header.signature_header.creator.mspid=OrdererMSP +.data.data[0].payload.header.signature_header.nonce=VWJqfBoYiDZCg6/RHHL+FjjBrW4mt0qO +.data.data[0].signature=MEQCIG3Fchkfreee92Vp9xZqxFZHgHs/qGvGQt+XkYn6ye9YAiAJP6uE0yVmOIZixOl+YDtkyQBDucwOiznMaiEU0HtzyQ== +.header.data_hash=hjLRpDW6fYeWRQt/fKips8q63K935D0bHNAFGMuVRE0= +.header.number=1 +.header.previous_hash=HkBPNxrPCF3dpLpSUrn7OzzNIvqBkbuuwB6lRdtzV1Y= +.metadata.metadata[0]=ChEKAggBEgsKCQoDAQIDEAQYBRKRBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhig3URWkqUlofgM7ID0s7CyUM7cuslDAKcSRjBEAiBklEgY/e5EJ3Mhoh4EaVrVsXHXS0RASuurCAdORpovCQIgTfqZ4ORL6SYT7bXp9IBqWaqg7xWy4yFsgX4q2UkBs3M= +.metadata.metadata[1]=CgIIAQ== +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_2.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_2.block new file mode 100644 index 0000000000000000000000000000000000000000..02dc625d979ce1b2d920994b482f135f8e8bc512 GIT binary patch literal 28434 zcmeHQ3$Wu>dCuM4?B1NbHcB9yOA@x55R!F>-@bNIhUjU_wrtCmCEH;jk}S)TWy_Xi z%XTSb+J<*vcnoP6CWRKtGliD2P#|ewAhbLJG&C@fq#a5~I)Mh7v_q%O&?EcW_ujp` zd+%;GX=%MXdw2Kf9G#=1^POM%{_p<Ab5hyyK>qm|ws4`tBzl zee}wQk6iimo;O}ffBnd>Rt`S=7hn5)Cpa{NscNs;((?tDB~TsfGOXeFOx1gb(*7b`hk8k1!Pqo<9VOtw~OHl+$? z*Gf@c3I&GL809fF$73kN5$#+v+vX!xA?N}rS?*Uu35UTV6@sHj451Dgos2N!vdd5= zEMvSfH_y$>Tyach8MHO&3}8(L=XqvGj?v<@2bIHHxu%pf+EO^(7X@-i>1cU+Oy&q4 z9@DU-+@@g1#u!vX@gYf|`Dq24!$OHsEy<5+6?&NBP-!-7DmgEAXT$eK4^IGxPqkdq zt)?<&jUMX(9A&HY+P?{ul?hfwNxnyu&GZoOjLk$omGcM97Mj$uO<**N-BK1$s68J^ z7?crj2st_Ai$rOMfMr4;xvG{p1&uk`wAM>kR#m-9(A6eiBv>|+%K?V8T|$MovKT0! zY|4+J@E)rQ%Al?{Np;dCF~7^=42rrLcT!KsaMq6Ep>KG+z zWZe*ZLLnE5$>FT1_d}&jMRsv@epw`3a758X-6Be>0E^mHe>SX^)3t#{#d59G5FMmg zF+Uoj-41EdeMxmvsMHymIGqZ2doivY=#IvkTjb1Y#1BFvHqWEonrjf4`rIR^g>*_}i{PfA-ZRj6<;{}gg@CP?P@+R)lBbTM`_{a?py2y9#Ujkpbdue$$ za?jmM$d?7MZw*t(5drz?;W@`ogsq)$; zM`P<79)n?S4o6Xz&-c5*Y-S*)GCm@>N-=3NQWwX51~@JijyO&n4|5S;T#J?&D;BQn z8FrN&CaT$BKNu!*R9h&w;ua@iJtGm$6!BO(){rz4b`HexbO%YXaSUz5Nx0GBs91GV z-h31T28K>b#su=E6O9RP44Te}vMDLsTQt7MbB0salIx`h-$ZORHQ+ zjNn*+vixaZI+l!7Lghwq*Z~bC@bVMj6*~{?DW%X5ve)|=jitY_Ewb1Nvf49bu~KAQ z^JT1NDmF|}&AJ|EtT9e(F>dzrYuu7LTAf)5vQo6+a-JACXdQ#@9DXNZ;3Q&d;DBd~ zPjzGP_62C0jPdpxg9**V1bGCsl>sT0JJ#la)fkLPVx#GbLRE6Ux=@!)p#d7j=!R5Y zjTM@K-e?>t%i~)dRB?j<9MXWw>1~|x=9<$ zTcbn;F8F-AG;oI*-Jgto4Z;Mh?Pvx=WE|WH0=C*YX)F`;qfDl9T(PGhsTu zLt(J5sEE*UU?W!}m&58S8=9SmoU^gn#zumrIVaWV@N7n|1n1ylSClkEb2P<9Es{_axvo2QdISkIl&5o^f?7q#7x(f1%!^j5?gJs2$>z3GXkar&j&zuV`I@WaV zfAi|fliRXH6$0|FYJSEN714~=4ftrB%p|lHp%yd6Kwf9)quGC9`jVZ4xTn|`U*!ctjIPgJt~X4C2_on$-(bgDWwLuNIhVr(eI^kj=} zMaM}?qJ&~3S@w0hwV~wZBF%P2S8J-P*2d7^Cp0SwP#uMoEhJ>2zl3(#7K3L{I$3UDxsXVY!u=BC&(nO(vt?4 zfcK9Ydbef8nObZd01Q6yNYzP})fgPdkLNG)+(oL|T%X)E{u0c+b80Sy5*UeU(4!TM z)FNoD+O72?;VnU*zm(NcL@nW=Q6a)v2 z`r}!w8e#pxSfT7>+U1TwQF-)4Jnf+c;*RI_SRiihV_YEa^dWAe{oC}+urvE7j6M68 znb|+K7$XV)IJz3cYiO~>1&BtAB=!GuUJ?PiPd)GH>GP5t$K5~N=p48C}KXaDyK_rxtQT1AzU|jN%cdAyj$@1i6BUrcEr@8WUfhBeIca@{vxsJ zsD8?)M@l^m?9{x|uWpJ_l{p z1{}*9ay(}USaVbsp`+5JX}S!>7p+<)ZOHm&XRQ}p$)CmNM zkjagFK`zw{OH7tDId{;F_jyyn+`%wA*3_cz56gThTN$PQ9r ztY?i=)fVrs@`{y9QT5KCq=@dzpQZglouD1ftMP2I3hkU$1XMGIjt#?Rk~|*BaB8`i8pn(pN2D5qs3Qi)SSKi& zqK5Z=1MMHZNvw2~{Tm&_{;dghSh#w%UV|NGN~;kav(qufrK&w5$`w;_nH+Rlr4g$T z2~y=17e0-aGDKWxjeXr%Ih@a8^p>ED&h!8wy!oYq#%zJr{H>;bz%_WUd_1{dN}m3dLI9ZQoP4U)3R@~pz4 zLvz;o0CFA_&Vt$h_wSn5ISkIn3{!6LqM_AA?+lXx?MBW5`__2mdEGE<+UzyDh^EtyX_-07&BuFPE}Ul*I>D)1Xk;16(N8apoaE5T zl+-mj(tA}JAN>jy7^VnRoYrAD5(*AM7AkFzQPE8`Q+1M*X zqq8y~=-Aj3PM&H|0GLGuYzPW~nnBrn&m{3C!@@Vh4zs2@UZ;{tnZe9S9RRhxoTu$Q zcE!z{^RXyrfZ-h}KK2WYQy~3pxL#{FVq!@XGLlvpOO3TagVjKgD@W;Y1+v<{M7|l;0(?>o9K8~W5`2dTMV4-&>73()^>)#(H}OCs zl+@e=FGuoaxs!(~ahg?Ga%BSd<-FlcymlOdihdk zjo3QsGO8)n+pS2e%Q$k5S965PBw9ybt6SIq zM^HDO3QoN^7OGRUJ?T2s`kp%Szyyvu7CKerfsOGvCyBg<=PjAgXApTpJvoG0;gd%n znCpLGoQGLktrdoC-X`;yIi(t$ z(Y9U__(pii1{LtR$k}r~bc1p@0?vlYX4A5jHjH*dUV?aUk{54icecmxuF6QAMNirEj0Bj7W{49Fvf7|S9l~ccTJgTxjtp~w3e)TxmJI3P zL7%9k+pb&!&?AFo`4?SQu+AkTc?Mq zc%wolm7H1a3>3xg4V(h!?i* zr1GQf%oVx?La9hA_0k@Na+q0sG z7kFFXZGpFw!rRdl@u3|tupYU&k+a>Nf!)+%Cv>vc;8f`3jUCOX-j!d#3=$}wwUNh` zk%yMS4d4=w^Y%mSveuE!y26?BeTLf8X|R7yW(=a>LS+CcZ9kb zpNN-t(yV98vOlRflLpu*CECrMG?Ukw!F(4`N4&G%ZUmPbYt876?T8&m6CI^Kze;=C zj#t48jv8;S4`r*?wha^D;#ot^5<9jy5rtzTn%K4}1+ILxp*0kFBpZsK?JL$OC$<&4 zE6On9q@i_SN)S(9zTGW)1-NW7X(g@QH{f+oXO6QJrQC%Ib7k8Tguw-~YnV(K-D#NH zHi8Rd)@bbxbHg26bOa!q@31${Z99XvXLf_x{ADQ z%NV$5(sJG(In->Jwr0D#vH7mzX1lF9^K-1<*5jUMZF2$FfpaFPEm&sPw2wbUv-%{s z;^@_MGTqMb{xWd(6z@Ai-fUM~*-;*w9mPjnyV;X=8FC?vdpLhn;f836D7Yv)gV06? z+&0Zlb6~~FElXhkT6T1_Ubo=q2w*NBi(sB)X&$h03PCM9SxhsFh}?Ps_^bWkDeuz}FcRl@pN@dZ z-;V5^cxgSeihOKa$4bU?tjNBZ?w)0-R5e^7T&q{$bN)zXEQ~Z^Yto2Ggve?AZp79Q zkrVKuvj`C|2@%;+ap%dC0F$)m8SGCbfjvy_y`I5-l01oxxWqJ#c9wMcW-S@)O8V4^ z;zhuqt}C!Y(Gi6x>Wv;STZVspC(2x6pJWC`U#~PnNg8CtDC6fFLHLP{JR@akEuS1z zP`^&e!GTIkXaS1}DTZmurk7`9X@K7#$NtsYU^(i1kM-ZB$Azo#QZ=O=C-n z?UYJvPL#AUPZF3XN-E&CQXk4rQsCgT)*w~u#p|-#ind3F++kKLZNAlaECwHUv01#U zm+oPbwgL^z@;!70Oo?r>jZzARdC?gxtLv2lrD@Sjq~X)Msv3>QV|*`86ENRHzAS`% zK*mDNf-}elbxCq1POAG=w-QM>W9T)Zdf8mtkJIRhgI16Ow?A>^_ul-vPbU8O^Sj^v zy2^duf9Kz(FMQ>n(YGP@o(0~w3vBsL%gxBEHV32Sp<*Jlj=mdL_D#dk&Nu`W7i${? zGWpN!`TLAR^8h<|V6%;Y+0*`X3Hg(y&3(LU33l?frS)EZ4;GxV5@O>3cQ&R?mond- z?%W3!ThGaTJ7cl+EViDt4>%zQQg8d`XYTvxS9?ENzGJ9{!uP)a{vTNnm%m#;r~t9+ zpnB)yw|;*7v8V3+^*_8reE65QoFiO!*HsTy(igq{ckUg2=Ipz69o%=rkFI^>`X?UQ z^P2B0ee0VSw?6lZ@VDP^_^m&?@k^In^Wa_PZX_8Xcm38GzY_2N!GWtjara|Cy=2eI z^>2UWRWG^yW;=Ur0DhKAxNP+C&+R&BU1z^md)>E>+_4ns{@0hDV$b|=;9K{-@$kDp zcfkLu0~bl}nhwa_^Pg|H=fD@9+5c|leL(&BPu_6rU*D^}^#{MZ|LNU@bm?wet^Pz4F|z20nC!@AlpFH!r*YJ>T8^p^v@) zx?8#WTc%*`#|{tv{3n;(a98{LuegnS^5Bb~%I07C&L4jI-*5Wuhq&ZT@7Z;*f6fOk wed~?cPks2#Pu}#IoB#2PfAh5U!N;y>08#$^k6V|&_Ll%A5m?>@&hUQ!Hwokgu>b%7 literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_2.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_2.block.json new file mode 100644 index 00000000..89e18993 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_2.block.json @@ -0,0 +1,1063 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "config": { + "channel_group": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org1.example.com", + "port": 7051 + } + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org2.example.com", + "port": 7051 + } + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "1" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": "MAJORITY", + "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": { + "ACLs": { + "mod_policy": "Admins", + "value": { + "acls": { + "_lifecycle/CommitChaincodeDefinition": { + "policy_ref": "/Channel/Application/Writers" + }, + "_lifecycle/QueryChaincodeDefinition": { + "policy_ref": "/Channel/Application/Readers" + }, + "_lifecycle/QueryNamespaceDefinitions": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigTree": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/SimulateConfigTreeUpdate": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/Block": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/FilteredBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/ChaincodeExists": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetChaincodeData": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetDeploymentSpec": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetInstantiatedChaincodes": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/ChaincodeToChaincode": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/Propose": { + "policy_ref": "/Channel/Application/Writers" + }, + "qscc/GetBlockByHash": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByNumber": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByTxID": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetChainInfo": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetTransactionByID": { + "policy_ref": "/Channel/Application/Readers" + } + } + }, + "version": "0" + }, + "Capabilities": { + "mod_policy": "Admins", + "value": { + "capabilities": { + "V2_0": {} + } + }, + "version": "0" + } + }, + "version": "1" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "Consortium": { + "mod_policy": "Admins", + "value": { + "name": "SampleConsortium" + }, + "version": "0" + }, + "HashingAlgorithm": { + "mod_policy": "Admins", + "value": { + "name": "SHA256" + }, + "version": "0" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "3" + }, + "last_update": { + "payload": { + "data": { + "config_update": { + "channel_id": "businesschannel", + "isolated_data": {}, + "read_set": { + "groups": { + "Application": { + "groups": { + "Org2MSP": { + "groups": {}, + "mod_policy": "", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "MSP": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + }, + "write_set": { + "groups": { + "Application": { + "groups": { + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org2.example.com", + "port": 7051 + } + ] + }, + "version": "0" + }, + "MSP": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + } + }, + "signatures": [ + { + "signature": "MEQCIGee6IW6eqrzwP/fkWHd8YAMVy6tJtxYShSGe8B4tQutAiAHO9ss3jrr3gR80AHNzBdruD8zz4cqjOxAwRkp1q1vAw==", + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRUUZIWTNYRHdycVBWTi80S3pXeWlXakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCR012bHVqWGgyR0kKS2E1TS9WZjE1amJPTWJMSWlPR3ZYQS9qRmMxdmdJYkFLQTVqUWJITHdsVFc4QndUZnk0T3ZIVEZNakJXYWJaRgp0UkJ1eVFJbFhTNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSVBDc2VkeGN0R1dUaWx0dkhacThkY2drNW15bGNuTTdYbVZrdXRyTUN6cEJNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUhudk1TUWhRZlNIbGljSUtCTGpqWFBGaWk1SzRmK2pwZ2c1ODg2VnE4SURBaUFPVVcyKwpjQjJoUHR2TDFqYmJ3YlRiZC9nd1g0OXR6VXFNRnFMTm0vQ0lBUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org2MSP" + }, + "nonce": "SI7p/capxXHbCJl4ZzIzwKDO23LdVdFQ" + } + } + ] + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:41:44Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 2, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRUUZIWTNYRHdycVBWTi80S3pXeWlXakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCR012bHVqWGgyR0kKS2E1TS9WZjE1amJPTWJMSWlPR3ZYQS9qRmMxdmdJYkFLQTVqUWJITHdsVFc4QndUZnk0T3ZIVEZNakJXYWJaRgp0UkJ1eVFJbFhTNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSVBDc2VkeGN0R1dUaWx0dkhacThkY2drNW15bGNuTTdYbVZrdXRyTUN6cEJNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUhudk1TUWhRZlNIbGljSUtCTGpqWFBGaWk1SzRmK2pwZ2c1ODg2VnE4SURBaUFPVVcyKwpjQjJoUHR2TDFqYmJ3YlRiZC9nd1g0OXR6VXFNRnFMTm0vQ0lBUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org2MSP" + }, + "nonce": "l+sk1Ip/rzmiugOPf1jG15LJShNcrkmN" + } + } + }, + "signature": "MEUCIQD4Yc7YGCasvefmGQQaOo9cJiWXYHNMLDAKvdVXHXmruAIgci5zfml/z7aZATBw/MHzUQWnMM3GiCqUuBgvXhgUYpM=" + } + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:41:44Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 1, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNIakNDQWNXZ0F3SUJBZ0lRTkRiNkIwWXplSlY1bU1Hd29LOGo5VEFLQmdncWhrak9QUVFEQWpCcE1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4RnpBVkJnTlZCQU1URG1OaExtVjRZVzF3CmJHVXVZMjl0TUI0WERUSXlNRGd4TWpFNE16VXdNRm9YRFRNeU1EZ3dPVEU0TXpVd01Gb3dhekVMTUFrR0ExVUUKQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJsegpZMjh4RURBT0JnTlZCQXNUQjI5eVpHVnlaWEl4SFRBYkJnTlZCQU1URkc5eVpHVnlaWEl3TG1WNFlXMXdiR1V1ClkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVWcUlFaEp4Q256bzlPSE4vMW9rQUdpTGgKbGZScFNMQzlncStFRGxGbDhmV05jMis0NUl0RGdxK1cwRzdnU1RlQTZ0TEppcUpYN2dqWURJWWhWUkRRUUtOTgpNRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqQkNRd0lvQWd0TUIzCnFWYU9tTWVheVBaSzk3ekFEWkVkbGFxV1BOMjZjM0xhanUyU0tYY3dDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWcKQjVzWS9MM2dVSlp2aUY2TmtIeEF2SFFhT3l4QXBuRXJJdWJndEhBYm55b0NJSDNwcTZUVTBweXppd1JUb1k0LwoyeVFPVkFwWndsREJyK1BmY1NaN1gvNjUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "mspid": "OrdererMSP" + }, + "nonce": "5u8xjUGYyxXeEYRg3olU5bYdSpmoO9Z3" + } + } + }, + "signature": "MEQCIHcE+4e+GLv9EJRNnApn7eSHhb/AaYzYfRD0Ouu8n0vwAiBFzDL08hOGxmSa5eLrVxSwcnzTLLc5rTKZnrukI2IdRw==" + } + ] + }, + "header": { + "data_hash": "3bLHujTOpCPo+GX99TaPX/lS4tPiBAVLVtM4qFoNdL4=", + "number": "2", + "previous_hash": "KMBgoBtbDiYTmVslb8osOnCs5eUk3bYk9ASIHEnKtvg=" + }, + "metadata": { + "metadata": [ + "ChEKAggCEgsKCQoDAQIDEAQYBhKRBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhhcDcUwpSMrlwNJzB3OltEDpaqgLoVUZIsSRjBEAiB1Nip2seQZO61t1z+NVO8gH/NMTyeS2rP2WzzcVEdblgIgdQyhHIxATLCnnq9btWDgvMj0cqTnI2YKYWODq3IefvE=", + "CgIIAg==", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_2.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_2.block.json-flat.json new file mode 100644 index 00000000..ffdf416f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_2.block.json-flat.json @@ -0,0 +1,395 @@ +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.value.anchor_peers[0].host=peer0.org1.example.com +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.value.anchor_peers[0].port=7051 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.name=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs\n9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E\nAwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf\nJe855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.version=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.value.anchor_peers[0].host=peer0.org2.example.com +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.value.anchor_peers[0].port=7051 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.name=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr\nce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E\nAwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP\n1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.version=1 +.data.data[0].payload.data.config.channel_group.groups.Application.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/CommitChaincodeDefinition.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/QueryChaincodeDefinition.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/QueryNamespaceDefinitions.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/GetConfigBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/GetConfigTree.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/SimulateConfigTreeUpdate.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.event/Block.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.event/FilteredBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/ChaincodeExists.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetChaincodeData.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetDeploymentSpec.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetInstantiatedChaincodes.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.peer/ChaincodeToChaincode.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.peer/Propose.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByHash.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByNumber.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByTxID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetChainInfo.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetTransactionByID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.version=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.name=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt\ncGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/\nQdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ\ndp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw\n+pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG\nQNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV\nmrwsb1hY\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.absolute_max_bytes=10485760 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.max_message_count=500 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.preferred_max_bytes=2097152 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.value.timeout=2s +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.value=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].host=orderer0.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].host=orderer1.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].host=orderer2.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.election_tick=10 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.heartbeat_tick=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.max_inflight_blocks=5 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.snapshot_interval_size=20971520 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.tick_interval=500ms +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.state=STATE_NORMAL +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.type=etcdraft +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.version=0 +.data.data[0].payload.data.config.channel_group.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.value.width=4294967295 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.version=0 +.data.data[0].payload.data.config.channel_group.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.values.Consortium.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Consortium.value.name=SampleConsortium +.data.data[0].payload.data.config.channel_group.values.Consortium.version=0 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.value.name=SHA256 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.version=0 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.version=0 +.data.data[0].payload.data.config.channel_group.version=0 +.data.data[0].payload.data.config.sequence=3 +.data.data[0].payload.data.last_update.payload.data.config_update.channel_id=businesschannel +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Admins.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Admins.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Endorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Endorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Readers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Readers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Writers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Writers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.values.MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.values.MSP.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Admins.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Admins.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Endorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Endorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Readers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Readers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Writers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Writers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.values.AnchorPeers.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.values.AnchorPeers.value.anchor_peers[0].host=peer0.org2.example.com +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.values.AnchorPeers.value.anchor_peers[0].port=7051 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.values.AnchorPeers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.values.MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.values.MSP.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.version=0 +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature=MEQCIGee6IW6eqrzwP/fkWHd8YAMVy6tJtxYShSGe8B4tQutAiAHO9ss3jrr3gR80AHNzBdruD8zz4cqjOxAwRkp1q1vAw== +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQQFHY3XDwrqPVN/4KzWyiWjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMi5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGMvlujXh2GI\nKa5M/Vf15jbOMbLIiOGvXA/jFc1vgIbAKA5jQbHLwlTW8BwTfy4OvHTFMjBWabZF\ntRBuyQIlXS6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIPCsedxctGWTiltvHZq8dcgk5mylcnM7XmVkutrMCzpBMAoGCCqGSM49\nBAMCA0cAMEQCIHnvMSQhQfSHlicIKBLjjXPFii5K4f+jpgg5886Vq8IDAiAOUW2+\ncB2hPtvL1jbbwbTbd/gwX49tzUqMFqLNm/CIAQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.mspid=Org2MSP +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.nonce=SI7p/capxXHbCJl4ZzIzwKDO23LdVdFQ +.data.data[0].payload.data.last_update.payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.data.last_update.payload.header.channel_header.epoch=0 +.data.data[0].payload.data.last_update.payload.header.channel_header.extension=None +.data.data[0].payload.data.last_update.payload.header.channel_header.timestamp=2022-08-12T18:41:44Z +.data.data[0].payload.data.last_update.payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.data.last_update.payload.header.channel_header.tx_id= +.data.data[0].payload.data.last_update.payload.header.channel_header.type=2 +.data.data[0].payload.data.last_update.payload.header.channel_header.version=0 +.data.data[0].payload.data.last_update.payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQQFHY3XDwrqPVN/4KzWyiWjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMi5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGMvlujXh2GI\nKa5M/Vf15jbOMbLIiOGvXA/jFc1vgIbAKA5jQbHLwlTW8BwTfy4OvHTFMjBWabZF\ntRBuyQIlXS6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIPCsedxctGWTiltvHZq8dcgk5mylcnM7XmVkutrMCzpBMAoGCCqGSM49\nBAMCA0cAMEQCIHnvMSQhQfSHlicIKBLjjXPFii5K4f+jpgg5886Vq8IDAiAOUW2+\ncB2hPtvL1jbbwbTbd/gwX49tzUqMFqLNm/CIAQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.header.signature_header.creator.mspid=Org2MSP +.data.data[0].payload.data.last_update.payload.header.signature_header.nonce=l+sk1Ip/rzmiugOPf1jG15LJShNcrkmN +.data.data[0].payload.data.last_update.signature=MEUCIQD4Yc7YGCasvefmGQQaOo9cJiWXYHNMLDAKvdVXHXmruAIgci5zfml/z7aZATBw/MHzUQWnMM3GiCqUuBgvXhgUYpM= +.data.data[0].payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension=None +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:41:44Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id= +.data.data[0].payload.header.channel_header.type=1 +.data.data[0].payload.header.channel_header.version=0 +.data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICHjCCAcWgAwIBAgIQNDb6B0YzeJV5mMGwoK8j9TAKBggqhkjOPQQDAjBpMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w\nbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowazELMAkGA1UE\nBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz\nY28xEDAOBgNVBAsTB29yZGVyZXIxHTAbBgNVBAMTFG9yZGVyZXIwLmV4YW1wbGUu\nY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEVqIEhJxCnzo9OHN/1okAGiLh\nlfRpSLC9gq+EDlFl8fWNc2+45ItDgq+W0G7gSTeA6tLJiqJX7gjYDIYhVRDQQKNN\nMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgtMB3\nqVaOmMeayPZK97zADZEdlaqWPN26c3Laju2SKXcwCgYIKoZIzj0EAwIDRwAwRAIg\nB5sY/L3gUJZviF6NkHxAvHQaOyxApnErIubgtHAbnyoCIH3pq6TU0pyziwRToY4/\n2yQOVApZwlDBr+PfcSZ7X/65\n-----END CERTIFICATE-----\n') +.data.data[0].payload.header.signature_header.creator.mspid=OrdererMSP +.data.data[0].payload.header.signature_header.nonce=5u8xjUGYyxXeEYRg3olU5bYdSpmoO9Z3 +.data.data[0].signature=MEQCIHcE+4e+GLv9EJRNnApn7eSHhb/AaYzYfRD0Ouu8n0vwAiBFzDL08hOGxmSa5eLrVxSwcnzTLLc5rTKZnrukI2IdRw== +.header.data_hash=3bLHujTOpCPo+GX99TaPX/lS4tPiBAVLVtM4qFoNdL4= +.header.number=2 +.header.previous_hash=KMBgoBtbDiYTmVslb8osOnCs5eUk3bYk9ASIHEnKtvg= +.metadata.metadata[0]=ChEKAggCEgsKCQoDAQIDEAQYBhKRBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhhcDcUwpSMrlwNJzB3OltEDpaqgLoVUZIsSRjBEAiB1Nip2seQZO61t1z+NVO8gH/NMTyeS2rP2WzzcVEdblgIgdQyhHIxATLCnnq9btWDgvMj0cqTnI2YKYWODq3IefvE= +.metadata.metadata[1]=CgIIAg== +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_3.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_3.block new file mode 100644 index 0000000000000000000000000000000000000000..2d194c2def69b4a87bb7c87104a7fe4257d32aeb GIT binary patch literal 4772 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 T&uo~zkC_6R>OKVn>d$`xG<{xm literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_3.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_3.block.json new file mode 100644 index 00000000..b2210911 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_3.block.json @@ -0,0 +1,156 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "actions": [ + { + "header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "wSRn4R/XLsdrsV53RXQ4IWOm8oqPzgR1" + }, + "payload": { + "action": { + "endorsements": [ + { + "endorser": "CgdPcmcxTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWM2Z0F3SUJBZ0lRRXpjWndjc0hZS0xJRDFkb1lxMWQ0ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN4CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVsRlAzMXcvZUVKSzIKeGFyMEgraUM0K3dTVVJXdTBZWjRhMGNhSlRTZnZGZE52blNvYW9WTUdZYzU2c3VXbGE5dGRWQzNRK1VZQi9RdApqZXpENzNQS1FLTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0Fnc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEUKQXdJRFNBQXdSUUloQUpEelJxN01jVGVRUklLOHBHanAyTjg1S2tXWGo2K2tFejRaQ0ZyT3FsaDVBaUJlMEdPcAoySlF5bm1JZXdTN0VuaFBpL0lER3pyL01wNkVvd0doS3c2UEEzdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "signature": "MEQCIErDPD4LbDjsq5jV7BNOFKKpZm9ENEdy3cLcNdkQxKUfAiB+mu65d9Fz4BxfXnbFfHshtBrvVu3gYRAjd4/KEEdBoQ==" + } + ], + "proposal_response_payload": { + "extension": { + "chaincode_id": { + "name": "_lifecycle", + "path": "", + "version": "syscc" + }, + "events": null, + "response": { + "message": "", + "payload": null, + "status": 200 + }, + "results": { + "data_model": "KV", + "ns_rwset": [ + { + "collection_hashed_rwset": [ + { + "collection_name": "_implicit_org_Org1MSP", + "hashed_rwset": "CiIKIOLuczUoZaghuSzmdd2zZxPys4xuvpT+LEH+PSymVrknCiIKIKX+lPU+eyIriBKYkyNi7Qsf8RMV7lS1SI/EVwVvbhnfEkQKINEJHwinD6o9lVlcA6bWfYNKPdtNHCMcZIoN+IK/1LrWGiBawA4hbub8PzYCmPiQw0PJ+51G/PSW1gvl5crpcPv1XhJECiDi7nM1KGWoIbks5nXds2cT8rOMbr6U/ixB/j0spla5JxogaVLt4CLLrpWeG0qg2tR+hbyeHk6djfzwiFB5NIgLvnUSRAogGTRTTnLLpL7fAXOdcN0Vw8rxb3nZApkmvcx0na5aTTQaIAjafEXLIEN35+QiSc2lcT+oZRFt27TLWhlJsuW0OKarEkQKIPbc0GiaLbuBzmmIdddFhfPf8V6wBmvqnpCdgJWFzBOpGiDz/mH8oP0qy6aB+Bp4xSudS6cqbLv8xNOWaC0yXAC94hJECiDlkh+BUt/2jBhspDxrvgYM/Ec0FdzIF6TPiOaKyS7cvxogUlHGOcM4f1VvoRhLU3yX77aT+R0p7BmbuJHWdXN5qC8SRAogpf6U9T57IiuIEpiTI2LtCx/xExXuVLVIj8RXBW9uGd8aIJkUMttz/t4T7b0qYbDg6SuxLzxIS+C2YMr4sMMe8UcG", + "pvt_rwset_hash": "eGhpXIzV0PyF2XB/YCAzSrqJg5G0noaWBN0xAg+/0WA=" + } + ], + "namespace": "_lifecycle", + "rwset": { + "metadata_writes": [], + "range_queries_info": [], + "reads": [ + { + "key": "namespaces/fields/exp02/Sequence", + "version": null + }, + { + "key": "namespaces/metadata/exp02", + "version": null + } + ], + "writes": [] + } + }, + { + "collection_hashed_rwset": [], + "namespace": "lscc", + "rwset": { + "metadata_writes": [], + "range_queries_info": [], + "reads": [ + { + "key": "exp02", + "version": null + } + ], + "writes": [] + } + } + ] + } + }, + "proposal_hash": "UHXaoV7MGEB/RwBt7xWOwargkT+i+IXBYjcbNs/Mfd8=" + } + }, + "chaincode_proposal_payload": { + "TransientMap": {}, + "input": { + "chaincode_spec": { + "chaincode_id": { + "name": "_lifecycle", + "path": "", + "version": "" + }, + "input": { + "args": [ + "QXBwcm92ZUNoYWluY29kZURlZmluaXRpb25Gb3JNeU9yZw==", + "CAESBWV4cDAyGgMxLjAyKgooEgwSCggBEgIIABICCAEaCxIJCgdPcmcxTVNQGgsSCQoHT3JnMk1TUEABSkoSSApGZXhwMDI6YjQ3NzFkYjA5ODFiMGY2YTM2ODMwMTgxMjRkYTgwZjc0YmMwNTA2MjQzODNhYTI2NjIxZmYxMzljNDE0NGFhOA==" + ], + "decorations": {}, + "is_init": false + }, + "timeout": 0, + "type": "UNDEFINED" + } + } + } + } + } + ] + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": { + "chaincode_id": { + "name": "_lifecycle", + "path": "", + "version": "" + } + }, + "timestamp": "2022-08-12T18:43:39.428343150Z", + "tls_cert_hash": null, + "tx_id": "e556629ee78a08b842849399bd378dd335891b725b5258a21c6615d9d540d295", + "type": 3, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "wSRn4R/XLsdrsV53RXQ4IWOm8oqPzgR1" + } + } + }, + "signature": "MEMCIHkqw+MLt3IvE8yVGIp+M8PKgINehAYbfTUzF1wdFEdCAh9n65pG9VCRjqmggLZJv+TI39WWlA484eKXKIEsrGZo" + } + ] + }, + "header": { + "data_hash": "PFqg1Lc6+w0NWhwIYJWDGt619XQ8W0fAxUh8HAiT6A8=", + "number": "3", + "previous_hash": "8u1beKxM3822Fes4Rh74R5gxAOsbL7kgEs4izRrx/AQ=" + }, + "metadata": { + "metadata": [ + "ChEKAggCEgsKCQoDAQIDEAQYBxKSBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhhAxy7PvtW8qSsAq14+j056GXarvu0cCH8SRzBFAiEArwvfzWP+wPjakmbVT/UI8pzgSdhNQPabYBkx/sTSi9ECIDD3nfz8LKIbMFpPxZHC28S2/O9ejBjwUicnTqt80k46", + "CgIIAg==", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_3.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_3.block.json-flat.json new file mode 100644 index 00000000..31fd6ab0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_3.block.json-flat.json @@ -0,0 +1,55 @@ +.data.data[0].payload.data.actions[0].header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.actions[0].header.creator.mspid=Org1MSP +.data.data[0].payload.data.actions[0].header.nonce=wSRn4R/XLsdrsV53RXQ4IWOm8oqPzgR1 +.data.data[0].payload.data.actions[0].payload.action.endorsements[0].endorser=CgdPcmcxTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWM2Z0F3SUJBZ0lRRXpjWndjc0hZS0xJRDFkb1lxMWQ0ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN4CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVsRlAzMXcvZUVKSzIKeGFyMEgraUM0K3dTVVJXdTBZWjRhMGNhSlRTZnZGZE52blNvYW9WTUdZYzU2c3VXbGE5dGRWQzNRK1VZQi9RdApqZXpENzNQS1FLTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0Fnc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEUKQXdJRFNBQXdSUUloQUpEelJxN01jVGVRUklLOHBHanAyTjg1S2tXWGo2K2tFejRaQ0ZyT3FsaDVBaUJlMEdPcAoySlF5bm1JZXdTN0VuaFBpL0lER3pyL01wNkVvd0doS3c2UEEzdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K +.data.data[0].payload.data.actions[0].payload.action.endorsements[0].signature=MEQCIErDPD4LbDjsq5jV7BNOFKKpZm9ENEdy3cLcNdkQxKUfAiB+mu65d9Fz4BxfXnbFfHshtBrvVu3gYRAjd4/KEEdBoQ== +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.name=_lifecycle +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.path= +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.version=syscc +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.events=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.response.message= +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.response.payload=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.response.status=200 +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.data_model=KV +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].collection_hashed_rwset[0].collection_name=_implicit_org_Org1MSP +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].collection_hashed_rwset[0].hashed_rwset=CiIKIOLuczUoZaghuSzmdd2zZxPys4xuvpT+LEH+PSymVrknCiIKIKX+lPU+eyIriBKYkyNi7Qsf8RMV7lS1SI/EVwVvbhnfEkQKINEJHwinD6o9lVlcA6bWfYNKPdtNHCMcZIoN+IK/1LrWGiBawA4hbub8PzYCmPiQw0PJ+51G/PSW1gvl5crpcPv1XhJECiDi7nM1KGWoIbks5nXds2cT8rOMbr6U/ixB/j0spla5JxogaVLt4CLLrpWeG0qg2tR+hbyeHk6djfzwiFB5NIgLvnUSRAogGTRTTnLLpL7fAXOdcN0Vw8rxb3nZApkmvcx0na5aTTQaIAjafEXLIEN35+QiSc2lcT+oZRFt27TLWhlJsuW0OKarEkQKIPbc0GiaLbuBzmmIdddFhfPf8V6wBmvqnpCdgJWFzBOpGiDz/mH8oP0qy6aB+Bp4xSudS6cqbLv8xNOWaC0yXAC94hJECiDlkh+BUt/2jBhspDxrvgYM/Ec0FdzIF6TPiOaKyS7cvxogUlHGOcM4f1VvoRhLU3yX77aT+R0p7BmbuJHWdXN5qC8SRAogpf6U9T57IiuIEpiTI2LtCx/xExXuVLVIj8RXBW9uGd8aIJkUMttz/t4T7b0qYbDg6SuxLzxIS+C2YMr4sMMe8UcG +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].collection_hashed_rwset[0].pvt_rwset_hash=eGhpXIzV0PyF2XB/YCAzSrqJg5G0noaWBN0xAg+/0WA= +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].namespace=_lifecycle +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.reads[0].key=namespaces/fields/exp02/Sequence +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.reads[0].version=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.reads[1].key=namespaces/metadata/exp02 +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.reads[1].version=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].namespace=lscc +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].rwset.reads[0].key=exp02 +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].rwset.reads[0].version=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.proposal_hash=UHXaoV7MGEB/RwBt7xWOwargkT+i+IXBYjcbNs/Mfd8= +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.name=_lifecycle +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.path= +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.version= +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.input.args[0]=b64(b'ApproveChaincodeDefinitionForMyOrg') +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.input.args[1]=b64(b'\x08\x01\x12\x05exp02\x1a\x031.02*\n(\x12\x0c\x12\n\x08\x01\x12\x02\x08\x00\x12\x02\x08\x01\x1a\x0b\x12\t\n\x07Org1MSP\x1a\x0b\x12\t\n\x07Org2MSP@\x01JJ\x12H\nFexp02:b4771db0981b0f6a3683018124da80f74bc050624383aa26621ff139c4144aa8') +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.input.is_init=False +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.timeout=0 +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.type=UNDEFINED +.data.data[0].payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension.chaincode_id.name=_lifecycle +.data.data[0].payload.header.channel_header.extension.chaincode_id.path= +.data.data[0].payload.header.channel_header.extension.chaincode_id.version= +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:43:39.428343150Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id=e556629ee78a08b842849399bd378dd335891b725b5258a21c6615d9d540d295 +.data.data[0].payload.header.channel_header.type=3 +.data.data[0].payload.header.channel_header.version=0 +.data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.header.signature_header.creator.mspid=Org1MSP +.data.data[0].payload.header.signature_header.nonce=wSRn4R/XLsdrsV53RXQ4IWOm8oqPzgR1 +.data.data[0].signature=MEMCIHkqw+MLt3IvE8yVGIp+M8PKgINehAYbfTUzF1wdFEdCAh9n65pG9VCRjqmggLZJv+TI39WWlA484eKXKIEsrGZo +.header.data_hash=PFqg1Lc6+w0NWhwIYJWDGt619XQ8W0fAxUh8HAiT6A8= +.header.number=3 +.header.previous_hash=8u1beKxM3822Fes4Rh74R5gxAOsbL7kgEs4izRrx/AQ= +.metadata.metadata[0]=ChEKAggCEgsKCQoDAQIDEAQYBxKSBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhhAxy7PvtW8qSsAq14+j056GXarvu0cCH8SRzBFAiEArwvfzWP+wPjakmbVT/UI8pzgSdhNQPabYBkx/sTSi9ECIDD3nfz8LKIbMFpPxZHC28S2/O9ejBjwUicnTqt80k46 +.metadata.metadata[1]=CgIIAg== +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_4.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_4.block new file mode 100644 index 0000000000000000000000000000000000000000..c6feaf43ae519613577f419b4524547bdedd80bf GIT binary patch literal 4774 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 ZoDF2o@^0U@nyO#@0$4NRDOfdn{|TrpbW#8S literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_5.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_5.block.json new file mode 100644 index 00000000..fd6460af --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_5.block.json @@ -0,0 +1,191 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "actions": [ + { + "header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "7PcFFwhiZlXZzFb7yayZIvOdZOGVjBvP" + }, + "payload": { + "action": { + "endorsements": [ + { + "endorser": "CgdPcmcxTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWM2Z0F3SUJBZ0lRRXpjWndjc0hZS0xJRDFkb1lxMWQ0ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN4CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVsRlAzMXcvZUVKSzIKeGFyMEgraUM0K3dTVVJXdTBZWjRhMGNhSlRTZnZGZE52blNvYW9WTUdZYzU2c3VXbGE5dGRWQzNRK1VZQi9RdApqZXpENzNQS1FLTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0Fnc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEUKQXdJRFNBQXdSUUloQUpEelJxN01jVGVRUklLOHBHanAyTjg1S2tXWGo2K2tFejRaQ0ZyT3FsaDVBaUJlMEdPcAoySlF5bm1JZXdTN0VuaFBpL0lER3pyL01wNkVvd0doS3c2UEEzdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "signature": "MEUCIQCaOepBlTtWAbJOMckTkev2/6YukHosuMZWRVv0h1RIpQIgL1pB8kvWV/4VtSHNOk4TpvuS8iUya/k9n1EOybL9wm4=" + }, + { + "endorser": "CgdPcmcyTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lSQUowZ0JjQXVuUGVRdk9hVHB2NEVsaXN3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCcU1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFTk1Bc0dBMVVFQ3hNRWNHVmxjakVmTUIwR0ExVUVBeE1XY0dWbGNqQXViM0puCk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSnR6U2F0SzBIOGsKUDZPUCtIZ0RpMHNhL3BtZTlJWGswSWFKbFNoS2t3T3k0ODY1aktLaFRCR0RXbDVEeFFYL3NYRHM3TllzbHZqWgpwdUNFaUFaZkRsV2pUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSVBDc2VkeGN0R1dUaWx0dkhacThkY2drNW15bGNuTTdYbVZrdXRyTUN6cEJNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJVQmtxcW5ENXYweGdKUnhmQTU0ZEwzZGpJczhGTjE3MWpOTHpLczN0dWlBaUIyZ0h4aApORm9uRWhXRzZLVUxtbVZjQjFMYkNnMy9IYS8xSGhiQ1k0KzBEUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "signature": "MEUCIQDXJ1tBv8Aa4ttpfy7PXvSUxL6tuBfna20u8Ox4mQLhLAIgevpWf+GdkzmhcCNTTS/TaWU0xoS/gATX5AtigdWouns=" + } + ], + "proposal_response_payload": { + "extension": { + "chaincode_id": { + "name": "_lifecycle", + "path": "", + "version": "syscc" + }, + "events": null, + "response": { + "message": "", + "payload": null, + "status": 200 + }, + "results": { + "data_model": "KV", + "ns_rwset": [ + { + "collection_hashed_rwset": [ + { + "collection_name": "_implicit_org_Org1MSP", + "hashed_rwset": "CiYKIBk0U05yy6S+3wFznXDdFcPK8W952QKZJr3MdJ2uWk00EgIIAwomCiD23NBomi27gc5piHXXRYXz3/FesAZr6p6QnYCVhcwTqRICCAMKJgog5ZIfgVLf9owYbKQ8a74GDPxHNBXcyBekz4jmisku3L8SAggDCiYKIKX+lPU+eyIriBKYkyNi7Qsf8RMV7lS1SI/EVwVvbhnfEgIIAw==", + "pvt_rwset_hash": null + }, + { + "collection_name": "_implicit_org_Org2MSP", + "hashed_rwset": "CiYKIBk0U05yy6S+3wFznXDdFcPK8W952QKZJr3MdJ2uWk00EgIIBAomCiD23NBomi27gc5piHXXRYXz3/FesAZr6p6QnYCVhcwTqRICCAQKJgog5ZIfgVLf9owYbKQ8a74GDPxHNBXcyBekz4jmisku3L8SAggECiYKIKX+lPU+eyIriBKYkyNi7Qsf8RMV7lS1SI/EVwVvbhnfEgIIBA==", + "pvt_rwset_hash": null + } + ], + "namespace": "_lifecycle", + "rwset": { + "metadata_writes": [], + "range_queries_info": [], + "reads": [ + { + "key": "namespaces/fields/exp02/Sequence", + "version": null + }, + { + "key": "namespaces/metadata/exp02", + "version": null + } + ], + "writes": [ + { + "is_delete": false, + "key": "namespaces/fields/exp02/Collections", + "value": "EgA=" + }, + { + "is_delete": false, + "key": "namespaces/fields/exp02/EndorsementInfo", + "value": "Eg0KAzEuMBABGgRlc2Nj" + }, + { + "is_delete": false, + "key": "namespaces/fields/exp02/Sequence", + "value": "CAE=" + }, + { + "is_delete": false, + "key": "namespaces/fields/exp02/ValidationInfo", + "value": "EjIKBHZzY2MSKgooEgwSCggBEgIIABICCAEaCxIJCgdPcmcxTVNQGgsSCQoHT3JnMk1TUA==" + }, + { + "is_delete": false, + "key": "namespaces/metadata/exp02", + "value": "ChNDaGFpbmNvZGVEZWZpbml0aW9uEghTZXF1ZW5jZRIPRW5kb3JzZW1lbnRJbmZvEg5WYWxpZGF0aW9uSW5mbxILQ29sbGVjdGlvbnM=" + } + ] + } + }, + { + "collection_hashed_rwset": [], + "namespace": "lscc", + "rwset": { + "metadata_writes": [], + "range_queries_info": [], + "reads": [ + { + "key": "exp02", + "version": null + } + ], + "writes": [] + } + } + ] + } + }, + "proposal_hash": "0YmDRVWexlpyMnhtO9jSUN0cYDLQqVDCRvkeVMVcHv4=" + } + }, + "chaincode_proposal_payload": { + "TransientMap": {}, + "input": { + "chaincode_spec": { + "chaincode_id": { + "name": "_lifecycle", + "path": "", + "version": "" + }, + "input": { + "args": [ + "Q29tbWl0Q2hhaW5jb2RlRGVmaW5pdGlvbg==", + "CAESBWV4cDAyGgMxLjAyKgooEgwSCggBEgIIABICCAEaCxIJCgdPcmcxTVNQGgsSCQoHT3JnMk1TUEAB" + ], + "decorations": {}, + "is_init": false + }, + "timeout": 0, + "type": "UNDEFINED" + } + } + } + } + } + ] + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": { + "chaincode_id": { + "name": "_lifecycle", + "path": "", + "version": "" + } + }, + "timestamp": "2022-08-12T18:43:46.561405446Z", + "tls_cert_hash": null, + "tx_id": "897dc4caeb60861e1f6cc6984890e384523b57b6117036e56776fb3cadcbf012", + "type": 3, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "7PcFFwhiZlXZzFb7yayZIvOdZOGVjBvP" + } + } + }, + "signature": "MEQCIBHMkjk1O8aj5XurkdRGfss6OX+1nyj1gCa5oLdNg/DEAiBNfURn0j9bv+jxXT/ywG7kic0qxv8A1en2YSCcHyRB4w==" + } + ] + }, + "header": { + "data_hash": "nRQk77xPfoVxO50ZbiEQ4VTm97J7Z7aXKuLwZMdhN78=", + "number": "5", + "previous_hash": "kx23ihMzKiPiHP12UTM34MyjwgM8xOqPpkJXr1SS+KY=" + }, + "metadata": { + "metadata": [ + "ChEKAggCEgsKCQoDAQIDEAQYCRKSBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhh1VKJJkEvmBahRfXLuYNaXQ3/B0Zi94Z8SRzBFAiEAtnMV+dFIG5JHyr+fKiJImw/kK9p1DhXjLmaOjRyMny8CICLlE2fb/MmHyLPxTJdZAHbkB8bdAjVSPTF/LgNEa6P+", + "CgIIAg==", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_5.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_5.block.json-flat.json new file mode 100644 index 00000000..b9bcaa06 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_5.block.json-flat.json @@ -0,0 +1,75 @@ +.data.data[0].payload.data.actions[0].header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.actions[0].header.creator.mspid=Org1MSP +.data.data[0].payload.data.actions[0].header.nonce=7PcFFwhiZlXZzFb7yayZIvOdZOGVjBvP +.data.data[0].payload.data.actions[0].payload.action.endorsements[0].endorser=CgdPcmcxTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWM2Z0F3SUJBZ0lRRXpjWndjc0hZS0xJRDFkb1lxMWQ0ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN4CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVsRlAzMXcvZUVKSzIKeGFyMEgraUM0K3dTVVJXdTBZWjRhMGNhSlRTZnZGZE52blNvYW9WTUdZYzU2c3VXbGE5dGRWQzNRK1VZQi9RdApqZXpENzNQS1FLTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0Fnc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEUKQXdJRFNBQXdSUUloQUpEelJxN01jVGVRUklLOHBHanAyTjg1S2tXWGo2K2tFejRaQ0ZyT3FsaDVBaUJlMEdPcAoySlF5bm1JZXdTN0VuaFBpL0lER3pyL01wNkVvd0doS3c2UEEzdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K +.data.data[0].payload.data.actions[0].payload.action.endorsements[0].signature=MEUCIQCaOepBlTtWAbJOMckTkev2/6YukHosuMZWRVv0h1RIpQIgL1pB8kvWV/4VtSHNOk4TpvuS8iUya/k9n1EOybL9wm4= +.data.data[0].payload.data.actions[0].payload.action.endorsements[1].endorser=CgdPcmcyTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lSQUowZ0JjQXVuUGVRdk9hVHB2NEVsaXN3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCcU1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFTk1Bc0dBMVVFQ3hNRWNHVmxjakVmTUIwR0ExVUVBeE1XY0dWbGNqQXViM0puCk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSnR6U2F0SzBIOGsKUDZPUCtIZ0RpMHNhL3BtZTlJWGswSWFKbFNoS2t3T3k0ODY1aktLaFRCR0RXbDVEeFFYL3NYRHM3TllzbHZqWgpwdUNFaUFaZkRsV2pUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSVBDc2VkeGN0R1dUaWx0dkhacThkY2drNW15bGNuTTdYbVZrdXRyTUN6cEJNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJVQmtxcW5ENXYweGdKUnhmQTU0ZEwzZGpJczhGTjE3MWpOTHpLczN0dWlBaUIyZ0h4aApORm9uRWhXRzZLVUxtbVZjQjFMYkNnMy9IYS8xSGhiQ1k0KzBEUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K +.data.data[0].payload.data.actions[0].payload.action.endorsements[1].signature=MEUCIQDXJ1tBv8Aa4ttpfy7PXvSUxL6tuBfna20u8Ox4mQLhLAIgevpWf+GdkzmhcCNTTS/TaWU0xoS/gATX5AtigdWouns= +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.name=_lifecycle +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.path= +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.version=syscc +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.events=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.response.message= +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.response.payload=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.response.status=200 +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.data_model=KV +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].collection_hashed_rwset[0].collection_name=_implicit_org_Org1MSP +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].collection_hashed_rwset[0].hashed_rwset=CiYKIBk0U05yy6S+3wFznXDdFcPK8W952QKZJr3MdJ2uWk00EgIIAwomCiD23NBomi27gc5piHXXRYXz3/FesAZr6p6QnYCVhcwTqRICCAMKJgog5ZIfgVLf9owYbKQ8a74GDPxHNBXcyBekz4jmisku3L8SAggDCiYKIKX+lPU+eyIriBKYkyNi7Qsf8RMV7lS1SI/EVwVvbhnfEgIIAw== +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].collection_hashed_rwset[0].pvt_rwset_hash=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].collection_hashed_rwset[1].collection_name=_implicit_org_Org2MSP +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].collection_hashed_rwset[1].hashed_rwset=CiYKIBk0U05yy6S+3wFznXDdFcPK8W952QKZJr3MdJ2uWk00EgIIBAomCiD23NBomi27gc5piHXXRYXz3/FesAZr6p6QnYCVhcwTqRICCAQKJgog5ZIfgVLf9owYbKQ8a74GDPxHNBXcyBekz4jmisku3L8SAggECiYKIKX+lPU+eyIriBKYkyNi7Qsf8RMV7lS1SI/EVwVvbhnfEgIIBA== +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].collection_hashed_rwset[1].pvt_rwset_hash=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].namespace=_lifecycle +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.reads[0].key=namespaces/fields/exp02/Sequence +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.reads[0].version=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.reads[1].key=namespaces/metadata/exp02 +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.reads[1].version=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[0].is_delete=False +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[0].key=namespaces/fields/exp02/Collections +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[0].value=b64(b'\x12\x00') +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[1].is_delete=False +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[1].key=namespaces/fields/exp02/EndorsementInfo +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[1].value=b64(b'\x12\r\n\x031.0\x10\x01\x1a\x04escc') +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[2].is_delete=False +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[2].key=namespaces/fields/exp02/Sequence +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[2].value=b64(b'\x08\x01') +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[3].is_delete=False +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[3].key=namespaces/fields/exp02/ValidationInfo +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[3].value=b64(b'\x122\n\x04vscc\x12*\n(\x12\x0c\x12\n\x08\x01\x12\x02\x08\x00\x12\x02\x08\x01\x1a\x0b\x12\t\n\x07Org1MSP\x1a\x0b\x12\t\n\x07Org2MSP') +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[4].is_delete=False +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[4].key=namespaces/metadata/exp02 +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[0].rwset.writes[4].value=b64(b'\n\x13ChaincodeDefinition\x12\x08Sequence\x12\x0fEndorsementInfo\x12\x0eValidationInfo\x12\x0bCollections') +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].namespace=lscc +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].rwset.reads[0].key=exp02 +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].rwset.reads[0].version=None +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.proposal_hash=0YmDRVWexlpyMnhtO9jSUN0cYDLQqVDCRvkeVMVcHv4= +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.name=_lifecycle +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.path= +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.version= +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.input.args[0]=b64(b'CommitChaincodeDefinition') +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.input.args[1]=b64(b'\x08\x01\x12\x05exp02\x1a\x031.02*\n(\x12\x0c\x12\n\x08\x01\x12\x02\x08\x00\x12\x02\x08\x01\x1a\x0b\x12\t\n\x07Org1MSP\x1a\x0b\x12\t\n\x07Org2MSP@\x01') +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.input.is_init=False +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.timeout=0 +.data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.type=UNDEFINED +.data.data[0].payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension.chaincode_id.name=_lifecycle +.data.data[0].payload.header.channel_header.extension.chaincode_id.path= +.data.data[0].payload.header.channel_header.extension.chaincode_id.version= +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:43:46.561405446Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id=897dc4caeb60861e1f6cc6984890e384523b57b6117036e56776fb3cadcbf012 +.data.data[0].payload.header.channel_header.type=3 +.data.data[0].payload.header.channel_header.version=0 +.data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.header.signature_header.creator.mspid=Org1MSP +.data.data[0].payload.header.signature_header.nonce=7PcFFwhiZlXZzFb7yayZIvOdZOGVjBvP +.data.data[0].signature=MEQCIBHMkjk1O8aj5XurkdRGfss6OX+1nyj1gCa5oLdNg/DEAiBNfURn0j9bv+jxXT/ywG7kic0qxv8A1en2YSCcHyRB4w== +.header.data_hash=nRQk77xPfoVxO50ZbiEQ4VTm97J7Z7aXKuLwZMdhN78= +.header.number=5 +.header.previous_hash=kx23ihMzKiPiHP12UTM34MyjwgM8xOqPpkJXr1SS+KY= +.metadata.metadata[0]=ChEKAggCEgsKCQoDAQIDEAQYCRKSBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhh1VKJJkEvmBahRfXLuYNaXQ3/B0Zi94Z8SRzBFAiEAtnMV+dFIG5JHyr+fKiJImw/kK9p1DhXjLmaOjRyMny8CICLlE2fb/MmHyLPxTJdZAHbkB8bdAjVSPTF/LgNEa6P+ +.metadata.metadata[1]=CgIIAg== +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_6.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_6.block new file mode 100644 index 0000000000000000000000000000000000000000..029f796e33229066d8217a3f732cfd962270fb7e GIT binary patch literal 4079 zcmeH~eT*Yz9mj8XkKOWc$Weto7YxfPAoRFSr|(=KKJ(J)w0)+XcG~F_M5fc(nYPpS zZJ+6wn1FzYC@%@Q+~weciGq-53`9T)7v$}ZpkNNXcz+s%_zEgw^hBI)cTdy{D&bGs ze32TgA4quSy~~aJu3CGiGk^bWx!<0>`-<~E`Or-X_N?+_Tfd;3*WR7} z@mH3X|8(ZoCV^1G=YR^ZX+NWQ)IQz4mXL*0M2wqzR`xn78 z3!v?pTiWJ%?eSxK=C|K?NT;77ql}pj)d~^;+<@Xywf09w-##-n*j(mIT$Fil!@q43E8Xz^OPZ!+><1_ zDVSBxYE^@&p(?X>q5+H3dz!?Q+O?GC@jzrN&`w!%SN0i0kYI)tPtWe`C>=JI8FJ-9V?;B(WX<7v$~J((&Kz=*o&?T zRyCICriSC5Bx*G-)8h3k;z25pl4duC1|z-OAqZS>V0O}KQjAe>HO5j9(NqXx2D;BE zPe@Qq`YFg`$iV)j4kQbRO);=;(6lXO@)BodRGT4dbbkP}4)8bT5>6btJVs*Z}dI(oiJo$$qw)iY?jR42KtJRY`&Et(+t0zW{Z%fb3TpB0$@bc1)t zM;bR>`HhFRy>s;DzrS#dF@iUafB(p-zVX%G7ta7cIs<&@t#uQA=&cXE^#OY8O%J#j zTm&xg%$%Uu(hjh--mb5K85PV02m;Jh!5m2tJ7&Dkc)-CKu>6yIAI#Nu?b#o0K36>b zuQ!~w_ZLq-^2E12JI`v|eec23&ws^Yh%sQy`Kgbg5|c_(g$5t z(+B?5x^C45{&jHr3wm#;w>8~6>p8`n0vkAmzzeo-dGpqT2Pgg1RjcmkwWY3M0+b7*E|+XkQAo4W|_wG00*q!|~|T4WQ_BI{@stPPS%I>R%8 zT1V*xY9Z&J@6+|yX@hbmU<2=$Y@1*M?;=|TQQDMjCK6q;w^1Q%>0Dw><7_L_5=K>t z)ezNLuYop_6p|f+lNUlgfr&9{zz~vnJIkN|Vkp(soOO+9p3nf|IyUXV)Rdo!1g(;U z@(8n2X!9)YGKy?>D{dO7wk#9n6`YvBN)(eU4oL0@AtT>Tnbnri)ktB4L;}-zy&%Kl zJg&&4G0Mkqa(W=c+LftBhh6Gxwwp6bAw>@0Dpzy^OMJ~mIA*bu+=xUp6i>t>28tRZ z8j!UTxnKbMbvBhIfvxt5q_0kge7I1|%R@q`gj7OPQ&M4dl&A@#cA=woN{CamaAYu) zEj7MYE73vGS5zp!xCR=!!$gC*w3rqI#11fHtiw1rh4BQRI^4(|H5Rj!AB!}C5T_?& z=7|QNXc6-rXbg&DqG)#uqLoD-DmW!)Cb(y z#}wQX^CEA;6yxN3QKU(_nCH{6F4yRiLM)ta%H>AH*JPbgg--OdJT24j#Jhg4RXPAKqKL5eGA}BFzcE1o(4_@b2GDZ+qdoj z-a8h+GxOkE^8jS~HNCI*CwY9|f6e2`#>DFK39AcCH9`@Jqo+#Y7UFOx9c#qj6`eM$ z-u=L>UPKhXY4yy%=kSCBOB-QUVp@W^X%BG1A5^H!Nc9!CcjvL|Zpa&e3J(;2CTJ8>l~Fwr5t>OGj*_C99ow+mX8ZiG zYOEz;wLR|8d@|VWMWiCp9XoZLmpV$w56H2YEx~RDTMX6ruN3gT!Z@GQC*kTynfr~ziauKkN+mT N6KtLM6l|G%{{a#$DF*-m literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_6.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_6.block.json new file mode 100644 index 00000000..4647afd9 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_6.block.json @@ -0,0 +1,168 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "actions": [ + { + "header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "DmqIW6W0DP/Xiv7P2kRnM4Z58bgJK3le" + }, + "payload": { + "action": { + "endorsements": [ + { + "endorser": "CgdPcmcxTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWM2Z0F3SUJBZ0lRRXpjWndjc0hZS0xJRDFkb1lxMWQ0ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN4CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVsRlAzMXcvZUVKSzIKeGFyMEgraUM0K3dTVVJXdTBZWjRhMGNhSlRTZnZGZE52blNvYW9WTUdZYzU2c3VXbGE5dGRWQzNRK1VZQi9RdApqZXpENzNQS1FLTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0Fnc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEUKQXdJRFNBQXdSUUloQUpEelJxN01jVGVRUklLOHBHanAyTjg1S2tXWGo2K2tFejRaQ0ZyT3FsaDVBaUJlMEdPcAoySlF5bm1JZXdTN0VuaFBpL0lER3pyL01wNkVvd0doS3c2UEEzdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "signature": "MEQCIEHCbMksQzMCG0jBYAhjMghZBGjHaMWeyu/yAZUH6QBNAiBuoY/PLnDQg4Es1dRdyGj8klmfKbhb2kOZvgqFJF5RyA==" + } + ], + "proposal_response_payload": { + "extension": { + "chaincode_id": { + "name": "exp02", + "path": "", + "version": "1.0" + }, + "events": null, + "response": { + "message": "", + "payload": null, + "status": 200 + }, + "results": { + "data_model": "KV", + "ns_rwset": [ + { + "collection_hashed_rwset": [], + "namespace": "_lifecycle", + "rwset": { + "metadata_writes": [], + "range_queries_info": [], + "reads": [ + { + "key": "namespaces/fields/exp02/Sequence", + "version": { + "block_num": "5", + "tx_num": "0" + } + } + ], + "writes": [] + } + }, + { + "collection_hashed_rwset": [], + "namespace": "exp02", + "rwset": { + "metadata_writes": [], + "range_queries_info": [], + "reads": [ + { + "key": "\u0000ô¿¿initialized", + "version": null + } + ], + "writes": [ + { + "is_delete": false, + "key": "\u0000ô¿¿initialized", + "value": "MS4w" + }, + { + "is_delete": false, + "key": "a", + "value": "MTAw" + }, + { + "is_delete": false, + "key": "b", + "value": "MjAw" + } + ] + } + } + ] + } + }, + "proposal_hash": "0aezUGQul5w1a8pVDfqFC5nlw7jBrggsFWqep78NIfA=" + } + }, + "chaincode_proposal_payload": { + "TransientMap": {}, + "input": { + "chaincode_spec": { + "chaincode_id": { + "name": "exp02", + "path": "", + "version": "" + }, + "input": { + "args": [ + "aW5pdA==", + "YQ==", + "MTAw", + "Yg==", + "MjAw" + ], + "decorations": {}, + "is_init": true + }, + "timeout": 0, + "type": "GOLANG" + } + } + } + } + } + ] + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": { + "chaincode_id": { + "name": "exp02", + "path": "", + "version": "" + } + }, + "timestamp": "2022-08-12T18:43:51.913648006Z", + "tls_cert_hash": null, + "tx_id": "7030dccfe2a47755ab127480df243173a7656f69dc60dbb5508911a3775ebed3", + "type": 3, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "DmqIW6W0DP/Xiv7P2kRnM4Z58bgJK3le" + } + } + }, + "signature": "MEQCIAfU00eJM8iCJW0nzMmZZCoNWBeX9iLXEaEcpmBiHBdDAiA5QjpPNJHD5OSrp4gljncwZdacn2kMipcxG/NLPbr/Aw==" + } + ] + }, + "header": { + "data_hash": "9RGRydfVuSI+Fo1zOvtjNb8UxZ/ElxPEmmWCFwLZLBU=", + "number": "6", + "previous_hash": "aqhcdP9vBqqQUO0WOz4fI7SIRkUVWLwEflkfbjtLzos=" + }, + "metadata": { + "metadata": [ + "ChEKAggCEgsKCQoDAQIDEAQYChKSBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhiBU0f7yfZs+yLrLPsr2iLwXPnu/bRR06sSRzBFAiEAkTstt687uaJXA5XDhYxDzGC897tLBDDv5tUD5gtahIoCIGPHnbzXCtqdbJ8md/0iHZnihy2cjO+Qe7FsL0QZ7DUs", + "CgIIAg==", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_6.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_6.block.json-flat.json new file mode 100644 index 0000000000000000000000000000000000000000..d6e6cfd7e9e28e4179952284d8635fa9677bac9e GIT binary patch literal 10325 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 Rtv~meZGAuYnC(sf^bf4iMSlPQ literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_7.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_7.block new file mode 100644 index 0000000000000000000000000000000000000000..6fafa015236fbe8a47181b218dd1d8de31655cc8 GIT binary patch literal 4069 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 N0cT8o3N}r@{{Rh#9+Ch6 literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_7.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_7.block.json new file mode 100644 index 00000000..2353310e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_7.block.json @@ -0,0 +1,179 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "actions": [ + { + "header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "Fzefm8M2YkyW3KTuSZOtFw63nwIHui4Z" + }, + "payload": { + "action": { + "endorsements": [ + { + "endorser": "CgdPcmcxTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWM2Z0F3SUJBZ0lRRXpjWndjc0hZS0xJRDFkb1lxMWQ0ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN4CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVsRlAzMXcvZUVKSzIKeGFyMEgraUM0K3dTVVJXdTBZWjRhMGNhSlRTZnZGZE52blNvYW9WTUdZYzU2c3VXbGE5dGRWQzNRK1VZQi9RdApqZXpENzNQS1FLTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0Fnc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEUKQXdJRFNBQXdSUUloQUpEelJxN01jVGVRUklLOHBHanAyTjg1S2tXWGo2K2tFejRaQ0ZyT3FsaDVBaUJlMEdPcAoySlF5bm1JZXdTN0VuaFBpL0lER3pyL01wNkVvd0doS3c2UEEzdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "signature": "MEQCIDR7isHcYWqsTQd7j++asuwtLV5nEHrP/7QNy1i3hmJ0AiANaC1Ztng+QQjE8mBB45UmzGVABzkfT87B+nmQP1INRQ==" + } + ], + "proposal_response_payload": { + "extension": { + "chaincode_id": { + "name": "exp02", + "path": "", + "version": "1.0" + }, + "events": null, + "response": { + "message": "", + "payload": null, + "status": 200 + }, + "results": { + "data_model": "KV", + "ns_rwset": [ + { + "collection_hashed_rwset": [], + "namespace": "_lifecycle", + "rwset": { + "metadata_writes": [], + "range_queries_info": [], + "reads": [ + { + "key": "namespaces/fields/exp02/Sequence", + "version": { + "block_num": "5", + "tx_num": "0" + } + } + ], + "writes": [] + } + }, + { + "collection_hashed_rwset": [], + "namespace": "exp02", + "rwset": { + "metadata_writes": [], + "range_queries_info": [], + "reads": [ + { + "key": "\u0000ô¿¿initialized", + "version": { + "block_num": "6", + "tx_num": "0" + } + }, + { + "key": "a", + "version": { + "block_num": "6", + "tx_num": "0" + } + }, + { + "key": "b", + "version": { + "block_num": "6", + "tx_num": "0" + } + } + ], + "writes": [ + { + "is_delete": false, + "key": "a", + "value": "OTA=" + }, + { + "is_delete": false, + "key": "b", + "value": "MjEw" + } + ] + } + } + ] + } + }, + "proposal_hash": "+RB+kCigLoZPOo4xRP5qUOLlVl6YTpkbOaoLxyTym10=" + } + }, + "chaincode_proposal_payload": { + "TransientMap": {}, + "input": { + "chaincode_spec": { + "chaincode_id": { + "name": "exp02", + "path": "", + "version": "" + }, + "input": { + "args": [ + "aW52b2tl", + "YQ==", + "Yg==", + "MTA=" + ], + "decorations": {}, + "is_init": false + }, + "timeout": 0, + "type": "GOLANG" + } + } + } + } + } + ] + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": { + "chaincode_id": { + "name": "exp02", + "path": "", + "version": "" + } + }, + "timestamp": "2022-08-12T18:43:57.261116298Z", + "tls_cert_hash": null, + "tx_id": "bf6a73b65b3c789b8a1027be7334c32c3eaa628f058ae195896d95f414ed14f2", + "type": 3, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "Fzefm8M2YkyW3KTuSZOtFw63nwIHui4Z" + } + } + }, + "signature": "MEUCIQCe1hp6P3S+quS17dY/8tCSoPgkMq3UJ5e/yUubid9eywIgRbEjPjY00jbv75tWldawmlE6EatqUpr8c3yVQjiox4U=" + } + ] + }, + "header": { + "data_hash": "0uKt342a53xxxCP/mkItkAp8QNtnLLxLpHoyhhMJFZY=", + "number": "7", + "previous_hash": "FaCr5VW/DJ20OhVeaclVL5gR4DKw/mSdadXJ4UF11NM=" + }, + "metadata": { + "metadata": [ + "ChEKAggCEgsKCQoDAQIDEAQYCxKSBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhgVN1gWhrgmD/8ZjMILoBDsbxklTdYAEjMSRzBFAiEA50fvcB0V4SmK0mVxCeVO6NqmoJx2JVVWub4fWlfSXVsCICBGv944IUN784VgcibLvwTzCe4kNo48MbW3kQUZm+fT", + "CgIIAg==", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_7.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_7.block.json-flat.json new file mode 100644 index 0000000000000000000000000000000000000000..daa34c0d6d0db98e965340d06dfd73d5b27b4dc1 GIT binary patch literal 10754 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 goz3r1G5?GZvX%Q literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_8.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_8.block new file mode 100644 index 0000000000000000000000000000000000000000..6972ccc30b4c2da9626f4e34ccf4c1a8500fee13 GIT binary patch literal 4068 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 literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_9.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_9.block.json new file mode 100644 index 00000000..426882b0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_9.block.json @@ -0,0 +1,1445 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "config": { + "channel_group": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org1.example.com", + "port": 7051 + } + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org2.example.com", + "port": 7051 + } + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "1" + }, + "Org3MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "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": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org3MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWakNDQWYyZ0F3SUJBZ0lRYTJYZjJFcTd6UXNLUi8rNklkQVFtVEFLQmdncWhrak9QUVFEQWpCMk1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWZNQjBHQTFVRUF4TVdkR3h6ClkyRXViM0puTXk1bGVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTEKTURCYU1IWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSApFdzFUWVc0Z1JuSmhibU5wYzJOdk1Sa3dGd1lEVlFRS0V4QnZjbWN6TG1WNFlXMXdiR1V1WTI5dE1SOHdIUVlEClZRUURFeFowYkhOallTNXZjbWN6TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMEQKQVFjRFFnQUVPTUtYOE41eXQzeTVUQTZuQldEbkNpYm83U2hvaTIvNElWSzBYM3ZGenJIU2pBU2Z1Si9aYm5icgpkbFNoOUQyanRLQnh4YXNTUXI3cjl4dTU0cjIrTTZOdE1Hc3dEZ1lEVlIwUEFRSC9CQVFEQWdHbU1CMEdBMVVkCkpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUNrR0ExVWQKRGdRaUJDQ3Q4Ny9RU3FIcWF2OVpMWDRBS0ZrVUtOVFlYdU5kVWgycGg5Q1FXcWgwbVRBS0JnZ3Foa2pPUFFRRApBZ05IQURCRUFpQU4xcTdFN2xCakNEd3VSSzlqM0F5NmhBN09xcHA3UFN2NUlBU09yYkJSRHdJZ0pUc3Z0L0JJCngzWHhPbVJkVGxtRjZYSnJqMS9wcU9FMnNUMHBtMjJVTTFzPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": "MAJORITY", + "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": { + "ACLs": { + "mod_policy": "Admins", + "value": { + "acls": { + "_lifecycle/CommitChaincodeDefinition": { + "policy_ref": "/Channel/Application/Writers" + }, + "_lifecycle/QueryChaincodeDefinition": { + "policy_ref": "/Channel/Application/Readers" + }, + "_lifecycle/QueryNamespaceDefinitions": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigTree": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/SimulateConfigTreeUpdate": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/Block": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/FilteredBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/ChaincodeExists": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetChaincodeData": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetDeploymentSpec": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetInstantiatedChaincodes": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/ChaincodeToChaincode": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/Propose": { + "policy_ref": "/Channel/Application/Writers" + }, + "qscc/GetBlockByHash": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByNumber": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByTxID": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetChainInfo": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetTransactionByID": { + "policy_ref": "/Channel/Application/Readers" + } + } + }, + "version": "0" + }, + "Capabilities": { + "mod_policy": "Admins", + "value": { + "capabilities": { + "V2_0": {} + } + }, + "version": "0" + } + }, + "version": "2" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "Consortium": { + "mod_policy": "Admins", + "value": { + "name": "SampleConsortium" + }, + "version": "0" + }, + "HashingAlgorithm": { + "mod_policy": "Admins", + "value": { + "name": "SHA256" + }, + "version": "0" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "4" + }, + "last_update": { + "payload": { + "data": { + "config_update": { + "channel_id": "businesschannel", + "isolated_data": {}, + "read_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + } + }, + "mod_policy": "", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "LifecycleEndorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "ACLs": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "Capabilities": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + }, + "write_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org3MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "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": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org3MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWakNDQWYyZ0F3SUJBZ0lRYTJYZjJFcTd6UXNLUi8rNklkQVFtVEFLQmdncWhrak9QUVFEQWpCMk1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWZNQjBHQTFVRUF4TVdkR3h6ClkyRXViM0puTXk1bGVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTEKTURCYU1IWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSApFdzFUWVc0Z1JuSmhibU5wYzJOdk1Sa3dGd1lEVlFRS0V4QnZjbWN6TG1WNFlXMXdiR1V1WTI5dE1SOHdIUVlEClZRUURFeFowYkhOallTNXZjbWN6TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMEQKQVFjRFFnQUVPTUtYOE41eXQzeTVUQTZuQldEbkNpYm83U2hvaTIvNElWSzBYM3ZGenJIU2pBU2Z1Si9aYm5icgpkbFNoOUQyanRLQnh4YXNTUXI3cjl4dTU0cjIrTTZOdE1Hc3dEZ1lEVlIwUEFRSC9CQVFEQWdHbU1CMEdBMVVkCkpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUNrR0ExVWQKRGdRaUJDQ3Q4Ny9RU3FIcWF2OVpMWDRBS0ZrVUtOVFlYdU5kVWgycGg5Q1FXcWgwbVRBS0JnZ3Foa2pPUFFRRApBZ05IQURCRUFpQU4xcTdFN2xCakNEd3VSSzlqM0F5NmhBN09xcHA3UFN2NUlBU09yYkJSRHdJZ0pUc3Z0L0JJCngzWHhPbVJkVGxtRjZYSnJqMS9wcU9FMnNUMHBtMjJVTTFzPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "LifecycleEndorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "ACLs": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "Capabilities": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "2" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + } + }, + "signatures": [ + { + "signature": "MEQCIEcHSmIgbjKqYDxvtCtfrBKX/x4/lq8mWMiJBx5HYP4OAiAXI6FKAvQKpmUSXARXC9o0frUxL8f0PUqEvBI7kE8gEw==", + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "oISIDjSsZ2FizYouH3Q76v65kLh92p6y" + } + }, + { + "signature": "MEUCIQC9E5tV6Spngi5mBnmeM8YGbpdO1NGstviwHMiyA5Jw+wIgIGbBcAbRYVYkFabO3EytavLWSZHi3H5QOs6HsXtPOlg=", + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRUUZIWTNYRHdycVBWTi80S3pXeWlXakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCR012bHVqWGgyR0kKS2E1TS9WZjE1amJPTWJMSWlPR3ZYQS9qRmMxdmdJYkFLQTVqUWJITHdsVFc4QndUZnk0T3ZIVEZNakJXYWJaRgp0UkJ1eVFJbFhTNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSVBDc2VkeGN0R1dUaWx0dkhacThkY2drNW15bGNuTTdYbVZrdXRyTUN6cEJNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUhudk1TUWhRZlNIbGljSUtCTGpqWFBGaWk1SzRmK2pwZ2c1ODg2VnE4SURBaUFPVVcyKwpjQjJoUHR2TDFqYmJ3YlRiZC9nd1g0OXR6VXFNRnFMTm0vQ0lBUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org2MSP" + }, + "nonce": "C0ejE+eOkq5+h5mr2W1v7ot7GobZC3uK" + } + }, + { + "signature": "MEUCIQDZmUY0yABlkTGnAhi/cizj60ZmobXuK7qTZyOjOnVKCgIgMDe9+rnR0oFJs6JyBV/W57wkvAE9yYiEECDHl+YN1us=", + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "gKBjNarMInxTynL2TjgH/R9nj4hr+q3S" + } + } + ] + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:44:17Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 2, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "hZaXF219LaLAtczsWX4Fg1Fb9uDIKUaV" + } + } + }, + "signature": "MEQCIGjqqY5WYGLXxHxkbOd1uBDxuZmsI2SoCDuaNIFxz71PAiAtzSVviihi3dqvo8EgKTCNJjBO/VLy2SZQKlUIe4fN1A==" + } + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:44:17Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 1, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNIakNDQWNXZ0F3SUJBZ0lRTkRiNkIwWXplSlY1bU1Hd29LOGo5VEFLQmdncWhrak9QUVFEQWpCcE1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4RnpBVkJnTlZCQU1URG1OaExtVjRZVzF3CmJHVXVZMjl0TUI0WERUSXlNRGd4TWpFNE16VXdNRm9YRFRNeU1EZ3dPVEU0TXpVd01Gb3dhekVMTUFrR0ExVUUKQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJsegpZMjh4RURBT0JnTlZCQXNUQjI5eVpHVnlaWEl4SFRBYkJnTlZCQU1URkc5eVpHVnlaWEl3TG1WNFlXMXdiR1V1ClkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVWcUlFaEp4Q256bzlPSE4vMW9rQUdpTGgKbGZScFNMQzlncStFRGxGbDhmV05jMis0NUl0RGdxK1cwRzdnU1RlQTZ0TEppcUpYN2dqWURJWWhWUkRRUUtOTgpNRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqQkNRd0lvQWd0TUIzCnFWYU9tTWVheVBaSzk3ekFEWkVkbGFxV1BOMjZjM0xhanUyU0tYY3dDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWcKQjVzWS9MM2dVSlp2aUY2TmtIeEF2SFFhT3l4QXBuRXJJdWJndEhBYm55b0NJSDNwcTZUVTBweXppd1JUb1k0LwoyeVFPVkFwWndsREJyK1BmY1NaN1gvNjUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "mspid": "OrdererMSP" + }, + "nonce": "wCN1eVMFH1zw2xrJYJbPdaZubp9x7gn+" + } + } + }, + "signature": "MEUCIQCn00zNnyZQ938sY1TkPjJ+k47nr+rJ/nujjh9ML3wXWQIgBMjfseMkTaXe8CLg5tPKgqL+K4vFjWLsTZP8P/95b28=" + } + ] + }, + "header": { + "data_hash": "3KRy1F/OE8El6dF0OoIMtbULWses/MhD3ahi7yOGBSI=", + "number": "9", + "previous_hash": "zCOeNhC7BFZ3Wffd5N0ofZiiGzd9KGlJCG6nBeNOMgM=" + }, + "metadata": { + "metadata": [ + "ChEKAggJEgsKCQoDAQIDEAQYDRKSBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhgdnW/f/raB3oRe31/12tHLrmH993o16ZYSRzBFAiEA7yZvIeQw6e8jpL9GBsTGaNdo/gNUd1+rWwHcDq1y3JwCIBSJcp4gMVL2EfFhik/nhK4Vdwkes+udP3GS9hHiaGrm", + "CgIICQ==", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_9.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_9.block.json-flat.json new file mode 100644 index 00000000..312d1599 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_9.block.json-flat.json @@ -0,0 +1,527 @@ +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.value.anchor_peers[0].host=peer0.org1.example.com +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.value.anchor_peers[0].port=7051 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.name=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs\n9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E\nAwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf\nJe855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.version=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.value.anchor_peers[0].host=peer0.org2.example.com +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.value.anchor_peers[0].port=7051 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.name=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr\nce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E\nAwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP\n1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.version=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.name=Org3MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVjCCAf2gAwIBAgIQa2Xf2Eq7zQsKR/+6IdAQmTAKBggqhkjOPQQDAjB2MQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz\nY2Eub3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1\nMDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH\nEw1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMR8wHQYD\nVQQDExZ0bHNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D\nAQcDQgAEOMKX8N5yt3y5TA6nBWDnCibo7Shoi2/4IVK0X3vFzrHSjASfuJ/Zbnbr\ndlSh9D2jtKBxxasSQr7r9xu54r2+M6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud\nJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud\nDgQiBCCt87/QSqHqav9ZLX4AKFkUKNTYXuNdUh2ph9CQWqh0mTAKBggqhkjOPQQD\nAgNHADBEAiAN1q7E7lBjCDwuRK9j3Ay6hA7Oqpp7PSv5IASOrbBRDwIgJTsvt/BI\nx3XxOmRdTlmF6XJrj1/pqOE2sT0pm22UM1s=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/CommitChaincodeDefinition.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/QueryChaincodeDefinition.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/QueryNamespaceDefinitions.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/GetConfigBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/GetConfigTree.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/SimulateConfigTreeUpdate.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.event/Block.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.event/FilteredBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/ChaincodeExists.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetChaincodeData.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetDeploymentSpec.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetInstantiatedChaincodes.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.peer/ChaincodeToChaincode.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.peer/Propose.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByHash.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByNumber.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByTxID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetChainInfo.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetTransactionByID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.version=2 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.name=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt\ncGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/\nQdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ\ndp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw\n+pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG\nQNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV\nmrwsb1hY\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.absolute_max_bytes=10485760 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.max_message_count=500 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.preferred_max_bytes=2097152 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.value.timeout=2s +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.value=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].host=orderer0.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].host=orderer1.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].host=orderer2.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.election_tick=10 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.heartbeat_tick=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.max_inflight_blocks=5 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.snapshot_interval_size=20971520 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.tick_interval=500ms +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.state=STATE_NORMAL +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.type=etcdraft +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.version=0 +.data.data[0].payload.data.config.channel_group.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.value.width=4294967295 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.version=0 +.data.data[0].payload.data.config.channel_group.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.values.Consortium.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Consortium.value.name=SampleConsortium +.data.data[0].payload.data.config.channel_group.values.Consortium.version=0 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.value.name=SHA256 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.version=0 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.version=0 +.data.data[0].payload.data.config.channel_group.version=0 +.data.data[0].payload.data.config.sequence=4 +.data.data[0].payload.data.last_update.payload.data.config_update.channel_id=businesschannel +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Admins.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Admins.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Admins.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Endorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Endorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Endorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.LifecycleEndorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.LifecycleEndorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.LifecycleEndorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Readers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Readers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Readers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Writers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Writers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Writers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.ACLs.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.ACLs.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.ACLs.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.Capabilities.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.Capabilities.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.Capabilities.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.name=Org3MSP +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVjCCAf2gAwIBAgIQa2Xf2Eq7zQsKR/+6IdAQmTAKBggqhkjOPQQDAjB2MQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz\nY2Eub3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1\nMDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH\nEw1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMR8wHQYD\nVQQDExZ0bHNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D\nAQcDQgAEOMKX8N5yt3y5TA6nBWDnCibo7Shoi2/4IVK0X3vFzrHSjASfuJ/Zbnbr\ndlSh9D2jtKBxxasSQr7r9xu54r2+M6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud\nJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud\nDgQiBCCt87/QSqHqav9ZLX4AKFkUKNTYXuNdUh2ph9CQWqh0mTAKBggqhkjOPQQD\nAgNHADBEAiAN1q7E7lBjCDwuRK9j3Ay6hA7Oqpp7PSv5IASOrbBRDwIgJTsvt/BI\nx3XxOmRdTlmF6XJrj1/pqOE2sT0pm22UM1s=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.type=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Admins.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Admins.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Admins.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Endorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Endorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Endorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.LifecycleEndorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.LifecycleEndorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.LifecycleEndorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Readers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Readers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Readers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Writers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Writers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Writers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.Capabilities.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.Capabilities.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.Capabilities.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.version=2 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.version=0 +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature=MEQCIEcHSmIgbjKqYDxvtCtfrBKX/x4/lq8mWMiJBx5HYP4OAiAXI6FKAvQKpmUSXARXC9o0frUxL8f0PUqEvBI7kE8gEw== +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.mspid=Org1MSP +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.nonce=oISIDjSsZ2FizYouH3Q76v65kLh92p6y +.data.data[0].payload.data.last_update.payload.data.signatures[1].signature=MEUCIQC9E5tV6Spngi5mBnmeM8YGbpdO1NGstviwHMiyA5Jw+wIgIGbBcAbRYVYkFabO3EytavLWSZHi3H5QOs6HsXtPOlg= +.data.data[0].payload.data.last_update.payload.data.signatures[1].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQQFHY3XDwrqPVN/4KzWyiWjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMi5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGMvlujXh2GI\nKa5M/Vf15jbOMbLIiOGvXA/jFc1vgIbAKA5jQbHLwlTW8BwTfy4OvHTFMjBWabZF\ntRBuyQIlXS6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIPCsedxctGWTiltvHZq8dcgk5mylcnM7XmVkutrMCzpBMAoGCCqGSM49\nBAMCA0cAMEQCIHnvMSQhQfSHlicIKBLjjXPFii5K4f+jpgg5886Vq8IDAiAOUW2+\ncB2hPtvL1jbbwbTbd/gwX49tzUqMFqLNm/CIAQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.signatures[1].signature_header.creator.mspid=Org2MSP +.data.data[0].payload.data.last_update.payload.data.signatures[1].signature_header.nonce=C0ejE+eOkq5+h5mr2W1v7ot7GobZC3uK +.data.data[0].payload.data.last_update.payload.data.signatures[2].signature=MEUCIQDZmUY0yABlkTGnAhi/cizj60ZmobXuK7qTZyOjOnVKCgIgMDe9+rnR0oFJs6JyBV/W57wkvAE9yYiEECDHl+YN1us= +.data.data[0].payload.data.last_update.payload.data.signatures[2].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.signatures[2].signature_header.creator.mspid=Org1MSP +.data.data[0].payload.data.last_update.payload.data.signatures[2].signature_header.nonce=gKBjNarMInxTynL2TjgH/R9nj4hr+q3S +.data.data[0].payload.data.last_update.payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.data.last_update.payload.header.channel_header.epoch=0 +.data.data[0].payload.data.last_update.payload.header.channel_header.extension=None +.data.data[0].payload.data.last_update.payload.header.channel_header.timestamp=2022-08-12T18:44:17Z +.data.data[0].payload.data.last_update.payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.data.last_update.payload.header.channel_header.tx_id= +.data.data[0].payload.data.last_update.payload.header.channel_header.type=2 +.data.data[0].payload.data.last_update.payload.header.channel_header.version=0 +.data.data[0].payload.data.last_update.payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.header.signature_header.creator.mspid=Org1MSP +.data.data[0].payload.data.last_update.payload.header.signature_header.nonce=hZaXF219LaLAtczsWX4Fg1Fb9uDIKUaV +.data.data[0].payload.data.last_update.signature=MEQCIGjqqY5WYGLXxHxkbOd1uBDxuZmsI2SoCDuaNIFxz71PAiAtzSVviihi3dqvo8EgKTCNJjBO/VLy2SZQKlUIe4fN1A== +.data.data[0].payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension=None +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:44:17Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id= +.data.data[0].payload.header.channel_header.type=1 +.data.data[0].payload.header.channel_header.version=0 +.data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICHjCCAcWgAwIBAgIQNDb6B0YzeJV5mMGwoK8j9TAKBggqhkjOPQQDAjBpMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w\nbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowazELMAkGA1UE\nBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz\nY28xEDAOBgNVBAsTB29yZGVyZXIxHTAbBgNVBAMTFG9yZGVyZXIwLmV4YW1wbGUu\nY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEVqIEhJxCnzo9OHN/1okAGiLh\nlfRpSLC9gq+EDlFl8fWNc2+45ItDgq+W0G7gSTeA6tLJiqJX7gjYDIYhVRDQQKNN\nMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgtMB3\nqVaOmMeayPZK97zADZEdlaqWPN26c3Laju2SKXcwCgYIKoZIzj0EAwIDRwAwRAIg\nB5sY/L3gUJZviF6NkHxAvHQaOyxApnErIubgtHAbnyoCIH3pq6TU0pyziwRToY4/\n2yQOVApZwlDBr+PfcSZ7X/65\n-----END CERTIFICATE-----\n') +.data.data[0].payload.header.signature_header.creator.mspid=OrdererMSP +.data.data[0].payload.header.signature_header.nonce=wCN1eVMFH1zw2xrJYJbPdaZubp9x7gn+ +.data.data[0].signature=MEUCIQCn00zNnyZQ938sY1TkPjJ+k47nr+rJ/nujjh9ML3wXWQIgBMjfseMkTaXe8CLg5tPKgqL+K4vFjWLsTZP8P/95b28= +.header.data_hash=3KRy1F/OE8El6dF0OoIMtbULWses/MhD3ahi7yOGBSI= +.header.number=9 +.header.previous_hash=zCOeNhC7BFZ3Wffd5N0ofZiiGzd9KGlJCG6nBeNOMgM= +.metadata.metadata[0]=ChEKAggJEgsKCQoDAQIDEAQYDRKSBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhgdnW/f/raB3oRe31/12tHLrmH993o16ZYSRzBFAiEA7yZvIeQw6e8jpL9GBsTGaNdo/gNUd1+rWwHcDq1y3JwCIBSJcp4gMVL2EfFhik/nhK4Vdwkes+udP3GS9hHiaGrm +.metadata.metadata[1]=CgIICQ== +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_config.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_config.block new file mode 100644 index 0000000000000000000000000000000000000000..7ac1e7fb21c365ae0e4d29c1319651d9277efcb6 GIT binary patch literal 41462 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 literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_config.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_config.block.json new file mode 100644 index 00000000..426882b0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_config.block.json @@ -0,0 +1,1445 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "config": { + "channel_group": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org1.example.com", + "port": 7051 + } + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org2.example.com", + "port": 7051 + } + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "1" + }, + "Org3MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "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": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org3MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWakNDQWYyZ0F3SUJBZ0lRYTJYZjJFcTd6UXNLUi8rNklkQVFtVEFLQmdncWhrak9QUVFEQWpCMk1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWZNQjBHQTFVRUF4TVdkR3h6ClkyRXViM0puTXk1bGVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTEKTURCYU1IWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSApFdzFUWVc0Z1JuSmhibU5wYzJOdk1Sa3dGd1lEVlFRS0V4QnZjbWN6TG1WNFlXMXdiR1V1WTI5dE1SOHdIUVlEClZRUURFeFowYkhOallTNXZjbWN6TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMEQKQVFjRFFnQUVPTUtYOE41eXQzeTVUQTZuQldEbkNpYm83U2hvaTIvNElWSzBYM3ZGenJIU2pBU2Z1Si9aYm5icgpkbFNoOUQyanRLQnh4YXNTUXI3cjl4dTU0cjIrTTZOdE1Hc3dEZ1lEVlIwUEFRSC9CQVFEQWdHbU1CMEdBMVVkCkpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUNrR0ExVWQKRGdRaUJDQ3Q4Ny9RU3FIcWF2OVpMWDRBS0ZrVUtOVFlYdU5kVWgycGg5Q1FXcWgwbVRBS0JnZ3Foa2pPUFFRRApBZ05IQURCRUFpQU4xcTdFN2xCakNEd3VSSzlqM0F5NmhBN09xcHA3UFN2NUlBU09yYkJSRHdJZ0pUc3Z0L0JJCngzWHhPbVJkVGxtRjZYSnJqMS9wcU9FMnNUMHBtMjJVTTFzPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": "MAJORITY", + "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": { + "ACLs": { + "mod_policy": "Admins", + "value": { + "acls": { + "_lifecycle/CommitChaincodeDefinition": { + "policy_ref": "/Channel/Application/Writers" + }, + "_lifecycle/QueryChaincodeDefinition": { + "policy_ref": "/Channel/Application/Readers" + }, + "_lifecycle/QueryNamespaceDefinitions": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigTree": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/SimulateConfigTreeUpdate": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/Block": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/FilteredBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/ChaincodeExists": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetChaincodeData": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetDeploymentSpec": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetInstantiatedChaincodes": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/ChaincodeToChaincode": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/Propose": { + "policy_ref": "/Channel/Application/Writers" + }, + "qscc/GetBlockByHash": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByNumber": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByTxID": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetChainInfo": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetTransactionByID": { + "policy_ref": "/Channel/Application/Readers" + } + } + }, + "version": "0" + }, + "Capabilities": { + "mod_policy": "Admins", + "value": { + "capabilities": { + "V2_0": {} + } + }, + "version": "0" + } + }, + "version": "2" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "Consortium": { + "mod_policy": "Admins", + "value": { + "name": "SampleConsortium" + }, + "version": "0" + }, + "HashingAlgorithm": { + "mod_policy": "Admins", + "value": { + "name": "SHA256" + }, + "version": "0" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "4" + }, + "last_update": { + "payload": { + "data": { + "config_update": { + "channel_id": "businesschannel", + "isolated_data": {}, + "read_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + } + }, + "mod_policy": "", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "LifecycleEndorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "ACLs": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "Capabilities": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + }, + "write_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org3MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "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": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org3MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWakNDQWYyZ0F3SUJBZ0lRYTJYZjJFcTd6UXNLUi8rNklkQVFtVEFLQmdncWhrak9QUVFEQWpCMk1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWZNQjBHQTFVRUF4TVdkR3h6ClkyRXViM0puTXk1bGVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTEKTURCYU1IWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSApFdzFUWVc0Z1JuSmhibU5wYzJOdk1Sa3dGd1lEVlFRS0V4QnZjbWN6TG1WNFlXMXdiR1V1WTI5dE1SOHdIUVlEClZRUURFeFowYkhOallTNXZjbWN6TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMEQKQVFjRFFnQUVPTUtYOE41eXQzeTVUQTZuQldEbkNpYm83U2hvaTIvNElWSzBYM3ZGenJIU2pBU2Z1Si9aYm5icgpkbFNoOUQyanRLQnh4YXNTUXI3cjl4dTU0cjIrTTZOdE1Hc3dEZ1lEVlIwUEFRSC9CQVFEQWdHbU1CMEdBMVVkCkpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUNrR0ExVWQKRGdRaUJDQ3Q4Ny9RU3FIcWF2OVpMWDRBS0ZrVUtOVFlYdU5kVWgycGg5Q1FXcWgwbVRBS0JnZ3Foa2pPUFFRRApBZ05IQURCRUFpQU4xcTdFN2xCakNEd3VSSzlqM0F5NmhBN09xcHA3UFN2NUlBU09yYkJSRHdJZ0pUc3Z0L0JJCngzWHhPbVJkVGxtRjZYSnJqMS9wcU9FMnNUMHBtMjJVTTFzPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "LifecycleEndorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "ACLs": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "Capabilities": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "2" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + } + }, + "signatures": [ + { + "signature": "MEQCIEcHSmIgbjKqYDxvtCtfrBKX/x4/lq8mWMiJBx5HYP4OAiAXI6FKAvQKpmUSXARXC9o0frUxL8f0PUqEvBI7kE8gEw==", + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "oISIDjSsZ2FizYouH3Q76v65kLh92p6y" + } + }, + { + "signature": "MEUCIQC9E5tV6Spngi5mBnmeM8YGbpdO1NGstviwHMiyA5Jw+wIgIGbBcAbRYVYkFabO3EytavLWSZHi3H5QOs6HsXtPOlg=", + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRUUZIWTNYRHdycVBWTi80S3pXeWlXakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCR012bHVqWGgyR0kKS2E1TS9WZjE1amJPTWJMSWlPR3ZYQS9qRmMxdmdJYkFLQTVqUWJITHdsVFc4QndUZnk0T3ZIVEZNakJXYWJaRgp0UkJ1eVFJbFhTNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSVBDc2VkeGN0R1dUaWx0dkhacThkY2drNW15bGNuTTdYbVZrdXRyTUN6cEJNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUhudk1TUWhRZlNIbGljSUtCTGpqWFBGaWk1SzRmK2pwZ2c1ODg2VnE4SURBaUFPVVcyKwpjQjJoUHR2TDFqYmJ3YlRiZC9nd1g0OXR6VXFNRnFMTm0vQ0lBUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org2MSP" + }, + "nonce": "C0ejE+eOkq5+h5mr2W1v7ot7GobZC3uK" + } + }, + { + "signature": "MEUCIQDZmUY0yABlkTGnAhi/cizj60ZmobXuK7qTZyOjOnVKCgIgMDe9+rnR0oFJs6JyBV/W57wkvAE9yYiEECDHl+YN1us=", + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "gKBjNarMInxTynL2TjgH/R9nj4hr+q3S" + } + } + ] + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:44:17Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 2, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "hZaXF219LaLAtczsWX4Fg1Fb9uDIKUaV" + } + } + }, + "signature": "MEQCIGjqqY5WYGLXxHxkbOd1uBDxuZmsI2SoCDuaNIFxz71PAiAtzSVviihi3dqvo8EgKTCNJjBO/VLy2SZQKlUIe4fN1A==" + } + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:44:17Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 1, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNIakNDQWNXZ0F3SUJBZ0lRTkRiNkIwWXplSlY1bU1Hd29LOGo5VEFLQmdncWhrak9QUVFEQWpCcE1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4RnpBVkJnTlZCQU1URG1OaExtVjRZVzF3CmJHVXVZMjl0TUI0WERUSXlNRGd4TWpFNE16VXdNRm9YRFRNeU1EZ3dPVEU0TXpVd01Gb3dhekVMTUFrR0ExVUUKQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJsegpZMjh4RURBT0JnTlZCQXNUQjI5eVpHVnlaWEl4SFRBYkJnTlZCQU1URkc5eVpHVnlaWEl3TG1WNFlXMXdiR1V1ClkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVWcUlFaEp4Q256bzlPSE4vMW9rQUdpTGgKbGZScFNMQzlncStFRGxGbDhmV05jMis0NUl0RGdxK1cwRzdnU1RlQTZ0TEppcUpYN2dqWURJWWhWUkRRUUtOTgpNRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqQkNRd0lvQWd0TUIzCnFWYU9tTWVheVBaSzk3ekFEWkVkbGFxV1BOMjZjM0xhanUyU0tYY3dDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWcKQjVzWS9MM2dVSlp2aUY2TmtIeEF2SFFhT3l4QXBuRXJJdWJndEhBYm55b0NJSDNwcTZUVTBweXppd1JUb1k0LwoyeVFPVkFwWndsREJyK1BmY1NaN1gvNjUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "mspid": "OrdererMSP" + }, + "nonce": "wCN1eVMFH1zw2xrJYJbPdaZubp9x7gn+" + } + } + }, + "signature": "MEUCIQCn00zNnyZQ938sY1TkPjJ+k47nr+rJ/nujjh9ML3wXWQIgBMjfseMkTaXe8CLg5tPKgqL+K4vFjWLsTZP8P/95b28=" + } + ] + }, + "header": { + "data_hash": "3KRy1F/OE8El6dF0OoIMtbULWses/MhD3ahi7yOGBSI=", + "number": "9", + "previous_hash": "zCOeNhC7BFZ3Wffd5N0ofZiiGzd9KGlJCG6nBeNOMgM=" + }, + "metadata": { + "metadata": [ + "ChEKAggJEgsKCQoDAQIDEAQYDRKSBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhgdnW/f/raB3oRe31/12tHLrmH993o16ZYSRzBFAiEA7yZvIeQw6e8jpL9GBsTGaNdo/gNUd1+rWwHcDq1y3JwCIBSJcp4gMVL2EfFhik/nhK4Vdwkes+udP3GS9hHiaGrm", + "CgIICQ==", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_config.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_config.block.json-flat.json new file mode 100644 index 00000000..312d1599 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/businesschannel_config.block.json-flat.json @@ -0,0 +1,527 @@ +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.value.anchor_peers[0].host=peer0.org1.example.com +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.value.anchor_peers[0].port=7051 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.AnchorPeers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.name=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs\n9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E\nAwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf\nJe855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org1MSP.version=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.value.anchor_peers[0].host=peer0.org2.example.com +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.value.anchor_peers[0].port=7051 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.AnchorPeers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.name=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr\nce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E\nAwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP\n1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org2MSP.version=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.name=Org3MSP +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVjCCAf2gAwIBAgIQa2Xf2Eq7zQsKR/+6IdAQmTAKBggqhkjOPQQDAjB2MQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz\nY2Eub3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1\nMDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH\nEw1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMR8wHQYD\nVQQDExZ0bHNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D\nAQcDQgAEOMKX8N5yt3y5TA6nBWDnCibo7Shoi2/4IVK0X3vFzrHSjASfuJ/Zbnbr\ndlSh9D2jtKBxxasSQr7r9xu54r2+M6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud\nJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud\nDgQiBCCt87/QSqHqav9ZLX4AKFkUKNTYXuNdUh2ph9CQWqh0mTAKBggqhkjOPQQD\nAgNHADBEAiAN1q7E7lBjCDwuRK9j3Ay6hA7Oqpp7PSv5IASOrbBRDwIgJTsvt/BI\nx3XxOmRdTlmF6XJrj1/pqOE2sT0pm22UM1s=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.groups.Org3MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Application.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/CommitChaincodeDefinition.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/QueryChaincodeDefinition.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/QueryNamespaceDefinitions.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/GetConfigBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/GetConfigTree.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/SimulateConfigTreeUpdate.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.event/Block.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.event/FilteredBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/ChaincodeExists.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetChaincodeData.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetDeploymentSpec.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetInstantiatedChaincodes.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.peer/ChaincodeToChaincode.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.peer/Propose.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByHash.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByNumber.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByTxID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetChainInfo.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetTransactionByID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.config.channel_group.groups.Application.values.ACLs.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Application.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Application.version=2 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.name=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt\ncGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/\nQdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ\ndp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw\n+pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG\nQNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV\nmrwsb1hY\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.absolute_max_bytes=10485760 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.max_message_count=500 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.preferred_max_bytes=2097152 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.value.timeout=2s +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.value=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].host=orderer0.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].host=orderer1.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].host=orderer2.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.election_tick=10 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.heartbeat_tick=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.max_inflight_blocks=5 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.snapshot_interval_size=20971520 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.tick_interval=500ms +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.state=STATE_NORMAL +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.type=etcdraft +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.version=0 +.data.data[0].payload.data.config.channel_group.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.value.width=4294967295 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.version=0 +.data.data[0].payload.data.config.channel_group.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.values.Consortium.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Consortium.value.name=SampleConsortium +.data.data[0].payload.data.config.channel_group.values.Consortium.version=0 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.value.name=SHA256 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.version=0 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.version=0 +.data.data[0].payload.data.config.channel_group.version=0 +.data.data[0].payload.data.config.sequence=4 +.data.data[0].payload.data.last_update.payload.data.config_update.channel_id=businesschannel +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Admins.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Admins.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Admins.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Endorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Endorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Endorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.LifecycleEndorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.LifecycleEndorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.LifecycleEndorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Readers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Readers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Readers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Writers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Writers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.policies.Writers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.ACLs.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.ACLs.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.ACLs.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.Capabilities.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.Capabilities.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.values.Capabilities.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.groups.Application.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.read_set.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.version=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Admins.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Readers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org3MSP +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.policies.Writers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.name=Org3MSP +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfegAwIBAgIQAjjoj7i1G7r9XdFCC65wgjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMRwwGgYDVQQD\nExNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nkzUzZ4La7TXzziWSjLvHDpUz6wnR0My76Xzl1XCuxvRHj9qe91nrAslDXWp8t/oo\n3YVCecuoDMH7wjkZ1lbRVKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG\nCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCAU\n68Oo92AGN9GBHS6YgGrukQ7/rtJ67lTiWWQbBdkPLzAKBggqhkjOPQQDAgNJADBG\nAiEAia2xO0+1mvRDu1axBcPSq9tbRFcAG6V5xKFwMt6SmbICIQCZMgFzwClXs7z1\n5SS7jpkNWEYFwq5YbDEaWeRDe4Vyiw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVjCCAf2gAwIBAgIQa2Xf2Eq7zQsKR/+6IdAQmTAKBggqhkjOPQQDAjB2MQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMy5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz\nY2Eub3JnMy5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1\nMDBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH\nEw1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmczLmV4YW1wbGUuY29tMR8wHQYD\nVQQDExZ0bHNjYS5vcmczLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D\nAQcDQgAEOMKX8N5yt3y5TA6nBWDnCibo7Shoi2/4IVK0X3vFzrHSjASfuJ/Zbnbr\ndlSh9D2jtKBxxasSQr7r9xu54r2+M6NtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1Ud\nJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1Ud\nDgQiBCCt87/QSqHqav9ZLX4AKFkUKNTYXuNdUh2ph9CQWqh0mTAKBggqhkjOPQQD\nAgNHADBEAiAN1q7E7lBjCDwuRK9j3Ay6hA7Oqpp7PSv5IASOrbBRDwIgJTsvt/BI\nx3XxOmRdTlmF6XJrj1/pqOE2sT0pm22UM1s=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.value.type=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.values.MSP.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org3MSP.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.mod_policy=Admins +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Admins.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Admins.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Admins.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Endorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Endorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Endorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.LifecycleEndorsement.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.LifecycleEndorsement.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.LifecycleEndorsement.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Readers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Readers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Readers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Writers.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Writers.policy=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Writers.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.Capabilities.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.Capabilities.value=None +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.Capabilities.version=0 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.version=2 +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.mod_policy= +.data.data[0].payload.data.last_update.payload.data.config_update.write_set.version=0 +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature=MEQCIEcHSmIgbjKqYDxvtCtfrBKX/x4/lq8mWMiJBx5HYP4OAiAXI6FKAvQKpmUSXARXC9o0frUxL8f0PUqEvBI7kE8gEw== +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.mspid=Org1MSP +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.nonce=oISIDjSsZ2FizYouH3Q76v65kLh92p6y +.data.data[0].payload.data.last_update.payload.data.signatures[1].signature=MEUCIQC9E5tV6Spngi5mBnmeM8YGbpdO1NGstviwHMiyA5Jw+wIgIGbBcAbRYVYkFabO3EytavLWSZHi3H5QOs6HsXtPOlg= +.data.data[0].payload.data.last_update.payload.data.signatures[1].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQQFHY3XDwrqPVN/4KzWyiWjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMi5leGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGMvlujXh2GI\nKa5M/Vf15jbOMbLIiOGvXA/jFc1vgIbAKA5jQbHLwlTW8BwTfy4OvHTFMjBWabZF\ntRBuyQIlXS6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIPCsedxctGWTiltvHZq8dcgk5mylcnM7XmVkutrMCzpBMAoGCCqGSM49\nBAMCA0cAMEQCIHnvMSQhQfSHlicIKBLjjXPFii5K4f+jpgg5886Vq8IDAiAOUW2+\ncB2hPtvL1jbbwbTbd/gwX49tzUqMFqLNm/CIAQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.signatures[1].signature_header.creator.mspid=Org2MSP +.data.data[0].payload.data.last_update.payload.data.signatures[1].signature_header.nonce=C0ejE+eOkq5+h5mr2W1v7ot7GobZC3uK +.data.data[0].payload.data.last_update.payload.data.signatures[2].signature=MEUCIQDZmUY0yABlkTGnAhi/cizj60ZmobXuK7qTZyOjOnVKCgIgMDe9+rnR0oFJs6JyBV/W57wkvAE9yYiEECDHl+YN1us= +.data.data[0].payload.data.last_update.payload.data.signatures[2].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.data.signatures[2].signature_header.creator.mspid=Org1MSP +.data.data[0].payload.data.last_update.payload.data.signatures[2].signature_header.nonce=gKBjNarMInxTynL2TjgH/R9nj4hr+q3S +.data.data[0].payload.data.last_update.payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.data.last_update.payload.header.channel_header.epoch=0 +.data.data[0].payload.data.last_update.payload.header.channel_header.extension=None +.data.data[0].payload.data.last_update.payload.header.channel_header.timestamp=2022-08-12T18:44:17Z +.data.data[0].payload.data.last_update.payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.data.last_update.payload.header.channel_header.tx_id= +.data.data[0].payload.data.last_update.payload.header.channel_header.type=2 +.data.data[0].payload.data.last_update.payload.header.channel_header.version=0 +.data.data[0].payload.data.last_update.payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.last_update.payload.header.signature_header.creator.mspid=Org1MSP +.data.data[0].payload.data.last_update.payload.header.signature_header.nonce=hZaXF219LaLAtczsWX4Fg1Fb9uDIKUaV +.data.data[0].payload.data.last_update.signature=MEQCIGjqqY5WYGLXxHxkbOd1uBDxuZmsI2SoCDuaNIFxz71PAiAtzSVviihi3dqvo8EgKTCNJjBO/VLy2SZQKlUIe4fN1A== +.data.data[0].payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension=None +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:44:17Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id= +.data.data[0].payload.header.channel_header.type=1 +.data.data[0].payload.header.channel_header.version=0 +.data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICHjCCAcWgAwIBAgIQNDb6B0YzeJV5mMGwoK8j9TAKBggqhkjOPQQDAjBpMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w\nbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowazELMAkGA1UE\nBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz\nY28xEDAOBgNVBAsTB29yZGVyZXIxHTAbBgNVBAMTFG9yZGVyZXIwLmV4YW1wbGUu\nY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEVqIEhJxCnzo9OHN/1okAGiLh\nlfRpSLC9gq+EDlFl8fWNc2+45ItDgq+W0G7gSTeA6tLJiqJX7gjYDIYhVRDQQKNN\nMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgtMB3\nqVaOmMeayPZK97zADZEdlaqWPN26c3Laju2SKXcwCgYIKoZIzj0EAwIDRwAwRAIg\nB5sY/L3gUJZviF6NkHxAvHQaOyxApnErIubgtHAbnyoCIH3pq6TU0pyziwRToY4/\n2yQOVApZwlDBr+PfcSZ7X/65\n-----END CERTIFICATE-----\n') +.data.data[0].payload.header.signature_header.creator.mspid=OrdererMSP +.data.data[0].payload.header.signature_header.nonce=wCN1eVMFH1zw2xrJYJbPdaZubp9x7gn+ +.data.data[0].signature=MEUCIQCn00zNnyZQ938sY1TkPjJ+k47nr+rJ/nujjh9ML3wXWQIgBMjfseMkTaXe8CLg5tPKgqL+K4vFjWLsTZP8P/95b28= +.header.data_hash=3KRy1F/OE8El6dF0OoIMtbULWses/MhD3ahi7yOGBSI= +.header.number=9 +.header.previous_hash=zCOeNhC7BFZ3Wffd5N0ofZiiGzd9KGlJCG6nBeNOMgM= +.metadata.metadata[0]=ChEKAggJEgsKCQoDAQIDEAQYDRKSBwrGBgqpBgoKT3JkZXJlck1TUBKaBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSGpDQ0FjV2dBd0lCQWdJUU5EYjZCMFl6ZUpWNW1NR3dvSzhqOVRBS0JnZ3Foa2pPUFFRREFqQnBNUXN3CkNRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadmNtNXBZVEVXTUJRR0ExVUVCeE1OVTJGdUlFWnkKWVc1amFYTmpiekVVTUJJR0ExVUVDaE1MWlhoaGJYQnNaUzVqYjIweEZ6QVZCZ05WQkFNVERtTmhMbVY0WVcxdwpiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YXpFTE1Ba0dBMVVFCkJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdVkybHoKWTI4eEVEQU9CZ05WQkFzVEIyOXlaR1Z5WlhJeEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdQpZMjl0TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVnFJRWhKeENuem85T0hOLzFva0FHaUxoCmxmUnBTTEM5Z3ErRURsRmw4ZldOYzIrNDVJdERncStXMEc3Z1NUZUE2dExKaXFKWDdnallESVloVlJEUVFLTk4KTUVzd0RnWURWUjBQQVFIL0JBUURBZ2VBTUF3R0ExVWRFd0VCL3dRQ01BQXdLd1lEVlIwakJDUXdJb0FndE1CMwpxVmFPbU1lYXlQWks5N3pBRFpFZGxhcVdQTjI2YzNMYWp1MlNLWGN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnCkI1c1kvTDNnVUpadmlGNk5rSHhBdkhRYU95eEFwbkVySXViZ3RIQWJueW9DSUgzcHE2VFUwcHl6aXdSVG9ZNC8KMnlRT1ZBcFp3bERCcitQZmNTWjdYLzY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhgdnW/f/raB3oRe31/12tHLrmH993o16ZYSRzBFAiEA7yZvIeQw6e8jpL9GBsTGaNdo/gNUd1+rWwHcDq1y3JwCIBSJcp4gMVL2EfFhik/nhK4Vdwkes+udP3GS9hHiaGrm +.metadata.metadata[1]=CgIICQ== +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta.json new file mode 100644 index 00000000..23673a89 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta.json @@ -0,0 +1,308 @@ +{ + "channel_id": "businesschannel", + "isolated_data": {}, + "read_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + } + }, + "mod_policy": "", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "LifecycleEndorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "ACLs": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "Capabilities": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + }, + "write_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org3MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "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": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org3MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWakNDQWYyZ0F3SUJBZ0lRYTJYZjJFcTd6UXNLUi8rNklkQVFtVEFLQmdncWhrak9QUVFEQWpCMk1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWZNQjBHQTFVRUF4TVdkR3h6ClkyRXViM0puTXk1bGVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTEKTURCYU1IWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSApFdzFUWVc0Z1JuSmhibU5wYzJOdk1Sa3dGd1lEVlFRS0V4QnZjbWN6TG1WNFlXMXdiR1V1WTI5dE1SOHdIUVlEClZRUURFeFowYkhOallTNXZjbWN6TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMEQKQVFjRFFnQUVPTUtYOE41eXQzeTVUQTZuQldEbkNpYm83U2hvaTIvNElWSzBYM3ZGenJIU2pBU2Z1Si9aYm5icgpkbFNoOUQyanRLQnh4YXNTUXI3cjl4dTU0cjIrTTZOdE1Hc3dEZ1lEVlIwUEFRSC9CQVFEQWdHbU1CMEdBMVVkCkpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUNrR0ExVWQKRGdRaUJDQ3Q4Ny9RU3FIcWF2OVpMWDRBS0ZrVUtOVFlYdU5kVWgycGg5Q1FXcWgwbVRBS0JnZ3Foa2pPUFFRRApBZ05IQURCRUFpQU4xcTdFN2xCakNEd3VSSzlqM0F5NmhBN09xcHA3UFN2NUlBU09yYkJSRHdJZ0pUc3Z0L0JJCngzWHhPbVJkVGxtRjZYSnJqMS9wcU9FMnNUMHBtMjJVTTFzPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "LifecycleEndorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "ACLs": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "Capabilities": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "2" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta.pb b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta.pb new file mode 100644 index 0000000000000000000000000000000000000000..4318a634291981e5115cda29783e3fdff8206f9c GIT binary patch literal 5900 zcmeI0O^@3|7{|M%Y?oO|D+>u&goG*~v}{pgZxU|~J& z@ps@OfH-qP;?4mfJ^&J*fCCp^z5-6VyQQVjYSD^Ia!6*Lc^>4X}|KPs8jJ=r? z$HTETn>hjTR2Nu+QbzdBl41M=jf+L#E*}jP4T-&2e*l@PPRFoZj$=qWGG}oYbvj7of~2_ z-}=A|>n6o5!HXTC!>8pn_F)C+eA!zC_=;>I+ zDfeV*5|@UoX=LGGT3_4KV2o8W<>7YPBA1eSF@=h&&KhHTDu+W#USV~T^6A#0$z`aR z|1fV&dll0lQ(NdRO{$(?HBAL~>%#&rlYLXGzSxnUq+Du>&G|se{W1d;Q@UugP#Lm{ z3pp^!yZNBfvS_`Z=boYYt(C}z-Mp60)G}VvwSFFueP)@hRMD?5oH{v+U>vZ0BRoq= z^Eo&*dyF$&&RHzdsXrNzfvxtMa)O08WjAT6qe-WgKerQIxdB-u0O)bhv#6|HJ|U+om0glnhK3z& zQBQ1@A3~wlt7c6;#Ys(@+7crv%mBN5o-#o{rgIWhHI4SeiEMBtpDwDV&2pCEsH{`z zt-bW|W3WYrli9yxgx&&oG!at7{^q+{Yy9$3>Uvx1s4MC$s((p!Wgrdm3wNh7FC z_2=g5BkF&l?)+lCxq>=lBxE_*p!Z+M0~;K%XkMEkt z`oJZAZQSgi$<=jox~}T5HbVwGV?29KYvZ{`l`2xNS?-^%_&gFdA8O~zMrmNr>DT~f4#xUg3BL91VZO@7jC z%DUNK%A@X>3deOuF&5+U^E(niR~8HW3iO~%E@+Mpkk7E`Qf=1#Q@E~;A>CetA>Gkd zRS9bC$VMugN^V1sS4jy;AUo}6?WsD_gDGF@HzJ=bg^M;v#dIj{Cx7gC+wr#J?dEyAJC6$0(}|8QWYdS`r{d>F#OBrR9pZr4FMe+y+&VfW-nbGr zuOi4R$@OF6gTnE>zXaSP3Nf{iayK&RgT1Se%CpMsE8eI`?NX$DwTMqHwczXP$^R$} KUsGwmOzBTA>Lly{ literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta_env.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta_env.json new file mode 100644 index 00000000..278e5eec --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta_env.json @@ -0,0 +1,320 @@ +{ + "payload": { + "header": { + "channel_header": { + "channel_id": "businesschannel", + "type": 2 + } + }, + "data": { + "config_update": { + "channel_id": "businesschannel", + "isolated_data": {}, + "read_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + } + }, + "mod_policy": "", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "LifecycleEndorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "ACLs": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "Capabilities": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + }, + "write_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "1" + }, + "Org3MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "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": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org3MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWakNDQWYyZ0F3SUJBZ0lRYTJYZjJFcTd6UXNLUi8rNklkQVFtVEFLQmdncWhrak9QUVFEQWpCMk1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWZNQjBHQTFVRUF4TVdkR3h6ClkyRXViM0puTXk1bGVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTEKTURCYU1IWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSApFdzFUWVc0Z1JuSmhibU5wYzJOdk1Sa3dGd1lEVlFRS0V4QnZjbWN6TG1WNFlXMXdiR1V1WTI5dE1SOHdIUVlEClZRUURFeFowYkhOallTNXZjbWN6TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMEQKQVFjRFFnQUVPTUtYOE41eXQzeTVUQTZuQldEbkNpYm83U2hvaTIvNElWSzBYM3ZGenJIU2pBU2Z1Si9aYm5icgpkbFNoOUQyanRLQnh4YXNTUXI3cjl4dTU0cjIrTTZOdE1Hc3dEZ1lEVlIwUEFRSC9CQVFEQWdHbU1CMEdBMVVkCkpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUNrR0ExVWQKRGdRaUJDQ3Q4Ny9RU3FIcWF2OVpMWDRBS0ZrVUtOVFlYdU5kVWgycGg5Q1FXcWgwbVRBS0JnZ3Foa2pPUFFRRApBZ05IQURCRUFpQU4xcTdFN2xCakNEd3VSSzlqM0F5NmhBN09xcHA3UFN2NUlBU09yYkJSRHdJZ0pUc3Z0L0JJCngzWHhPbVJkVGxtRjZYSnJqMS9wcU9FMnNUMHBtMjJVTTFzPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Endorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "LifecycleEndorsement": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Readers": { + "mod_policy": "", + "policy": null, + "version": "0" + }, + "Writers": { + "mod_policy": "", + "policy": null, + "version": "0" + } + }, + "values": { + "ACLs": { + "mod_policy": "", + "value": null, + "version": "0" + }, + "Capabilities": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "2" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + } + } + } + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta_env.pb b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/config_delta_env.pb new file mode 100644 index 0000000000000000000000000000000000000000..b063e786aa68f2e52fc75eb939e5fce6dd9c6e90 GIT binary patch literal 8727 zcmeHMYm6IL6>hd+v)rW*ra;>*q)Q;6WJ7Jw`q_ujz4Nwx$2;S($F@MNXY3u%c*bvg z#uHJgsG<)ZDn%khRYMU{e}n=hKq&~QK&TWDm0C(sLw^;C0xAX3N+1e_v3Ijcn^tY4J9CaT-#PbwANU0YUYG}0EX*yd{pu$Y801E<@p(zULD+Y801PwuwSiZbk zqTOD1ttf_~8DAZnss%I1FuIMVm0Ob}8d}K5Qr`uXRHloP#4&EVSnwGI2M>ag0z)C3 zkw~^*RVyRiiFL{fqhcgY=a7fR0?7^qrZNU)HD*;yqNVvv1tWc9aRW=*YPyBZm|f@C zfzEk$))7aV!sr;ar#{fbN||Ja;M9(=&br|-wqO)1f|sLl1kG+*kv|S6BxHcmsPJ*aZ+Q=u^U(}yDXfh%`O5 z;s{Gom)>y5GH$U^;UXQ)V%9MVZ-nl;s-((;sv3in=)uW(qTs*492$4IJdUQI!Eh9{ zId&Nyh6RW?JhF#YsX=lA$W&uER9uh5EG>t%tYGH2Q3-}DR*#GfL4z3>vm}kry0)Sw zk*lnaqqz~Uu-HOsRjaUIAfw?}66{hwZYc`NVi=u-TBBVCg&oG3ZP=5Wx%l;1%Z zwztv(D7Y64>ku;%CGf2g&PxqxJwE@V*FvPx^LX~r_q^%bjQ7_nqBUhF0X8k#Uy zP{|dbBeJnJ7-b`trn#D;)k20_ilzpBp^MpWR&+v?0Hy1$1JgI35$TiBKwReT+qnz_JT~d02DI)?|DUSY%qY zcCTM|>a9UwxD31_Yp&Pzv2NF2IkO0M$n|Qi-kYooF4Uemm|iUXdLQxlzE_6$<9!Qr zrw@@hyfV#Tb&|oMm8FOGfb%EAAMPQ(xrexa&+*CMow2?Ytf0QE*SG2mw5+z3Fe6-| zmnzj*ii*cvRb4)`?rzHb2py?O75RRHW5|eVZ<+o#Y_YZiCfwk*e#%HjVj& zYc(qoTa$|!aS+sAm!5Ui@`aYrLvZmq-om#)TGcz1s1uO3K~%l84Qbp z@SpFhIR2Eo_92X z5+tgE4c2!lyVOtk5fIDg6IQ1ws!W-6yRouHGgY-N)AeX^Y`Ui{Oz1+eJtT6s$^-MWV#7o>SyH8N?fQx$x&XFtA)rnp{t(+rW0DDht(SA`C!u8 zr=9&I=d(i|n6!J$m(Lk_VA9%8>g;EQyrjzqTL%zqi)hBHgf;%$&v^~##>0GTa>A_6ZuBlBtuc5mQX6G9znzRNPUQ7M;(Vy)01 zJB<`2soh5S)o&z#hR6r-3!n$ZNH@VGY-CZiJCrjiYZZ>;4VcJvJDtQ@eiRd6KG)Nb zOuK@SR{Ens2noPjEqOUdt|_*|#!Km*6$y2^Ifm>j;f_O+1sv(0Zc9-4$rVBWetsUz z`rH}!(X&1`>vONK&k^&wZ3bK2rRQdVJBx$s3~)2Ry-vVw@6_wPU4NdzZ3eg5IqnTV z#}RL-PPm=Df0^NJhPN5s-gvz2X!in6wBB3VBvp4sw&>Ll67LC4c9#@hx+H#8eVp_*bt<7_9OjD}T}@mLEMHs*ANE(UXEz~Jc)8*rnx zUnY|tr@+#NLtA0E)VSg^!%C^q&`PLZ$p<Zs6xSy|!iY}KR5 znklU`*luW~6h)t;&thp zzfW9qM{fBN;)^E&bfyK*wBVT*{F=1jMefU&Jo}kDzjos-2fy-^(|-Pw`w|mBS*jg-sq#Hdm`fpj~v{c H``mv4NYBSz literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block new file mode 100644 index 0000000000000000000000000000000000000000..c399ea57a6c5ad59455fbaf8ceb50a41f7dbb34c GIT binary patch literal 23084 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 MS8yFXbNuIj0L}?Gy#N3J literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block.json new file mode 100644 index 00000000..ebfa009a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block.json @@ -0,0 +1,783 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "config": { + "channel_group": { + "groups": { + "Consortiums": { + "groups": { + "SampleConsortium": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "/Channel/Orderer/Admins", + "policies": {}, + "values": { + "ChannelCreationPolicy": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Admins" + } + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "/Channel/Orderer/Admins", + "policies": { + "Admins": { + "mod_policy": "/Channel/Orderer/Admins", + "policy": { + "type": 1, + "value": { + "identities": [], + "rule": { + "n_out_of": { + "n": 0, + "rules": [] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": {}, + "version": "0" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "0" + }, + "last_update": null + }, + "header": { + "channel_header": { + "channel_id": "testchainid", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:39:53Z", + "tls_cert_hash": null, + "tx_id": "f8792c4b9f199c984902eca8b395de85ad0abf63bee3d9f0451459866866acd9", + "type": 1, + "version": 1 + }, + "signature_header": { + "creator": null, + "nonce": "wDBzVAJ4o3ZVUQxu/51m97d7bALhlqLK" + } + } + }, + "signature": null + } + ] + }, + "header": { + "data_hash": "6slI2MJnotITgHK+IcHjtBGMR5zoqce4YvxgjMQTxLg=", + "number": "0", + "previous_hash": null + }, + "metadata": { + "metadata": [ + "CgIKAA==", + "", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block.json-flat.json new file mode 100644 index 00000000..3d81c4ba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block.json-flat.json @@ -0,0 +1,285 @@ +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.name=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs\n9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E\nAwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf\nJe855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.name=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr\nce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E\nAwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP\n1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.type=3 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.value.rule.n_out_of.n=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.name=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt\ncGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/\nQdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ\ndp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw\n+pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG\nQNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV\nmrwsb1hY\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.absolute_max_bytes=10485760 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.max_message_count=500 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.preferred_max_bytes=2097152 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.value.timeout=2s +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.value=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].host=orderer0.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].host=orderer1.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].host=orderer2.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.election_tick=10 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.heartbeat_tick=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.max_inflight_blocks=5 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.snapshot_interval_size=20971520 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.tick_interval=500ms +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.state=STATE_NORMAL +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.type=etcdraft +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.version=0 +.data.data[0].payload.data.config.channel_group.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.value.width=4294967295 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.version=0 +.data.data[0].payload.data.config.channel_group.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.value.name=SHA256 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.version=0 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.version=0 +.data.data[0].payload.data.config.channel_group.version=0 +.data.data[0].payload.data.config.sequence=0 +.data.data[0].payload.data.last_update=None +.data.data[0].payload.header.channel_header.channel_id=testchainid +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension=None +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:39:53Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id=f8792c4b9f199c984902eca8b395de85ad0abf63bee3d9f0451459866866acd9 +.data.data[0].payload.header.channel_header.type=1 +.data.data[0].payload.header.channel_header.version=1 +.data.data[0].payload.header.signature_header.creator=None +.data.data[0].payload.header.signature_header.nonce=wDBzVAJ4o3ZVUQxu/51m97d7bALhlqLK +.data.data[0].signature=None +.header.data_hash=6slI2MJnotITgHK+IcHjtBGMR5zoqce4YvxgjMQTxLg= +.header.number=0 +.header.previous_hash=None +.metadata.metadata[0]=CgIKAA== +.metadata.metadata[1]= +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block_updated.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer0.genesis.block_updated.block new file mode 100644 index 0000000000000000000000000000000000000000..6f36cb1dfc108990e81f9bd798d4a51412eb072c GIT binary patch literal 23083 zcmeI4Tdd>wUB^4q-PzgyUOIRS-912Ard)O=+QxBiHd3Yf9w%`UJC2>C4`4fvFR|mq zPU6J8>@!q6Ay6ei>he^C5NZo85?aw}p`u6#3J-`kR3s`|*asdE5~%#0oSe&?xtuvW zv!y8K%sG?u_y2Flmv4T5e|}&8!0n^g|Mf3x|L}GD?QgyER`kwKf9=~}{*lk}zxACj zeB-OefB({F-+krXuOk2PrEB0l`14)(vjLyEdF|GE>>remjH*eg2VPVA!)6w0j zJG%SnFY*&`o0uuv1R^=%$wH5%9FbO4am}WrOxZ0Ju1TRMEyv*f zz$n(2y2h?KkL>N1nF^!AWiG`7GvJm3%ufdxzUCFOzv~bxEKh8PDZ3o@9mnWX@vvL= z3=Cb@7*gN$5fv6|IiMNbw_{Rs%$Dd0Nt#TMvc+)`kNn}JsL^nS}T zQg$d(=5DYfN^t+DVz=yDJhw3UwciX{D??#TkqWnc0J#>G0md%x-;shV6M1Sg=euHw zAZ?bX>EqW4TO(0{1Qb0r@HDT9iw>KYilbpLuIOD?YZz`PHTw1b3|@G;JPXJ{%%$Ds zAfgpq@CU`_&>OX#2GC{{t&Z2Za-^0WTO{1Tuo|tlXDC!8lBMizj+lg{@`;q4dury9 zqwFlyx;-{Kt$?!ah_YFZl1zroE|g?IQBto)CTzka@W9HbLQ1tfMfMWdM&(m-wq1c# zVg*~WLEPJ*z4fe%#S$?cOgf>guc~N4>6L|Izb;8RqU{u2RONN_-Yb#ml4Js8NpQ$| zYq2PLft>do8YM8^O$gO2wR`5Yjl=7Y8@7o$Rc)vnt4X@l-0U{yC@;?)-D`l-n9GTb zfvI82jpyy|bd#HzbT{WWiiMH%sZW8eWY`vSQAX6u;F)fX#E=`=?{cO7FOO86nr5o2 zoT{#2hsG$FlqNHAVYXDe#e^a;xp!Zak@o{pUAjBp6e%j)RE~iOrT2c62exwbDD0}r z0~D0r6_qy@DU=79wxRO05x<6?K98?H0I%b%{3tdO!eMpTSqEy&wkabK`mV4jg()^% z2xEQPrzLk&i!oPTHCr8dst(fmK#Kt}k_61qhYY)3Oh+)jlq^TU!zH(HRY|cPsXnlm z-&NHIYRB?Rd}7`k%$C6*k1}{SB=U=O>=h~lS_^VAg%U=gn_r4itDl^^BH=L*7#S*B zCI!1b>+}qwV-6?SilKS|U!9Lsg_1N%S@f4>0^aqbZ34sq@&$2sJN>ATi+ zarC`|;0_bZ!^HBbPb`sVW|kG*{$FGo|M}89C*}aC`L~g+UuiyO8(M!k+CtNdwwZ}tB;01O%3ZvKx z;M5fPStPq7{MeasFCfpKj5`^Hg6CvQhZ~O{V}usDi_4F=yWf>R*uh#XBeZYlj=p&e zYrlR6`N|#S%R5-RU3i6?*j9I-bku%JUKBAx9;O~YnXWEkqYnbs3YUeo7drl5gSGBu zVeN&Emw~kmi;{`uC|tfs>53S)qp0rFa@Q(jy*y!3c&@-2MAD47g1+%r>8R+8%NvEF z`^|aL0r}dK&ovJRU2eODw@eg?~Qrf>@+sbO3Rozkmf7)I`H4_#&3P+LW?fo|mrf|@YO^VK)uvdai#eW|wx?RTP+hFu99ylA zrMWE7f<)(fbFl*o%YbN9hXXC|6jyi!C)udYth$t_EwQpKa(KnhZ<2?q@BIMVL#%rW ziOCBhdQf8WLdOTIZJ!wd)FIaG5|clmSoc1G?Llw{!5t=-k2AS^U%>Vtw}adca(gVf zy)R&U(Az<82faO(-mU~}Gq!mZV4ID5JYak8h(`n4vm^Gv_UO~#M`=f&PA#8~EPdgI z(@yBS<_1FP7jJ$Txw(hbM<2@{_sh3;AUnT<(sv)U;P#vQvB)Qon-Ek#gIq^G^!V#R zzNTeNdkfEzKhlstzYDWh?T#c+&{BB(TBN9?MU$kYwwJR)v$4`^ zjT}>`a$=n=jr24xfDcgsC7suV|FL#j$^V$dus3q_{I1zK-{M~Xqs zeWKWq=}NsaHrx%Qjen& zk%B&Sd}~r>cP3>{B*kn+Nn^KyHbo1p&{W7##n-%#i(3Au+i&)aJnV($R9- z+F)UIF>(E(NQNgq>+QQiZBk@=w7?YCxa_a>x*o(lIxGZ(B%)aZj8wD1w~F&*1AW#; zzQlR*nsixm!ZuXV7!1q(C1dsNZdJkb5>268l&|ON6~5HRdgH=+3dR=tSRUiQdZevLvIF4s(sjsa4iB&KY^Q7^O5rHcrpA#E>2pXP#VeRXhCNlMBw+;d>$_Y%f3B z5u0Z(z0A?id*ooJI_T){%kj=ytd`&k&d84{^%+Ijh>X1!J+>sKy+q_f*d}IeNn1H- zOALl>X3r&T9llq6Fd=&`0qh@4c=!iHnD9GkLLV=O8nxE_J{%qm%P3)N^s1GPgU&Z; zsb{9GW*$f*&vDw-$eb%SF`m_ODih;$$(P(*FZNYgQyXEK&P~@n5}I^Ptj2~dvw+v) z@hVLlTpf&Nl}jgv?q?$gkK^JW$~apbhF;Su3n^Z5)WA(ZZpOz{JK7L^c)_=W?kZVN zqmFbTF|@Z4_X}F;8oePS5@rJ?cYxGdXb_u$N(kfkVPN*blVl|cZRS-l;Y!sZq!+gYle*}Z^w{Cz#ygJ0IL%ezd@#+LU z|II;Ehe_aJ68JNa`S|CnKq2g#330O&v6K(A1OB)CEjjI>DZIk=Nm! z)=!-A=iWkIK8p;`kmBO0N%sxp<8au~nPD#@FP>+`w8$orNhz> zT{pFmAA_`abnC6R-g@>``0K=ReDrbf;Id$M9H&)g~g>%s6w5+&t;<&Ry_QR`tP}#>-gQ z%q-;h?;@YS3vOBqa}??01@h~6!T-DjK6*c}d+S%KNAEq75cM--qut&UBAINsGc+gA zY=dwoj4d~0wC#z)z4z){#PVcoKU@W|fb$g<9)rJfJN^otuvw{!tMgZo0oWaXMH4=& zb0A5O0?DvYgzTGvx)JGnt;FX+5V&7G2a4)6yl&AHR$Qn^(VSAXdJyJ~;e@I+6_4mQ zmyQ$7tSOJzfX5Be5DN!{O-WcyoSTs_DW`m7aGG4=d%5XsxHghj$q5>sJ+u>h*h`p< z6w7EQtH=QPGo*gDW@it@!)M}0u-L-3zQtL-dX5ZvkgaC5ALK1!WdZ4t5Z6K&3kM5{ zG!f|rDe%29)xvaPQ(Sh%d|Ob5VceO^5vk1am73p-z1bwf#bG5yfkTcCaz&b^ zxvcgFuWp8YA!!EZIlOHV%U08*rP#TuV;b1mgmU=R+&YS9@ zTUxqA*fBVU4>)F`I<>Obu>~8*GGTBKc;`6{m&-%Hqb&Qk}E8ePs`N`JtXCcf->U? z%Xjs3;G>)pVV8%hbIJzq8KJS~z*C%j zYL}!mVUkj!g<65ZLS>UHC^e^Oh)p(BlGO}fs-Z|kT>RVJ|DDFaaod^>tY&52Su)djij~b~?5BtLcfZnwmr>*9O7V{!El9qSOr2qF z!-#W@W}4-`P(yPJ6Oz+HTyEQVlOMo1=gNR{DrD;WvB;}5+EDD?yp~q{p~BS0tMWoG zq|~&ahq_D8e+c8>z0WJ2i+`K@#J^*cjs&k>cRrTZjc&CB9WC{Wm2iVOQ&!{}ZnCTC zq`Q$UhG1>gO5pupx541rB+bn#y<)pbjpi*vwHT{WuVLY=iYfz@L<{{5x)Sgwa{qTw z+*OK&9u&8&!1+{XoIhlWLlE$68AXHm7I^jA>(9OcIW5=&)Z4dDp!2K9%h0zA_J7~H ze$wYI_z2~P=0w$fceJ(o!rBop!OpN|#4$!b>3jPWN1yaLE+TQZ&z?S?^top}C$RZV z@Y;6UjK0uodhEDUySs>%=3*IH$Sqj+;`{LHBl}ff5-a~4xOKcP(ziocu)+xtB(p5< uN|TLE**m3M6{R3>r@gsJe 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 MS8yFXbNuIj0L}?Gy#N3J literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer1.genesis.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer1.genesis.block.json new file mode 100644 index 00000000..ebfa009a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer1.genesis.block.json @@ -0,0 +1,783 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "config": { + "channel_group": { + "groups": { + "Consortiums": { + "groups": { + "SampleConsortium": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "/Channel/Orderer/Admins", + "policies": {}, + "values": { + "ChannelCreationPolicy": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Admins" + } + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "/Channel/Orderer/Admins", + "policies": { + "Admins": { + "mod_policy": "/Channel/Orderer/Admins", + "policy": { + "type": 1, + "value": { + "identities": [], + "rule": { + "n_out_of": { + "n": 0, + "rules": [] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": {}, + "version": "0" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "0" + }, + "last_update": null + }, + "header": { + "channel_header": { + "channel_id": "testchainid", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:39:53Z", + "tls_cert_hash": null, + "tx_id": "f8792c4b9f199c984902eca8b395de85ad0abf63bee3d9f0451459866866acd9", + "type": 1, + "version": 1 + }, + "signature_header": { + "creator": null, + "nonce": "wDBzVAJ4o3ZVUQxu/51m97d7bALhlqLK" + } + } + }, + "signature": null + } + ] + }, + "header": { + "data_hash": "6slI2MJnotITgHK+IcHjtBGMR5zoqce4YvxgjMQTxLg=", + "number": "0", + "previous_hash": null + }, + "metadata": { + "metadata": [ + "CgIKAA==", + "", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer1.genesis.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer1.genesis.block.json-flat.json new file mode 100644 index 00000000..3d81c4ba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer1.genesis.block.json-flat.json @@ -0,0 +1,285 @@ +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.name=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs\n9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E\nAwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf\nJe855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.name=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr\nce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E\nAwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP\n1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.type=3 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.value.rule.n_out_of.n=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.name=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt\ncGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/\nQdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ\ndp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw\n+pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG\nQNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV\nmrwsb1hY\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.absolute_max_bytes=10485760 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.max_message_count=500 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.preferred_max_bytes=2097152 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.value.timeout=2s +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.value=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].host=orderer0.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].host=orderer1.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].host=orderer2.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.election_tick=10 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.heartbeat_tick=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.max_inflight_blocks=5 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.snapshot_interval_size=20971520 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.tick_interval=500ms +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.state=STATE_NORMAL +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.type=etcdraft +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.version=0 +.data.data[0].payload.data.config.channel_group.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.value.width=4294967295 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.version=0 +.data.data[0].payload.data.config.channel_group.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.value.name=SHA256 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.version=0 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.version=0 +.data.data[0].payload.data.config.channel_group.version=0 +.data.data[0].payload.data.config.sequence=0 +.data.data[0].payload.data.last_update=None +.data.data[0].payload.header.channel_header.channel_id=testchainid +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension=None +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:39:53Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id=f8792c4b9f199c984902eca8b395de85ad0abf63bee3d9f0451459866866acd9 +.data.data[0].payload.header.channel_header.type=1 +.data.data[0].payload.header.channel_header.version=1 +.data.data[0].payload.header.signature_header.creator=None +.data.data[0].payload.header.signature_header.nonce=wDBzVAJ4o3ZVUQxu/51m97d7bALhlqLK +.data.data[0].signature=None +.header.data_hash=6slI2MJnotITgHK+IcHjtBGMR5zoqce4YvxgjMQTxLg= +.header.number=0 +.header.previous_hash=None +.metadata.metadata[0]=CgIKAA== +.metadata.metadata[1]= +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer2.genesis.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer2.genesis.block new file mode 100644 index 0000000000000000000000000000000000000000..c399ea57a6c5ad59455fbaf8ceb50a41f7dbb34c GIT binary patch literal 23084 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 MS8yFXbNuIj0L}?Gy#N3J literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer2.genesis.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer2.genesis.block.json new file mode 100644 index 00000000..ebfa009a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer2.genesis.block.json @@ -0,0 +1,783 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "config": { + "channel_group": { + "groups": { + "Consortiums": { + "groups": { + "SampleConsortium": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "/Channel/Orderer/Admins", + "policies": {}, + "values": { + "ChannelCreationPolicy": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Admins" + } + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "/Channel/Orderer/Admins", + "policies": { + "Admins": { + "mod_policy": "/Channel/Orderer/Admins", + "policy": { + "type": 1, + "value": { + "identities": [], + "rule": { + "n_out_of": { + "n": 0, + "rules": [] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": {}, + "version": "0" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "0" + }, + "last_update": null + }, + "header": { + "channel_header": { + "channel_id": "testchainid", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:39:53Z", + "tls_cert_hash": null, + "tx_id": "f8792c4b9f199c984902eca8b395de85ad0abf63bee3d9f0451459866866acd9", + "type": 1, + "version": 1 + }, + "signature_header": { + "creator": null, + "nonce": "wDBzVAJ4o3ZVUQxu/51m97d7bALhlqLK" + } + } + }, + "signature": null + } + ] + }, + "header": { + "data_hash": "6slI2MJnotITgHK+IcHjtBGMR5zoqce4YvxgjMQTxLg=", + "number": "0", + "previous_hash": null + }, + "metadata": { + "metadata": [ + "CgIKAA==", + "", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer2.genesis.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer2.genesis.block.json-flat.json new file mode 100644 index 00000000..3d81c4ba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/orderer2.genesis.block.json-flat.json @@ -0,0 +1,285 @@ +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.name=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs\n9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E\nAwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf\nJe855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.name=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr\nce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E\nAwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP\n1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.type=3 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.value.rule.n_out_of.n=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.name=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt\ncGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/\nQdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ\ndp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw\n+pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG\nQNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV\nmrwsb1hY\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.absolute_max_bytes=10485760 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.max_message_count=500 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.preferred_max_bytes=2097152 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.value.timeout=2s +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.value=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].host=orderer0.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].host=orderer1.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].host=orderer2.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.election_tick=10 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.heartbeat_tick=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.max_inflight_blocks=5 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.snapshot_interval_size=20971520 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.tick_interval=500ms +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.state=STATE_NORMAL +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.type=etcdraft +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.version=0 +.data.data[0].payload.data.config.channel_group.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.value.width=4294967295 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.version=0 +.data.data[0].payload.data.config.channel_group.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.value.name=SHA256 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.version=0 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.version=0 +.data.data[0].payload.data.config.channel_group.version=0 +.data.data[0].payload.data.config.sequence=0 +.data.data[0].payload.data.last_update=None +.data.data[0].payload.header.channel_header.channel_id=testchainid +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension=None +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:39:53Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id=f8792c4b9f199c984902eca8b395de85ad0abf63bee3d9f0451459866866acd9 +.data.data[0].payload.header.channel_header.type=1 +.data.data[0].payload.header.channel_header.version=1 +.data.data[0].payload.header.signature_header.creator=None +.data.data[0].payload.header.signature_header.nonce=wDBzVAJ4o3ZVUQxu/51m97d7bALhlqLK +.data.data[0].signature=None +.header.data_hash=6slI2MJnotITgHK+IcHjtBGMR5zoqce4YvxgjMQTxLg= +.header.number=0 +.header.previous_hash=None +.metadata.metadata[0]=CgIKAA== +.metadata.metadata[1]= +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/original_config.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/original_config.json new file mode 100644 index 00000000..7c2af891 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/original_config.json @@ -0,0 +1,863 @@ +{ + "channel_group": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org1.example.com", + "port": 7051 + } + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org2.example.com", + "port": 7051 + } + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "1" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": "MAJORITY", + "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": { + "ACLs": { + "mod_policy": "Admins", + "value": { + "acls": { + "_lifecycle/CommitChaincodeDefinition": { + "policy_ref": "/Channel/Application/Writers" + }, + "_lifecycle/QueryChaincodeDefinition": { + "policy_ref": "/Channel/Application/Readers" + }, + "_lifecycle/QueryNamespaceDefinitions": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigTree": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/SimulateConfigTreeUpdate": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/Block": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/FilteredBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/ChaincodeExists": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetChaincodeData": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetDeploymentSpec": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetInstantiatedChaincodes": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/ChaincodeToChaincode": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/Propose": { + "policy_ref": "/Channel/Application/Writers" + }, + "qscc/GetBlockByHash": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByNumber": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByTxID": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetChainInfo": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetTransactionByID": { + "policy_ref": "/Channel/Application/Readers" + } + } + }, + "version": "0" + }, + "Capabilities": { + "mod_policy": "Admins", + "value": { + "capabilities": { + "V2_0": {} + } + }, + "version": "0" + } + }, + "version": "1" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "Consortium": { + "mod_policy": "Admins", + "value": { + "name": "SampleConsortium" + }, + "version": "0" + }, + "HashingAlgorithm": { + "mod_policy": "Admins", + "value": { + "name": "SHA256" + }, + "version": "0" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "3" +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/original_config.pb b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/original_config.pb new file mode 100644 index 0000000000000000000000000000000000000000..554197e307957196d4f747c0f77d46215340d114 GIT binary patch literal 24260 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 literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_0.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_0.block new file mode 100644 index 0000000000000000000000000000000000000000..c399ea57a6c5ad59455fbaf8ceb50a41f7dbb34c GIT binary patch literal 23084 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 MS8yFXbNuIj0L}?Gy#N3J literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_0.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_0.block.json new file mode 100644 index 00000000..ebfa009a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_0.block.json @@ -0,0 +1,783 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "config": { + "channel_group": { + "groups": { + "Consortiums": { + "groups": { + "SampleConsortium": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "/Channel/Orderer/Admins", + "policies": {}, + "values": { + "ChannelCreationPolicy": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Admins" + } + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "/Channel/Orderer/Admins", + "policies": { + "Admins": { + "mod_policy": "/Channel/Orderer/Admins", + "policy": { + "type": 1, + "value": { + "identities": [], + "rule": { + "n_out_of": { + "n": 0, + "rules": [] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": {}, + "version": "0" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "0" + }, + "last_update": null + }, + "header": { + "channel_header": { + "channel_id": "testchainid", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:39:53Z", + "tls_cert_hash": null, + "tx_id": "f8792c4b9f199c984902eca8b395de85ad0abf63bee3d9f0451459866866acd9", + "type": 1, + "version": 1 + }, + "signature_header": { + "creator": null, + "nonce": "wDBzVAJ4o3ZVUQxu/51m97d7bALhlqLK" + } + } + }, + "signature": null + } + ] + }, + "header": { + "data_hash": "6slI2MJnotITgHK+IcHjtBGMR5zoqce4YvxgjMQTxLg=", + "number": "0", + "previous_hash": null + }, + "metadata": { + "metadata": [ + "CgIKAA==", + "", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_0.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_0.block.json-flat.json new file mode 100644 index 00000000..3d81c4ba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_0.block.json-flat.json @@ -0,0 +1,285 @@ +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.name=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs\n9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E\nAwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf\nJe855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.name=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr\nce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E\nAwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP\n1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.type=3 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.value.rule.n_out_of.n=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.name=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt\ncGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/\nQdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ\ndp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw\n+pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG\nQNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV\nmrwsb1hY\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.absolute_max_bytes=10485760 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.max_message_count=500 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.preferred_max_bytes=2097152 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.value.timeout=2s +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.value=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].host=orderer0.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].host=orderer1.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].host=orderer2.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.election_tick=10 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.heartbeat_tick=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.max_inflight_blocks=5 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.snapshot_interval_size=20971520 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.tick_interval=500ms +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.state=STATE_NORMAL +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.type=etcdraft +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.version=0 +.data.data[0].payload.data.config.channel_group.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.value.width=4294967295 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.version=0 +.data.data[0].payload.data.config.channel_group.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.value.name=SHA256 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.version=0 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.version=0 +.data.data[0].payload.data.config.channel_group.version=0 +.data.data[0].payload.data.config.sequence=0 +.data.data[0].payload.data.last_update=None +.data.data[0].payload.header.channel_header.channel_id=testchainid +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension=None +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:39:53Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id=f8792c4b9f199c984902eca8b395de85ad0abf63bee3d9f0451459866866acd9 +.data.data[0].payload.header.channel_header.type=1 +.data.data[0].payload.header.channel_header.version=1 +.data.data[0].payload.header.signature_header.creator=None +.data.data[0].payload.header.signature_header.nonce=wDBzVAJ4o3ZVUQxu/51m97d7bALhlqLK +.data.data[0].signature=None +.header.data_hash=6slI2MJnotITgHK+IcHjtBGMR5zoqce4YvxgjMQTxLg= +.header.number=0 +.header.previous_hash=None +.metadata.metadata[0]=CgIKAA== +.metadata.metadata[1]= +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_1.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_1.block new file mode 100644 index 0000000000000000000000000000000000000000..90c5e360569ce5a75181f7bca4553a5b0e2aa201 GIT binary patch literal 30535 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 literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_1.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_1.block.json new file mode 100644 index 00000000..b4b322e0 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_1.block.json @@ -0,0 +1,1156 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "payload": { + "data": { + "config": { + "channel_group": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": "MAJORITY", + "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": { + "ACLs": { + "mod_policy": "Admins", + "value": { + "acls": { + "_lifecycle/CommitChaincodeDefinition": { + "policy_ref": "/Channel/Application/Writers" + }, + "_lifecycle/QueryChaincodeDefinition": { + "policy_ref": "/Channel/Application/Readers" + }, + "_lifecycle/QueryNamespaceDefinitions": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigTree": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/SimulateConfigTreeUpdate": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/Block": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/FilteredBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/ChaincodeExists": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetChaincodeData": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetDeploymentSpec": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetInstantiatedChaincodes": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/ChaincodeToChaincode": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/Propose": { + "policy_ref": "/Channel/Application/Writers" + }, + "qscc/GetBlockByHash": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByNumber": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByTxID": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetChainInfo": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetTransactionByID": { + "policy_ref": "/Channel/Application/Readers" + } + } + }, + "version": "0" + }, + "Capabilities": { + "mod_policy": "Admins", + "value": { + "capabilities": { + "V2_0": {} + } + }, + "version": "0" + } + }, + "version": "1" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "Consortium": { + "mod_policy": "Admins", + "value": { + "name": "SampleConsortium" + }, + "version": "0" + }, + "HashingAlgorithm": { + "mod_policy": "Admins", + "value": { + "name": "SHA256" + }, + "version": "0" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "1" + }, + "last_update": { + "payload": { + "data": { + "config_update": { + "channel_id": "businesschannel", + "isolated_data": {}, + "read_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + } + }, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + } + }, + "mod_policy": "", + "policies": {}, + "values": { + "Consortium": { + "mod_policy": "", + "value": null, + "version": "0" + } + }, + "version": "0" + }, + "write_set": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "", + "policies": {}, + "values": {}, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": "MAJORITY", + "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": { + "ACLs": { + "mod_policy": "Admins", + "value": { + "acls": { + "_lifecycle/CommitChaincodeDefinition": { + "policy_ref": "/Channel/Application/Writers" + }, + "_lifecycle/QueryChaincodeDefinition": { + "policy_ref": "/Channel/Application/Readers" + }, + "_lifecycle/QueryNamespaceDefinitions": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigTree": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/SimulateConfigTreeUpdate": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/Block": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/FilteredBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/ChaincodeExists": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetChaincodeData": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetDeploymentSpec": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetInstantiatedChaincodes": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/ChaincodeToChaincode": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/Propose": { + "policy_ref": "/Channel/Application/Writers" + }, + "qscc/GetBlockByHash": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByNumber": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByTxID": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetChainInfo": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetTransactionByID": { + "policy_ref": "/Channel/Application/Readers" + } + } + }, + "version": "0" + }, + "Capabilities": { + "mod_policy": "Admins", + "value": { + "capabilities": { + "V2_0": {} + } + }, + "version": "0" + } + }, + "version": "1" + } + }, + "mod_policy": "", + "policies": {}, + "values": { + "Consortium": { + "mod_policy": "", + "value": { + "name": "SampleConsortium" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "signatures": [ + { + "signature": "MEQCICqSNztRC9fs0csEq9Ya24C/lrr+0MElCEepHpP+q2A1AiBbidovDn1YykferGNNWT0uV5So//RTe9VbmXa2uCDn1g==", + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "wzlyNo3UYj4oM0CwueIqZelCWeFkALAG" + } + } + ] + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:41:34Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 2, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lSQUl2NUtJTHU5dVpFZkJ1LzFxeFJLaEF3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCck1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFT01Bd0dBMVVFQ3hNRllXUnRhVzR4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6RXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRzQllhWGc5MFYKMlZuRGw0TUlMUlVvUXd3S0IveW9sRmVXN2t6U1dPZStJcEN5Ujh1cTdmTmxiOExwSnV5cVRRY2RHTG1JZU9NSQpKUk1IaHA4TXN2ZXBvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NDeFRMUlRHbExheEQyZGlRK2hGcS92VFZOVGtqZGNsQkQ3MDZIZUxSVVpyVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCTWJ2VXdidmxPMGRRWm5OT3hXSTgvWkxXT21Ob28ycjRtbUVGOXJ0eExNd0lnV3hHbQpCbUdTUG9pMmhuRis4TWxxZ0N4VmkyR09XeXVtdW1DMDJJU0lzTTQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "mspid": "Org1MSP" + }, + "nonce": "AbK0EunaL8wnYok28iYwoc5shDrH5wQh" + } + } + }, + "signature": "MEUCIQC/G8bgf5iRntMrVUzOyObXRbphkGovT7xwm4hrjW6wtgIgJMWsUdRFl3CAOfHM714vmwZjsxdoSHUC7sLURP1/BT4=" + } + }, + "header": { + "channel_header": { + "channel_id": "businesschannel", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:41:34Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 1, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNIakNDQWNXZ0F3SUJBZ0lRTkRiNkIwWXplSlY1bU1Hd29LOGo5VEFLQmdncWhrak9QUVFEQWpCcE1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4RnpBVkJnTlZCQU1URG1OaExtVjRZVzF3CmJHVXVZMjl0TUI0WERUSXlNRGd4TWpFNE16VXdNRm9YRFRNeU1EZ3dPVEU0TXpVd01Gb3dhekVMTUFrR0ExVUUKQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJsegpZMjh4RURBT0JnTlZCQXNUQjI5eVpHVnlaWEl4SFRBYkJnTlZCQU1URkc5eVpHVnlaWEl3TG1WNFlXMXdiR1V1ClkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVWcUlFaEp4Q256bzlPSE4vMW9rQUdpTGgKbGZScFNMQzlncStFRGxGbDhmV05jMis0NUl0RGdxK1cwRzdnU1RlQTZ0TEppcUpYN2dqWURJWWhWUkRRUUtOTgpNRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqQkNRd0lvQWd0TUIzCnFWYU9tTWVheVBaSzk3ekFEWkVkbGFxV1BOMjZjM0xhanUyU0tYY3dDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWcKQjVzWS9MM2dVSlp2aUY2TmtIeEF2SFFhT3l4QXBuRXJJdWJndEhBYm55b0NJSDNwcTZUVTBweXppd1JUb1k0LwoyeVFPVkFwWndsREJyK1BmY1NaN1gvNjUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "mspid": "OrdererMSP" + }, + "nonce": "dXAEtfVACVTzYW0dRLpNWtT4drfUWRbC" + } + } + }, + "signature": "MEQCIHTDpZRoiKbYgxGYiX2IQz1mtE9v7qvmqD+gXc+PKeGyAiA7tDpB5t1wo05+bQsbRGV7c7ARDgy3O83doGtVnS/YqA==" + }, + "header": { + "channel_header": { + "channel_id": "testchainid", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:41:34Z", + "tls_cert_hash": null, + "tx_id": "", + "type": 4, + "version": 0 + }, + "signature_header": { + "creator": { + "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNIakNDQWNXZ0F3SUJBZ0lRTkRiNkIwWXplSlY1bU1Hd29LOGo5VEFLQmdncWhrak9QUVFEQWpCcE1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4RnpBVkJnTlZCQU1URG1OaExtVjRZVzF3CmJHVXVZMjl0TUI0WERUSXlNRGd4TWpFNE16VXdNRm9YRFRNeU1EZ3dPVEU0TXpVd01Gb3dhekVMTUFrR0ExVUUKQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkdjbUZ1WTJsegpZMjh4RURBT0JnTlZCQXNUQjI5eVpHVnlaWEl4SFRBYkJnTlZCQU1URkc5eVpHVnlaWEl3TG1WNFlXMXdiR1V1ClkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVWcUlFaEp4Q256bzlPSE4vMW9rQUdpTGgKbGZScFNMQzlncStFRGxGbDhmV05jMis0NUl0RGdxK1cwRzdnU1RlQTZ0TEppcUpYN2dqWURJWWhWUkRRUUtOTgpNRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqQkNRd0lvQWd0TUIzCnFWYU9tTWVheVBaSzk3ekFEWkVkbGFxV1BOMjZjM0xhanUyU0tYY3dDZ1lJS29aSXpqMEVBd0lEUndBd1JBSWcKQjVzWS9MM2dVSlp2aUY2TmtIeEF2SFFhT3l4QXBuRXJJdWJndEhBYm55b0NJSDNwcTZUVTBweXppd1JUb1k0LwoyeVFPVkFwWndsREJyK1BmY1NaN1gvNjUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "mspid": "OrdererMSP" + }, + "nonce": "1px/Zsxr2j2FK74clOFoc7OMXPv752Oo" + } + } + }, + "signature": "MEQCIFDX/HyKYNg9P+AdSf3p8SR5HZ9/uyVCIaJESmso1TOPAiANAExkigVxCfeyMhXto4rFzdd7/vxVrovgD/Sjbk0nvQ==" + } + ] + }, + "header": { + "data_hash": "A6Ftse9WlQ60AFZ3DM2nFTiywgtMo7pfUdETIJyZAgI=", + "number": "1", + "previous_hash": "qmuB3qHbWrn1Kyg72YQCduHhsWlpl5/6P8jVE5bY9iM=" + }, + "metadata": { + "metadata": [ + "Cg8KABILCgkKAwECAxAEGAUSkQcKxgYKqQYKCk9yZGVyZXJNU1ASmgYtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ0hqQ0NBY1dnQXdJQkFnSVFORGI2QjBZemVKVjVtTUd3b0s4ajlUQUtCZ2dxaGtqT1BRUURBakJwTVFzdwpDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTlUyRnVJRVp5CllXNWphWE5qYnpFVU1CSUdBMVVFQ2hNTFpYaGhiWEJzWlM1amIyMHhGekFWQmdOVkJBTVREbU5oTG1WNFlXMXcKYkdVdVkyOXRNQjRYRFRJeU1EZ3hNakU0TXpVd01Gb1hEVE15TURnd09URTRNelV3TUZvd2F6RUxNQWtHQTFVRQpCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCR2NtRnVZMmx6ClkyOHhFREFPQmdOVkJBc1RCMjl5WkdWeVpYSXhIVEFiQmdOVkJBTVRGRzl5WkdWeVpYSXdMbVY0WVcxd2JHVXUKWTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVZxSUVoSnhDbnpvOU9ITi8xb2tBR2lMaApsZlJwU0xDOWdxK0VEbEZsOGZXTmMyKzQ1SXREZ3ErVzBHN2dTVGVBNnRMSmlxSlg3Z2pZRElZaFZSRFFRS05OCk1Fc3dEZ1lEVlIwUEFRSC9CQVFEQWdlQU1Bd0dBMVVkRXdFQi93UUNNQUF3S3dZRFZSMGpCQ1F3SW9BZ3RNQjMKcVZhT21NZWF5UFpLOTd6QURaRWRsYXFXUE4yNmMzTGFqdTJTS1hjd0NnWUlLb1pJemowRUF3SURSd0F3UkFJZwpCNXNZL0wzZ1VKWnZpRjZOa0h4QXZIUWFPeXhBcG5Fckl1Ymd0SEFibnlvQ0lIM3BxNlRVMHB5eml3UlRvWTQvCjJ5UU9WQXBad2xEQnIrUGZjU1o3WC82NQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYaPeYnWR40112FYOFfLvAu5TCh0J8Y4sfEkYwRAIgajPcyP8FEa8uFCNllBc04ZM41WiOQl/IgP4OpOg4oXUCIAHjAzn9cqao/rSyNCQgcSWeIgzfnGiKgWoKCwA5CZu7", + "", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_1.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_1.block.json-flat.json new file mode 100644 index 00000000..a808a95b --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_1.block.json-flat.json @@ -0,0 +1,423 @@ +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.name=Org1MSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs\n9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E\nAwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf\nJe855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.value.type=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org1MSP.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.name=Org2MSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr\nce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E\nAwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP\n1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.value.type=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.groups.Org2MSP.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Admins.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Admins.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Endorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Endorsement.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.LifecycleEndorsement.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Readers.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Readers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Writers.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.policies.Writers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/CommitChaincodeDefinition.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/QueryChaincodeDefinition.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls._lifecycle/QueryNamespaceDefinitions.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/GetConfigBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/GetConfigTree.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.cscc/SimulateConfigTreeUpdate.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.event/Block.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.event/FilteredBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/ChaincodeExists.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetChaincodeData.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetDeploymentSpec.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.lscc/GetInstantiatedChaincodes.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.peer/ChaincodeToChaincode.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.peer/Propose.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByHash.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByNumber.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetBlockByTxID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetChainInfo.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.value.acls.qscc/GetTransactionByID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.ACLs.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.values.Capabilities.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Application.version=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.type=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.type=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.type=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.name=OrdererMSP +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt\ncGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/\nQdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ\ndp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw\n+pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG\nQNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV\nmrwsb1hY\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.type=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Admins.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.rule=ANY +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.sub_policy=Writers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Readers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.policies.Writers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.BatchSize.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.absolute_max_bytes=10485760 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.max_message_count=500 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.preferred_max_bytes=2097152 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.BatchSize.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.value.timeout=2s +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.Capabilities.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.value=None +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].host=orderer0.example.com +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].port=7050 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].host=orderer1.example.com +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].port=7050 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].host=orderer2.example.com +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].port=7050 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.election_tick=10 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.heartbeat_tick=1 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.max_inflight_blocks=5 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.snapshot_interval_size=20971520 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.tick_interval=500ms +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.state=STATE_NORMAL +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.type=etcdraft +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.values.ConsensusType.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.groups.Orderer.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.policies.Admins.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.payload.data.config.channel_group.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.policies.Admins.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.policies.Readers.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.payload.data.config.channel_group.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.payload.data.config.channel_group.policies.Readers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.policies.Writers.policy.type=3 +.data.data[0].payload.data.payload.data.config.channel_group.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.payload.data.config.channel_group.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.payload.data.config.channel_group.policies.Writers.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.values.BlockDataHashingStructure.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.values.BlockDataHashingStructure.value.width=4294967295 +.data.data[0].payload.data.payload.data.config.channel_group.values.BlockDataHashingStructure.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.values.Capabilities.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.values.Consortium.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.values.Consortium.value.name=SampleConsortium +.data.data[0].payload.data.payload.data.config.channel_group.values.Consortium.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.values.HashingAlgorithm.mod_policy=Admins +.data.data[0].payload.data.payload.data.config.channel_group.values.HashingAlgorithm.value.name=SHA256 +.data.data[0].payload.data.payload.data.config.channel_group.values.HashingAlgorithm.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.values.OrdererAddresses.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.payload.data.config.channel_group.values.OrdererAddresses.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.payload.data.config.channel_group.values.OrdererAddresses.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.payload.data.config.channel_group.values.OrdererAddresses.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.payload.data.config.channel_group.values.OrdererAddresses.version=0 +.data.data[0].payload.data.payload.data.config.channel_group.version=0 +.data.data[0].payload.data.payload.data.config.sequence=1 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.channel_id=businesschannel +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.mod_policy= +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org1MSP.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.mod_policy= +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.read_set.groups.Application.groups.Org2MSP.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.read_set.groups.Application.mod_policy= +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.read_set.groups.Application.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.read_set.mod_policy= +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.read_set.values.Consortium.mod_policy= +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.read_set.values.Consortium.value=None +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.read_set.values.Consortium.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.read_set.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.mod_policy= +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org1MSP.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.mod_policy= +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.groups.Org2MSP.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.mod_policy=Admins +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Admins.policy.type=3 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Admins.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Endorsement.policy.type=3 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Endorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Endorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Endorsement.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.LifecycleEndorsement.mod_policy=Admins +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.LifecycleEndorsement.policy.type=3 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.LifecycleEndorsement.policy.value.rule=MAJORITY +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.LifecycleEndorsement.policy.value.sub_policy=Endorsement +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.LifecycleEndorsement.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Readers.policy.type=3 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Readers.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Writers.policy.type=3 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.policies.Writers.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.mod_policy=Admins +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls._lifecycle/CommitChaincodeDefinition.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls._lifecycle/QueryChaincodeDefinition.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls._lifecycle/QueryNamespaceDefinitions.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.cscc/GetConfigBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.cscc/GetConfigTree.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.cscc/SimulateConfigTreeUpdate.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.event/Block.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.event/FilteredBlock.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.lscc/ChaincodeExists.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.lscc/GetChaincodeData.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.lscc/GetDeploymentSpec.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.lscc/GetInstantiatedChaincodes.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.peer/ChaincodeToChaincode.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.peer/Propose.policy_ref=/Channel/Application/Writers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.qscc/GetBlockByHash.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.qscc/GetBlockByNumber.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.qscc/GetBlockByTxID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.qscc/GetChainInfo.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.value.acls.qscc/GetTransactionByID.policy_ref=/Channel/Application/Readers +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.ACLs.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.values.Capabilities.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.groups.Application.version=1 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.mod_policy= +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.values.Consortium.mod_policy= +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.values.Consortium.value.name=SampleConsortium +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.values.Consortium.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.data.signatures[0].signature=MEQCICqSNztRC9fs0csEq9Ya24C/lrr+0MElCEepHpP+q2A1AiBbidovDn1YykferGNNWT0uV5So//RTe9VbmXa2uCDn1g== +.data.data[0].payload.data.payload.data.last_update.payload.data.signatures[0].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.last_update.payload.data.signatures[0].signature_header.creator.mspid=Org1MSP +.data.data[0].payload.data.payload.data.last_update.payload.data.signatures[0].signature_header.nonce=wzlyNo3UYj4oM0CwueIqZelCWeFkALAG +.data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.epoch=0 +.data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.extension=None +.data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.timestamp=2022-08-12T18:41:34Z +.data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.tx_id= +.data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.type=2 +.data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.version=0 +.data.data[0].payload.data.payload.data.last_update.payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIRAIv5KILu9uZEfBu/1qxRKhAwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBrMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEOMAwGA1UECxMFYWRtaW4xHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATsBYaXg90V\n2VnDl4MILRUoQwwKB/yolFeW7kzSWOe+IpCyR8uq7fNlb8LpJuyqTQcdGLmIeOMI\nJRMHhp8Msvepo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCCxTLRTGlLaxD2diQ+hFq/vTVNTkjdclBD706HeLRUZrTAKBggqhkjO\nPQQDAgNHADBEAiBMbvUwbvlO0dQZnNOxWI8/ZLWOmNoo2r4mmEF9rtxLMwIgWxGm\nBmGSPoi2hnF+8MlqgCxVi2GOWyumumC02ISIsM4=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.data.last_update.payload.header.signature_header.creator.mspid=Org1MSP +.data.data[0].payload.data.payload.data.last_update.payload.header.signature_header.nonce=AbK0EunaL8wnYok28iYwoc5shDrH5wQh +.data.data[0].payload.data.payload.data.last_update.signature=MEUCIQC/G8bgf5iRntMrVUzOyObXRbphkGovT7xwm4hrjW6wtgIgJMWsUdRFl3CAOfHM714vmwZjsxdoSHUC7sLURP1/BT4= +.data.data[0].payload.data.payload.header.channel_header.channel_id=businesschannel +.data.data[0].payload.data.payload.header.channel_header.epoch=0 +.data.data[0].payload.data.payload.header.channel_header.extension=None +.data.data[0].payload.data.payload.header.channel_header.timestamp=2022-08-12T18:41:34Z +.data.data[0].payload.data.payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.data.payload.header.channel_header.tx_id= +.data.data[0].payload.data.payload.header.channel_header.type=1 +.data.data[0].payload.data.payload.header.channel_header.version=0 +.data.data[0].payload.data.payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICHjCCAcWgAwIBAgIQNDb6B0YzeJV5mMGwoK8j9TAKBggqhkjOPQQDAjBpMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w\nbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowazELMAkGA1UE\nBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz\nY28xEDAOBgNVBAsTB29yZGVyZXIxHTAbBgNVBAMTFG9yZGVyZXIwLmV4YW1wbGUu\nY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEVqIEhJxCnzo9OHN/1okAGiLh\nlfRpSLC9gq+EDlFl8fWNc2+45ItDgq+W0G7gSTeA6tLJiqJX7gjYDIYhVRDQQKNN\nMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgtMB3\nqVaOmMeayPZK97zADZEdlaqWPN26c3Laju2SKXcwCgYIKoZIzj0EAwIDRwAwRAIg\nB5sY/L3gUJZviF6NkHxAvHQaOyxApnErIubgtHAbnyoCIH3pq6TU0pyziwRToY4/\n2yQOVApZwlDBr+PfcSZ7X/65\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.payload.header.signature_header.creator.mspid=OrdererMSP +.data.data[0].payload.data.payload.header.signature_header.nonce=dXAEtfVACVTzYW0dRLpNWtT4drfUWRbC +.data.data[0].payload.data.signature=MEQCIHTDpZRoiKbYgxGYiX2IQz1mtE9v7qvmqD+gXc+PKeGyAiA7tDpB5t1wo05+bQsbRGV7c7ARDgy3O83doGtVnS/YqA== +.data.data[0].payload.header.channel_header.channel_id=testchainid +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension=None +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:41:34Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id= +.data.data[0].payload.header.channel_header.type=4 +.data.data[0].payload.header.channel_header.version=0 +.data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICHjCCAcWgAwIBAgIQNDb6B0YzeJV5mMGwoK8j9TAKBggqhkjOPQQDAjBpMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w\nbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowazELMAkGA1UE\nBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz\nY28xEDAOBgNVBAsTB29yZGVyZXIxHTAbBgNVBAMTFG9yZGVyZXIwLmV4YW1wbGUu\nY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEVqIEhJxCnzo9OHN/1okAGiLh\nlfRpSLC9gq+EDlFl8fWNc2+45ItDgq+W0G7gSTeA6tLJiqJX7gjYDIYhVRDQQKNN\nMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgtMB3\nqVaOmMeayPZK97zADZEdlaqWPN26c3Laju2SKXcwCgYIKoZIzj0EAwIDRwAwRAIg\nB5sY/L3gUJZviF6NkHxAvHQaOyxApnErIubgtHAbnyoCIH3pq6TU0pyziwRToY4/\n2yQOVApZwlDBr+PfcSZ7X/65\n-----END CERTIFICATE-----\n') +.data.data[0].payload.header.signature_header.creator.mspid=OrdererMSP +.data.data[0].payload.header.signature_header.nonce=1px/Zsxr2j2FK74clOFoc7OMXPv752Oo +.data.data[0].signature=MEQCIFDX/HyKYNg9P+AdSf3p8SR5HZ9/uyVCIaJESmso1TOPAiANAExkigVxCfeyMhXto4rFzdd7/vxVrovgD/Sjbk0nvQ== +.header.data_hash=A6Ftse9WlQ60AFZ3DM2nFTiywgtMo7pfUdETIJyZAgI= +.header.number=1 +.header.previous_hash=qmuB3qHbWrn1Kyg72YQCduHhsWlpl5/6P8jVE5bY9iM= +.metadata.metadata[0]=Cg8KABILCgkKAwECAxAEGAUSkQcKxgYKqQYKCk9yZGVyZXJNU1ASmgYtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ0hqQ0NBY1dnQXdJQkFnSVFORGI2QjBZemVKVjVtTUd3b0s4ajlUQUtCZ2dxaGtqT1BRUURBakJwTVFzdwpDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTlUyRnVJRVp5CllXNWphWE5qYnpFVU1CSUdBMVVFQ2hNTFpYaGhiWEJzWlM1amIyMHhGekFWQmdOVkJBTVREbU5oTG1WNFlXMXcKYkdVdVkyOXRNQjRYRFRJeU1EZ3hNakU0TXpVd01Gb1hEVE15TURnd09URTRNelV3TUZvd2F6RUxNQWtHQTFVRQpCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCR2NtRnVZMmx6ClkyOHhFREFPQmdOVkJBc1RCMjl5WkdWeVpYSXhIVEFiQmdOVkJBTVRGRzl5WkdWeVpYSXdMbVY0WVcxd2JHVXUKWTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVZxSUVoSnhDbnpvOU9ITi8xb2tBR2lMaApsZlJwU0xDOWdxK0VEbEZsOGZXTmMyKzQ1SXREZ3ErVzBHN2dTVGVBNnRMSmlxSlg3Z2pZRElZaFZSRFFRS05OCk1Fc3dEZ1lEVlIwUEFRSC9CQVFEQWdlQU1Bd0dBMVVkRXdFQi93UUNNQUF3S3dZRFZSMGpCQ1F3SW9BZ3RNQjMKcVZhT21NZWF5UFpLOTd6QURaRWRsYXFXUE4yNmMzTGFqdTJTS1hjd0NnWUlLb1pJemowRUF3SURSd0F3UkFJZwpCNXNZL0wzZ1VKWnZpRjZOa0h4QXZIUWFPeXhBcG5Fckl1Ymd0SEFibnlvQ0lIM3BxNlRVMHB5eml3UlRvWTQvCjJ5UU9WQXBad2xEQnIrUGZjU1o3WC82NQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYaPeYnWR40112FYOFfLvAu5TCh0J8Y4sfEkYwRAIgajPcyP8FEa8uFCNllBc04ZM41WiOQl/IgP4OpOg4oXUCIAHjAzn9cqao/rSyNCQgcSWeIgzfnGiKgWoKCwA5CZu7 +.metadata.metadata[1]= +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_config.block b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_config.block new file mode 100644 index 0000000000000000000000000000000000000000..c399ea57a6c5ad59455fbaf8ceb50a41f7dbb34c GIT binary patch literal 23084 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 MS8yFXbNuIj0L}?Gy#N3J literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_config.block.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_config.block.json new file mode 100644 index 00000000..ebfa009a --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_config.block.json @@ -0,0 +1,783 @@ +{ + "data": { + "data": [ + { + "payload": { + "data": { + "config": { + "channel_group": { + "groups": { + "Consortiums": { + "groups": { + "SampleConsortium": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "/Channel/Orderer/Admins", + "policies": {}, + "values": { + "ChannelCreationPolicy": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "type": 3, + "value": { + "rule": "ANY", + "sub_policy": "Admins" + } + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "/Channel/Orderer/Admins", + "policies": { + "Admins": { + "mod_policy": "/Channel/Orderer/Admins", + "policy": { + "type": 1, + "value": { + "identities": [], + "rule": { + "n_out_of": { + "n": 0, + "rules": [] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": {}, + "version": "0" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "0" + }, + "last_update": null + }, + "header": { + "channel_header": { + "channel_id": "testchainid", + "epoch": "0", + "extension": null, + "timestamp": "2022-08-12T18:39:53Z", + "tls_cert_hash": null, + "tx_id": "f8792c4b9f199c984902eca8b395de85ad0abf63bee3d9f0451459866866acd9", + "type": 1, + "version": 1 + }, + "signature_header": { + "creator": null, + "nonce": "wDBzVAJ4o3ZVUQxu/51m97d7bALhlqLK" + } + } + }, + "signature": null + } + ] + }, + "header": { + "data_hash": "6slI2MJnotITgHK+IcHjtBGMR5zoqce4YvxgjMQTxLg=", + "number": "0", + "previous_hash": null + }, + "metadata": { + "metadata": [ + "CgIKAA==", + "", + "", + "", + "" + ] + } +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_config.block.json-flat.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_config.block.json-flat.json new file mode 100644 index 00000000..3d81c4ba --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/testchainid_config.block.json-flat.json @@ -0,0 +1,285 @@ +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.name=Org1MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRAJJtoroNFwO8qpT3OQ9jDTgwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBCnb8z/WMtPE/Q3dZmf6aSiWKbiPzbXJXpvUQaRpmAYsFzSuYrCT8IlY3LZjdOhK\nWpBCVfx+5rV5hgM9imbeKNOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\nsUy0UxpS2sQ9nYkPoRav701TU5I3XJQQ+9Oh3i0VGa0wCgYIKoZIzj0EAwIDSAAw\nRQIhAJNtt3jmR/jhC092Giw9Vc4OUcnO8xFjFZO9JB7KVyeLAiBqcSKq0GRqhajK\n4fF+MDb2VozFfqOSny+pcCS+lK31dQ==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICVzCCAf6gAwIBAgIRAKgobdmk4kpMtcNVgNDoM9kwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABErIoZ7ZPxmVsEOBbwIXiIt4oz2ZtIfanXCQiyHs2iRvLNPRnVYzqYWs\n9dQI2baZDExtndb9f4ehI8ouFtiVQTejbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgwl9qUYpumY/0D8So9/txsj16YCWm+RB09b1S/uMrNXwwCgYIKoZIzj0E\nAwIDRwAwRAIgJpPUb9PcZk2vDBUmG7qdVTBQWBTtlA9miYopwLLvldwCIB1wDxGf\nJe855LtxbG6AtyYJzdK6fpa1jGKdQvr5aIog\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org1MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Endorsement.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.msp_identifier=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.name=Org2MSP +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICUjCCAfigAwIBAgIRANSYTPVXNRt329RZzjGknvkwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgzNTAw\nWjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UE\nAxMTY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA\nBDE0AwehTF/3BaTMsOrrJlCRSe52U/9cB8+1Eb9wLrF1aylvzd3hf5yTBCXLq3cF\nR5GSUPlWFB+rWIklQS/8lmijbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU\nBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg\n8Kx53Fy0ZZOKW28dmrx1yCTmbKVyczteZWS62swLOkEwCgYIKoZIzj0EAwIDSAAw\nRQIhAIl9ZanzlyWOHNxCDfEYfI2nD+lfk8ugm4xN0XMhulrcAiBv0pNTP2nUmAVO\nr7KAKQ3cwyaUfG8cPKyL6NbphWjBTg==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICWDCCAf6gAwIBAgIRAKyXTwS2oeYWp/mwjReBd3gwCgYIKoZIzj0EAwIwdjEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs\nc2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMjIwODEyMTgzNTAwWhcNMzIwODA5MTgz\nNTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE\nBxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G\nA1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49\nAwEHA0IABF8fXEGeNoYnveesqvtKIpeL4/jwWL9yh/o9F/u4JfIA3aeFbkOFe7rr\nce34j1zhkNoXnXN0asmzZrvXhAeFAGOjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV\nHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV\nHQ4EIgQgIH/lph/kIHNqGezwpSCTsurPLK+tA+bY2EacCk3W5p0wCgYIKoZIzj0E\nAwIDSAAwRQIgBOi/0IlcjA7LLRSVLM3C3+GDnOnW517txi+E7JfQqRICIQC+UqMP\n1um9K7ZYW/h3v868AErODvSBMWu25gMF86l/yw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.groups.Org2MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.type=3 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.value.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.values.ChannelCreationPolicy.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.groups.SampleConsortium.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.value.rule.n_out_of.n=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Consortiums.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal.role=ADMIN +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.type=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.msp_identifier=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal.role=MEMBER +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.identities[0].principal_classification=ROLE +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.n=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.rule.n_out_of.rules[0].signed_by=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.policy.value.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.Endpoints.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.identity_identifier_hash_function=SHA256 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.crypto_config.signature_hash_family=SHA2 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.admin_ou_identifier.organizational_unit_identifier=admin +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.client_ou_identifier.organizational_unit_identifier=client +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.enable=True +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.orderer_ou_identifier.organizational_unit_identifier=orderer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.certificate=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.fabric_node_ous.peer_ou_identifier.organizational_unit_identifier=peer +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.name=OrdererMSP +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICPjCCAeSgAwIBAgIRAImvLtenNlqCyDNJLTqxOEEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMGkxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j\nb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQVOup1LKvaHK+D17FMJE4daz/M\ntwF34tt8C3T4+8i5UMr63djKQ7Qx9YL1u13DNFmWUk8rTbBql93KRC6J6fbio20w\nazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB\nMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILTAd6lWjpjHmsj2Sve8wA2RHZWq\nljzdunNy2o7tkil3MAoGCCqGSM49BAMCA0gAMEUCID3x8RlxaJamsG0Z1mYwrCEb\ndVcKGN3qwyRpmb/4FjRxAiEAkEKVMbYZ5XuDeXgS7T2a4CB0Fr/J+J6G4X2Uf1xn\nfe0=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.signing_identity=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.config.tls_root_certs[0]=b64(b'-----BEGIN CERTIFICATE-----\nMIICQjCCAemgAwIBAgIQb4zZ+KrhH6xHFhdj8MrzCDAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowbDELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt\ncGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfbU76Ph0qyz4UczNL/\nQdjhhO7rcqTg9fpH+VDs8C4lQi+UslVRWVKo5C+nxUA09bc2HEoNc18HsfvzzKFJ\ndp6jbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYB\nBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZR8E3ZojLe5Iz84hVmiw\n+pGsBOry9X/J+OmSvwxnrPQwCgYIKoZIzj0EAwIDRwAwRAIgX1WzibUZDM9cKUfG\nQNt/O28c58F8bbAYVI3/1twrZR8CICAM1wreA6dd4riS9CU0CVCJLkBwwL2HVElV\nmrwsb1hY\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.value.type=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.values.MSP.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.groups.OrdererOrg.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.BlockValidation.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.groups.Orderer.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.absolute_max_bytes=10485760 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.max_message_count=500 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.preferred_max_bytes=2097152 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.value.timeout=2s +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchTimeout.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.value=None +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ChannelRestrictions.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].host=orderer0.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[0].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgOgAwIBAgIRAKip0+ICEK9ikDgRKR0OjMIwCgYIKoZIzj0EAwIwbDEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l\neGFtcGxlLmNvbTAeFw0yMjA4MTIxODM1MDBaFw0zMjA4MDkxODM1MDBaMFkxCzAJ\nBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh\nbmNpc2NvMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxlLmNvbTBZMBMGByqGSM49\nAgEGCCqGSM49AwEHA0IABBPKjS3cIvFoTQrqBVWJmo/bZkBHLTj9XLuhhrpenG8H\njFYzo2oY9gBQ2HMqcrIk5zGrbFWR4GU+npZxbwN4hmKjgZgwgZUwDgYDVR0PAQH/\nBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8E\nAjAAMCsGA1UdIwQkMCKAIGUfBN2aIy3uSM/OIVZosPqRrATq8vV/yfjpkr8MZ6z0\nMCkGA1UdEQQiMCCCFG9yZGVyZXIwLmV4YW1wbGUuY29tgghvcmRlcmVyMDAKBggq\nhkjOPQQDAgNHADBEAiARB14Z4AZYpZu4URCVqLVtS4ui9oPbFDGmFDkVhH5jPgIg\nRR9bFgqh/FW8R5ZlPWtA5/8LBY4Q/16PUtKmUnWFFOA=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].host=orderer1.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[1].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICWzCCAgKgAwIBAgIQR6ED/z576CZARkT0DfkEEjAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEZFWpSm9bSF8g0eaO07cJSmcRKT42CjlVbg/CMAwP/uD1\n9os4oi5ENhFruWHiW/RD7tg/F+j5banG6J7a2AnFaKOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjEuZXhhbXBsZS5jb22CCG9yZGVyZXIxMAoGCCqG\nSM49BAMCA0cAMEQCIH1D2oTy+1THh3bMLEoTwvp8uVoeBwvxLzigpoohRg83AiAI\n9OH9Sq6LhlFCoT1QvH3BqrzHYkV/YVerNHFdnvSeaw==\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].client_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].host=orderer2.example.com +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].port=7050 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.consenters[2].server_tls_cert=b64(b'-----BEGIN CERTIFICATE-----\nMIICXDCCAgKgAwIBAgIQfOenYeL6qPuDnsn25cLslzAKBggqhkjOPQQDAjBsMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4\nYW1wbGUuY29tMB4XDTIyMDgxMjE4MzUwMFoXDTMyMDgwOTE4MzUwMFowWTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu\nY2lzY28xHTAbBgNVBAMTFG9yZGVyZXIyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C\nAQYIKoZIzj0DAQcDQgAEEdtAG6wnhZ+yDMqWCDL5XIH0+DDoAn1s5Og8LGYRD7iR\nFh6AzllsMGVC0KTgUqHz6lZTDHfv5ta1zBn1aoaiCqOBmDCBlTAOBgNVHQ8BAf8E\nBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC\nMAAwKwYDVR0jBCQwIoAgZR8E3ZojLe5Iz84hVmiw+pGsBOry9X/J+OmSvwxnrPQw\nKQYDVR0RBCIwIIIUb3JkZXJlcjIuZXhhbXBsZS5jb22CCG9yZGVyZXIyMAoGCCqG\nSM49BAMCA0gAMEUCIQDnsiqfQxKS74jBsJ6ewFYqD5TRH8cEvnkSyQeD9EgVewIg\nSKD8Wkz+p6U3OLBdqN9VeDeKJH2op70TYVA01Xy0vI8=\n-----END CERTIFICATE-----\n') +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.election_tick=10 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.heartbeat_tick=1 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.max_inflight_blocks=5 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.snapshot_interval_size=20971520 +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.metadata.options.tick_interval=500ms +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.state=STATE_NORMAL +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.value.type=etcdraft +.data.data[0].payload.data.config.channel_group.groups.Orderer.values.ConsensusType.version=0 +.data.data[0].payload.data.config.channel_group.groups.Orderer.version=0 +.data.data[0].payload.data.config.channel_group.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.rule=MAJORITY +.data.data[0].payload.data.config.channel_group.policies.Admins.policy.value.sub_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Admins.version=0 +.data.data[0].payload.data.config.channel_group.policies.Readers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Readers.policy.value.sub_policy=Readers +.data.data[0].payload.data.config.channel_group.policies.Readers.version=0 +.data.data[0].payload.data.config.channel_group.policies.Writers.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.type=3 +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.rule=ANY +.data.data[0].payload.data.config.channel_group.policies.Writers.policy.value.sub_policy=Writers +.data.data[0].payload.data.config.channel_group.policies.Writers.version=0 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.value.width=4294967295 +.data.data[0].payload.data.config.channel_group.values.BlockDataHashingStructure.version=0 +.data.data[0].payload.data.config.channel_group.values.Capabilities.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.Capabilities.version=0 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.mod_policy=Admins +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.value.name=SHA256 +.data.data[0].payload.data.config.channel_group.values.HashingAlgorithm.version=0 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.mod_policy=/Channel/Orderer/Admins +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[0]=orderer0.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[1]=orderer1.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.value.addresses[2]=orderer2.example.com:7050 +.data.data[0].payload.data.config.channel_group.values.OrdererAddresses.version=0 +.data.data[0].payload.data.config.channel_group.version=0 +.data.data[0].payload.data.config.sequence=0 +.data.data[0].payload.data.last_update=None +.data.data[0].payload.header.channel_header.channel_id=testchainid +.data.data[0].payload.header.channel_header.epoch=0 +.data.data[0].payload.header.channel_header.extension=None +.data.data[0].payload.header.channel_header.timestamp=2022-08-12T18:39:53Z +.data.data[0].payload.header.channel_header.tls_cert_hash=None +.data.data[0].payload.header.channel_header.tx_id=f8792c4b9f199c984902eca8b395de85ad0abf63bee3d9f0451459866866acd9 +.data.data[0].payload.header.channel_header.type=1 +.data.data[0].payload.header.channel_header.version=1 +.data.data[0].payload.header.signature_header.creator=None +.data.data[0].payload.header.signature_header.nonce=wDBzVAJ4o3ZVUQxu/51m97d7bALhlqLK +.data.data[0].signature=None +.header.data_hash=6slI2MJnotITgHK+IcHjtBGMR5zoqce4YvxgjMQTxLg= +.header.number=0 +.header.previous_hash=None +.metadata.metadata[0]=CgIKAA== +.metadata.metadata[1]= +.metadata.metadata[2]= +.metadata.metadata[3]= +.metadata.metadata[4]= diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/updated_config.json b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/updated_config.json new file mode 100644 index 00000000..08b22224 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/updated_config.json @@ -0,0 +1,1033 @@ +{ + "channel_group": { + "groups": { + "Application": { + "groups": { + "Org1MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "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": "Org1MSP", + "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": "Org1MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org1.example.com", + "port": 7051 + } + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org1MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQUpKdG9yb05Gd084cXBUM09ROWpEVGd3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NUzVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkNuYjh6L1dNdFBFL1EzZFptZjZhU2lXS2JpUHpiWEpYcHZVUWFScG1BWXNGelN1WXJDVDhJbFkzTFpqZE9oSwpXcEJDVmZ4KzVyVjVoZ005aW1iZUtOT2piVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKc1V5MFV4cFMyc1E5bllrUG9SYXY3MDFUVTVJM1hKUVErOU9oM2kwVkdhMHdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUpOdHQzam1SL2poQzA5MkdpdzlWYzRPVWNuTzh4RmpGWk85SkI3S1Z5ZUxBaUJxY1NLcTBHUnFoYWpLCjRmRitNRGIyVm96RmZxT1NueStwY0NTK2xLMzFkUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWekNDQWY2Z0F3SUJBZ0lSQUtnb2JkbWs0a3BNdGNOVmdORG9NOWt3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTVM1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRXJJb1o3WlB4bVZzRU9CYndJWGlJdDRvejJadElmYW5YQ1FpeUhzMmlSdkxOUFJuVll6cVlXcwo5ZFFJMmJhWkRFeHRuZGI5ZjRlaEk4b3VGdGlWUVRlamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWd3bDlxVVlwdW1ZLzBEOFNvOS90eHNqMTZZQ1dtK1JCMDliMVMvdU1yTlh3d0NnWUlLb1pJemowRQpBd0lEUndBd1JBSWdKcFBVYjlQY1prMnZEQlVtRzdxZFZUQlFXQlR0bEE5bWlZb3B3TEx2bGR3Q0lCMXdEeEdmCkplODU1THR4Ykc2QXR5WUp6ZEs2ZnBhMWpHS2RRdnI1YUlvZwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "1" + }, + "Org2MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "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": "Org2MSP", + "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": "Org2MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "version": 0 + } + }, + "version": "0" + } + }, + "values": { + "AnchorPeers": { + "mod_policy": "Admins", + "value": { + "anchor_peers": [ + { + "host": "peer0.org2.example.com", + "port": 7051 + } + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org2MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZpZ0F3SUJBZ0lSQU5TWVRQVlhOUnQzMjlSWnpqR2tudmt3Q2dZSUtvWkl6ajBFQXdJd2N6RUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVRFMk5oCkxtOXlaekl1WlhoaGJYQnNaUzVqYjIwd0hoY05Nakl3T0RFeU1UZ3pOVEF3V2hjTk16SXdPREE1TVRnek5UQXcKV2pCek1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQk1LUTJGc2FXWnZjbTVwWVRFV01CUUdBMVVFQnhNTgpVMkZ1SUVaeVlXNWphWE5qYnpFWk1CY0dBMVVFQ2hNUWIzSm5NaTVsZUdGdGNHeGxMbU52YlRFY01Cb0dBMVVFCkF4TVRZMkV1YjNKbk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUEKQkRFMEF3ZWhURi8zQmFUTXNPcnJKbENSU2U1MlUvOWNCOCsxRWI5d0xyRjFheWx2emQzaGY1eVRCQ1hMcTNjRgpSNUdTVVBsV0ZCK3JXSWtsUVMvOGxtaWpiVEJyTUE0R0ExVWREd0VCL3dRRUF3SUJwakFkQmdOVkhTVUVGakFVCkJnZ3JCZ0VGQlFjREFnWUlLd1lCQlFVSEF3RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QXBCZ05WSFE0RUlnUWcKOEt4NTNGeTBaWk9LVzI4ZG1yeDF5Q1RtYktWeWN6dGVaV1M2MnN3TE9rRXdDZ1lJS29aSXpqMEVBd0lEU0FBdwpSUUloQUlsOVphbnpseVdPSE54Q0RmRVlmSTJuRCtsZms4dWdtNHhOMFhNaHVscmNBaUJ2MHBOVFAyblVtQVZPCnI3S0FLUTNjd3lhVWZHOGNQS3lMNk5icGhXakJUZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXRENDQWY2Z0F3SUJBZ0lSQUt5WFR3UzJvZVlXcC9td2pSZUJkM2d3Q2dZSUtvWkl6ajBFQXdJd2RqRUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpJdVpYaGhiWEJzWlM1amIyMHhIekFkQmdOVkJBTVRGblJzCmMyTmhMbTl5WnpJdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpJd09ERXlNVGd6TlRBd1doY05Nekl3T0RBNU1UZ3oKTlRBd1dqQjJNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRQpCeE1OVTJGdUlFWnlZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWZNQjBHCkExVUVBeE1XZEd4elkyRXViM0puTWk1bGVHRnRjR3hsTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDkKQXdFSEEwSUFCRjhmWEVHZU5vWW52ZWVzcXZ0S0lwZUw0L2p3V0w5eWgvbzlGL3U0SmZJQTNhZUZia09GZTdycgpjZTM0ajF6aGtOb1huWE4wYXNtelpydlhoQWVGQUdPamJUQnJNQTRHQTFVZER3RUIvd1FFQXdJQnBqQWRCZ05WCkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdFd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBcEJnTlYKSFE0RUlnUWdJSC9scGgva0lITnFHZXp3cFNDVHN1clBMSyt0QStiWTJFYWNDazNXNXAwd0NnWUlLb1pJemowRQpBd0lEU0FBd1JRSWdCT2kvMElsY2pBN0xMUlNWTE0zQzMrR0RuT25XNTE3dHhpK0U3SmZRcVJJQ0lRQytVcU1QCjF1bTlLN1pZVy9oM3Y4NjhBRXJPRHZTQk1XdTI1Z01GODZsL3l3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "1" + }, + "Org3MSP": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "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": "Org3MSP", + "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": "Org3MSP", + "role": "MEMBER" + }, + "principal_classification": "ROLE" + } + ], + "rule": { + "n_out_of": { + "n": 1, + "rules": [ + { + "signed_by": 0 + } + ] + } + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "Org3MSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNVakNDQWZlZ0F3SUJBZ0lRQWpqb2o3aTFHN3I5WGRGQ0M2NXdnakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NeTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmEKTUhNeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVJrd0Z3WURWUVFLRXhCdmNtY3pMbVY0WVcxd2JHVXVZMjl0TVJ3d0dnWURWUVFECkV4TmpZUzV2Y21jekxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKa3pVelo0TGE3VFh6emlXU2pMdkhEcFV6NnduUjBNeTc2WHpsMVhDdXh2UkhqOXFlOTFuckFzbERYV3A4dC9vbwozWVZDZWN1b0RNSDd3amtaMWxiUlZLTnRNR3N3RGdZRFZSMFBBUUgvQkFRREFnR21NQjBHQTFVZEpRUVdNQlFHCkNDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREFUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01Da0dBMVVkRGdRaUJDQVUKNjhPbzkyQUdOOUdCSFM2WWdHcnVrUTcvcnRKNjdsVGlXV1FiQmRrUEx6QUtCZ2dxaGtqT1BRUURBZ05KQURCRwpBaUVBaWEyeE8wKzFtdlJEdTFheEJjUFNxOXRiUkZjQUc2VjV4S0Z3TXQ2U21iSUNJUUNaTWdGendDbFhzN3oxCjVTUzdqcGtOV0VZRndxNVliREVhV2VSRGU0Vnlpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNWakNDQWYyZ0F3SUJBZ0lRYTJYZjJFcTd6UXNLUi8rNklkQVFtVEFLQmdncWhrak9QUVFEQWpCMk1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTXk1bGVHRnRjR3hsTG1OdmJURWZNQjBHQTFVRUF4TVdkR3h6ClkyRXViM0puTXk1bGVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTEKTURCYU1IWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSApFdzFUWVc0Z1JuSmhibU5wYzJOdk1Sa3dGd1lEVlFRS0V4QnZjbWN6TG1WNFlXMXdiR1V1WTI5dE1SOHdIUVlEClZRUURFeFowYkhOallTNXZjbWN6TG1WNFlXMXdiR1V1WTI5dE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMEQKQVFjRFFnQUVPTUtYOE41eXQzeTVUQTZuQldEbkNpYm83U2hvaTIvNElWSzBYM3ZGenJIU2pBU2Z1Si9aYm5icgpkbFNoOUQyanRLQnh4YXNTUXI3cjl4dTU0cjIrTTZOdE1Hc3dEZ1lEVlIwUEFRSC9CQVFEQWdHbU1CMEdBMVVkCkpRUVdNQlFHQ0NzR0FRVUZCd01DQmdnckJnRUZCUWNEQVRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUNrR0ExVWQKRGdRaUJDQ3Q4Ny9RU3FIcWF2OVpMWDRBS0ZrVUtOVFlYdU5kVWgycGg5Q1FXcWgwbVRBS0JnZ3Foa2pPUFFRRApBZ05IQURCRUFpQU4xcTdFN2xCakNEd3VSSzlqM0F5NmhBN09xcHA3UFN2NUlBU09yYkJSRHdJZ0pUc3Z0L0JJCngzWHhPbVJkVGxtRjZYSnJqMS9wcU9FMnNUMHBtMjJVTTFzPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": "MAJORITY", + "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": { + "ACLs": { + "mod_policy": "Admins", + "value": { + "acls": { + "_lifecycle/CommitChaincodeDefinition": { + "policy_ref": "/Channel/Application/Writers" + }, + "_lifecycle/QueryChaincodeDefinition": { + "policy_ref": "/Channel/Application/Readers" + }, + "_lifecycle/QueryNamespaceDefinitions": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/GetConfigTree": { + "policy_ref": "/Channel/Application/Readers" + }, + "cscc/SimulateConfigTreeUpdate": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/Block": { + "policy_ref": "/Channel/Application/Readers" + }, + "event/FilteredBlock": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/ChaincodeExists": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetChaincodeData": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetDeploymentSpec": { + "policy_ref": "/Channel/Application/Readers" + }, + "lscc/GetInstantiatedChaincodes": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/ChaincodeToChaincode": { + "policy_ref": "/Channel/Application/Readers" + }, + "peer/Propose": { + "policy_ref": "/Channel/Application/Writers" + }, + "qscc/GetBlockByHash": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByNumber": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetBlockByTxID": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetChainInfo": { + "policy_ref": "/Channel/Application/Readers" + }, + "qscc/GetTransactionByID": { + "policy_ref": "/Channel/Application/Readers" + } + } + }, + "version": "0" + }, + "Capabilities": { + "mod_policy": "Admins", + "value": { + "capabilities": { + "V2_0": {} + } + }, + "version": "0" + } + }, + "version": "1" + }, + "Orderer": { + "groups": { + "OrdererOrg": { + "groups": {}, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 1, + "value": { + "identities": [ + { + "principal": { + "msp_identifier": "OrdererMSP", + "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": "OrdererMSP", + "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": "OrdererMSP", + "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": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "admin" + }, + "client_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "client" + }, + "enable": true, + "orderer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "orderer" + }, + "peer_ou_identifier": { + "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", + "organizational_unit_identifier": "peer" + } + }, + "intermediate_certs": [], + "name": "OrdererMSP", + "organizational_unit_identifiers": [], + "revocation_list": [], + "root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQakNDQWVTZ0F3SUJBZ0lSQUltdkx0ZW5ObHFDeUROSkxUcXhPRUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNakE0TVRJeE9ETTFNREJhRncwek1qQTRNRGt4T0RNMU1EQmFNR2t4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJRd0VnWURWUVFLRXd0bGVHRnRjR3hsTG1OdmJURVhNQlVHQTFVRUF4TU9ZMkV1WlhoaGJYQnNaUzVqCmIyMHdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUVZPdXAxTEt2YUhLK0QxN0ZNSkU0ZGF6L00KdHdGMzR0dDhDM1Q0KzhpNVVNcjYzZGpLUTdReDlZTDF1MTNETkZtV1VrOHJUYkJxbDkzS1JDNko2ZmJpbzIwdwphekFPQmdOVkhROEJBZjhFQkFNQ0FhWXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0lHQ0NzR0FRVUZCd01CCk1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0tRWURWUjBPQkNJRUlMVEFkNmxXanBqSG1zajJTdmU4d0EyUkhaV3EKbGp6ZHVuTnkybzd0a2lsM01Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEM3g4Umx4YUphbXNHMFoxbVl3ckNFYgpkVmNLR04zcXd5UnBtYi80RmpSeEFpRUFrRUtWTWJZWjVYdURlWGdTN1QyYTRDQjBGci9KK0o2RzRYMlVmMXhuCmZlMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=" + ], + "signing_identity": null, + "tls_intermediate_certs": [], + "tls_root_certs": [ + "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNRakNDQWVtZ0F3SUJBZ0lRYjR6WitLcmhINnhIRmhkajhNcnpDREFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93YkRFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUm93R0FZRFZRUURFeEYwYkhOallTNWxlR0Z0CmNHeGxMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQklmYlU3NlBoMHF5ejRVY3pOTC8KUWRqaGhPN3JjcVRnOWZwSCtWRHM4QzRsUWkrVXNsVlJXVktvNUMrbnhVQTA5YmMySEVvTmMxOEhzZnZ6ektGSgpkcDZqYlRCck1BNEdBMVVkRHdFQi93UUVBd0lCcGpBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjREFnWUlLd1lCCkJRVUhBd0V3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFwQmdOVkhRNEVJZ1FnWlI4RTNab2pMZTVJejg0aFZtaXcKK3BHc0JPcnk5WC9KK09tU3Z3eG5yUFF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnWDFXemliVVpETTljS1VmRwpRTnQvTzI4YzU4RjhiYkFZVkkzLzF0d3JaUjhDSUNBTTF3cmVBNmRkNHJpUzlDVTBDVkNKTGtCd3dMMkhWRWxWCm1yd3NiMWhZCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + ] + }, + "type": 0 + }, + "version": "0" + } + }, + "version": "0" + } + }, + "mod_policy": "Admins", + "policies": { + "Admins": { + "mod_policy": "Admins", + "policy": { + "type": 3, + "value": { + "rule": "MAJORITY", + "sub_policy": "Admins" + } + }, + "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": 10485760, + "max_message_count": 500, + "preferred_max_bytes": 2097152 + }, + "version": "0" + }, + "BatchTimeout": { + "mod_policy": "Admins", + "value": { + "timeout": "2s" + }, + "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": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer0.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdPZ0F3SUJBZ0lSQUtpcDArSUNFSzlpa0RnUktSME9qTUl3Q2dZSUtvWkl6ajBFQXdJd2JERUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJvd0dBWURWUVFERXhGMGJITmpZUzVsCmVHRnRjR3hsTG1OdmJUQWVGdzB5TWpBNE1USXhPRE0xTURCYUZ3MHpNakE0TURreE9ETTFNREJhTUZreEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaApibU5wYzJOdk1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkJQS2pTM2NJdkZvVFFycUJWV0ptby9iWmtCSExUajlYTHVoaHJwZW5HOEgKakZZem8yb1k5Z0JRMkhNcWNySWs1ekdyYkZXUjRHVStucFp4YndONGhtS2pnWmd3Z1pVd0RnWURWUjBQQVFILwpCQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRkJ3TUJCZ2dyQmdFRkJRY0RBakFNQmdOVkhSTUJBZjhFCkFqQUFNQ3NHQTFVZEl3UWtNQ0tBSUdVZkJOMmFJeTN1U00vT0lWWm9zUHFSckFUcTh2Vi95Zmpwa3I4TVo2ejAKTUNrR0ExVWRFUVFpTUNDQ0ZHOXlaR1Z5WlhJd0xtVjRZVzF3YkdVdVkyOXRnZ2h2Y21SbGNtVnlNREFLQmdncQpoa2pPUFFRREFnTkhBREJFQWlBUkIxNFo0QVpZcFp1NFVSQ1ZxTFZ0UzR1aTlvUGJGREdtRkRrVmhINWpQZ0lnClJSOWJGZ3FoL0ZXOFI1WmxQV3RBNS84TEJZNFEvMTZQVXRLbVVuV0ZGT0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer1.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNXekNDQWdLZ0F3SUJBZ0lRUjZFRC96NTc2Q1pBUmtUMERma0VFakFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeExtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFWkZXcFNtOWJTRjhnMGVhTzA3Y0pTbWNSS1Q0MkNqbFZiZy9DTUF3UC91RDEKOW9zNG9pNUVOaEZydVdIaVcvUkQ3dGcvRitqNWJhbkc2SjdhMkFuRmFLT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pFdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXhNQW9HQ0NxRwpTTTQ5QkFNQ0EwY0FNRVFDSUgxRDJvVHkrMVRIaDNiTUxFb1R3dnA4dVZvZUJ3dnhMemlncG9vaFJnODNBaUFJCjlPSDlTcTZMaGxGQ29UMVF2SDNCcXJ6SFlrVi9ZVmVyTkhGZG52U2Vhdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + }, + { + "client_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", + "host": "orderer2.example.com", + "port": 7050, + "server_tls_cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNYRENDQWdLZ0F3SUJBZ0lRZk9lblllTDZxUHVEbnNuMjVjTHNsekFLQmdncWhrak9QUVFEQWpCc01Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVVNQklHQTFVRUNoTUxaWGhoYlhCc1pTNWpiMjB4R2pBWUJnTlZCQU1URVhSc2MyTmhMbVY0CllXMXdiR1V1WTI5dE1CNFhEVEl5TURneE1qRTRNelV3TUZvWERUTXlNRGd3T1RFNE16VXdNRm93V1RFTE1Ba0cKQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHY21GdQpZMmx6WTI4eEhUQWJCZ05WQkFNVEZHOXlaR1Z5WlhJeUxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDCkFRWUlLb1pJemowREFRY0RRZ0FFRWR0QUc2d25oWit5RE1xV0NETDVYSUgwK0REb0FuMXM1T2c4TEdZUkQ3aVIKRmg2QXpsbHNNR1ZDMEtUZ1VxSHo2bFpUREhmdjV0YTF6Qm4xYW9haUNxT0JtRENCbFRBT0JnTlZIUThCQWY4RQpCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDCk1BQXdLd1lEVlIwakJDUXdJb0FnWlI4RTNab2pMZTVJejg0aFZtaXcrcEdzQk9yeTlYL0orT21Tdnd4bnJQUXcKS1FZRFZSMFJCQ0l3SUlJVWIzSmtaWEpsY2pJdVpYaGhiWEJzWlM1amIyMkNDRzl5WkdWeVpYSXlNQW9HQ0NxRwpTTTQ5QkFNQ0EwZ0FNRVVDSVFEbnNpcWZReEtTNzRqQnNKNmV3RllxRDVUUkg4Y0V2bmtTeVFlRDlFZ1Zld0lnClNLRDhXa3orcDZVM09MQmRxTjlWZURlS0pIMm9wNzBUWVZBMDFYeTB2STg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" + } + ], + "options": { + "election_tick": 10, + "heartbeat_tick": 1, + "max_inflight_blocks": 5, + "snapshot_interval_size": 20971520, + "tick_interval": "500ms" + } + }, + "state": "STATE_NORMAL", + "type": "etcdraft" + }, + "version": "0" + } + }, + "version": "0" + } + }, + "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" + }, + "Consortium": { + "mod_policy": "Admins", + "value": { + "name": "SampleConsortium" + }, + "version": "0" + }, + "HashingAlgorithm": { + "mod_policy": "Admins", + "value": { + "name": "SHA256" + }, + "version": "0" + }, + "OrdererAddresses": { + "mod_policy": "/Channel/Orderer/Admins", + "value": { + "addresses": [ + "orderer0.example.com:7050", + "orderer1.example.com:7050", + "orderer2.example.com:7050" + ] + }, + "version": "0" + } + }, + "version": "0" + }, + "sequence": "3" +} diff --git a/hyperledger_fabric/v2.2.8/raft/channel-artifacts/updated_config.pb b/hyperledger_fabric/v2.2.8/raft/channel-artifacts/updated_config.pb new file mode 100644 index 0000000000000000000000000000000000000000..546f7a29e867ceb4f653b2ce22b56b85ba159953 GIT binary patch literal 29811 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 Tc=OUm}%&(Hq?(N=q1 literal 0 HcmV?d00001 diff --git a/hyperledger_fabric/v2.2.8/raft/configtx.yaml b/hyperledger_fabric/v2.2.8/raft/configtx.yaml new file mode 100644 index 00000000..f4b8c9d1 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/raft/configtx.yaml @@ -0,0 +1,837 @@ +# Copyright IBM Corp. All Rights Reserved. +# +# SPDX-License-Identifier: Apache-2.0 +# + +--- +################################################################################ +# +# ORGANIZATIONS +# +# This section defines the organizational identities that can be referenced +# in the configuration profiles. +# +################################################################################ +Organizations: + + # SampleOrg defines an MSP using the sampleconfig. It should never be used + # in production but may be used as a template for other definitions. + - &SampleOrg + # Name is the key by which this org will be referenced in channel + # configuration transactions. + # Name can include alphanumeric characters as well as dots and dashes. + Name: SampleOrg + + # SkipAsForeign can be set to true for org definitions which are to be + # inherited from the orderer system channel during channel creation. This + # is especially useful when an admin of a single org without access to the + # MSP directories of the other orgs wishes to create a channel. Note + # this property must always be set to false for orgs included in block + # creation. + SkipAsForeign: false + + # ID is the key by which this org's MSP definition will be referenced. + # ID can include alphanumeric characters as well as dots and dashes. + ID: SampleOrg + + # MSPDir is the filesystem path which contains the MSP configuration. + MSPDir: msp + + # Policies defines the set of policies at this level of the config tree + # For organization policies, their canonical path is usually + # /Channel/// + Policies: &SampleOrgPolicies + Readers: + Type: Signature + Rule: "OR('SampleOrg.member')" + # If your MSP is configured with the new NodeOUs, you might + # want to use a more specific rule like the following: + # Rule: "OR('SampleOrg.admin', 'SampleOrg.peer', 'SampleOrg.client')" + Writers: + Type: Signature + Rule: "OR('SampleOrg.member')" + # If your MSP is configured with the new NodeOUs, you might + # want to use a more specific rule like the following: + # Rule: "OR('SampleOrg.admin', 'SampleOrg.client')" + Admins: + Type: Signature + Rule: "OR('SampleOrg.admin')" + Endorsement: + Type: Signature + Rule: "OR('SampleOrg.member')" + + # AnchorPeers defines the location of peers which can be used for + # cross-org gossip communication. Note, this value is only encoded in + # the genesis block in the Application section context. + AnchorPeers: + - Host: 127.0.0.1 + Port: 7051 + + # SampleOrg defines an MSP using the sampleconfig. It should never be used + # in production but may be used as a template for other definitions. + - &OrdererOrg + # Name is the key by which this org will be referenced in channel + # configuration transactions. + # Name can include alphanumeric characters as well as dots and dashes. + Name: OrdererOrg + + # SkipAsForeign can be set to true for org definitions which are to be + # inherited from the orderer system channel during channel creation. This + # is especially useful when an admin of a single org without access to the + # MSP directories of the other orgs wishes to create a channel. Note + # this property must always be set to false for orgs included in block + # creation. + SkipAsForeign: false + + # ID is the key by which this org's MSP definition will be referenced. + # ID can include alphanumeric characters as well as dots and dashes. + ID: OrdererMSP + + # MSPDir is the filesystem path which contains the MSP configuration. + # Used by configtxgen + MSPDir: crypto-config/ordererOrganizations/example.com/msp + + # Policies defines the set of policies at this level of the config tree + # For organization policies, their canonical path is usually + # /Channel/// + Policies: + Readers: + Type: Signature + Rule: "OR('OrdererMSP.member')" + # If your MSP is configured with the new NodeOUs, you might + # want to use a more specific rule like the following: + # Rule: "OR('SampleOrg.admin', 'SampleOrg.peer', 'SampleOrg.client')" + Writers: + Type: Signature + Rule: "OR('OrdererMSP.member')" + Admins: + Type: Signature + Rule: "OR('OrdererMSP.admin')" + OrdererEndpoints: + - "orderer0.example.com:7050" + - "orderer1.example.com:7050" + - "orderer2.example.com:7050" + + - &Org1 + # Name is the key by which this org will be referenced in channel + # configuration transactions. + # Name can include alphanumeric characters as well as dots and dashes. + Name: Org1MSP + + # SkipAsForeign can be set to true for org definitions which are to be + # inherited from the orderer system channel during channel creation. This + # is especially useful when an admin of a single org without access to the + # MSP directories of the other orgs wishes to create a channel. Note + # this property must always be set to false for orgs included in block + # creation. + SkipAsForeign: false + + # ID is the key by which this org's MSP definition will be referenced. + # ID can include alphanumeric characters as well as dots and dashes. + ID: Org1MSP + + # MSPDir is the filesystem path which contains the MSP configuration. + # Used by configtxgen + MSPDir: crypto-config/peerOrganizations/org1.example.com/msp + + # Policies defines the set of policies at this level of the config tree + # For organization policies, their canonical path is usually + # /Channel/// + Policies: &Org1Policies + Readers: + Type: Signature + Rule: "OR('Org1MSP.member')" + # If your MSP is configured with the new NodeOUs, you might + # want to use a more specific rule like the following: + # Rule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')" + Writers: + Type: Signature + Rule: "OR('Org1MSP.member')" + # If your MSP is configured with the new NodeOUs, you might + # want to use a more specific rule like the following: + # Rule: "OR('Org1MSP.admin', 'Org1MSP.client')" + Admins: + Type: Signature + Rule: "OR('Org1MSP.admin')" + Endorsement: + Type: Signature + Rule: "OR('Org1MSP.member')" + + # AnchorPeers defines the location of peers which can be used for + # cross-org gossip communication. Note, this value is only encoded in + # the genesis block in the Application section context. + AnchorPeers: + - Host: peer0.org1.example.com + Port: 7051 + + - &Org2 + # Name is the key by which this org will be referenced in channel + # configuration transactions. + # Name can include alphanumeric characters as well as dots and dashes. + Name: Org2MSP + + # SkipAsForeign can be set to true for org definitions which are to be + # inherited from the orderer system channel during channel creation. This + # is especially useful when an admin of a single org without access to the + # MSP directories of the other orgs wishes to create a channel. Note + # this property must always be set to false for orgs included in block + # creation. + SkipAsForeign: false + + # ID is the key by which this org's MSP definition will be referenced. + # ID can include alphanumeric characters as well as dots and dashes. + ID: Org2MSP + + # MSPDir is the filesystem path which contains the MSP configuration. + # Used by configtxgen + MSPDir: crypto-config/peerOrganizations/org2.example.com/msp + + # Policies defines the set of policies at this level of the config tree + # For organization policies, their canonical path is usually + # /Channel/// + Policies: &Org2Policies + Readers: + Type: Signature + Rule: "OR('Org2MSP.member')" + # If your MSP is configured with the new NodeOUs, you might + # want to use a more specific rule like the following: + # Rule: "OR('Org2MSP.admin', 'Org2MSP.peer', 'Org2MSP.client')" + Writers: + Type: Signature + Rule: "OR('Org2MSP.member')" + # If your MSP is configured with the new NodeOUs, you might + # want to use a more specific rule like the following: + # Rule: "OR('Org2MSP.admin', 'Org2MSP.client')" + Admins: + Type: Signature + Rule: "OR('Org2MSP.admin')" + Endorsement: + Type: Signature + Rule: "OR('Org2MSP.member')" + + # AnchorPeers defines the location of peers which can be used for + # cross-org gossip communication. Note, this value is only encoded in + # the genesis block in the Application section context. + AnchorPeers: + - Host: peer0.org2.example.com + Port: 7051 + + - &Org3 + # Name is the key by which this org will be referenced in channel + # configuration transactions. + # Name can include alphanumeric characters as well as dots and dashes. + Name: Org3MSP + + # SkipAsForeign can be set to true for org definitions which are to be + # inherited from the orderer system channel during channel creation. This + # is especially useful when an admin of a single org without access to the + # MSP directories of the other orgs wishes to create a channel. Note + # this property must always be set to false for orgs included in block + # creation. + SkipAsForeign: false + + # ID is the key by which this org's MSP definition will be referenced. + # ID can include alphanumeric characters as well as dots and dashes. + ID: Org3MSP + + # MSPDir is the filesystem path which contains the MSP configuration. + # Used by configtxgen + MSPDir: crypto-config/peerOrganizations/org3.example.com/msp + + # Policies defines the set of policies at this level of the config tree + # For organization policies, their canonical path is usually + # /Channel/// + Policies: &Org3Policies + Readers: + Type: Signature + Rule: "OR('Org3MSP.member')" + # If your MSP is configured with the new NodeOUs, you might + # want to use a more specific rule like the following: + # Rule: "OR('Org2MSP.admin', 'Org2MSP.peer', 'Org2MSP.client')" + Writers: + Type: Signature + Rule: "OR('Org3MSP.member')" + # If your MSP is configured with the new NodeOUs, you might + # want to use a more specific rule like the following: + # Rule: "OR('Org2MSP.admin', 'Org2MSP.client')" + Admins: + Type: Signature + Rule: "OR('Org3MSP.admin')" + Endorsement: + Type: Signature + Rule: "OR('Org3MSP.member')" + + # AnchorPeers defines the location of peers which can be used for + # cross-org gossip communication. Note, this value is only encoded in + # the genesis block in the Application section context. + AnchorPeers: + - Host: peer0.org3.example.com + Port: 7051 +################################################################################ +# +# CAPABILITIES +# +# This section defines the capabilities of fabric network. This is a new +# concept as of v1.1.0 and should not be utilized in mixed networks with +# v1.0.x peers and orderers. Capabilities define features which must be +# present in a fabric binary for that binary to safely participate in the +# fabric network. For instance, if a new MSP type is added, newer binaries +# might recognize and validate the signatures from this type, while older +# binaries without this support would be unable to validate those +# transactions. This could lead to different versions of the fabric binaries +# having different world states. Instead, defining a capability for a channel +# informs those binaries without this capability that they must cease +# processing transactions until they have been upgraded. For v1.0.x if any +# capabilities are defined (including a map with all capabilities turned off) +# then the v1.0.x peer will deliberately crash. +# +################################################################################ +Capabilities: + # Channel capabilities apply to both the orderers and the peers and must be + # supported by both. + # Set the value of the capability to true to require it. + Channel: &ChannelCapabilities + # V1.3 for Channel is a catchall flag for behavior which has been + # determined to be desired for all orderers and peers running at the v1.3.x + # level, but which would be incompatible with orderers and peers from + # prior releases. + # Prior to enabling V1.3 channel capabilities, ensure that all + # orderers and peers on a channel are at v1.3.0 or later. + V2_0: true + V1_3: false + + # Orderer capabilities apply only to the orderers, and may be safely + # used with prior release peers. + # Set the value of the capability to true to require it. + Orderer: &OrdererCapabilities + # V1.1 for Orderer is a catchall flag for behavior which has been + # determined to be desired for all orderers running at the v1.1.x + # level, but which would be incompatible with orderers from prior releases. + # Prior to enabling V1.1 orderer capabilities, ensure that all + # orderers on a channel are at v1.1.0 or later. + V2_0: true + V1_1: false + + # Application capabilities apply only to the peer network, and may be safely + # used with prior release orderers. + # Set the value of the capability to true to require it. + Application: &ApplicationCapabilities + # V2.0 for Application enables the new non-backwards compatible + # features and fixes of fabric v2.0. + V2_0: true + # V1.3 for Application enables the new non-backwards compatible + # features and fixes of fabric v1.3. + V1_3: false + # V1.2 for Application enables the new non-backwards compatible + # features and fixes of fabric v1.2 (note, this need not be set if + # later version capabilities are set) + V1_2: false + # V1.1 for Application enables the new non-backwards compatible + # features and fixes of fabric v1.1 (note, this need not be set if + # later version capabilities are set). + V1_1: false + +################################################################################ +# +# APPLICATION +# +# This section defines the values to encode into a config transaction or +# genesis block for application-related parameters. +# +################################################################################ +Application: &ApplicationDefaults + ACLs: &ACLsDefault + # This section provides defaults for policies for various resources + # in the system. These "resources" could be functions on system chaincodes + # (e.g., "GetBlockByNumber" on the "qscc" system chaincode) or other resources + # (e.g.,who can receive Block events). This section does NOT specify the resource's + # definition or API, but just the ACL policy for it. + # + # User's can override these defaults with their own policy mapping by defining the + # mapping under ACLs in their channel definition + + #---New Lifecycle System Chaincode (_lifecycle) function to policy mapping for access control--# + + # ACL policy for _lifecycle's "CommitChaincodeDefinition" function + _lifecycle/CommitChaincodeDefinition: /Channel/Application/Writers + + # ACL policy for _lifecycle's "QueryChaincodeDefinition" function + _lifecycle/QueryChaincodeDefinition: /Channel/Application/Readers + + # ACL policy for _lifecycle's "QueryNamespaceDefinitions" function + _lifecycle/QueryNamespaceDefinitions: /Channel/Application/Readers + + #---Lifecycle System Chaincode (lscc) function to policy mapping for access control---# + + # ACL policy for lscc's "getid" function + lscc/ChaincodeExists: /Channel/Application/Readers + + # ACL policy for lscc's "getdepspec" function + lscc/GetDeploymentSpec: /Channel/Application/Readers + + # ACL policy for lscc's "getccdata" function + lscc/GetChaincodeData: /Channel/Application/Readers + + # ACL Policy for lscc's "getchaincodes" function + lscc/GetInstantiatedChaincodes: /Channel/Application/Readers + + #---Query System Chaincode (qscc) function to policy mapping for access control---# + + # ACL policy for qscc's "GetChainInfo" function + qscc/GetChainInfo: /Channel/Application/Readers + + # ACL policy for qscc's "GetBlockByNumber" function + qscc/GetBlockByNumber: /Channel/Application/Readers + + # ACL policy for qscc's "GetBlockByHash" function + qscc/GetBlockByHash: /Channel/Application/Readers + + # ACL policy for qscc's "GetTransactionByID" function + qscc/GetTransactionByID: /Channel/Application/Readers + + # ACL policy for qscc's "GetBlockByTxID" function + qscc/GetBlockByTxID: /Channel/Application/Readers + + #---Configuration System Chaincode (cscc) function to policy mapping for access control---# + + # ACL policy for cscc's "GetConfigBlock" function + cscc/GetConfigBlock: /Channel/Application/Readers + + # ACL policy for cscc's "GetConfigTree" function + cscc/GetConfigTree: /Channel/Application/Readers + + # ACL policy for cscc's "SimulateConfigTreeUpdate" function + cscc/SimulateConfigTreeUpdate: /Channel/Application/Readers + + #---Miscellanesous peer function to policy mapping for access control---# + + # ACL policy for invoking chaincodes on peer + peer/Propose: /Channel/Application/Writers + + # ACL policy for chaincode to chaincode invocation + peer/ChaincodeToChaincode: /Channel/Application/Readers + + #---Events resource to policy mapping for access control###---# + + # ACL policy for sending block events + event/Block: /Channel/Application/Readers + + # ACL policy for sending filtered block events + event/FilteredBlock: /Channel/Application/Readers + + # Organizations lists the orgs participating on the application side of the + # network. + Organizations: + + # Policies defines the set of policies at this level of the config tree + # For Application policies, their canonical path is + # /Channel/Application/ + Policies: &ApplicationDefaultPolicies + LifecycleEndorsement: + Type: ImplicitMeta + Rule: "MAJORITY Endorsement" + Endorsement: + Type: ImplicitMeta + Rule: "MAJORITY Endorsement" + Readers: + Type: ImplicitMeta + Rule: "ANY Readers" + Writers: + Type: ImplicitMeta + Rule: "ANY Writers" + Admins: + Type: ImplicitMeta + Rule: "MAJORITY Admins" + + # Capabilities describes the application level capabilities, see the + # dedicated Capabilities section elsewhere in this file for a full + # description + Capabilities: + <<: *ApplicationCapabilities + +################################################################################ +# +# ORDERER +# +# This section defines the values to encode into a config transaction or +# genesis block for orderer related parameters. +# +################################################################################ +Orderer: &OrdererDefaults + + # Orderer Type: The orderer implementation to start. + # Available types are "solo" and "kafka". + OrdererType: etcdraft + + # Addresses here is a nonexhaustive list of orderers the peers and clients can + # connect to. Adding/removing nodes from this list has no impact on their + # participation in ordering. + # NOTE: In the solo case, this should be a one-item list. + Addresses: + - orderer0.example.com:7050 + - orderer1.example.com:7050 + - orderer2.example.com:7050 + + # Batch Timeout: The amount of time to wait before creating a batch. + BatchTimeout: 2s + + # Batch Size: Controls the number of messages batched into a block. + # The orderer views messages opaquely, but typically, messages may + # be considered to be Fabric transactions. The 'batch' is the group + # of messages in the 'data' field of the block. Blocks will be a few kb + # larger than the batch size, when signatures, hashes, and other metadata + # is applied. + BatchSize: + + # Max Message Count: The maximum number of messages to permit in a + # batch. No block will contain more than this number of messages. + MaxMessageCount: 500 + + # Absolute Max Bytes: The absolute maximum number of bytes allowed for + # the serialized messages in a batch. The maximum block size is this value + # plus the size of the associated metadata (usually a few KB depending + # upon the size of the signing identities). Any transaction larger than + # this value will be rejected by ordering. If the "kafka" OrdererType is + # selected, set 'message.max.bytes' and 'replica.fetch.max.bytes' on + # the Kafka brokers to a value that is larger than this one. + AbsoluteMaxBytes: 10 MB + + # Preferred Max Bytes: The preferred maximum number of bytes allowed + # for the serialized messages in a batch. Roughly, this field may be considered + # the best effort maximum size of a batch. A batch will fill with messages + # until this size is reached (or the max message count, or batch timeout is + # exceeded). If adding a new message to the batch would cause the batch to + # exceed the preferred max bytes, then the current batch is closed and written + # to a block, and a new batch containing the new message is created. If a + # message larger than the preferred max bytes is received, then its batch + # will contain only that message. Because messages may be larger than + # preferred max bytes (up to AbsoluteMaxBytes), some batches may exceed + # the preferred max bytes, but will always contain exactly one transaction. + PreferredMaxBytes: 2 MB + + # Max Channels is the maximum number of channels to allow on the ordering + # network. When set to 0, this implies no maximum number of channels. + MaxChannels: 0 + + Kafka: + # Brokers: A list of Kafka brokers to which the orderer connects. Edit + # this list to identify the brokers of the ordering service. + # NOTE: Use IP:port notation. + Brokers: + - kafka0:9092 + - kafka1:9092 + - kafka2:9092 + - kafka3:9092 + # EtcdRaft defines configuration which must be set when the "etcdraft" + # orderertype is chosen. + EtcdRaft: + # The set of Raft replicas for this network. For the etcd/raft-based + # implementation, we expect every replica to also be an OSN. Therefore, + # a subset of the host:port items enumerated in this list should be + # replicated under the Orderer.Addresses key above. + Consenters: + - Host: orderer0.example.com + Port: 7050 + ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.crt + ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/server.crt + - Host: orderer1.example.com + Port: 7050 + ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.crt + ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/server.crt + - Host: orderer2.example.com + Port: 7050 + ClientTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt + ServerTLSCert: crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/server.crt + + # Options to be specified for all the etcd/raft nodes. The values here + # are the defaults for all new channels and can be modified on a + # per-channel basis via configuration updates. + Options: + # TickInterval is the time interval between two Node.Tick invocations. + TickInterval: 500ms + + # ElectionTick is the number of Node.Tick invocations that must pass + # between elections. That is, if a follower does not receive any + # message from the leader of current term before ElectionTick has + # elapsed, it will become candidate and start an election. + # ElectionTick must be greater than HeartbeatTick. + ElectionTick: 10 + + # HeartbeatTick is the number of Node.Tick invocations that must + # pass between heartbeats. That is, a leader sends heartbeat + # messages to maintain its leadership every HeartbeatTick ticks. + HeartbeatTick: 1 + + # MaxInflightBlocks limits the max number of in-flight append messages + # during optimistic replication phase. + MaxInflightBlocks: 5 + + # SnapshotIntervalSize defines number of bytes per which a snapshot is taken + SnapshotIntervalSize: 20 MB + + # Organizations lists the orgs participating on the orderer side of the + # network. + Organizations: + + # Policies defines the set of policies at this level of the config tree + # For Orderer policies, their canonical path is + # /Channel/Orderer/ + Policies: + Readers: + Type: ImplicitMeta + Rule: "ANY Readers" + Writers: + Type: ImplicitMeta + Rule: "ANY Writers" + Admins: + Type: ImplicitMeta + Rule: "MAJORITY Admins" + # BlockValidation specifies what signatures must be included in the block + # from the orderer for the peer to validate it. + BlockValidation: + Type: ImplicitMeta + Rule: "ANY Writers" + + # Capabilities describes the orderer level capabilities, see the + # dedicated Capabilities section elsewhere in this file for a full + # description + Capabilities: + <<: *OrdererCapabilities + +################################################################################ +# +# CHANNEL +# +# This section defines the values to encode into a config transaction or +# genesis block for channel related parameters. +# +################################################################################ +Channel: &ChannelDefaults + # Policies defines the set of policies at this level of the config tree + # For Channel policies, their canonical path is + # /Channel/ + Policies: + # Who may invoke the 'Deliver' API + Readers: + Type: ImplicitMeta + Rule: "ANY Readers" + # Who may invoke the 'Broadcast' API + Writers: + Type: ImplicitMeta + Rule: "ANY Writers" + # By default, who may modify elements at this config level + Admins: + Type: ImplicitMeta + Rule: "MAJORITY Admins" + + + # Capabilities describes the channel level capabilities, see the + # dedicated Capabilities section elsewhere in this file for a full + # description + Capabilities: + <<: *ChannelCapabilities + +################################################################################ +# +# PROFILES +# +# Different configuration profiles may be encoded here to be specified as +# parameters to the configtxgen tool. The profiles which specify consortiums +# are to be used for generating the orderer genesis block. With the correct +# consortium members defined in the orderer genesis block, channel creation +# requests may be generated with only the org member names and a consortium +# name. +# +################################################################################ +Profiles: + + # SampleSingleMSPSolo defines a configuration which uses the Solo orderer, + # and contains a single MSP definition (the MSP sampleconfig). + # The Consortium SampleConsortium has only a single member, SampleOrg. + SampleSingleMSPSolo: + <<: *ChannelDefaults + Orderer: + <<: *OrdererDefaults + Organizations: + - *SampleOrg + Consortiums: + SampleConsortium: + Organizations: + - *SampleOrg + + # SampleSingleMSPKafka defines a configuration that differs from the + # SampleSingleMSPSolo one only in that it uses the Kafka-based orderer. + SampleSingleMSPKafka: + <<: *ChannelDefaults + Orderer: + <<: *OrdererDefaults + OrdererType: kafka + Organizations: + - *SampleOrg + Consortiums: + SampleConsortium: + Organizations: + - *SampleOrg + + # SampleInsecureSolo defines a configuration which uses the Solo orderer, + # contains no MSP definitions, and allows all transactions and channel + # creation requests for the consortium SampleConsortium. + SampleInsecureSolo: + <<: *ChannelDefaults + Orderer: + <<: *OrdererDefaults + Consortiums: + SampleConsortium: + Organizations: + + # SampleInsecureKafka defines a configuration that differs from the + # SampleInsecureSolo one only in that it uses the Kafka-based orderer. + SampleInsecureKafka: + <<: *ChannelDefaults + Orderer: + OrdererType: kafka + <<: *OrdererDefaults + Consortiums: + SampleConsortium: + Organizations: + + # SampleDevModeSolo defines a configuration which uses the Solo orderer, + # contains the sample MSP as both orderer and consortium member, and + # requires only basic membership for admin privileges. It also defines + # an Application on the ordering system channel, which should usually + # be avoided. + SampleDevModeSolo: + <<: *ChannelDefaults + Orderer: + <<: *OrdererDefaults + Organizations: + - <<: *SampleOrg + Policies: + <<: *SampleOrgPolicies + Admins: + Type: Signature + Rule: "OR('SampleOrg.member')" + Application: + <<: *ApplicationDefaults + Organizations: + - <<: *SampleOrg + Policies: + <<: *SampleOrgPolicies + Admins: + Type: Signature + Rule: "OR('SampleOrg.member')" + Consortiums: + SampleConsortium: + Organizations: + - <<: *SampleOrg + Policies: + <<: *SampleOrgPolicies + Admins: + Type: Signature + Rule: "OR('SampleOrg.member')" + + # SampleDevModeKafka defines a configuration that differs from the + # SampleDevModeSolo one only in that it uses the Kafka-based orderer. + SampleDevModeKafka: + <<: *ChannelDefaults + Orderer: + <<: *OrdererDefaults + OrdererType: kafka + Organizations: + - <<: *SampleOrg + Policies: + <<: *SampleOrgPolicies + Admins: + Type: Signature + Rule: "OR('SampleOrg.member')" + Application: + <<: *ApplicationDefaults + Organizations: + - <<: *SampleOrg + Policies: + <<: *SampleOrgPolicies + Admins: + Type: Signature + Rule: "OR('SampleOrg.member')" + Consortiums: + SampleConsortium: + Organizations: + - <<: *SampleOrg + Policies: + <<: *SampleOrgPolicies + Admins: + Type: Signature + Rule: "OR('SampleOrg.member')" + + # SampleSingleMSPChannel defines a channel with only the sample org as a + # member. It is designed to be used in conjunction with SampleSingleMSPSolo + # and SampleSingleMSPKafka orderer profiles. Note, for channel creation + # profiles, only the 'Application' section and consortium # name are + # considered. + SampleSingleMSPChannel: + <<: *ChannelDefaults + Consortium: SampleConsortium + Application: + <<: *ApplicationDefaults + Organizations: + - <<: *SampleOrg + + # SampleDevModeEtcdRaft defines a configuration that differs from the + # SampleDevModeSolo one only in that it uses the etcd/raft-based orderer. + SampleDevModeEtcdRaft: + <<: *ChannelDefaults + Orderer: + <<: *OrdererDefaults + OrdererType: etcdraft + Organizations: + - <<: *SampleOrg + Policies: + <<: *SampleOrgPolicies + Admins: + Type: Signature + Rule: "OR('SampleOrg.member')" + Application: + <<: *ApplicationDefaults + Organizations: + - <<: *SampleOrg + Policies: + <<: *SampleOrgPolicies + Admins: + Type: Signature + Rule: "OR('SampleOrg.member')" + Consortiums: + SampleConsortium: + Organizations: + - <<: *SampleOrg + Policies: + <<: *SampleOrgPolicies + Admins: + Type: Signature + Rule: "OR('SampleOrg.member')" + TwoOrgsOrdererGenesis: + <<: *ChannelDefaults + Capabilities: + <<: *ChannelCapabilities + Orderer: + <<: *OrdererDefaults + Organizations: + - *OrdererOrg + Capabilities: + <<: *OrdererCapabilities + Consortiums: + SampleConsortium: + Organizations: + - *Org1 + - *Org2 + TwoOrgsChannel: + Consortium: SampleConsortium + <<: *ChannelDefaults + Capabilities: + <<: *ChannelCapabilities + Application: + <<: *ApplicationDefaults + Organizations: + - *Org1 + - *Org2 + Capabilities: + <<: *ApplicationCapabilities diff --git a/hyperledger_fabric/v2.2.8/scripts/configtxgen_channelArtifacts.sh b/hyperledger_fabric/v2.2.8/scripts/configtxgen_channelArtifacts.sh new file mode 100644 index 00000000..f7e77af3 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/configtxgen_channelArtifacts.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash + +# Use ${FABRIC_CFG_PATH}/configtx.yaml to generate following materials, +# and put under /tmp/$CHANNEL_ARTIFACTS: +# system channel genesis block +# new app channel tx +# update anchor peer tx + +# Define those global variables +if [ -f ./variables.sh ]; then + source ./variables.sh +elif [ -f /scripts/variables.sh ]; then + source /scripts/variables.sh +else + echo "Cannot find the variables.sh files, pls check" + exit 1 +fi + +cd /tmp/${CHANNEL_ARTIFACTS} # all generated materials will be put under /tmp/$CHANNEL_ARTIFACTS + +echo "Generate genesis block of system channel using configtx.yaml" +[ ! -f ${ORDERER0_GENESIS_BLOCK} ] && + configtxgen \ + -configPath /tmp \ + -channelID ${SYS_CHANNEL} \ + -profile ${ORDERER_GENESIS_PROFILE} \ + -outputBlock ${ORDERER0_GENESIS_BLOCK} +[ ! -f ${ORDERER0_GENESIS_BLOCK} ] && echo "Fail to generate genesis block ${ORDERER0_GENESIS_BLOCK}" && exit -1 +cp ${ORDERER0_GENESIS_BLOCK} ${ORDERER1_GENESIS_BLOCK} +cp ${ORDERER0_GENESIS_BLOCK} ${ORDERER2_GENESIS_BLOCK} + +#for (( i=1; i<150; i++ )); +#do +#APP_CHANNEL="channel"$i +#APP_CHANNEL_TX=${APP_CHANNEL}".tx" +echo "Create the new app channel ${APP_CHANNEL} tx using configtx.yaml" +[ ! -f ${APP_CHANNEL_TX} ] && + configtxgen \ + -configPath /tmp \ + -profile ${APP_CHANNEL_PROFILE} \ + -channelID ${APP_CHANNEL} \ + -outputCreateChannelTx ${APP_CHANNEL_TX} +[ ! -f ${APP_CHANNEL_TX} ] && echo "Fail to generate app channel tx file" && exit 1 +#done + +[ ! -f ${APP_CHANNEL_TX}.json ] && + configtxgen \ + -inspectChannelCreateTx ${APP_CHANNEL_TX} >${APP_CHANNEL_TX}.json + +echo "Create the anchor peer configuration tx for org1 and org2" +[ ! -f ${UPDATE_ANCHOR_ORG1_TX} ] && + configtxgen \ + -configPath /tmp \ + -profile ${APP_CHANNEL_PROFILE} \ + -channelID ${APP_CHANNEL} \ + -asOrg ${ORG1MSP} \ + -outputAnchorPeersUpdate ${UPDATE_ANCHOR_ORG1_TX} + +[ ! -f ${UPDATE_ANCHOR_ORG1_TX} ] && echo "Fail to generate the anchor update tx for org1" && exit 1 + +[ ! -f ${UPDATE_ANCHOR_ORG2_TX} ] && + configtxgen \ + -configPath /tmp \ + -profile ${APP_CHANNEL_PROFILE} \ + -channelID ${APP_CHANNEL} \ + -asOrg ${ORG2MSP} \ + -outputAnchorPeersUpdate ${UPDATE_ANCHOR_ORG2_TX} + +[ ! -f ${UPDATE_ANCHOR_ORG2_TX} ] && echo "Fail to generate the anchor update tx for org1" && exit 1 + +echo "Output the json for org1, org2 and org3" +declare -a msps=("${ORG1MSP}" + "${ORG2MSP}" + "${ORG3MSP}") +for msp in "${msps[@]}"; do + [ ! -f ${msp}.json ] && + configtxgen \ + -configPath /tmp \ + -printOrg ${msp} >${msp}.json +done diff --git a/hyperledger_fabric/v2.2.8/scripts/cryptogen_cryptoArtifacts.sh b/hyperledger_fabric/v2.2.8/scripts/cryptogen_cryptoArtifacts.sh new file mode 100644 index 00000000..84e0996c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/cryptogen_cryptoArtifacts.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +# use /tmp/crypto-config.yaml to generate /tmp/crypto-config +# use /tmp/org3/crypto-config.yaml to generate /tmp/org3/crypto-config + +cd /tmp # we use /tmp as the base working path + +# The crypto-config will be used by channel artifacts generation later +CRYPTO_CONFIG=crypto-config + +echo "Generating crypto-config for org1 and org2..." +ls -l ${CRYPTO_CONFIG} + +cryptogen generate \ + --config=crypto-config.yaml \ + --output ${CRYPTO_CONFIG} + +#cryptogen extend \ +# --input ${CRYPTO_CONFIG} \ +# --config=crypto-config.yaml + +if [ $? -ne 0 ]; then + echo "Failed to generate certificates for org1 and org2..." + exit 1 +fi + +echo "Generating crypto-config for org3..." +cryptogen generate \ + --config=org3/crypto-config.yaml \ + --output org3/${CRYPTO_CONFIG} + +if [ $? -ne 0 ]; then + echo_r "Failed to generate certificates for org3..." + exit 1 +fi + +echo "Generated credential files and saved to ${CRYPTO_CONFIG}." diff --git a/hyperledger_fabric/v2.2.8/scripts/download_images.sh b/hyperledger_fabric/v2.2.8/scripts/download_images.sh new file mode 100644 index 00000000..2e3c6703 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/download_images.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# peer/orderer/ca/ccenv/tools/javaenv/baseos: 1.4, 1.4.0, 1.4.1, 2.0.0, latest +# baseimage (runtime for golang chaincode) and couchdb: 0.4.18, latest + +# In core.yaml, it requires: +# * fabric-ccenv:$(TWO_DIGIT_VERSION) +# * fabric-baseos:$(TWO_DIGIT_VERSION) +# * fabric-javaenv:$(TWO_DIGIT_VERSION) +# * fabric-nodeenv:$(TWO_DIGIT_VERSION) + +# Define those global variables +if [ -f ./variables.sh ]; then + source ./variables.sh +elif [ -f scripts/variables.sh ]; then + source scripts/variables.sh +else + echo_r "Cannot find the variables.sh files, pls check" + exit 1 +fi + +# pull_image image_name +pull_image() { + IMG=$1 + FORCED="false" + if [ "$#" -eq 2 ]; then + FORCED=$2 + fi + if [ ! -z "$(docker images -q ${IMG} 2>/dev/null)" ] && [ "$FORCED" != "true" ]; then # existed and not forced to update + echo "${IMG} already exists and not forced to update " + else + docker pull ${IMG} + fi +} + +echo "Downloading images from DockerHub... need a while" + +# TODO: we may need some checking on pulling result? +echo "=== Pulling yeasy/hyperledger-fabric-*:${FABRIC_IMG_TAG} images... ===" +for IMG in base peer orderer ca; do + pull_image "yeasy/hyperledger-fabric-${IMG}:$FABRIC_IMG_TAG" "true" & +done + +pull_image yeasy/hyperledger-fabric:$FABRIC_IMG_TAG "true" + +# pull_image yeasy/blockchain-explorer:0.1.0-preview # TODO: wait for official images +#echo "=== Pulling fabric core images ${FABRIC_IMG_TAG} from fabric repo... ===" +#for IMG in peer orderer ca tools; do +# pull_image hyperledger/fabric-${IMG}:$FABRIC_IMG_TAG & # e.g., v2.3.0 +#done + +echo "=== Pulling fabric chaincode images ${TWO_DIGIT_VERSION} from fabric repo... ===" +for IMG in ccenv baseos javaenv nodeenv; do + pull_image hyperledger/fabric-${IMG}:${TWO_DIGIT_VERSION} & # e.g., v2.2 +done + +# TODO: dockerhub fabric-ccenv:2.0 image is too old +# Hence we need to build the image locally and tag it manually +docker tag yeasy/hyperledger-fabric-base hyperledger/fabric-ccenv:${TWO_DIGIT_VERSION} + +echo "Image pulling done, now can startup the network using make start..." +exit 0 diff --git a/hyperledger_fabric/v2.2.8/scripts/env_cleanup.sh b/hyperledger_fabric/v2.2.8/scripts/env_cleanup.sh new file mode 100644 index 00000000..5abb7629 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/env_cleanup.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +# This script will remove all containers and hyperledger related images + +echo "Clean up all containers..." +docker rm -f $(docker ps -qa) + +echo "Clean up all chaincode images..." +docker rmi -f $(docker images | grep 'dev-peer' | awk '{print $3}') + +echo "Clean up all hyperledger related images..." +docker rmi -f $(docker images | grep 'hyperledger' | awk '{print $3}') + +echo "Clean up dangling images..." +docker rmi $(docker images -q -f dangling=true) + +echo "Env cleanup done!" diff --git a/hyperledger_fabric/v2.2.8/scripts/env_setup.sh b/hyperledger_fabric/v2.2.8/scripts/env_setup.sh new file mode 100644 index 00000000..c1f91f18 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/env_setup.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +# Install docker on Ubuntu/Debian system + +install_docker() { + echo "Install Docker..." + wget -qO- https://get.docker.com/ | sh + sudo service docker stop + #nohup sudo docker daemon --api-cors-header="*" -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock& + echo "Docker Installation Done" +} + +install_docker_compose() { + echo "Install Docker-Compose..." + command -v "curl" >/dev/null 2>&1 || sudo apt-get update && apt-get install curl -y + curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-$(uname -s)-$(uname -m) >/usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + docker-compose --version + echo "Docker-Compose Installation Done" +} + +command -v "docker" >/dev/null 2>&1 && echo "Docker already installed" || install_docker + +command -v "docker-compose" >/dev/null 2>&1 && echo "Docker-Compose already installed" || install_docker_compose + +command -v "jq" >/dev/null 2>&1 && echo "jq already installed" || sudo apt-get install jq + +echo "Create default docker network for usage" +docker network create hlf_net diff --git a/hyperledger_fabric/v2.2.8/scripts/func.sh b/hyperledger_fabric/v2.2.8/scripts/func.sh new file mode 100644 index 00000000..59513a51 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/func.sh @@ -0,0 +1,1103 @@ +#!/usr/bin/env bash + +echo_r() { + [ $# -ne 1 ] && return 0 + echo -e "\033[31m$1\033[0m" +} +echo_g() { + [ $# -ne 1 ] && return 0 + echo -e "\033[32m$1\033[0m" +} +echo_y() { + [ $# -ne 1 ] && return 0 + echo -e "\033[33m$1\033[0m" +} +echo_b() { + [ $# -ne 1 ] && return 0 + echo -e "\033[34m$1\033[0m" +} + +# Define those global variables +if [ -f ./variables.sh ]; then + source ./variables.sh +elif [ -f scripts/variables.sh ]; then + source scripts/variables.sh +else + echo_r "Cannot find the variables.sh files, pls check" + exit 1 +fi + +# Verify $1 is not 0, then output error msg $2 and exit +verifyResult() { + if [ $1 -ne 0 ]; then + echo "$2" + echo_r "=== ERROR !!! FAILED to execute End-2-End Scenario ===" + exit 1 + fi +} + +# set env to use orderOrg's identity +setOrdererEnvs() { + export CORE_PEER_LOCALMSPID="OrdererMSP" + export CORE_PEER_MSPCONFIGPATH=${ORDERER0_ADMIN_MSP} + export CORE_PEER_TLS_ROOTCERT_FILE=${ORDERER0_TLS_ROOTCERT} + #t="\${ORG${org}_PEER${peer}_URL}" && CORE_PEER_ADDRESS=`eval echo $t` +} + +# Set global env variables for fabric cli, after setting: +# client is the admin as given org +# TLS root cert is configured to given peer's tls ca +# remote peer address is configured to given peer's + +# CORE_PEER_LOCALMSPID=Org1MSP # local msp id to use +# CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp # local msp path to use +# CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt # local trusted tls ca cert +# CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # remote peer to send proposal to + +# Usage: setEnvs org peer +setEnvs() { + local org=$1 # 1 or 2 + local peer=$2 # 0 or 1 + [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 + + local t="" + export CORE_PEER_LOCALMSPID="Org${org}MSP" + #CORE_PEER_MSPCONFIGPATH=\$${ORG${org}_ADMIN_MSP} + t="\${ORG${org}_PEER${peer}_URL}" && export CORE_PEER_ADDRESS=$(eval echo $t) # this is not needed if specifying peerAddresses + t="\${ORG${org}_ADMIN_MSP}" && export CORE_PEER_MSPCONFIGPATH=$(eval echo $t) + t="\${ORG${org}_PEER${peer}_TLS_ROOTCERT}" && export CORE_PEER_TLS_ROOTCERT_FILE=$(eval echo $t) + + #env |grep CORE + export FABRIC_LOGGING_SPEC="INFO" + #export GOCACHE=/root/.cache/go-build + #go get +} + +# Internal func called by channelCreate +# channelCreateAction channel tx orderer_url orderer_tls_rootcert +channelCreateAction() { + local channel=$1 + local channel_tx=$2 + local orderer_url=$3 + local orderer_tls_rootcert=$4 + + if [ -z "$CORE_PEER_TLS_ENABLED" ] || [ "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer channel create \ + -c ${channel} \ + -o ${orderer_url} \ + -f ${CHANNEL_ARTIFACTS}/${channel_tx} \ + --timeout "${TIMEOUT}s" + else + peer channel create \ + -c ${channel} \ + -o ${orderer_url} \ + -f ${CHANNEL_ARTIFACTS}/${channel_tx} \ + --timeout "${TIMEOUT}s" \ + --tls \ + --cafile ${orderer_tls_rootcert} + fi + return $? +} + +# Use peer0/org1's identity to create a channel +# channelCreate APP_CHANNEL APP_CHANNEL.tx org peer orderer_url orderer_tls_rootcert +channelCreate() { + local channel=$1 + local tx=$2 + local org=$3 + local peer=$4 + local orderer_url=$5 + local orderer_tls_rootcert=$6 + + [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 + + echo "=== Create Channel ${channel} by org $org/peer $peer === " + setEnvs $org $peer + local rc=1 + local counter=0 + while [ ${counter} -lt ${MAX_RETRY} -a ${rc} -ne 0 ]; do + channelCreateAction ${channel} ${tx} ${orderer_url} ${orderer_tls_rootcert} + rc=$? + let counter=${counter}+1 + #COUNTER=` expr $COUNTER + 1` + [ $rc -ne 0 ] && echo "Failed to create channel $channel, retry after 5s" && sleep 5 + done + [ $rc -ne 0 ] && cat log.txt + verifyResult ${rc} "Channel ${channel} creation failed" + echo "=== Channel ${channel} is created. === " +} + +# called by channelJoinWithRetry +channelJoinAction() { + local channel=$1 + peer channel join \ + -b ${channel}.block \ + >&log.txt +} + +## Sometimes Join takes time hence RETRY atleast for 5 times +channelJoinWithRetry() { + local channel=$1 + local peer=$2 + local counter=0 + channelJoinAction ${channel} + local rc=$? + while [ ${counter} -lt ${MAX_RETRY} -a ${rc} -ne 0 ]; do + echo "peer${peer} failed to join channel ${channel}, retry after 2s" + sleep 2 + channelJoinAction ${channel} + rc=$? + let counter=${counter}+1 + done + [ $rc -ne 0 ] && cat log.txt + verifyResult ${rc} "After $MAX_RETRY attempts, peer${peer} failed to Join the Channel" +} + +# Join given (by default all) peers into the channel +# channelJoin channel org peer +channelJoin() { + local channel=$1 + local org=$2 + local peer=$3 + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 + + echo "=== Join org $org/peer $peer into channel ${channel} === " + setEnvs $org $peer + channelJoinWithRetry ${channel} $peer + echo "=== org $org/peer $peer joined into channel ${channel} === " +} + +getShaSum() { + [ ! $# -eq 1 ] && exit 1 + shasum ${1} | awk '{print $1}' +} + +# List the channel that the peer joined +# E.g., for peer 0 at org 1, will do +# channelList 1 0 +channelList() { + local org=$1 + local peer=$2 + echo "=== List the channels that org${org}/peer${peer} joined === " + + setEnvs $org $peer + + peer channel list >&log.txt + rc=$? + [ $rc -ne 0 ] && cat log.txt + if [ $rc -ne 0 ]; then + echo "=== Failed to list the channels that org${org}/peer${peer} joined === " + else + echo "=== Done to list the channels that org${org}/peer${peer} joined === " + fi +} + +# Get the info of specific channel, including {height, currentBlockHash, previousBlockHash}. +# E.g., for peer 0 at org 1, get info of business channel will do +# channelGetInfo businesschannel 1 0 +channelGetInfo() { + local channel=$1 + local org=$2 + local peer=$3 + echo "=== Get channel info (height, currentBlockHash, previousBlockHash) of ${channel} with id of org${org}/peer${peer} === " + + setEnvs $org $peer + + peer channel getinfo -c ${channel} >&log.txt + rc=$? + cat log.txt + if [ $rc -ne 0 ]; then + echo "=== Fail to get channel info of ${channel} with id of org${org}/peer${peer} === " + else + echo "=== Done to get channel info of ${channel} with id of org${org}/peer${peer} === " + fi +} + +# Fetch all blocks for a channel +# Usage: channelFetchAll channel org peer orderer_url orderer_tls_rootcert +channelFetchAll() { + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 + + echo "=== Fetch all block for channel $channel === " + + local block_file=/tmp/${channel}_newest.block + channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} "newest" ${block_file} + [ $? -ne 0 ] && exit 1 + newest_block_shasum=$(getShaSum ${block_file}) + echo "fetch newest block ${block_file} with shasum=${newest_block_shasum}" + + block_file=${CHANNEL_ARTIFACTS}/${channel}_config.block + channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} "config" ${block_file} + [ $? -ne 0 ] && exit 1 + echo "fetch config block ${block_file}" + + for i in $(# we at most fetch 16 blocks + seq 0 16 + ); do + block_file=${CHANNEL_ARTIFACTS}/${channel}_${i}.block + channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} $i ${block_file} + [ $? -ne 0 ] && exit 1 + [ -f $block_file ] || break + echo "fetch block $i and saved into ${block_file}" + block_shasum=$(getShaSum ${block_file}) + [ ${block_shasum} = ${newest_block_shasum} ] && { + echo "Block $i is the last one for channel $channel" + break + } + done +} + +# Fetch some block from a given channel +# channelFetch channel org peer orderer_url blockNum block_file +channelFetch() { + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 + local num=$6 + local block_file=$7 + echo "=== Fetch block $num of channel $channel === " + + #setEnvs $org $peer + setOrdererEnvs # system channel required id from ordererOrg + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "${CORE_PEER_TLS_ENABLED}" ] || [ "${CORE_PEER_TLS_ENABLED}" = "false" ]; then + peer channel fetch $num ${block_file} \ + -o ${orderer_url} \ + -c ${channel} \ + >&log.txt + else + peer channel fetch $num ${block_file} \ + -o ${orderer_url} \ + -c ${channel} \ + --tls \ + --cafile ${orderer_tls_rootcert} \ + >&log.txt + fi + if [ $? -ne 0 ]; then + cat log.txt + echo_r "Fetch block $num of channel $channel failed" + return 1 + else + echo "=== Fetch block $num of channel $channel OK === " + return 0 + fi +} + +# Sign a channel config tx +# Usage: channelSignConfigTx channel org peer transaction +channelSignConfigTx() { + local channel=$1 + local org=$2 + local peer=$3 + local tx=$4 + [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 + echo "=== Sign channel config tx $tx for channel $channel by org $org/peer $peer === " + [ -f ${CHANNEL_ARTIFACTS}/${tx} ] || { + echo_r "${tx} not exist" + exit 1 + } + + setEnvs $org $peer + + peer channel signconfigtx -f ${CHANNEL_ARTIFACTS}/${tx} >&log.txt + rc=$? + [ $rc -ne 0 ] && cat log.txt + if [ $rc -ne 0 ]; then + echo_r "Sign channel config tx for channel $channel by org $org/peer $peer failed" + else + echo "=== Sign channel config tx channel $channel by org $org/peer $peer is successful === " + fi +} + +# Update a channel config +# Usage: channelUpdate channel org peer orderer_url orderer_tls_rootcert transaction_file +channelUpdate() { + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 + local tx=$6 + [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 + + setEnvs $org $peer + echo "=== Update config on channel ${channel} === " + [ -f ${CHANNEL_ARTIFACTS}/${tx} ] || { + echo_r "${tx} not exist" + exit 1 + } + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer channel update \ + -c ${channel} \ + -o ${orderer_url} \ + -f ${CHANNEL_ARTIFACTS}/${tx} \ + >&log.txt + else + peer channel update \ + -c ${channel} \ + -o ${orderer_url} \ + -f ${CHANNEL_ARTIFACTS}/${tx} \ + --tls \ + --cafile ${orderer_tls_rootcert} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "peer channel update failed" + echo "=== Channel ${channel} is updated. === " + sleep 2 +} + +# Install chaincode on the peer node +# In v2.x it will package, install and approve +# chaincodeInstall peer cc_name version cc_path [lang] +chaincodeInstall() { + if [ "$#" -ne 7 ]; then + echo_r "Wrong param number for chaincode install" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local cc_name=$5 + local version=$6 + local cc_path=$7 + + [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $version ] && [ -z $cc_path ] && echo_r "input param invalid" && exit -1 + echo "=== Install Chaincode on org ${org}/peer ${peer} === " + echo "cc_name=${cc_name}, version=${version}, path=${cc_path}" + setEnvs $org $peer + echo "packaging chaincode into tar.gz package" + local label=${cc_name} + #local label=${cc_name}_${version} + + echo "packaging chaincode ${cc_name} with path ${cc_path} and label ${label}" + peer lifecycle chaincode package ${cc_name}.tar.gz \ + --path ${cc_path} \ + --lang golang \ + --label ${label} + + rc=$? + [ $rc -ne 0 ] && echo "Error in packaging chaincode ${cc_name}" && exit -1 + + # v1.x action + #peer chaincode install \ + # -n ${cc_name} \ + # -v $version \ + # -p ${cc_path} \ + # >&log.txt + + echo "installing chaincode to peer${peer}/org${org}" + peer lifecycle chaincode install \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + ${cc_name}.tar.gz | tee >&log.txt + rc=$? + [ $rc -ne 0 ] && cat log.txt + + verifyResult $rc "Chaincode installation on remote org ${org}/peer$peer has Failed" + echo "=== Chaincode is installed on org ${org}/peer $peer === " +} + +# Query the installed chaincode +# chaincodeQueryCommitted org peer peer_url peer_tls_root_cert +chaincodeQueryInstalled() { + if [ "$#" -ne 4 ]; then + echo_r "Wrong param number for chaincode query installed" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + + setEnvs $org $peer + + echo "Query the installed chaincode on peer $peer at $peer_url " + peer lifecycle chaincode queryinstalled \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --output json \ + --connTimeout "3s" + rc=$? + [ $rc -ne 0 ] && cat log.txt + cat log.txt + verifyResult $rc "ChaincodeQueryInstalled Failed: org ${org}/peer$peer" +} + +# Get the installed chaincode packages +# chaincodeGetCommitted org peer peer_url peer_tls_root_cert cc_name +chaincodeGetInstalled() { + if [ "$#" -ne 5 ]; then + echo_r "Wrong param number for chaincode get installed" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local cc_name=$5 + + setEnvs $org $peer + echo "querying installed chaincode and get its package id" + peer lifecycle chaincode queryinstalled >&query.log + local label=${cc_name} + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + package_id=$(grep -o "${label}:[a-z0-9]*" query.log) + + echo "Get the installed chaincode package with id= ${package_id} on peer $peer at $peer_url " + peer lifecycle chaincode getinstalledpackage \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --package-id ${package_id} \ + --output-directory ./ \ + --output json \ + --connTimeout "3s" + rc=$? + [ $rc -ne 0 ] && cat log.txt + cat log.txt + verifyResult $rc "ChaincodeGetInstalled Failed: org ${org}/peer$peer" +} + +# Approve the chaincode definition +# chaincodeApproveForMyOrg channel org peer peer_url peer_tls_root_cert orderer_url orderer_tls_rootcert channel cc_name version +chaincodeApproveForMyOrg() { + if [ "$#" -ne 9 -a "$#" -ne 11 ]; then + echo_r "Wrong param number for chaincode approve" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local orderer_url=$5 + local orderer_tls_rootcert=$6 + local channel=$7 + local cc_name=$8 + local version=$9 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy + + if [ ! -z "${10}" ]; then + collection_config=${10} + fi + + if [ ! -z "${11}" ]; then + policy=${12} + fi + + setEnvs $org $peer + echo "querying installed chaincode and get its package id" + peer lifecycle chaincode queryinstalled >&query.log + cat query.log + local label=${cc_name} + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + package_id=$(grep -o "${label}:[a-z0-9]*" query.log) + echo "Approve package id=${package_id} by Org ${org}/Peer ${peer}" + + # use the --init-required flag to request the ``Init`` function be invoked to initialize the chaincode + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer lifecycle chaincode approveformyorg \ + --peerAddresses ${peer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --package-id ${package_id} \ + --sequence 1 \ + --signature-policy "${policy}" \ + --waitForEvent \ + --orderer ${orderer_url} >&log.txt + else + peer lifecycle chaincode approveformyorg \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --package-id ${package_id} \ + --sequence 1 \ + --signature-policy "${policy}" \ + --waitForEvent \ + --orderer ${orderer_url} \ + --tls true \ + --cafile ${orderer_tls_rootcert} >&log.txt + fi + + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode Approval on remote org ${org}/peer$peer has Failed" + echo "=== Chaincode is approved on remote peer$peer === " +} + +# Query the Approved chaincode definition +# chaincodeQueryApproved org peer peer_url peer_tls_root_cert channel cc_name +chaincodeQueryApproved() { + if [ "$#" -ne 6 ]; then + echo_r "Wrong param number for chaincode queryapproved" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local channel=$5 + local cc_name=$6 + + setEnvs $org $peer + + echo "Query the approved chaincode definition of $cc_name with ${peer_url} " + env | grep CORE_PEER + peer lifecycle chaincode queryapproved \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --name ${cc_name} \ + --output json + + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeQueryApproved Failed: org ${org}/peer$peer" +} + +# Check the commitReadiness of the chaincode definition +# chaincodeCheckCommitReadiness channel org peer cc_name version sequence +chaincodeCheckCommitReadiness() { + if [ "$#" -ne 8 ]; then + echo_r "Wrong param number for chaincode queryapproval" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local channel=$5 + local cc_name=$6 + local version=$7 + local sequence=$8 + + setEnvs $org $peer + + echo "checkcommitreadiness with chaincode $cc_name $version $sequence" + peer lifecycle chaincode checkcommitreadiness \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --name ${cc_name} \ + --output json \ + --version ${version} \ + --sequence ${sequence} + + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeQueryApproval Failed: org ${org}/peer$peer" +} + +# Anyone can commit the chaincode definition once it's approved by major +# chaincodeCommit org peer channel orderer_url orderer_tls_rootcert cc_name version [collection-config] [endorse-policy] +chaincodeCommit() { + if [ "$#" -ne 7 -a "$#" -ne 9 ]; then + echo_r "Wrong param number for chaincode commit" + exit -1 + fi + local org=$1 + local peer=$2 + local channel=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 + local cc_name=$6 + local version=$7 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy + + if [ ! -z "$8" ]; then + collection_config=$8 + fi + + if [ ! -z "$9" ]; then + policy=$9 # chaincode endorsement policy + fi + + setEnvs $org $peer + echo "querying installed chaincode and get its package id" + peer lifecycle chaincode queryinstalled >&query.log + label=${cc_name} + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + package_id=$(grep -o "${label}:[a-z0-9]*" query.log) + echo "package_id=${package_id}" + + echo "Committing package id=${package_id} by Org ${org}/Peer ${peer}" + # use the --init-required flag to request the ``Init`` function be invoked to initialize the chaincode + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer lifecycle chaincode commit \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --sequence 1 \ + --peerAddresses ${ORG1_PEER0_URL} \ + --tlsRootCertFiles ${ORG1_PEER0_TLS_ROOTCERT} \ + --peerAddresses ${ORG2_PEER0_URL} \ + --tlsRootCertFiles ${ORG2_PEER0_TLS_ROOTCERT} \ + --waitForEvent \ + --collections-config "${collection_config}" \ + --signature-policy "${policy}" + else + peer lifecycle chaincode commit \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --sequence 1 \ + --peerAddresses ${ORG1_PEER0_URL} \ + --tlsRootCertFiles ${ORG1_PEER0_TLS_ROOTCERT} \ + --peerAddresses ${ORG2_PEER0_URL} \ + --tlsRootCertFiles ${ORG2_PEER0_TLS_ROOTCERT} \ + --waitForEvent \ + --collections-config "${collection_config}" \ + --signature-policy "${policy}" \ + --tls true \ + --cafile ${orderer_tls_rootcert} >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode Commit on remote org ${org}/peer$peer has Failed" + echo "=== Chaincode is committed on channel $channel === " +} + +# Query the Commit the chaincode definition +# chaincodeQueryCommitted org peer peer_url peer_tls_root_cert channel cc_name +chaincodeQueryCommitted() { + if [ "$#" -ne 6 ]; then + echo_r "Wrong param number for chaincode querycommit" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local channel=$5 + local cc_name=$6 + + setEnvs $org $peer + + echo "Query the committed status of chaincode $cc_name with ${peer_url} " + peer lifecycle chaincode querycommitted \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --output json \ + --name ${cc_name} + + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeQueryCommit Failed: org ${org}/peer$peer" +} + +# Instantiate chaincode on specifized peer node +# chaincodeInstantiate channel org peer orderer_url cc_name version args +chaincodeInstantiate() { + if [ "$#" -gt 9 -a "$#" -lt 7 ]; then + echo_r "Wrong param number for chaincode instantaite" + exit -1 + fi + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local cc_name=$5 + local version=$6 + local args=$7 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy + + if [ ! -z "$8" ]; then + collection_config=$8 + fi + + if [ ! -z "$9" ]; then + policy=$9 + fi + + setEnvs $org $peer + echo "=== chaincodeInstantiate for channel ${channel} on org $org/peer $peer ====" + echo "cc_name=${cc_name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode instantiate \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + >&log.txt + else + peer chaincode instantiate \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + --tls \ + --cafile ${ORDERER0_TLS_CA} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeInstantiation on org $org/peer$peer in channel ${channel} failed" + echo "=== Chaincode Instantiated in channel ${channel} by peer$peer ===" +} + +# Invoke the Init func of chaincode to start the container +# Usage: chaincodeInit org peer channel orderer cc_name args peer_url peer_org_tlsca +chaincodeInit() { + if [ "$#" -ne 8 ]; then + echo_r "Wrong param number for chaincode Init" + exit -1 + fi + local org=$1 + local peer=$2 + local channel=$3 + local orderer=$4 + local cc_name=$5 + local args=$6 + local peer_url=$7 + local peer_org_tlsca=$8 + + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + echo "=== chaincodeInit to orderer by id of org${org}/peer${peer} === " + echo "channel=${channel}, cc_name=${cc_name}, args=${args}" + setEnvs $org $peer + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode invoke \ + -o ${orderer} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_org_tlsca} \ + --isInit \ + -c ${args} \ + >&log.txt + else + peer chaincode invoke \ + -o ${orderer} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_org_tlsca} \ + --isInit \ + -c ${args} \ + --tls \ + --cafile ${ORDERER0_TLS_CA} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode Init failed: peer$peer in channel ${channel}" + echo "=== Chaincode Init done: peer$peer in channel ${channel} === " +} + +# Usage: chaincodeInvoke org peer channel orderer cc_name args peer_url peer_org_tlsca +chaincodeInvoke() { + if [ "$#" -ne 9 ]; then + echo_r "Wrong param number for chaincode Invoke" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_org_tlsca=$4 + local channel=$5 + local orderer_url=$6 + local orderer_tls_rootcert=$7 + local cc_name=$8 + local args=$9 + + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + echo "=== chaincodeInvoke to orderer by id of org${org}/peer${peer} === " + echo "channel=${channel}, cc_name=${cc_name}, args=${args}" + setEnvs $org $peer + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode invoke \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_org_tlsca} \ + -c ${args} \ + >&log.txt + else + peer chaincode invoke \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_org_tlsca} \ + -c ${args} \ + --tls \ + --cafile ${orderer_tls_rootcert} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Invoke execution on peer$peer failed " + echo "=== Invoke transaction on peer$peer in channel ${channel} is successful === " +} + +# query org peer channel cc_name args expected_result +chaincodeQuery() { + if [ "$#" -ne 7 -a "$#" -ne 8 ]; then + echo_r "Wrong param number $# for chaincode Query" + echo $* + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_org_tlsca=$4 + local channel=$5 + local cc_name=$6 + local args=$7 + local expected_result="" + + [ $# -eq 8 ] && local expected_result=$8 + + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + + echo "=== chaincodeQuery to org $org/peer $peer === " + echo "channel=${channel}, cc_name=${cc_name}, args=${args}, expected_result=${expected_result}" + local rc=1 + local starttime=$(date +%s) + + setEnvs $org $peer + + # we either get a successful response, or reach TIMEOUT + while [ "$(($(date +%s) - starttime))" -lt "$TIMEOUT" -a $rc -ne 0 ]; do + echo "Attempting to Query org ${org}/peer ${peer} ...$(($(date +%s) - starttime)) secs" + peer chaincode query \ + -C "${channel}" \ + -n "${cc_name}" \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_org_tlsca} \ + -c "${args}" \ + >&log.txt + rc=$? + if [ -n "${expected_result}" ]; then # need to check the result + test $? -eq 0 && VALUE=$(cat log.txt | awk 'END {print $NF}') + if [ "$VALUE" = "${expected_result}" ]; then + let rc=0 + echo_b "$VALUE == ${expected_result}, passed" + else + let rc=1 + echo_b "$VALUE != ${expected_result}, will retry" + fi + fi + if [ $rc -ne 0 ]; then + cat log.txt + sleep 2 + fi + done + + # rc==0, or timeout + if [ $rc -eq 0 ]; then + echo "=== Query is done: org $org/peer$peer in channel ${channel} === " + else + echo_r "=== Query failed: org $org/peer$peer, run $(make stop clean) to clean ===" + exit 1 + fi +} + +# List Installed chaincode on specified peer node, and instantiated chaincodes at specific channel +# chaincodeList org1 peer0 businesschannel +chaincodeList() { + local org=$1 + local peer=$2 + local channel=$3 + + [ -z $org ] && [ -z $peer ] && [ -z $channel ] && echo_r "input param invalid" && exit -1 + echo "=== ChaincodeList on org ${org}/peer ${peer} === " + setEnvs $org $peer + echo_b "Get installed chaincodes at peer$peer.org$org" + peer chaincode list \ + --installed >log.txt & + # \ + #--peerAddresses "peer${peer}.org${org}.example.com" --tls false + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "List installed chaincodes on remote org ${org}/peer$peer has Failed" + + echo_b "Get instantiated chaincodes at channel $org" + peer chaincode list \ + --instantiated \ + -C ${channel} >log.txt & + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "List installed chaincodes on remote org ${org}/peer$peer has Failed" + echo "=== ChaincodeList is done at peer${peer}.org${org} === " +} + +# Start chaincode with dev mode +# TODO: use variables instead of hard-coded value +chaincodeStartDev() { + local peer=$1 + local version=$2 + [ -z $peer ] && [ -z $version ] && echo_r "input param invalid" && exit -1 + setEnvs 1 0 + CORE_CHAINCODE_LOGLEVEL=debug \ + CORE_PEER_ADDRESS=peer${peer}.org1.example.com:7052 \ + CORE_CHAINCODE_ID_NAME=${CC_02_NAME}:${version} \ + nohup ./scripts/chaincode_example02 >chaincode_dev.log & + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode start in dev mode has Failed" + echo "=== Chaincode started in dev mode === " +} + +# chaincodeUpgrade channel org peer orderer_url cc_name version args +chaincodeUpgrade() { + if [ "$#" -gt 9 -a "$#" -lt 7 ]; then + echo_r "Wrong param number for chaincode instantaite" + exit -1 + fi + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local cc_name=$5 + local version=$6 + local args=$7 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy + + echo "=== chaincodeUpgrade to orderer by id of org ${org}/peer $peer === " + echo "cc_name=${cc_name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" + + setEnvs $org $peer + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode upgrade \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + >&log.txt + else + peer chaincode upgrade \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + --tls \ + --cafile ${ORDERER0_TLS_CA} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Upgrade execution on peer$peer failed " + echo "=== Upgrade transaction on peer$peer in channel ${channel} is successful === " +} + +# configtxlator encode json to pb +# Usage: configtxlatorEncode msgType input output +configtxlatorEncode() { + local msgType=$1 + local input=$2 + local output=$3 + + echo "Encode $input --> $output using type $msgType" + docker exec -it ${CTL_CONTAINER} configtxlator proto_encode \ + --type=${msgType} \ + --input=${input} \ + --output=${output} + + #curl -sX POST \ + # --data-binary @${input} \ + # ${CTL_ENCODE_URL}/${msgType} \ + # >${output} +} + +# configtxlator decode pb to json +# Usage: configtxlatorDecode msgType input output +configtxlatorDecode() { + local msgType=$1 + local input=$2 + local output=$3 + + echo "Config Decode $input --> $output using type $msgType" + if [ ! -f $input ]; then + echo_r "input file not found" + exit 1 + fi + + docker exec -it ${CTL_CONTAINER} configtxlator proto_decode \ + --type=${msgType} \ + --input=${input} \ + --output=${output} + + #curl -sX POST \ + # --data-binary @"${input}" \ + # "${CTL_DECODE_URL}/${msgType}" \ + # > "${output}" +} + +# compute diff between two pb +# Usage: configtxlatorCompare channel origin updated output +configtxlatorCompare() { + local channel=$1 + local origin=$2 + local updated=$3 + local output=$4 + + echo "Config Compare $origin vs $updated > ${output} in channel $channel" + if [ ! -f $origin ] || [ ! -f $updated ]; then + echo_r "input file not found" + exit 1 + fi + + docker exec -it ${CTL_CONTAINER} configtxlator compute_update \ + --original=${origin} \ + --updated=${updated} \ + --channel_id=${channel} \ + --output=${output} + + #curl -sX POST \ + # -F channel="${channel}" \ + # -F "original=@${origin}" \ + # -F "updated=@${updated}" \ + # "${CTL_COMPARE_URL}" \ + # > "${output}" + + [ $? -eq 0 ] || echo_r "Failed to compute config update" +} + +# Run cmd inside the config generator container +gen_con_exec() { + docker exec -it $GEN_CONTAINER "$@" +} diff --git a/hyperledger_fabric/v2.2.8/scripts/gen_channel_artifacts.sh b/hyperledger_fabric/v2.2.8/scripts/gen_channel_artifacts.sh new file mode 100644 index 00000000..ec466f4c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/gen_channel_artifacts.sh @@ -0,0 +1,44 @@ +#! /bin/bash +# Generating +# * channel-artifacts +# * orderer.genesis.block +# * channel.tx +# * Org1MSPanchors.tx +# * Org2MSPanchors.tx + +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +else + echo "Cannot find the func.sh files, pls check" + exit 1 +fi + +[ $# -ne 1 ] && echo_r "[Usage] $0 solo|kafka" && exit 1 || MODE=$1 + +echo_b "Generating channel artifacts with ${GEN_IMG} in mode ${MODE}" + +[ ! -d ${MODE}/${CHANNEL_ARTIFACTS} ] && mkdir -p ${MODE}/${CHANNEL_ARTIFACTS} + +echo_b "Make sure channel-artifacts dir exists already" +if [ -d ${MODE}/${CHANNEL_ARTIFACTS} -a ! -z "$(ls -A ${MODE}/${CHANNEL_ARTIFACTS})" ]; then + echo_b "${CHANNEL_ARTIFACTS} exists, ignore." + exit 0 +fi + +echo_g "Generating ${CHANNEL_ARTIFACTS}..." +docker run \ + --rm -it \ + --name ${GEN_CONTAINER} \ + -e "FABRIC_LOGGING_SPEC=common.tools.configtxgen=DEBUG:INFO" \ + -v $PWD/${CRYPTO_CONFIG}:/tmp/${CRYPTO_CONFIG} \ + -v $PWD/${MODE}/configtx.yaml:/tmp/configtx.yaml \ + -v $PWD/${MODE}/${CHANNEL_ARTIFACTS}:/tmp/${CHANNEL_ARTIFACTS} \ + -v $PWD/org3:/tmp/org3 \ + -v $PWD/scripts/variables.sh:/scripts/variables.sh \ + -v $PWD/scripts/configtxgen_channelArtifacts.sh:/scripts/configtxgen_channelArtifacts.sh \ + ${GEN_IMG} sh -c 'sleep 1; bash /scripts/configtxgen_channelArtifacts.sh' +[ $? -ne 0 ] && exit 1 + +echo_g "Generate channel artifacts with $0 done" diff --git a/hyperledger_fabric/v2.2.8/scripts/gen_crypto_artifacts.sh b/hyperledger_fabric/v2.2.8/scripts/gen_crypto_artifacts.sh new file mode 100644 index 00000000..b6bba436 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/gen_crypto_artifacts.sh @@ -0,0 +1,41 @@ +#! /bin/bash +# Generating +# * crypto-config/* + +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +else + echo "Cannot find the func.sh files, pls check" + exit 1 +fi + +echo_b "Clean existing container $GEN_CONTAINER" +[ "$(docker ps -a | grep $GEN_CONTAINER)" ] && docker rm -f $GEN_CONTAINER + +[ ! -d ${CRYPTO_CONFIG} ] && mkdir -p ${CRYPTO_CONFIG} +[ ! -d org3/${CRYPTO_CONFIG} ] && mkdir -p org3/${CRYPTO_CONFIG} + +echo_b "Make sure crypto-config dir exists already" +if [ -d ${CRYPTO_CONFIG} -a ! -z "$(ls -A ${CRYPTO_CONFIG})" ]; then # No need to regen + echo_b "${CRYPTO_CONFIG} exists, ignore." + exit 0 +fi + +echo_g "Generating ${CRYPTO_CONFIG}..." +docker run \ + --rm -it \ + --name ${GEN_CONTAINER} \ + -e "CONFIGTX_LOGGING_LEVEL=DEBUG" \ + -v $PWD/${CRYPTO_CONFIG}:/tmp/${CRYPTO_CONFIG} \ + -v $PWD/crypto-config.yaml:/tmp/crypto-config.yaml \ + -v $PWD/org3:/tmp/org3 \ + -v $PWD/scripts/cryptogen_cryptoArtifacts.sh:/scripts/cryptogen_cryptoArtifacts.sh \ + ${GEN_IMG} sh -c 'sleep 1; bash /scripts/cryptogen_cryptoArtifacts.sh' +[ $? -ne 0 ] && exit 1 + +echo_b "Copy org3's crypto config outside" +cp -r org3/${CRYPTO_CONFIG}/* ${CRYPTO_CONFIG}/ + +echo_g "Generate crypto configs with $0 done" diff --git a/hyperledger_fabric/v2.2.8/scripts/init_chaincode_dev.sh b/hyperledger_fabric/v2.2.8/scripts/init_chaincode_dev.sh new file mode 100644 index 00000000..de002aa2 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/init_chaincode_dev.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +# This script will build and start and test chaincode in DEV mode + +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +else + echo "Cannot find the func.sh files, pls check" + exit 1 +fi + +echo +echo " ============================================== " +echo " ==========initialize businesschannel========== " +echo " ============================================== " +echo + +echo_b "Channel name: "${APP_CHANNEL} + +## Create channel +echo_b "Creating channel..." +channelCreate ${APP_CHANNEL} ${APP_CHANNEL_TX} ${ORDERER0_URL} + +sleep 1 + +## Join all the peers to the channel +echo_b "Having peer0 join the channel..." +channelJoin ${APP_CHANNEL} 0 + +sleep 1 + +## Set the anchor peers for each org in the channel +#echo_b "Updating anchor peers for peer0/org1... no use for only single channel" +#updateAnchorPeers 0 + +# We suppose the binary is there, otherwise, run `go build` under the chaincode path +chaincodeStartDev 0 1.0 +sleep 1 + +## Install chaincode on all peers +echo_b "Installing chaincode on peer0..." +chaincodeInstall 0 1.0 + +sleep 1 + +# Instantiate chaincode on all peers +# Instantiate can only be executed once on any node +echo_b "Instantiating chaincode on the channel..." +chaincodeInstantiate 0 + +sleep 1 + +echo +echo_g "===================== All GOOD, initialization completed ===================== " +echo + +echo +echo " _____ _ _ ____ " +echo "| ____| | \ | | | _ \ " +echo "| _| | \| | | | | |" +echo "| |___ | |\ | | |_| |" +echo "|_____| |_| \_| |____/ " +echo + +exit 0 diff --git a/hyperledger_fabric/v2.2.8/scripts/initialize_peer0.sh b/hyperledger_fabric/v2.2.8/scripts/initialize_peer0.sh new file mode 100644 index 00000000..ac448f6f --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/initialize_peer0.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +echo_b " ========== Network initialization start ========== " + +## Create channel +echo_b "Creating channel ${APP_CHANNEL} with ${APP_CHANNEL_TX}..." +channelCreate ${APP_CHANNEL} ${APP_CHANNEL_TX} ${ORDERER0_URL} + +sleep 1 + +## Join all the peers to the channel +echo_b "Having peer0 join the channel..." +channelJoin ${APP_CHANNEL} 0 + +## Set the anchor peers for each org in the channel +echo_b "Updating anchor peers for peer0/org1... no use for only single channel" +channelUpdate ${APP_CHANNEL} 1 0 ${ORDERER0_URL} ${ORDERER0_TLS_ROOTCERT} Org1MSPanchors.tx + +## Install chaincode on all peers +CC_NAME=${CC_02_NAME} +CC_PATH=${CC_02_PATH} +echo_b "Installing chaincode ${CC_NAME} on peer0..." +chaincodeInstall 1 0 ${CC_NAME} ${CC_INIT_VERSION} ${CC_PATH} + +# Instantiate chaincode on all peers +# Instantiate can only be executed once on any node +echo_b "Instantiating chaincode on the channel..." +chaincodeInstantiate ${APP_CHANNEL} 0 + +echo_g "=============== All GOOD, network initialization done =============== " +echo + +exit 0 diff --git a/hyperledger_fabric/v2.2.8/scripts/json_flatter.py b/hyperledger_fabric/v2.2.8/scripts/json_flatter.py new file mode 100644 index 00000000..890c5181 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/json_flatter.py @@ -0,0 +1,105 @@ +import base64 +import binascii +import json +import os +import sys + + +def decode_if_b64(raw): + """ + Decode a string if it's base 64 + :param raw: original bytes + :return: True, decoded_result or False, Orignal bytes + """ + success = False + result = raw + try: + if isinstance(raw, str): + result = base64.decodebytes(bytes(raw, 'utf-8')) + success = True + except binascii.Error: + success = False + + # if success: # result_bytes = b'xxxx\xx' + # print('===================Start==================================') + # print(raw) + # print(result) + # print('=====================End===================================') + return success, result + + +def check_tree(tree, prefix, f_write): + """ + Print the tree recursively with given path prefix + :param tree: the tree to check + :param prefix: path prefix to the root of this tree + :param f_write: Which file to write into + :return: + """ + if isinstance(tree, dict): + for k, v in tree.items(): + prefix_path = prefix + "." + k + if isinstance(v, dict) or isinstance(v, list): # continue sub-tree + check_tree(v, prefix_path, f_write) + else: # leaf + result = v + if 'cert' in k or 'id_bytes' in k or 'value' in k and 'hash' not in k: + # print(prefix_path) + success, result = decode_if_b64(v) + if success: + result = "b64({})".format(result) + f_write.write("{}={}\n".format(prefix_path, result)) + elif isinstance(tree, list): + for i, v in enumerate(tree): + prefix_path = "{}[{}]".format(prefix, i) + if isinstance(v, dict) or isinstance(v, list): # continue sub-tree + check_tree(v, prefix_path, f_write) + else: # leaf + result = v + if 'metadata' not in prefix_path: + success, result = decode_if_b64(v) + if success: + # print(prefix_path) + result = "b64({})".format(result) + f_write.write("{}={}\n".format(prefix_path, result)) + else: # json only allow dict or list structure + print("Wrong format of json tree") + + +def process(directory): + """ + Process all json files under the path + :param directory: Check json files under which directory + :return: + """ + for f in os.listdir(directory): + if f.endswith(".block.json"): + file_name = os.path.join(json_dir, f) + f_read = open(file=file_name, mode="r", encoding='utf-8') + f_write = open(file=file_name + "-flat.json", mode="w", + encoding='utf-8') + check_tree(json.load(f_read), "", f_write) + f_read.close() + f_write.close() + else: + print("Ignore non-json file {}".format(f)) + + +# Usage python json_flatter.py [path_containing_json_files] +# Print all json elements in flat structure +# e.g., +# { +# "a": { +# "b": ["c", "d"] +# } +# } +# ==> +# a.b[0]=c +# a.b[1]=d +if __name__ == '__main__': + json_dir = "../raft/channel-artifacts/" + if len(sys.argv) > 1: + json_dir = sys.argv[1] + + print("Will process json files under {}".format(json_dir)) + process(json_dir) diff --git a/hyperledger_fabric/v2.2.8/scripts/start_eventsclient.sh b/hyperledger_fabric/v2.2.8/scripts/start_eventsclient.sh new file mode 100644 index 00000000..8dd82e47 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/start_eventsclient.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +# This script will start the eventsclient + +# Importing useful functions +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +echo_g "=== Testing eventsclient in a loop ===" + +CORE_PEER_LOCALMSPID=${ORG1MSP} \ + CORE_PEER_MSPCONFIGPATH=${ORG1_ADMIN_MSP} \ + eventsclient \ + -server=${ORG1_PEER0_URL} \ + -channelID=${APP_CHANNEL} \ + -filtered=true \ + -tls=true \ + -clientKey=${ORG1_ADMIN_TLS_CLIENT_KEY} \ + -clientCert=${ORG1_ADMIN_TLS_CLIENT_CERT} \ + -rootCert=${ORG1_ADMIN_TLS_CA_CERT} diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_approveformyorg.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_approveformyorg.sh new file mode 100644 index 00000000..bf0cbb7c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_approveformyorg.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Install chaincode on all peers +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_PATH=${CC_PATH:-$CC_02_PATH} + +echo_b "=== Approve chaincode definition ${CC_NAME} on all organizations ... ===" + +for org in "${ORGS[@]}"; do + t="\${ORG${org}_PEER0_URL}" && peer_url=$(eval echo $t) + t="\${ORG${org}_PEER0_TLS_ROOTCERT}" && peer_tls_rootcert=$(eval echo $t) + chaincodeApproveForMyOrg "$org" 0 ${peer_url} ${peer_tls_rootcert} ${ORDERER0_URL} ${ORDERER0_TLS_ROOTCERT} "${APP_CHANNEL}" ${CC_NAME} ${CC_INIT_VERSION} +done + +echo_g "=== Approve chaincode done ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_checkcommitreadiness.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_checkcommitreadiness.sh new file mode 100644 index 00000000..887fca52 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_checkcommitreadiness.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Install chaincode on all peers +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_PATH=${CC_PATH:-$CC_02_PATH} + +echo_b "=== Query Chaincode approve status ${CC_NAME} on all organizations ... ===" + +for org in "${ORGS[@]}"; do + t="\${ORG${org}_PEER0_URL}" && peer_url=$(eval echo $t) + t="\${ORG${org}_PEER0_TLS_ROOTCERT}" && peer_tls_rootcert=$(eval echo $t) + chaincodeCheckCommitReadiness "$org" 0 ${peer_url} ${peer_tls_rootcert} "${APP_CHANNEL}" ${CC_NAME} ${CC_INIT_VERSION} 1 +done + +echo_g "=== Query Chaincode approve status done ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_commit.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_commit.sh new file mode 100644 index 00000000..9563893b --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_commit.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Install chaincode on all peers +CC_NAME=${CC_NAME:-$CC_02_NAME} + +# Once a sufficient number of organizations (in this case, a majority) have +# approved a chaincode definition, one organization commit the definition to the +# channel. + +echo_b "=== Commit chaincode definition ${CC_NAME} to channel ${APP_CHANNEL} ... ===" + +chaincodeCommit "${ORGS[0]}" "${PEERS[0]}" "${APP_CHANNEL}" "${ORDERER0_URL}" ${ORDERER0_TLS_ROOTCERT} ${CC_NAME} ${CC_INIT_VERSION} + +echo_g "=== Commit Chaincode done, now you can invoke chaincode to start the container ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_getinstalled.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_getinstalled.sh new file mode 100644 index 00000000..8e042c78 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_getinstalled.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +CC_NAME=${CC_NAME:-$CC_02_NAME} + +## Query the installed chaincode on all peers +echo_b "=== Get Chaincode packages installed on all organizations ... ===" + +for org in "${ORGS[@]}"; do + t="\${ORG${org}_PEER0_URL}" && peer_url=$(eval echo $t) + t="\${ORG${org}_PEER0_TLS_ROOTCERT}" && peer_tls_rootcert=$(eval echo $t) + chaincodeGetInstalled "$org" 0 ${peer_url} ${peer_tls_rootcert} ${CC_NAME} +done + +echo_g "=== Get Chaincode installed packages done ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_install.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_install.sh new file mode 100644 index 00000000..20892337 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_install.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Install chaincode on all peers +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_PATH=${CC_PATH:-$CC_02_PATH} + +echo_b "=== Installing chaincode ${CC_NAME} on all 4 peers... ===" + +for org in "${ORGS[@]}"; do + for peer in "${PEERS[@]}"; do + t="\${ORG${org}_PEER${peer}_URL}" && peer_url=$(eval echo $t) + t="\${ORG${org}_PEER${peer}_TLS_ROOTCERT}" && peer_tls_rootcert=$(eval echo $t) + chaincodeInstall $org $peer "${peer_url}" "${peer_tls_rootcert}" ${CC_NAME} ${CC_INIT_VERSION} ${GOPATH}/src/${CC_PATH} # with go 1.14, we cannot use import path with module, see FAB-17924 + done +done + +echo_g "=== Install chaincode done ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_instantiate.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_instantiate.sh new file mode 100644 index 00000000..47f1552c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_instantiate.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_INIT_ARGS=${CC_INIT_ARGS:-$CC_02_INIT_ARGS} + +# Instantiate chaincode in the channel, executed once on any node is enough +# (once for each channel is enough, we make it concurrent here) +echo_b "=== Instantiating chaincode on channel ${APP_CHANNEL}... ===" + +# Instantiate at org1.peer0 and org2.peer0, actually it can be triggered once per channel +chaincodeInstantiate "${APP_CHANNEL}" 1 0 ${ORDERER0_URL} ${CC_NAME} ${CC_INIT_VERSION} ${CC_INIT_ARGS} +#chaincodeInstantiate "${APP_CHANNEL}" 2 0 ${ORDERER0_URL} ${CC_NAME} ${CC_INIT_VERSION} ${CC_INIT_ARGS} + +echo_g "=== Instantiate chaincode on channel ${APP_CHANNEL} done ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_invoke_query.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_invoke_query.sh new file mode 100644 index 00000000..69f99326 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_invoke_query.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_INVOKE_ARGS=${CC_INVOKE_ARGS:-$CC_02_INVOKE_ARGS} +CC_QUERY_ARGS=${CC_QUERY_ARGS:-$CC_02_QUERY_ARGS} + +#Query on chaincode on Peer0/Org1 +echo_b "=== Testing Chaincode invoke/query ===" + +#Invoke on chaincode on Peer0/Org1 +echo_b "Init chaincode by org1/peer0..." +chaincodeInit 1 0 ${APP_CHANNEL} "${ORDERER0_URL}" ${CC_NAME} ${CC_INIT_ARGS} "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" + +sleep 5 # wait for chaincode is up + +# Non-side-DB testing +echo_b "Query chaincode ${CC_NAME} on peer org1/peer0..." +chaincodeQuery 1 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} ${CC_NAME} ${CC_QUERY_ARGS} 100 + +#Invoke on chaincode on Peer0/Org1 +echo_b "Invoke transaction (transfer 10) by org1/peer0..." +chaincodeInvoke 1 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} "${ORDERER0_URL}" ${ORDERER0_TLS_ROOTCERT} ${CC_NAME} ${CC_INVOKE_ARGS} + +#Query on chaincode on Peer1/Org2, check if the result is 90 +echo_b "Query chaincode on org2/peer1..." +chaincodeQuery 2 1 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} ${CC_NAME} ${CC_QUERY_ARGS} 90 + +#Invoke on chaincode on Peer1/Org2 +echo_b "Send invoke transaction on org2/peer1..." +chaincodeInvoke 2 1 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} "${ORDERER0_URL}" ${ORDERER0_TLS_ROOTCERT} ${CC_NAME} ${CC_INVOKE_ARGS} + +#Query on chaincode on Peer1/Org2, check if the result is 80 +echo_b "Query chaincode on org1/peer0..." +chaincodeQuery 1 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} ${CC_NAME} ${CC_QUERY_ARGS} 80 + +echo_g "=== Chaincode invoke/query done ===" diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_list.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_list.sh new file mode 100644 index 00000000..55e20bec --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_list.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ../../v1.1.0/scripts/func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +echo_b "=== List chaincode on all peer0.org1... ===" + +chaincodeList 1 0 ${APP_CHANNEL} + +echo_g "=== List chaincode done ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_peer0.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_peer0.sh new file mode 100644 index 00000000..5a9bb779 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_peer0.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_INVOKE_ARGS=${CC_INVOKE_ARGS:-$CC_02_INVOKE_ARGS} +CC_QUERY_ARGS=${CC_QUERY_ARGS:-$CC_02_QUERY_ARGS} + +echo_b "Channel name: "${APP_CHANNEL} + +echo_b "Query the existing value of a" +chaincodeQuery 1 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} ${CC_NAME} ${CC_QUERY_ARGS} 100 + +sleep 1 + +echo_b "Invoke a transaction to transfer 10 from a to b" +chaincodeInvoke 1 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} "${ORDERER_URL}" ${CC_NAME} ${CC_INVOKE_ARGS} + +sleep 1 + +echo_b "Check if the result of a is 90" +chaincodeQuery 1 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} ${CC_NAME} ${CC_QUERY_ARGS} 90 + +echo +echo_g "All GOOD, MVE Test completed" +echo +exit 0 diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_queryapproved.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_queryapproved.sh new file mode 100644 index 00000000..e5fc3ebd --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_queryapproved.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_PATH=${CC_PATH:-$CC_02_PATH} + +echo_b "=== Query Approved Chaincode for ${CC_NAME} on all organizations ... ===" + +for org in "${ORGS[@]}"; do + t="\${ORG${org}_PEER0_URL}" && peer_url=$(eval echo $t) + t="\${ORG${org}_PEER0_TLS_ROOTCERT}" && peer_tls_rootcert=$(eval echo $t) + chaincodeQueryApproved "$org" 0 ${peer_url} ${peer_tls_rootcert} "${APP_CHANNEL}" ${CC_NAME} +done + +echo_g "=== Query Approved Chaincode done ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_querycommitted.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_querycommitted.sh new file mode 100644 index 00000000..dc37d209 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_querycommitted.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Install chaincode on all peers +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_PATH=${CC_PATH:-$CC_02_PATH} + +echo_b "=== Query Chaincode commit status ${CC_NAME} on all organizations ... ===" + +for org in "${ORGS[@]}"; do + t="\${ORG${org}_PEER0_URL}" && peer_url=$(eval echo $t) + t="\${ORG${org}_PEER0_TLS_ROOTCERT}" && peer_tls_rootcert=$(eval echo $t) + chaincodeQueryCommitted "$org" 0 ${peer_url} ${peer_tls_rootcert} "${APP_CHANNEL}" ${CC_NAME} +done + +echo_g "=== Query Chaincode commit status done ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_queryinstalled.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_queryinstalled.sh new file mode 100644 index 00000000..2ae5b9a5 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_queryinstalled.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Query the installed chaincode on all peers +echo_b "=== Query Chaincode installed on all organizations ... ===" + +for org in "${ORGS[@]}"; do + t="\${ORG${org}_PEER0_URL}" && peer_url=$(eval echo $t) + t="\${ORG${org}_PEER0_TLS_ROOTCERT}" && peer_tls_rootcert=$(eval echo $t) + chaincodeQueryInstalled "$org" 0 ${peer_url} ${peer_tls_rootcert} +done + +echo_g "=== Query Chaincode installed status done ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cc_upgrade.sh b/hyperledger_fabric/v2.2.8/scripts/test_cc_upgrade.sh new file mode 100644 index 00000000..56a85f19 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cc_upgrade.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_PATH=${CC_PATH:-$CC_02_PATH} +CC_UPGRADE_ARGS=${CC_UPGRADE_ARGS:-$CC_02_UPGRADE_ARGS} +CC_QUERY_ARGS=${CC_QUERY_ARGS:-$CC_02_QUERY_ARGS} + +#Upgrade to new version +echo_b "=== Upgrade chaincode ${CC_NAME} to new version... ===" + +chaincodeInstall 1 0 "${CC_NAME}" "${CC_UPGRADE_VERSION}" "${CC_PATH}" +chaincodeInstall 1 1 "${CC_NAME}" "${CC_UPGRADE_VERSION}" "${CC_PATH}" +chaincodeInstall 2 0 "${CC_NAME}" "${CC_UPGRADE_VERSION}" "${CC_PATH}" +chaincodeInstall 2 1 "${CC_NAME}" "${CC_UPGRADE_VERSION}" "${CC_PATH}" + +# Upgrade on one peer of the channel will update all +chaincodeUpgrade ${APP_CHANNEL} 1 0 ${ORDERER0_URL} "${CC_NAME}" "${CC_UPGRADE_VERSION}" "${CC_UPGRADE_ARGS}" + +# Query new value, should refresh through all peers in the channel +chaincodeQuery 1 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} "${CC_NAME}" "${CC_QUERY_ARGS}" 100 +chaincodeQuery 2 1 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} "${CC_NAME}" "${CC_QUERY_ARGS}" 100 + +echo_g "=== chaincode ${CC_NAME} Upgrade completed ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_channel_create.sh b/hyperledger_fabric/v2.2.8/scripts/test_channel_create.sh new file mode 100644 index 00000000..e143e558 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_channel_create.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Create channel +echo_b "=== Creating channel ${APP_CHANNEL} with ${APP_CHANNEL_TX}... ===" + +#for (( i=1; i<150; i++ )); +#do +#APP_CHANNEL="channel"$i +#APP_CHANNEL_TX=${APP_CHANNEL}".tx" +channelCreate "${APP_CHANNEL}" "${APP_CHANNEL_TX}" 1 0 ${ORDERER0_URL} ${ORDERER0_TLS_ROOTCERT} +#done + +echo_g "=== Created channel ${APP_CHANNEL} with ${APP_CHANNEL_TX} ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_channel_getinfo.sh b/hyperledger_fabric/v2.2.8/scripts/test_channel_getinfo.sh new file mode 100644 index 00000000..3eab821d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_channel_getinfo.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Join all the peers to the channel +echo_b "=== Getting info of channel ${APP_CHANNEL}... ===" + +#set -x + +for org in "${ORGS[@]}"; do + for peer in "${PEERS[@]}"; do + channelGetInfo ${APP_CHANNEL} $org $peer + done +done + +echo_g "=== Get info of channel ${APP_CHANNEL} Complete ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_channel_join.sh b/hyperledger_fabric/v2.2.8/scripts/test_channel_join.sh new file mode 100644 index 00000000..0b425126 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_channel_join.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Join all the peers to the channel +echo_b "=== Join peers ${PEERS} from org ${ORGS} into ${APP_CHANNEL}... ===" + +for org in "${ORGS[@]}"; do + for peer in "${PEERS[@]}"; do + channelJoin ${APP_CHANNEL} $org $peer + done +done + +echo_g "=== Join peers ${PEERS} from org ${ORGS} into ${APP_CHANNEL} Complete ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_channel_list.sh b/hyperledger_fabric/v2.2.8/scripts/test_channel_list.sh new file mode 100644 index 00000000..9c6cfbcd --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_channel_list.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Create channel +echo_b "=== Listing joined channels... ===" + +for org in "${ORGS[@]}"; do + for peer in "${PEERS[@]}"; do + channelList $org $peer + done +done + +echo_g "=== Done listing joined channels ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_channel_update.sh b/hyperledger_fabric/v2.2.8/scripts/test_channel_update.sh new file mode 100644 index 00000000..49ae4de7 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_channel_update.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Join all the peers to the channel +echo_b "=== Updating config of channel ${APP_CHANNEL} by sending the tx... ===" + +echo_b "Sign the channel update tx by Org1/Peer0 and Org2/Peer0" +channelSignConfigTx ${APP_CHANNEL} "1" "0" "${CFG_DELTA_ENV_PB}" +channelSignConfigTx ${APP_CHANNEL} "2" "0" "${CFG_DELTA_ENV_PB}" + +channelUpdate ${APP_CHANNEL} "1" "0" ${ORDERER0_URL} ${ORDERER0_TLS_ROOTCERT} ${CFG_DELTA_ENV_PB} + +sleep 1 # wait till the update takes effect + +# use org1.peer0's id to get latest block from orderer +newest_block_file1=/tmp/${APP_CHANNEL}_newest1.block +channelFetch ${APP_CHANNEL} "1" "0" ${ORDERER0_URL} ${ORDERER0_TLS_ROOTCERT} "newest" ${newest_block_file1} +[ -f ${newest_block_file1} ] || exit 1 + +# use org3.peer0's id to get latest block from orderer +newest_block_file2=/tmp/${APP_CHANNEL}_newest2.block +channelFetch ${APP_CHANNEL} "3" "0" ${ORDERER0_URL} ${ORDERER0_TLS_ROOTCERT} "newest" ${newest_block_file2} +[ -f ${newest_block_file2} ] || exit 1 + +if [ $(getShaSum ${newest_block_file1}) = $(getShaSum ${newest_block_file2}) ]; then + echo_g "Block matched, new org joined channel successfully" +else + echo_r "Block not matched, new org joined channel failed" + exit 1 +fi + +# Now new org is valid to join the channel +# channelJoin ${APP_CHANNEL} "3" "0" + +echo_g "=== Updated config of channel ${APP_CHANNEL}... ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_configtxlator.sh b/hyperledger_fabric/v2.2.8/scripts/test_configtxlator.sh new file mode 100644 index 00000000..79069bdc --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_configtxlator.sh @@ -0,0 +1,63 @@ +#!/bin/bash +# Demo to use configtxlator to modify orderer config +# Usage: bash test_configtxlator solo|kafka +# Configtxlator APIs: +# Json -> ProtoBuf: http://$SERVER:$PORT/protolator/encode/ +# ProtoBuf -> Json: http://$SERVER:$PORT/protolator/decode/ +# Compute Update: http://$SERVER:$PORT/configtxlator/compute/update-from-configs +# could be: common.Block, common.Envelope, common.ConfigEnvelope, common.ConfigUpdateEnvelope, common.Config, common.ConfigUpdate +# More details about configtxlator, see http://hlf.readthedocs.io/en/latest/configtxlator.html + +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +[ $# -ne 1 ] && echo_r "Usage: bash test_configtxlator solo|kafka" && exit 1 + +MODE=$1 + +pushd $MODE/${CHANNEL_ARTIFACTS} + +# Must run `make gen_config` to generate config files first + +echo_b "Clean potential existing container $CTL_CONTAINER" +[ "$(docker ps -a | grep $CTL_CONTAINER)" ] && docker rm -f $CTL_CONTAINER + +echo_b "Start configtxlator service in background (listen on port 7059)" +docker run \ + -d -it \ + --name ${CTL_CONTAINER} \ + -p 127.0.0.1:7059:7059 \ + -v ${PWD}:/tmp \ + -w /tmp \ + ${CTL_IMG} \ + configtxlator start --port=7059 + +sleep 1 + +echo_b "Convert all block files into json" +for block_file in *.block; do + configtxlatorDecode "common.Block" ${block_file} ${block_file}.json + decode_result=$? + #echo_b "Parse payload..." + #[ ${decode_result} -eq 0 ] && jq "$PAYLOAD_PATH" ${block_file}.json > ${block_file}_payload.json +done + +echo_b "Update the content of orderer genesis file" +if [ -f ${ORDERER0_GENESIS_BLOCK} ]; then + echo_b "Checking existing Orderer.BatchSize.max_message_count in the genesis json" + jq "$MAX_BATCH_SIZE_PATH" ${ORDERER0_GENESIS_BLOCK}.json + + echo_b "Creating new genesis json with updated Orderer.BatchSize.max_message_count" + jq "$MAX_BATCH_SIZE_PATH=100" ${ORDERER0_GENESIS_BLOCK}.json >${ORDERER0_GENESIS_BLOCK}_updated.json + + echo_b "Re-Encoding the updated orderer genesis json to block" + configtxlatorEncode "common.Block" ${ORDERER0_GENESIS_BLOCK}_updated.json ${ORDERER0_GENESIS_BLOCK}_updated.block +fi + +echo_b "Stop configtxlator service" +docker rm -f $CTL_CONTAINER + +echo_g "Test configtxlator for $MODE Passed" diff --git a/hyperledger_fabric/v2.2.8/scripts/test_cscc.sh b/hyperledger_fabric/v2.2.8/scripts/test_cscc.sh new file mode 100644 index 00000000..b0b8b12e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_cscc.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +# This script will run some qscc queries for testing. + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +echo_b "CSCC testing" + +org=1 +peer=0 + +#peer chaincode query \ +# -C "" \ +# -n cscc \ +# -c '{"Args":["GetConfigBlock","'${APP_CHANNEL}'"]}' + +echo_b "CSCC GetConfigBlock" +chaincodeQuery $org $peer "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} cscc '{"Args":["GetConfigBlock","'${APP_CHANNEL}'"]}' + +echo_b "CSCC GetChannels" +chaincodeQuery $org $peer "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} cscc '{"Args":["GetChannels"]}' + +echo_g "CSCC testing done!" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_fetch_blocks.sh b/hyperledger_fabric/v2.2.8/scripts/test_fetch_blocks.sh new file mode 100644 index 00000000..4b010d46 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_fetch_blocks.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +# This script will fetch blocks for testing. + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +org=1 +peer=0 + +echo_b "=== Fetching blocks of channel ${APP_CHANNEL} and ${SYS_CHANNEL} ===" + +channelFetchAll ${APP_CHANNEL} $org $peer ${ORDERER0_URL} ${ORDERER0_TLS_ROOTCERT} + +channelFetchAll ${SYS_CHANNEL} $org $peer ${ORDERER0_URL} ${ORDERER0_TLS_ROOTCERT} + +echo_g "=== Fetched Blocks from channels done! ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_gen_add_org3_tx.sh b/hyperledger_fabric/v2.2.8/scripts/test_gen_add_org3_tx.sh new file mode 100644 index 00000000..4b3acd9d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_gen_add_org3_tx.sh @@ -0,0 +1,97 @@ +#!/bin/bash +# Demo to use configtxlator to add some new organization +# Usage: +# Configtxlator APIs: +# Json -> ProtoBuf: http://$SERVER:$PORT/protolator/encode/ +# ProtoBuf -> Json: http://$SERVER:$PORT/protolator/decode/ +# Compute Update: http://$SERVER:$PORT/configtxlator/compute/update-from-configs +# could be: common.Block, common.Envelope, common.ConfigEnvelope, common.ConfigUpdateEnvelope, common.Config, common.ConfigUpdate +# More details about configtxlator, see http://hlf.readthedocs.io/en/latest/configtxlator.html + +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +[ $# -ne 1 ] && echo_r "Usage: bash test_configtxlator solo|kafka" && exit 1 + +MODE=$1 + +pushd $MODE/${CHANNEL_ARTIFACTS} + +# Must run `make gen_config` to generate config files first + +echo_b "Clean potential existing container $CTL_CONTAINER" +[ "$(docker ps -a | grep $CTL_CONTAINER)" ] && docker rm -f $CTL_CONTAINER + +echo_b "Start configtxlator container in background (listen on port 7059)" +docker run \ + -d -it \ + --name ${CTL_CONTAINER} \ + -p 127.0.0.1:7059:7059 \ + -v ${PWD}:/tmp \ + -w /tmp \ + ${CTL_IMG} \ + configtxlator start --port=7059 + +sleep 1 + +# clean env and exit +clean_exit() { + echo_b "Stop configtxlator container" + docker rm -f $CTL_CONTAINER + exit 0 +} + +BLOCK_FILE=${APP_CHANNEL}_config.block +if [ ! -f ${BLOCK_FILE} ]; then + echo_r "${BLOCK_FILE} not exist" + clean_exit +fi + +echo_b "Decode latest config block ${BLOCK_FILE} into json..." +configtxlatorDecode "common.Block" ${BLOCK_FILE} ${BLOCK_FILE}.json +[ $? -ne 0 ] && { + echo_r "Decode ${BLOCK_FILE} failed" + clean_exit +} + +echo_b "Parse config data from block payload and encode into pb..." +jq "$PAYLOAD_CFG_PATH" ${BLOCK_FILE}.json >${ORIGINAL_CFG_JSON} +jq . ${ORIGINAL_CFG_JSON} >/dev/null +[ $? -ne 0 ] && { + echo_r "${ORIGINAL_CFG_JSON} is invalid" + clean_exit +} +configtxlatorEncode "common.Config" ${ORIGINAL_CFG_JSON} ${ORIGINAL_CFG_PB} + +echo_b "Update the config with new org, and encode into pb" +jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org3MSP":.[1]}}}}}' ${ORIGINAL_CFG_JSON} ./Org3MSP.json >&${UPDATED_CFG_JSON} +jq . ${UPDATED_CFG_JSON} >/dev/null +[ $? -ne 0 ] && { + echo_r "${UPDATED_CFG_JSON} is invalid" + clean_exit +} +configtxlatorEncode "common.Config" ${UPDATED_CFG_JSON} ${UPDATED_CFG_PB} + +echo_b "Calculate the config delta between pb files" +configtxlatorCompare ${APP_CHANNEL} ${ORIGINAL_CFG_PB} ${UPDATED_CFG_PB} ${CFG_DELTA_PB} + +echo_b "Decode the config delta pb into json" +configtxlatorDecode "common.ConfigUpdate" ${CFG_DELTA_PB} ${CFG_DELTA_JSON} +jq . ${CFG_DELTA_JSON} >/dev/null +[ $? -ne 0 ] && { + echo_r "${CFG_DELTA_JSON} is invalid" + clean_exit +} + +echo_b "Wrap the config update as envelope" +echo '{"payload":{"header":{"channel_header":{"channel_id":"'"$APP_CHANNEL"'", "type":2}},"data":{"config_update":'$(cat ${CFG_DELTA_JSON})'}}}' | jq . >${CFG_DELTA_ENV_JSON} + +echo_b "Encode the config update envelope into pb" +configtxlatorEncode "common.Envelope" ${CFG_DELTA_ENV_JSON} ${CFG_DELTA_ENV_PB} + +echo_g "Test configtxlator for $MODE Passed, now ready for peer to send the update transaction" + +clean_exit diff --git a/hyperledger_fabric/v2.2.8/scripts/test_lscc.sh b/hyperledger_fabric/v2.2.8/scripts/test_lscc.sh new file mode 100644 index 00000000..157da0bc --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_lscc.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env bash + +# This script will run some lscc queries for testing. + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +echo_b "LSCC testing" + +org=1 +peer=0 + +# invoke required following params +#-o orderer.example.com:7050 \ +#--tls "true" \ +#--cafile ${ORDERER_TLS_CA} \ + +CC_NAME=${CC_02_NAME} + +echo_b "LSCC Get id" +chaincodeQuery "$org" "$peer" "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" "${APP_CHANNEL}" lscc '{"Args":["getid","'${APP_CHANNEL}'", "'${CC_NAME}'"]}' + +echo_b "LSCC Get cc ChaincodeDeploymentSpec" +chaincodeQuery $org $peer "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" "${APP_CHANNEL}" lscc '{"Args":["getdepspec","'${APP_CHANNEL}'", "'${CC_NAME}'"]}' + +echo_b "LSCC Get cc bytes" +chaincodeQuery $org $peer "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" "${APP_CHANNEL}" lscc '{"Args":["getccdata","'${APP_CHANNEL}'", "'${CC_NAME}'"]}' + +echo_b "LSCC Get all chaincodes (with all versions) installed on the peer" +chaincodeQuery $org $peer "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" "${APP_CHANNEL}" lscc '{"Args":["getinstalledchaincodes"]}' + +echo_b "LSCC Get all chaincodes instantiated on the channel" +chaincodeQuery $org $peer "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" "${APP_CHANNEL}" lscc '{"Args":["getchaincodes"]}' + +#peer chaincode query \ +# -C "${APP_CHANNEL}" \ +# -n lscc \ +# -c '{"Args":["getid","'${APP_CHANNEL}'", "'$CC_NAME'"]}' + +#peer chaincode query \ +# -C "${APP_CHANNEL}" \ +# -n lscc \ +# -c '{"Args":["getdepspec","'${APP_CHANNEL}'", "'$CC_NAME'"]}' + +#peer chaincode query \ +# -C "${APP_CHANNEL}" \ +# -n lscc \ +# -c '{"Args":["getccdata","'${APP_CHANNEL}'", "'$CC_NAME'"]}' + +#peer chaincode query \ +# -C "${APP_CHANNEL}" \ +# -n lscc \ +# -c '{"Args":["getinstalledchaincodes"]}' + +#peer chaincode query \ +# -C "${APP_CHANNEL}" \ +# -n lscc \ +# -c '{"Args":["getchaincodes"]}' + +echo_g "LSCC testing done!" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_qscc.sh b/hyperledger_fabric/v2.2.8/scripts/test_qscc.sh new file mode 100644 index 00000000..d859e021 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_qscc.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# This script will run some qscc queries for testing. + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +echo_b "QSCC testing" + +org=1 +peer=0 + +#peer chaincode query \ +# -C "" \ +# -n qscc \ +# -c '{"Args":["GetChainInfo","'${APP_CHANNEL}'"]}' + +echo_b "QSCC GetChainInfo" +chaincodeQuery $org $peer "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} qscc '{"Args":["GetChainInfo","'${APP_CHANNEL}'"]}' + +#peer chaincode query \ +# -C "" \ +# -n qscc \ +# -c '{"Args":["GetBlockByNumber","'${APP_CHANNEL}'","2"]}' + +echo_b "QSCC GetBlockByNumber 2" +chaincodeQuery $org $peer "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} qscc '{"Args":["GetBlockByNumber","'${APP_CHANNEL}'","2"]}' + +echo_g "QSCC testing done!" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/test_sideDB.sh b/hyperledger_fabric/v2.2.8/scripts/test_sideDB.sh new file mode 100644 index 00000000..67662641 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_sideDB.sh @@ -0,0 +1,68 @@ +#!/bin/bash +# test sideDB feature: https://jira.hyperledger.org/browse/FAB-10231 + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Install chaincode on all peers +CC_NAME=${CC_MARBLES_NAME} +CC_PATH=${CC_MARBLES_PATH} +CC_INIT_ARGS=${CC_MARBLES_INIT_ARGS} + +echo_b "=== Testing the private data feature ===" + +echo_b "=== Installing chaincode ${CC_NAME} on all 4 peers... ===" +for org in "${ORGS[@]}"; do + for peer in "${PEERS[@]}"; do + chaincodeInstall $org $peer ${CC_NAME} ${CC_INIT_VERSION} ${CC_PATH} + done +done + +echo_g "=== Install chaincode done ===" + +# test sideDB feature +chaincodeInstantiate "${APP_CHANNEL}" 1 0 ${ORDERER0_URL} ${CC_NAME} ${CC_INIT_VERSION} ${CC_INIT_ARGS} ${CC_MARBLES_COLLECTION_CONFIG} +echo_g "=== Instantiate chaincode done ===" +sleep 2 + +# both org1 and org2 can invoke, but gossip is the problem to cross org +echo_b "Invoke chaincode with collection on org1/peer0" +chaincodeInvoke 1 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} "${ORDERER_URL}" ${CC_MARBLES_NAME} ${CC_MARBLES_INVOKE_INIT_ARGS} +echo_g "=== Invoke chaincode done ===" + +# both org1 and org2 can do normal read +echo_b "Query chaincode with collection collectionMarbles on org1/peer1" +chaincodeQuery 2 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} ${CC_MARBLES_NAME} ${CC_MARBLES_QUERY_READ_ARGS} +echo_g "=== Query read chaincode done ===" + +# only org1 can do detailed read +echo_b "Query chaincode with collection collectionMarblePrivateDetails on org1/peer1" +chaincodeQuery 1 1 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} ${CC_MARBLES_NAME} ${CC_MARBLES_QUERY_READPVTDETAILS_ARGS} +echo_g "=== Query read details chaincode done ===" + +echo_b "Install chaincode with new collection config" +for org in "${ORGS[@]}"; do + for peer in "${PEERS[@]}"; do + chaincodeInstall $org $peer ${CC_NAME} ${CC_UPGRADE_VERSION} ${CC_PATH} + done +done +echo_g "Install chaincode with new collection config done" + +echo_b "Update chaincode with new collection on org1/peer0" +chaincodeUpgrade ${APP_CHANNEL} 1 0 ${ORDERER0_URL} ${CC_NAME} ${CC_UPGRADE_VERSION} ${CC_INIT_ARGS} ${CC_MARBLES_COLLECTION_CONFIG_NEW} +echo_g "Update chaincode with new collection on org1/peer0 done" + +echo_b "Invoke chaincode with new key and new collection on org1/peer0" +chaincodeInvoke 1 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} "${ORDERER_URL}" ${CC_MARBLES_NAME} ${CC_MARBLES_INVOKE_INIT_ARGS_2} +echo_g "=== Invoke chaincode done ===" + +# now both org1 and org2 should be able to readpvtdetails of new data, noticed the read of old data is available since v1.3.0 +echo_b "Query chaincode with new key and new collection collectionMarblePrivateDetails on org1/peer1" +chaincodeQuery 1 1 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} ${CC_MARBLES_NAME} ${CC_MARBLES_QUERY_READPVTDETAILS_ARGS_2} +echo_g "=== Query read details chaincode done ===" + +echo_g "=== Testing the private data feature done ===" diff --git a/hyperledger_fabric/v2.2.8/scripts/test_temp.sh b/hyperledger_fabric/v2.2.8/scripts/test_temp.sh new file mode 100644 index 00000000..d1590d8d --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_temp.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_INVOKE_ARGS=${CC_INVOKE_ARGS:-$CC_02_INVOKE_ARGS} +CC_QUERY_ARGS=${CC_QUERY_ARGS:-$CC_02_QUERY_ARGS} + +# test sideDB feature + +#chaincodeInstantiate "${APP_CHANNEL}" 1 0 ${CC_MARBLES_NAME} ${CC_INIT_VERSION} ${CC_MARBLES_INIT_ARGS} ${CC_MARBLES_COLLECTION_CONFIG} + +# both org1 and org2 can invoke +#chaincodeInvoke ${APP_CHANNEL} 1 0 ${CC_MARBLES_NAME} ${CC_MARBLES_INVOKE_INIT_ARGS} + +#chaincodeInvoke ${APP_CHANNEL} 1 0 ${CC_MARBLES_NAME} ${CC_MARBLES_INVOKE_INIT_ARGS} + +#chaincodeQuery ${APP_CHANNEL} 1 0 ${CC_MARBLES_NAME} ${CC_MARBLES_QUERY_READPVTDETAILS_ARGS} +#chaincodeQuery ${APP_CHANNEL} 2 0 ${CC_MARBLES_NAME} ${CC_MARBLES_QUERY_READ_ARGS} +#chaincodeQuery 1 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} ${CC_MARBLES_NAME} ${CC_MARBLES_QUERY_READPVTDETAILS_ARGS_2} + +chaincodeQuery 1 0 "${ORG1_PEER0_URL}" "${ORG1_PEER0_TLS_ROOTCERT}" ${APP_CHANNEL} ${CC_NAME} ${CC_QUERY_ARGS} 80 + +exit diff --git a/hyperledger_fabric/v2.2.8/scripts/test_update_anchors.sh b/hyperledger_fabric/v2.2.8/scripts/test_update_anchors.sh new file mode 100644 index 00000000..3b6c396e --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/test_update_anchors.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +## Set the anchor peers for each org in the channel +echo_b "=== Updating anchor peers to peer0 for org1... ===" +channelUpdate ${APP_CHANNEL} 1 0 ${ORDERER0_URL} ${ORDERER0_TLS_ROOTCERT} Org1MSPanchors.tx + +echo_b "=== Updating anchor peers to peer0 for org2... ===" +channelUpdate ${APP_CHANNEL} 2 0 ${ORDERER0_URL} ${ORDERER0_TLS_ROOTCERT} Org2MSPanchors.tx + +echo_b "=== Updated anchor peers ===" + +echo diff --git a/hyperledger_fabric/v2.2.8/scripts/variables.sh b/hyperledger_fabric/v2.2.8/scripts/variables.sh new file mode 100644 index 00000000..c4300bde --- /dev/null +++ b/hyperledger_fabric/v2.2.8/scripts/variables.sh @@ -0,0 +1,146 @@ +#!/usr/bin/env bash +# Before running `make`, config this files +# Define some global variables for usage. Will be included by func.sh. + +# For fabric images, including peer, orderer, ca +FABRIC_IMG_TAG=2.2.8 + +# Keep the same as in core.yaml, will tag ccenv with this value +PROJECT_VERSION=2.2.8 + +# for ccenv, baseos, javaenv, nodeenv +TWO_DIGIT_VERSION=2.2 + +# Name of app channel, need to align with the gen_artifacts.sh +SYS_CHANNEL="testchainid" +APP_CHANNEL="businesschannel" +APP_CHANNEL1="businesschannel1" +APP_CHANNEL2="businesschannel2" + +# Client cmd execute timeout and retry times +TIMEOUT="90" +MAX_RETRY=10 + +# Organization and peers +ORGS=(1 2) +PEERS=(0 1) +#: "${ORGS:=( 1 2 )}" +#: "${PEERS:=( 0 1 )}" + +ORG1MSP="Org1MSP" +ORG2MSP="Org2MSP" +ORG3MSP="Org3MSP" + +# Orderer0 related paths +ORDERER0_MSP=/etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp +ORDERER0_ADMIN_MSP=/etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp +ORDERER0_TLS_CA=/etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem +ORDERER0_TLS_ROOTCERT=/etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/ca.crt + +ORDERER1_TLS_ROOTCERT=/etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer1.example.com/tls/ca.crt +ORDERER2_TLS_ROOTCERT=/etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer2.example.com/tls/ca.crt + +# Org1 related path +ORG1_ADMIN_MSP=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp +ORG1_PEER0_MSP=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.Org1.example.com/msp +ORG1_PEER0_TLS_ROOTCERT=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt +ORG1_PEER1_TLS_ROOTCERT=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt +ORG1_ADMIN_TLS_CLIENT_KEY=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@Org1.example.com/tls/client.key +ORG1_ADMIN_TLS_CLIENT_CERT=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@Org1.example.com/tls/client.crt +ORG1_ADMIN_TLS_CA_CERT=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@Org1.example.com/tls/ca.crt + +# Org2 related path +ORG2_ADMIN_MSP=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp +ORG2_PEER0_TLS_ROOTCERT=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt +ORG2_PEER1_TLS_ROOTCERT=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt + +# Node URLS +ORDERER0_URL="orderer0.example.com:7050" +ORDERER1_URL="orderer1.example.com:7050" +ORDERER2_URL="orderer2.example.com:7050" +ORG1_PEER0_URL="peer0.org1.example.com:7051" +ORG1_PEER1_URL="peer1.org1.example.com:7051" +ORG2_PEER0_URL="peer0.org2.example.com:7051" +ORG2_PEER1_URL="peer1.org2.example.com:7051" + +# Chaincode exp02 related +CC_02_NAME="exp02" +CC_02_PATH="chaincodes/go/chaincode_example02" +CC_02_INIT_ARGS='{"Args":["init","a","100","b","200"]}' +CC_02_UPGRADE_ARGS='{"Args":["upgrade","a","100","b","200"]}' +CC_02_INVOKE_ARGS='{"Args":["invoke","a","b","10"]}' +CC_02_QUERY_ARGS='{"Args":["query","a"]}' + +# Chaincode map related +CC_MAP_NAME="map" +CC_MAP_PATH="examples/chaincode/go/map" +CC_MAP_INIT_ARGS='{"Args":["init",""]}' +CC_MAP_UPGRADE_ARGS='{"Args":["upgrade",""]}' +CC_MAP_INVOKE_ARGS='{"Args":["invoke","put","key","value"]}' +CC_MAP_QUERY_ARGS='{"Args":["get","key"]}' + +# Chaincode marbles related +CC_MARBLES_NAME="marblesp" +CC_MARBLES_PATH="chaincodes/go/marbles02_private/go" +CC_MARBLES_INIT_ARGS='{"Args":["init"]}' +CC_MARBLES_UPGRADE_ARGS='{"Args":["upgrade",""]}' +CC_MARBLES_INVOKE_INIT_ARGS='{"Args":["initMarble","marble1","blue","10","tom","100"]}' # price is in collectionMarblePrivateDetails +CC_MARBLES_INVOKE_INIT_ARGS_2='{"Args":["initMarble","marble2","blue","10","tom","100"]}' # price is in collectionMarblePrivateDetails +CC_MARBLES_INVOKE_TRANSFER_ARGS='{"Args":["transferMarble","marble1","jerry"]}' # price is in collectionMarblePrivateDetails +CC_MARBLES_QUERY_READ_ARGS='{"Args":["readMarble","marble1"]}' # this requires 'collectionMarbles' collection +CC_MARBLES_QUERY_READPVTDETAILS_ARGS='{"Args":["readMarblePrivateDetails","marble1"]}' # this requires 'collectionMarblePrivateDetails' collection +CC_MARBLES_QUERY_READPVTDETAILS_ARGS_2='{"Args":["readMarblePrivateDetails","marble2"]}' # this requires 'collectionMarblePrivateDetails' collection +CC_MARBLES_COLLECTION_CONFIG="/go/src/chaincodes/go/marbles02_private/collections_config.json" +CC_MARBLES_COLLECTION_CONFIG_NEW="/go/src/chaincodes/go/marbles02_private/collections_config_new.json" + +# unique chaincode params +CC_NAME=${CC_02_NAME} +CC_PATH=${CC_02_PATH} +CC_INIT_ARGS=${CC_02_INIT_ARGS} +CC_INIT_VERSION=1.0 +CC_UPGRADE_ARGS=${CC_02_UPGRADE_ARGS} +CC_UPGRADE_VERSION=1.1 +CC_INVOKE_ARGS=${CC_02_INVOKE_ARGS} +CC_QUERY_ARGS=${CC_02_QUERY_ARGS} + +# Generate configs +GEN_IMG=yeasy/hyperledger-fabric:${FABRIC_IMG_TAG} # working dir is `/go/src/github.com/hyperledger/fabric` +GEN_CONTAINER=generator +FABRIC_CFG_PATH=/etc/hyperledger/fabric +CHANNEL_ARTIFACTS=channel-artifacts +CRYPTO_CONFIG=crypto-config +ORDERER0_GENESIS=orderer0.genesis +ORDERER1_GENESIS=orderer1.genesis +ORDERER2_GENESIS=orderer2.genesis +ORDERER0_GENESIS_BLOCK=${ORDERER0_GENESIS}.block +ORDERER1_GENESIS_BLOCK=${ORDERER1_GENESIS}.block +ORDERER2_GENESIS_BLOCK=${ORDERER2_GENESIS}.block +ORDERER_GENESIS_PROFILE=TwoOrgsOrdererGenesis +APP_CHANNEL_PROFILE=TwoOrgsChannel +APP_CHANNEL_TX=${APP_CHANNEL}.tx +APP_CHANNEL1_TX=${APP_CHANNEL1}.tx +APP_CHANNEL2_TX=${APP_CHANNEL2}.tx +UPDATE_ANCHOR_ORG1_TX=Org1MSPanchors.tx +UPDATE_ANCHOR_ORG2_TX=Org2MSPanchors.tx + +# CONFIGTXLATOR +CTL_IMG=yeasy/hyperledger-fabric:${FABRIC_IMG_TAG} +CTL_CONTAINER=configtxlator +CTL_BASE_URL=http://127.0.0.1:7059 +CTL_ENCODE_URL=${CTL_BASE_URL}/protolator/encode +CTL_DECODE_URL=${CTL_BASE_URL}/protolator/decode +CTL_COMPARE_URL=${CTL_BASE_URL}/configtxlator/compute/update-from-configs + +PAYLOAD_PATH=".data.data[0].payload" +PAYLOAD_CFG_PATH=".data.data[0].payload.data.config" +MAX_BATCH_SIZE_PATH=".data.data[0].payload.data.config.channel_group.groups.Orderer.values.BatchSize.value.max_message_count" + +# channel update config +ORIGINAL_CFG_JSON=original_config.json +ORIGINAL_CFG_PB=original_config.pb +UPDATED_CFG_JSON=updated_config.json +UPDATED_CFG_PB=updated_config.pb +CFG_DELTA_JSON=config_delta.json +CFG_DELTA_PB=config_delta.pb +CFG_DELTA_ENV_JSON=config_delta_env.json +CFG_DELTA_ENV_PB=config_delta_env.pb diff --git a/hyperledger_fabric/v2.2.8/sdk-node/connection-profile.json b/hyperledger_fabric/v2.2.8/sdk-node/connection-profile.json new file mode 100644 index 00000000..db91afef --- /dev/null +++ b/hyperledger_fabric/v2.2.8/sdk-node/connection-profile.json @@ -0,0 +1,82 @@ +{ + "name": "Network", + "version": "1.1", + "channels": { + "businesschannel": { + "orderers": [ + "orderer0.example.com" + ], + "peers": [ + "peer0.org1.example.com", + "peer1.org1.example.com", + "peer0.org2.example.com", + "peer1.org2.example.com" + ] + } + }, + "organizations": { + "Org1": { + "mspid": "Org1MSP", + "peers": [ + "peer0.org1.example.com", + "peer1.org1.example.com" + ] + }, + "Org2": { + "mspid": "Org2MSP", + "peers": [ + "peer0.org2.example.com", + "peer1.org2.example.com" + ] + } + }, + "orderers": { + "orderer0.example.com": { + "url": "grpcs://orderer0.example.com:7050", + "grpcOptions": { + "ssl-target-name-override": "orderer0.example.com" + }, + "tlsCACerts": { + "path": "/opt/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem" + } + } + }, + "peers": { + "peer0.org1.example.com": { + "url": "grpcs://peer0.org1.example.com:7051", + "grpcOptions": { + "ssl-target-name-override": "peer0.org1.example.com" + }, + "tlsCACerts": { + "path": "/opt/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem" + } + }, + "peer1.org1.example.com": { + "url": "grpcs://peer1.org1.example.com:7051", + "grpcOptions": { + "ssl-target-name-override": "peer1.org1.example.com" + }, + "tlsCACerts": { + "path": "/opt/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem" + } + }, + "peer0.org2.example.com": { + "url": "grpcs://peer0.org2.example.com:7051", + "grpcOptions": { + "ssl-target-name-override": "peer0.org2.example.com" + }, + "tlsCACerts": { + "path": "/opt/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem" + } + }, + "peer1.org2.example.com": { + "url": "grpcs://peer1.org2.example.com:7051", + "grpcOptions": { + "ssl-target-name-override": "peer1.org2.example.com" + }, + "tlsCACerts": { + "path": "/opt/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem" + } + } + } +} \ No newline at end of file diff --git a/hyperledger_fabric/v2.2.8/sdk-node/connection-profile.yaml b/hyperledger_fabric/v2.2.8/sdk-node/connection-profile.yaml new file mode 100644 index 00000000..7d5f30b5 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/sdk-node/connection-profile.yaml @@ -0,0 +1,69 @@ +--- +name: Network +version: '1.1' +client: + organization: Org1 + credentialStore: + path: /tmp/hfc-kvs + cryptoStore: + path: /tmp/hfc-cvs +channels: + businesschannel: + orderers: + - orderer0.example.com + peers: + - peer0.org1.example.com + - peer1.org1.example.com + - peer0.org2.example.com + - peer1.org2.example.com +organizations: + Org1: + mspid: Org1MSP + peers: + - peer0.org1.example.com + - peer1.org1.example.com + adminPrivateKey: + path: /opt/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk + signedCert: + path: /opt/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem + Org2: + mspid: Org2MSP + peers: + - peer0.org2.example.com + - peer1.org2.example.com + adminPrivateKey: + path: /opt/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/priv_sk + signedCert: + path: /opt/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem +orderers: + orderer0.example.com: + url: grpcs://orderer0.example.com:7050 + grpcOptions: + ssl-target-name-override: orderer0.example.com + tlsCACerts: + path: "/opt/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem" +peers: + peer0.org1.example.com: + url: grpcs://peer0.org1.example.com:7051 + grpcOptions: + ssl-target-name-override: peer0.org1.example.com + tlsCACerts: + path: "/opt/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem" + peer1.org1.example.com: + url: grpcs://peer1.org1.example.com:7051 + grpcOptions: + ssl-target-name-override: peer1.org1.example.com + tlsCACerts: + path: "/opt/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem" + peer0.org2.example.com: + url: grpcs://peer0.org2.example.com:7051 + grpcOptions: + ssl-target-name-override: peer0.org2.example.com + tlsCACerts: + path: "/opt/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem" + peer1.org2.example.com: + url: grpcs://peer1.org2.example.com:7051 + grpcOptions: + ssl-target-name-override: peer1.org2.example.com + tlsCACerts: + path: "/opt/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem" diff --git a/hyperledger_fabric/v2.2.8/sdk-node/createWallet.js b/hyperledger_fabric/v2.2.8/sdk-node/createWallet.js new file mode 100644 index 00000000..c10143ae --- /dev/null +++ b/hyperledger_fabric/v2.2.8/sdk-node/createWallet.js @@ -0,0 +1,38 @@ +"use strict"; + +const fs = require('fs'); +const path = require('path'); +const {common: commonProto} = require('fabric-protos'); +const {Wallets} = require('fabric-network'); + +const mspId = 'Org1MSP'; +const baseMSPPath = '../crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp' +const signCertPath = path.resolve(baseMSPPath + '/signcerts/Admin@org1.example.com-cert.pem'); +const signKeyPath = path.resolve(baseMSPPath + '/keystore/priv_sk'); + +const signCert = fs.readFileSync(signCertPath).toString(); +const signKey = fs.readFileSync(signKeyPath).toString(); + +/** + * Main entrance method + * @returns {Promise<*>} + */ +const main = async () => { + const wallet = await Wallets.newFileSystemWallet('/opt/test/wallet'); + + const x509Identity = { + credentials: { + certificate: signCert, + privateKey: signKey, + }, + mspId: mspId, + type: 'X.509', + }; + await wallet.put(mspId + '-admin', x509Identity); + + return "wallet is created" +}; + +main() + .then(console.log) + .catch(console.error); diff --git a/hyperledger_fabric/v2.2.8/sdk-node/getBlockchainInfo.js b/hyperledger_fabric/v2.2.8/sdk-node/getBlockchainInfo.js new file mode 100644 index 00000000..bdcf8784 --- /dev/null +++ b/hyperledger_fabric/v2.2.8/sdk-node/getBlockchainInfo.js @@ -0,0 +1,153 @@ +"use strict"; + +const fs = require('fs'); +const path = require('path'); +const {Endorser, Endpoint, Discoverer} = require('fabric-common'); +const Client = require('fabric-common/lib/Client'); +const User = require('fabric-common/lib/User'); +const Signer = require('fabric-common/lib/Signer'); +const Utils = require('fabric-common/lib/Utils'); +const {common: commonProto} = require('fabric-protos'); +const {Gateway, Wallets} = require('fabric-network'); +const IdentityContext = require('fabric-common/lib/IdentityContext'); + +const mspId = 'Org1MSP'; +const peerURL = `grpcs://peer1.org1.example.com:7051`; +const channelName = 'businesschannel'; +const tlsCAPath = path.resolve('../crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem'); +const signCertPath = path.resolve('../crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem'); +const signKeyPath = path.resolve('../crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk'); + +const tlsCACert = fs.readFileSync(tlsCAPath).toString(); +const signCert = fs.readFileSync(signCertPath).toString(); +const signKey = fs.readFileSync(signKeyPath).toString(); + +class gwSigningIdentity { + constructor(signingIdentity) { + this.type = 'X.509'; + this.mspId = signingIdentity._mspId; + this.credentials = { + certificate: signingIdentity._certificate.toString().trim(), + privateKey: signingIdentity._signer._key.toBytes().trim(), + }; + } +} + +/** + * Main entrance method + * @returns {Promise<*>} + */ +const main = async () => { + const options = { + url: peerURL, + 'grpc-wait-for-ready-timeout': 30000, + pem: tlsCACert + //'grpc.ssl_target_name_override': peerHost + }; + const endpoint = new Endpoint(options); + const endorser = new Endorser('myEndorser', {}, mspId); + endorser.setEndpoint(endpoint); + await endorser.connect(); + + // Only for test purpose, safe to remove following 3 lines + const discoverer = new Discoverer('myDiscoverer', {}, mspId); + discoverer.setEndpoint(endpoint); + await discoverer.connect(); + + const user = loadUser('test-Admin', signCert, signKey); + //---- query on system chaincode to getChainInfo + return getBlockchainInfo(channelName, endorser, user) +}; + +/** + * Get the blockchain info from given channel + * @param {string} channelName Channel to fetch blockchain info + * @param {Endorser} endorser Endorser to send the request to + * @param {User} user Identity to use + * @returns {BlockchainInfo} Parsed blockchain info struct + */ +const getBlockchainInfo = async (channelName, endorser, user) => { + const chaincodeId = 'qscc'; + const fcn = 'GetChainInfo'; + const args = [channelName]; + + let result = await callChaincode(channelName, chaincodeId, fcn, args, endorser, user) + return parseBlockchainInfo(result) +} + +/** + * Call a chaincode and return the response in raw proto + * @param {string} channelName Name of the channel + * @param {string} chaincodeId Name of the chaincode + * @param {string} fcn Name of the chaincode method to call + * @param {string} args Parameters for the Chaincode method + * @param {Endorser} endorser Endorser to send the request to + * @param {User} user Identity to use + * @returns {Promise} + */ +const callChaincode = async (channelName, chaincodeId, fcn, args, endorser, user) => { + const gateWay = new Gateway(); + const client = new Client(null); + const identity = new gwSigningIdentity(user._signingIdentity); + gateWay.identity = identity; + gateWay.identityContext = new IdentityContext(user, client); + + // test wallet, safe to remove following 2 lines + //const wallet = await Wallets.newFileSystemWallet('/opt/test/wallet'); + //await wallet.put('org1admin', identity); + + const channel = client.newChannel(channelName); + client.channels.set(channelName, channel); + channel.getEndorsers = () => Array.from(channel.endorsers.values()); + channel.endorsers.set(endorser.toString(), endorser); + + await gateWay.connect(client, { + wallet: {}, discovery: {enabled: false}, identity + }); + + const network = await gateWay.getNetwork(channelName); + const contract = network.getContract(chaincodeId); + const tx = contract.createTransaction(fcn); + //const response = contract.evaluateTransaction(fcn, args) + + return tx.evaluate(...args); +} + +/** + * Parse the result into the blockchain info structure + * @param {Buffer} _resultProto The original result from fabric network + * @returns {{previousBlockHash: string, currentBlockHash: string, height: number}} + */ +const parseBlockchainInfo = (_resultProto) => { + const {height, currentBlockHash, previousBlockHash} = commonProto.BlockchainInfo.decode(_resultProto); + return { + height: height.toInt(), + currentBlockHash: currentBlockHash.toString('hex'), + previousBlockHash: previousBlockHash.toString('hex'), + }; +}; + +/** + * Construct a user object based on given cert and key strings + * @param {string} name Name to assign to the user + * @param {string} signCert Certificate string to sign + * @param {string} signKey Private key string to sign + * @returns {User} User object + */ +const loadUser = (name, signCert, signKey) => { + const SigningIdentity = require('fabric-common/lib/SigningIdentity'); + const user = new User(name); + user._cryptoSuite = Utils.newCryptoSuite(); + const privateKey = user._cryptoSuite.createKeyFromRaw(signKey); + const {_cryptoSuite} = user; + const pubKey = _cryptoSuite.createKeyFromRaw(signCert); + user._signingIdentity = new SigningIdentity(signCert, pubKey, mspId, _cryptoSuite, new Signer(_cryptoSuite, privateKey)); + user.getIdentity = () => { + return user._signingIdentity; + }; + return user; +}; + +main() + .then(console.log) + .catch(console.error); diff --git a/hyperledger_fabric/v2.2.8/sdk-node/invokeChaincode.js b/hyperledger_fabric/v2.2.8/sdk-node/invokeChaincode.js new file mode 100644 index 00000000..a85346cf --- /dev/null +++ b/hyperledger_fabric/v2.2.8/sdk-node/invokeChaincode.js @@ -0,0 +1,73 @@ +const fs = require('fs') +const YAML = require('yaml') +const {Wallets, Gateway, GatewayOptions} = require('fabric-network'); + +// Load information from the connection profile +const connectionProfileFileName = "/opt/test/connection-profile.yaml" +const connectionProfileYaml = fs.readFileSync(connectionProfileFileName).toString(); +const connectionProfile = YAML.parse(connectionProfileYaml); + +const orgName = connectionProfile['client']['organization'] +const mspId = connectionProfile['organizations'][orgName]['mspid'] +const adminUserId = "Admin-" + mspId + +const adminCertFile = connectionProfile['organizations'][orgName]['signedCert']['path'] +const adminKeyFile = connectionProfile['organizations'][orgName]['adminPrivateKey']['path'] +const org1AdminCert = fs.readFileSync(adminCertFile).toString() +const org1AdminKey = fs.readFileSync(adminKeyFile).toString() + +const channelName = "businesschannel" +const chaincodeId = "exp02" + +const main = async () => { + const wallet = await Wallets.newFileSystemWallet('/tmp/org1wallet'); + + const x509Identity = { + credentials: { + certificate: org1AdminCert, + privateKey: org1AdminKey, + }, + mspId: mspId, + type: 'X.509', + }; + await wallet.put(adminUserId, x509Identity); + + // Connect to a gateway peer + const gatewayOptions = { + identity: adminUserId, // Previously imported identity + wallet: wallet, + discovery: {enabled: true, asLocalhost: false} + }; + const gateway = new Gateway(); + await gateway.connect(connectionProfile, gatewayOptions); + + try { + // Obtain the smart contract with which our application wants to interact + const network = await gateway.getNetwork(channelName); + const contract = network.getContract(chaincodeId); + + // Submit transactions for the smart contract + const args = ['a', 'b', '1']; + const submitResult = await contract.submitTransaction('invoke', ...args); + console.log('Invoke transaction has been submitted'); + + // Evaluate queries for the smart contract + const evalResult = await contract.evaluateTransaction('query', 'a'); + console.log('After invoke, the query result = ' + evalResult.toString()) + + /* + // Create and submit transactions for the smart contract with transient data + const transientResult = contract.createTransaction(transactionName) + .setTransient(privateData) + .submit(arg1, arg2); + */ + } finally { + // Disconnect from the gateway peer when all work for this client identity is complete + gateway.disconnect(); + } + return "Invoke and Query tests are passed!" +}; + +main() + .then(console.log) + .catch(console.error); diff --git a/hyperledger_fabric/v2.2.8/sdk-node/package.json b/hyperledger_fabric/v2.2.8/sdk-node/package.json new file mode 100644 index 00000000..2de92c8b --- /dev/null +++ b/hyperledger_fabric/v2.2.8/sdk-node/package.json @@ -0,0 +1,18 @@ +{ + "name": "testsdk", + "version": "1.0.0", + "description": "test hlf sdk node", + "engines": { + "node": ">=12", + "npm": ">=5" + }, + "engineStrict": true, + "author": "Hyperledger", + "license": "Apache-2.0", + "dependencies": { + "fabric-common": "^2.2.8", + "fabric-network": "^2.2.8", + "fabric-protos": "^2.2.8", + "yaml": "^1.10.2" + } +} diff --git a/hyperledger_fabric/v2.2.8/sdk-node/queryChaincode.js b/hyperledger_fabric/v2.2.8/sdk-node/queryChaincode.js new file mode 100644 index 00000000..49f8e88c --- /dev/null +++ b/hyperledger_fabric/v2.2.8/sdk-node/queryChaincode.js @@ -0,0 +1,155 @@ +"use strict"; + +const fs = require('fs'); +const path = require('path'); +const {Endorser, Endpoint, Discoverer} = require('fabric-common'); +const Client = require('fabric-common/lib/Client'); +const User = require('fabric-common/lib/User'); +const Signer = require('fabric-common/lib/Signer'); +const Utils = require('fabric-common/lib/Utils'); +const {common: commonProto} = require('fabric-protos'); +const {Gateway} = require('fabric-network'); +const IdentityContext = require('fabric-common/lib/IdentityContext'); + +const mspId = 'Org1MSP'; +const peerURL = `grpcs://peer1.org1.example.com:7051`; +const channelName = 'businesschannel'; +const baseMSPPath='../crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp' +const tlsCAPath = path.resolve(baseMSPPath+'/tlscacerts/tlsca.org1.example.com-cert.pem'); +const signCertPath = path.resolve(baseMSPPath+'/signcerts/Admin@org1.example.com-cert.pem'); +const signKeyPath = path.resolve(baseMSPPath+'/keystore/priv_sk'); + +const chaincodeId = 'exp02'; +const fcn = 'query'; +const args = ['a']; + +const tlsCACert = fs.readFileSync(tlsCAPath).toString(); +const signCert = fs.readFileSync(signCertPath).toString(); +const signKey = fs.readFileSync(signKeyPath).toString(); + +class gwSigningIdentity { + constructor(signingIdentity) { + this.type = 'X.509'; + this.mspId = signingIdentity._mspId; + this.credentials = { + certificate: signingIdentity._certificate.toString().trim(), + privateKey: signingIdentity._signer._key.toBytes().trim(), + }; + } +} + +/** + * Main entrance method + * @returns {Promise<*>} + */ +const main = async () => { + const options = { + url: peerURL, + 'grpc-wait-for-ready-timeout': 30000, + pem: tlsCACert + //'grpc.ssl_target_name_override': peerHost + }; + const endpoint = new Endpoint(options); + const endorser = new Endorser('myEndorser', {}, mspId); + endorser.setEndpoint(endpoint); + await endorser.connect(); + + // Only for test purpose, safe to remove following 3 lines + const discoverer = new Discoverer('myDiscoverer', {}, mspId); + discoverer.setEndpoint(endpoint); + await discoverer.connect(); + + const user = loadUser('test-Admin', signCert, signKey); + //---- query on chaincode + return queryChaincode(channelName, chaincodeId, fcn, args, endorser, user) + +}; + +/** + * Get the blockchain info from given channel + * @param {string} channelName Channel to fetch blockchain info + * @param {string} chaincodeId Id of the chaincode + * @param {string} fcn Chaincode method to call + * @param {array} args Chaincode method arguments + * @param {Endorser} endorser Endorser to send the request to + * @param {User} user Identity to use + * @returns {BlockchainInfo} Parsed blockchain info struct + */ +const queryChaincode = async (channelName,chaincodeId, fcn, args, endorser, user) => { + let result = await callChaincode(channelName, chaincodeId, fcn, args, endorser, user) + return parseQueryResponse(result) +} + +/** + * Call a chaincode and return the response in raw proto + * @param {string} channelName Name of the channel + * @param {string} chaincodeId Name of the chaincode + * @param {string} fcn Name of the chaincode method to call + * @param {string} args Parameters for the Chaincode method + * @param {Endorser} endorser Endorser to send the request to + * @param {User} user Identity to use + * @returns {Promise} + */ +const callChaincode = async (channelName, chaincodeId, fcn, args, endorser, user) => { + const gateWay = new Gateway(); + const client = new Client(null); + const identity = new gwSigningIdentity(user._signingIdentity); + gateWay.identity = identity; + gateWay.identityContext = new IdentityContext(user, client); + + const channel = client.newChannel(channelName); + client.channels.set(channelName, channel); + channel.getEndorsers = () => Array.from(channel.endorsers.values()); + channel.endorsers.set(endorser.toString(), endorser); + + await gateWay.connect(client, { + wallet: {}, discovery: {enabled: false}, identity + }); + + const network = await gateWay.getNetwork(channelName); + const contract = network.getContract(chaincodeId); + const tx = contract.createTransaction(fcn); + //const response = contract.evaluateTransaction(fcn, args) + + return tx.evaluate(...args); +} + +/** + * Parse the result into the blockchain info structure + * @param {Buffer} _resultProto The original result from fabric network + * @returns {{previousBlockHash: string, currentBlockHash: string, height: number}} + */ + +/** + * Parse the query result + * @param _resultProto + * @returns {string} + */ +const parseQueryResponse = (_resultProto) => { + return _resultProto.toString() +}; + +/** + * Construct a user object based on given cert and key strings + * @param {string} name Name to assign to the user + * @param {string} signCert Certificate string to sign + * @param {string} signKey Private key string to sign + * @returns {User} User object + */ +const loadUser = (name, signCert, signKey) => { + const SigningIdentity = require('fabric-common/lib/SigningIdentity'); + const user = new User(name); + user._cryptoSuite = Utils.newCryptoSuite(); + const privateKey = user._cryptoSuite.createKeyFromRaw(signKey); + const {_cryptoSuite} = user; + const pubKey = _cryptoSuite.createKeyFromRaw(signCert); + user._signingIdentity = new SigningIdentity(signCert, pubKey, mspId, _cryptoSuite, new Signer(_cryptoSuite, privateKey)); + user.getIdentity = () => { + return user._signingIdentity; + }; + return user; +}; + +main() + .then(console.log) + .catch(console.error);