Bootstrap a development network with 4 peers (2 orgs) and 1 orderer (1 org), each having a single independent root of trust (No fabric-ca, just openssl) -- @1.1 Orderer Options


Step 1


Given the orderer network has organizations

Organization Readers Writers Admins
ordererOrg0 member member admin

Created new organization ordererOrg0 with public cert

-----BEGIN CERTIFICATE----- MIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl ck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX MBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3 MTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK BgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu YTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt g64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR pzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC A0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1 4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA== -----END CERTIFICATE-----
from cryptography import x509 from cryptography.hazmat.backends import default_backend pem_data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dir-org-ordererorg0-cert.pem') as f: pem_data = f.read() cert_for_ordererOrg0 = x509.load_pem_x509_certificate(pem_data, default_backend()) ski_for_ordererOrg0= cert_for_ordererOrg0.extensions.get_extension_for_oid(x509.oid.ExtensionOID.SUBJECT_KEY_IDENTIFIER)

Step 2


And user requests role of orderer admin by creating a key and csr for orderer and acquires signed certificate from organization

User Orderer Organization
orderer0Signer orderer0 ordererOrg0
orderer1Signer orderer1 ordererOrg0
orderer2Signer orderer2 ordererOrg0

Created new user orderer0Signer with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIJxD1AzQZguXJ1pcRmCelguOds9FLR1AkrHe+bVlm2+WoAoGCCqGSM49 AwEHoUQDQgAEHwFzXF69MQ5BXs7mYiOpA/982mr80ygi6IWcWQb7VLkyx2V53sAR QyB5RoQ/xT/Ax+pHwR1vlx3CR4fjuU/MdA== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'orderer0Signer', nodeName=u'orderer0', organization=u'ordererOrg0')

-----BEGIN CERTIFICATE----- MIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl ck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX MBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3 MTg0OTMzWjBVMREwDwYDVQQDDAhvcmRlcmVyMDELMAkGA1UEBhMCVVMxDDAKBgNV BAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ MBMGByqGSM49AgEGCCqGSM49AwEHA0IABB8Bc1xevTEOQV7O5mIjqQP/fNpq/NMo IuiFnFkG+1S5Msdled7AEUMgeUaEP8U/wMfqR8Edb5cdwkeH47lPzHSjUDBOMAwG A1UdEwEB/wQCMAAwHQYDVR0OBBYEFMnu76tt+7C+iOtOu+UrIVCnnu5QMB8GA1Ud IwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMCA0gAMEUCIEBp CM37305NHEqxGZwOsFKncUVTISI+D8+qg1qFn/GQAiEAuohclwpctW0QtHp/sp0L 38MGiwiA78Rt5aElon+ejTE= -----END CERTIFICATE-----

Created new user orderer1Signer with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIOk/cu6HN5xVuJgsV3+yrD7rEyAQhBEg2ElUVb61AOvyoAoGCCqGSM49 AwEHoUQDQgAE2+uIGIQowWaMtHOECYVhryH8o/QJb5GZ7bMZ0FcnJu9x/CAmbUJW n/TF8JS4+SvmJyM9PYCb6Z0odVeLcHDgRA== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'orderer1Signer', nodeName=u'orderer1', organization=u'ordererOrg0')

-----BEGIN CERTIFICATE----- MIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl ck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX MBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3 MTg0OTMzWjBVMREwDwYDVQQDDAhvcmRlcmVyMTELMAkGA1UEBhMCVVMxDDAKBgNV BAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ MBMGByqGSM49AgEGCCqGSM49AwEHA0IABNvriBiEKMFmjLRzhAmFYa8h/KP0CW+R me2zGdBXJybvcfwgJm1CVp/0xfCUuPkr5icjPT2Am+mdKHVXi3Bw4ESjUDBOMAwG A1UdEwEB/wQCMAAwHQYDVR0OBBYEFNbbR1HOqs3NymXMxYv6m6fnWgQGMB8GA1Ud IwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMCA0gAMEUCIC7P gvGW7BJ7A7tUXR0v87vlNj5dxOzSMABv/G6yHnd6AiEA1f9LtNTAz0Y7UvvgAyq3 I2dmJBdJeDUatIFO79IvyN4= -----END CERTIFICATE-----

Created new user orderer2Signer with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEID5DSwlHOhz61XeIEqWjv1mOKky4Qn9bVN+aSs3d1v0moAoGCCqGSM49 AwEHoUQDQgAENGJDq6rs6lm/dvXYHxAszmIeymKcQ8rTxYAWYTMfg8zn9BP4Ccjv /AJZ/8bkZD/1jka9ysZpZP7Ocs7cJNsw+g== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'orderer2Signer', nodeName=u'orderer2', organization=u'ordererOrg0')

-----BEGIN CERTIFICATE----- MIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl ck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX MBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3 MTg0OTMzWjBVMREwDwYDVQQDDAhvcmRlcmVyMjELMAkGA1UEBhMCVVMxDDAKBgNV BAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ MBMGByqGSM49AgEGCCqGSM49AwEHA0IABDRiQ6uq7OpZv3b12B8QLM5iHspinEPK 08WAFmEzH4PM5/QT+AnI7/wCWf/G5GQ/9Y5GvcrGaWT+znLO3CTbMPqjUDBOMAwG A1UdEwEB/wQCMAAwHQYDVR0OBBYEFOZIN9L+DwqHRGGp1UxwzJEcLG3IMB8GA1Ud IwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMCA0gAMEUCIQCC KLqIZQ0or/T0H0704hGPQd1YkyDQ9WcG9sEABXefzgIgGcPhxLAUgCVgNVWcwCzS DefbQKK6d2Z8ysda/hkm/6Y= -----END CERTIFICATE-----

Step 3


And the peer network has organizations

Organization Readers Writers Admins
peerOrg0 member member admin

Created new organization peerOrg0 with public cert

-----BEGIN CERTIFICATE----- MIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y ZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG A1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0 OTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM A1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG ByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea moa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud EwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G A1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC IQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G v4D1ZnEJ9emNk6FETGC8NKnnUuc= -----END CERTIFICATE-----
from cryptography import x509 from cryptography.hazmat.backends import default_backend pem_data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dir-org-peerorg0-cert.pem') as f: pem_data = f.read() cert_for_peerOrg0 = x509.load_pem_x509_certificate(pem_data, default_backend()) ski_for_peerOrg0= cert_for_peerOrg0.extensions.get_extension_for_oid(x509.oid.ExtensionOID.SUBJECT_KEY_IDENTIFIER)

Step 4


And a ordererBootstrapAdmin is identified and given access to all public certificates and orderer node info

Created new user ordererBootstrapAdmin with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEINuAq3vwSWeNaFN11VioqewChRNNkHx96JBOMbYcqayAoAoGCCqGSM49 AwEHoUQDQgAEj+jXLuSVLv4dxNelhdtfmtJAGFQJdm1qrCDeoxSc/Vc4+mJD3rbe aprPJIKmc+2WwnqGN9hERUi+F9Lg99mROg== -----END EC PRIVATE KEY-----

Step 5


And the ordererBootstrapAdmin creates a cert alias "bootstrapCertAlias" for orderer network bootstrap purposes for organizations

Organization
ordererOrg0

Created new named node admin tuple: NodeAdminTuple(user='ordererBootstrapAdmin', nodeName='ordererBootstrapAdmin', organization=u'ordererOrg0')

-----BEGIN CERTIFICATE----- MIIB+zCCAaCgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl ck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX MBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3 MTg0OTM0WjBiMR4wHAYDVQQDDBVvcmRlcmVyQm9vdHN0cmFwQWRtaW4xCzAJBgNV BAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUGA1UECAwOTm9y dGggQ2Fyb2xpbmEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASP6Ncu5JUu/h3E 16WF21+a0kAYVAl2bWqsIN6jFJz9Vzj6YkPett5qms8kgqZz7ZbCeoY32ERFSL4X 0uD32ZE6o1AwTjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTFirck6c1lBS6qkaaE FYO7Y8wiaTAfBgNVHSMEGDAWgBQ0U4190CTgB250RFpGKJIV0ac7BjAKBggqhkjO PQQDAgNJADBGAiEAgUXKeWSiMnxaUFL/+bnzh0EQmE56RqKWhEAf5gRWLUECIQDc +Ktmy69TTYNd8zhIdz8PXFVcip5/TUZB4Fojcvl1PA== -----END CERTIFICATE-----

User ordererBootstrapAdmin setting tag key bootstrapCertAlias to value

NodeAdminTuple(user='ordererBootstrapAdmin', nodeName='ordererBootstrapAdmin', organization=u'ordererOrg0')

Step 6


And the ordererBootstrapAdmin generates a GUUID to identify the orderer system chain and refer to it by name as "OrdererSystemChainId"

User ordererBootstrapAdmin setting tag key OrdererSystemChainId to value

40dc98352b7a11e79ac800163e000427

Step 7


And the ordererBootstrapAdmin creates a consortium "consortium1" (network name) for peer orgs who wish to form a network

Organization
peerOrg0

User ordererBootstrapAdmin setting tag key consortium1 to value

Protobuf message in binary form
groups { key: "Consortiums" value { groups { key: "consortium1" value { groups { key: "peerOrg0" value { values { key: "MSP" value { value: "\022\312\013\n\010peerOrg0\022\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\"\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n" mod_policy: "Admins" } } policies { key: "Admins" value { policy { type: 1 policy: "\022\010\022\006\010\001\022\002\010\000\032\016\022\014\n\010peerOrg0\020\001" } mod_policy: "Admins" } } policies { key: "Readers" value { policy { type: 1 policy: "\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0" } mod_policy: "Admins" } } policies { key: "Writers" value { policy { type: 1 policy: "\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0" } mod_policy: "Admins" } } } } values { key: "ChannelCreationPolicy" value { value: "\010\003\022\013\n\007Writers\020\001" mod_policy: "Admins" } } } } } }
from common.configtx_pb2 import ConfigGroup configGroup = ConfigGroup() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/ordererbootstrapadmin-consortium1-0000.protobuf') as f: data = f.read() configGroup.ParseFromString(data)

Step 8


And the ordererBootstrapAdmin using cert alias "bootstrapCertAlias" creates the genesis block "ordererGenesisBlock" for chain "OrdererSystemChainId" for network config policy "<PolicyType>" and consensus "solo" using consortiums

Consortium
consortium1

User ordererBootstrapAdmin setting tag key ordererGenesisBlock_genesis_channel_config to value

Protobuf message in binary form
groups { key: "Consortiums" value { groups { key: "consortium1" value { groups { key: "peerOrg0" value { values { key: "MSP" value { value: "\022\312\013\n\010peerOrg0\022\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\"\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n" mod_policy: "Admins" } } policies { key: "Admins" value { policy { type: 1 policy: "\022\010\022\006\010\001\022\002\010\000\032\016\022\014\n\010peerOrg0\020\001" } mod_policy: "Admins" } } policies { key: "Readers" value { policy { type: 1 policy: "\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0" } mod_policy: "Admins" } } policies { key: "Writers" value { policy { type: 1 policy: "\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0" } mod_policy: "Admins" } } } } values { key: "ChannelCreationPolicy" value { value: "\010\003\022\013\n\007Writers\020\001" mod_policy: "Admins" } } } } } } groups { key: "Orderer" value { groups { key: "ordererOrg0" value { values { key: "MSP" value { value: "\022\335\013\n\013ordererOrg0\022\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\"\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n" mod_policy: "Admins" } } policies { key: "Admins" value { policy { type: 1 policy: "\022\010\022\006\010\001\022\002\010\000\032\021\022\017\n\013ordererOrg0\020\001" } mod_policy: "Admins" } } policies { key: "Readers" value { policy { type: 1 policy: "\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0" } mod_policy: "Admins" } } policies { key: "Writers" value { policy { type: 1 policy: "\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0" } mod_policy: "Admins" } } } } values { key: "BatchSize" value { value: "\010\n\020\200\302\327/\030\200\200 " mod_policy: "Admins" } } values { key: "BatchTimeout" value { value: "\n\0021s" mod_policy: "Admins" } } values { key: "ChannelRestrictions" value { mod_policy: "Admins" } } values { key: "ConsensusType" value { value: "\n\004solo" mod_policy: "Admins" } } policies { key: "Admins" value { policy { type: 3 policy: "\n\006Admins\020\002" } mod_policy: "Admins" } } policies { key: "BlockValidation" value { policy { type: 3 policy: "\n\007Writers" } mod_policy: "Admins" } } policies { key: "Readers" value { policy { type: 3 policy: "\n\007Readers" } mod_policy: "Admins" } } policies { key: "Writers" value { policy { type: 3 policy: "\n\007Writers" } mod_policy: "Admins" } } } } values { key: "BlockDataHashingStructure" value { value: "\010\377\377\377\377\017" mod_policy: "Admins" } } values { key: "HashingAlgorithm" value { value: "\n\006SHA256" mod_policy: "Admins" } } values { key: "OrdererAddresses" value { value: "\n\rorderer0:7050\n\rorderer1:7050\n\rorderer2:7050" mod_policy: "Admins" } } policies { key: "Admins" value { policy { type: 3 policy: "\n\006Admins\020\002" } mod_policy: "Admins" } } policies { key: "Readers" value { policy { type: 3 policy: "\n\007Readers" } mod_policy: "Admins" } } policies { key: "Writers" value { policy { type: 3 policy: "\n\007Writers" } mod_policy: "Admins" } }
from common.configtx_pb2 import ConfigGroup configGroup = ConfigGroup() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/ordererbootstrapadmin-orderergenesisblock-genesis-channel-config.protobuf') as f: data = f.read() configGroup.ParseFromString(data)

User ordererBootstrapAdmin setting tag key ordererGenesisBlock to value

Protobuf message in binary form
header { data_hash: "\222>\031f\2510\240\233\224\001O\321\301\253W\215\300\300/1\351\032U\262 \006\212/\305\243A^" } data { data: "\n\253&\n\315\006\n.\010\001\020\001\032\006\010\275\372\210\310\005\" 40dc98352b7a11e79ac800163e000427\022\232\006\n\375\005\n\013ordererOrg0\022\355\005-----BEGIN CERTIFICATE-----\nMIIB+zCCAaCgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3\nMTg0OTM0WjBiMR4wHAYDVQQDDBVvcmRlcmVyQm9vdHN0cmFwQWRtaW4xCzAJBgNV\nBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUGA1UECAwOTm9y\ndGggQ2Fyb2xpbmEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASP6Ncu5JUu/h3E\n16WF21+a0kAYVAl2bWqsIN6jFJz9Vzj6YkPett5qms8kgqZz7ZbCeoY32ERFSL4X\n0uD32ZE6o1AwTjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTFirck6c1lBS6qkaaE\nFYO7Y8wiaTAfBgNVHSMEGDAWgBQ0U4190CTgB250RFpGKJIV0ac7BjAKBggqhkjO\nPQQDAgNJADBGAiEAgUXKeWSiMnxaUFL/+bnzh0EQmE56RqKWhEAf5gRWLUECIQDc\n+Ktmy69TTYNd8zhIdz8PXFVcip5/TUZB4Fojcvl1PA==\n-----END CERTIFICATE-----\n\022\030\034o\213\305D2\344q\271\313A\t\n\253\247U9=TO-\360l_\022\330\037\n\325\037\022\322\037\022\344\r\n\013Consortiums\022\324\r\022\321\r\n\013consortium1\022\301\r\022\212\r\n\010peerOrg0\022\375\014\032\340\013\n\003MSP\022\330\013\022\315\013\022\312\013\n\010peerOrg0\022\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\"\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\032\006Admins\"1\n\007Writers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"1\n\007Readers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"2\n\006Admins\022(\022\036\010\001\022\032\022\010\022\006\010\001\022\002\010\000\032\016\022\014\n\010peerOrg0\020\001\032\006Admins\0322\n\025ChannelCreationPolicy\022\031\022\017\010\003\022\013\n\007Writers\020\001\032\006Admins\022\330\017\n\007Orderer\022\314\017\022\251\r\n\013ordererOrg0\022\231\r\032\363\013\n\003MSP\022\353\013\022\340\013\022\335\013\n\013ordererOrg0\022\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\"\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\032\006Admins\"4\n\007Writers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"4\n\007Readers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"5\n\006Admins\022+\022!\010\001\022\035\022\010\022\006\010\001\022\002\010\000\032\021\022\017\n\013ordererOrg0\020\001\032\006Admins\032\"\n\tBatchSize\022\025\022\013\010\n\020\200\302\327/\030\200\200 \032\006Admins\032\037\n\023ChannelRestrictions\022\010\032\006Admins\032\036\n\014BatchTimeout\022\016\022\004\n\0021s\032\006Admins\032!\n\rConsensusType\022\020\022\006\n\004solo\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\"*\n\017BlockValidation\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\032K\n\020OrdererAddresses\0227\022-\n\rorderer0:7050\n\rorderer1:7050\n\rorderer2:7050\032\006Admins\032&\n\020HashingAlgorithm\022\022\022\010\n\006SHA256\032\006Admins\032-\n\031BlockDataHashingStructure\022\020\022\006\010\377\377\377\377\017\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\022G0E\002!\000\233w\314\366\255\226q[\n\026\331\366w\254\203\225Rn\021{|f\202R\261~\265\232o\356\324Q\002 [\347\025\254>\031\016{\013\347\030\262\022`\3573\024\031Ns\303\004[\360\352a\321n\241J\243\265" } metadata { metadata: "" metadata: "" metadata: "" metadata: "" }
from common.common_pb2 import Block block = Block() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/ordererbootstrapadmin-orderergenesisblock.protobuf') as f: data = f.read() block.ParseFromString(data)

User ordererBootstrapAdmin setting tag key ConsensusType to value

solo

Step 9


And the orderer admins inspect and approve the genesis block for chain "OrdererSystemChainId"

Step 10


And the orderer admins use the genesis block for chain "OrdererSystemChainId" to configure orderers

Step 11


And user requests role for peer by creating a key and csr for peer and acquires signed certificate from organization

User Peer Organization AliasSavedUnder
peer0Signer peer0 peerOrg0
peer1Signer peer1 peerOrg0
peer2Signer peer2 peerOrg0
peer3Signer peer3 peerOrg0
peer0Admin peer0 peerOrg0 peer-admin-cert
peer1Admin peer1 peerOrg0 peer-admin-cert
peer2Admin peer2 peerOrg0 peer-admin-cert
peer3Admin peer3 peerOrg0 peer-admin-cert

Created new user peer0Signer with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIHYjlKtT6926f+2N9HwxK0m0J6ZKRJrp8zgeTjsjBGt6oAoGCCqGSM49 AwEHoUQDQgAEnL1Qr6he4ZJulvOBlTrhpWnsuwyOTvkKxwyMHkhoPZ1SXZaZwsZ4 C0GpsfIxYaNzYlGx4Iqe61uA/CeSb1QIFg== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'peer0Signer', nodeName=u'peer0', organization=u'peerOrg0')

-----BEGIN CERTIFICATE----- MIIB6DCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y ZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG A1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0 OTM0WjBSMQ4wDAYDVQQDDAVwZWVyMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU UDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG SM49AgEGCCqGSM49AwEHA0IABJy9UK+oXuGSbpbzgZU64aVp7LsMjk75CscMjB5I aD2dUl2WmcLGeAtBqbHyMWGjc2JRseCKnutbgPwnkm9UCBajUDBOMAwGA1UdEwEB /wQCMAAwHQYDVR0OBBYEFPtBGBSCzm6QkrZH6e/mCSa2M9PrMB8GA1UdIwQYMBaA FMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQDvOHWvdVLz OOOO6zVzlTlnpx7l3tnFYENIX3bPx0mMWwIhANWacbcNaErmH+AO7iSpTEG0+yOv ricFnKdPqNrYWOOK -----END CERTIFICATE-----

Created new user peer1Signer with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIDp95qas/9sscmhVI1U3DAnx0xDm3obaEOshxE9gcu82oAoGCCqGSM49 AwEHoUQDQgAEi0dKGDsrQPbp2qfurgWvlDO7riwJkIBNe0HQrM5XkSmzuHRS1X8k +LtkKLCRmjNH/n9pskN/Q3sOxCI+WwhEGw== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'peer1Signer', nodeName=u'peer1', organization=u'peerOrg0')

-----BEGIN CERTIFICATE----- MIIB5jCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y ZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG A1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM1WhcNMTgwNDI3MTg0 OTM1WjBSMQ4wDAYDVQQDDAVwZWVyMTELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU UDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG SM49AgEGCCqGSM49AwEHA0IABItHShg7K0D26dqn7q4Fr5Qzu64sCZCATXtB0KzO V5Eps7h0UtV/JPi7ZCiwkZozR/5/abJDf0N7DsQiPlsIRBujUDBOMAwGA1UdEwEB /wQCMAAwHQYDVR0OBBYEFP6sIl84LZgg3VHNciGVV3Rap2pfMB8GA1UdIwQYMBaA FMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0cAMEQCIGqXT5wDGoOS IwEbrtSk9CHXYQyTO3Uoe/zzRYWqZ+tDAiAoBV/uQOI0G49nBtVtWCv4wVtBoTYS HImiP797V9l6ZQ== -----END CERTIFICATE-----

Created new user peer2Signer with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIDuWl51KocFZf5p/bOc2Ou9DHn+IFPaLjADF3wLHvriOoAoGCCqGSM49 AwEHoUQDQgAEPRPw5e9rtFRBDljroEk5eFZH59EmAj64lx6Zm7wvF6O8w8JMh7++ o4kYKAAVgGwQS79QBEgI4WTrzySwcSUqaA== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'peer2Signer', nodeName=u'peer2', organization=u'peerOrg0')

-----BEGIN CERTIFICATE----- MIIB5zCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y ZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG A1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM1WhcNMTgwNDI3MTg0 OTM1WjBSMQ4wDAYDVQQDDAVwZWVyMjELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU UDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG SM49AgEGCCqGSM49AwEHA0IABD0T8OXva7RUQQ5Y66BJOXhWR+fRJgI+uJcemZu8 LxejvMPCTIe/vqOJGCgAFYBsEEu/UARICOFk688ksHElKmijUDBOMAwGA1UdEwEB /wQCMAAwHQYDVR0OBBYEFKin2+gnq87xKAR+ipKYcsJS3rTUMB8GA1UdIwQYMBaA FMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIBk2lroR3Q8b xxLGeCjwY7TIPO5rONr4KGG6mOiLHIoZAiEAy9rZZ2i5oLtkxHaScy18I+9paj2u MFB4/f++r6yDDi8= -----END CERTIFICATE-----

Created new user peer3Signer with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIIAVypc6oKH4+C3NYKwzz/UA7PASSOtdWy3mM+xxAW9GoAoGCCqGSM49 AwEHoUQDQgAEf8M67Sc9P8Jfvpzk0tlZuXx2ma0F1bLEtHcN6X0Wwi7UWsUYj7Uq 4XXFl9NB3Wkyp8y0gXP2I3TjtOTvJC7G5g== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'peer3Signer', nodeName=u'peer3', organization=u'peerOrg0')

-----BEGIN CERTIFICATE----- MIIB5zCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y ZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG A1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM1WhcNMTgwNDI3MTg0 OTM1WjBSMQ4wDAYDVQQDDAVwZWVyMzELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU UDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG SM49AgEGCCqGSM49AwEHA0IABH/DOu0nPT/CX76c5NLZWbl8dpmtBdWyxLR3Del9 FsIu1FrFGI+1KuF1xZfTQd1pMqfMtIFz9iN047Tk7yQuxuajUDBOMAwGA1UdEwEB /wQCMAAwHQYDVR0OBBYEFIYo30F+UeBuLlWYOqkRh3JAYpZsMB8GA1UdIwQYMBaA FMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCICasZcI4qCVc e7XQV6eQFZ/UwyACO3ADpn2HwvA7AQBmAiEA1BMBiAu0X9FgLOaYyXB4h8grSP52 ngI3UuzTdHbNTTA= -----END CERTIFICATE-----

Created new user peer0Admin with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIDxnCCZcsV5kP4k8m4aW/yU77ly5zr4/zUxX/Cuj4qxroAoGCCqGSM49 AwEHoUQDQgAEzEgoPnl2sVbHogW+hL7eDZ2ACp4U4zQ6ksSwYuq7HntoKRAs8Qfm VkYt4gKIvSwjaXpiKZEiWhWrOQD+Bkd9yQ== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'peer0Admin', nodeName=u'peer0', organization=u'peerOrg0')

-----BEGIN CERTIFICATE----- MIIB5zCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y ZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG A1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM1WhcNMTgwNDI3MTg0 OTM1WjBSMQ4wDAYDVQQDDAVwZWVyMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU UDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG SM49AgEGCCqGSM49AwEHA0IABMxIKD55drFWx6IFvoS+3g2dgAqeFOM0OpLEsGLq ux57aCkQLPEH5lZGLeICiL0sI2l6YimRIloVqzkA/gZHfcmjUDBOMAwGA1UdEwEB /wQCMAAwHQYDVR0OBBYEFBa9PAITNqPCrAxIOR+pCaNRUiHeMB8GA1UdIwQYMBaA FMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIQCgF2WFUsoy SxxYKKRR9yS4dcQKhjAgGLo8UX3ug0MGawIgfRY4+LwPDnLv0FRx3Hwmjw9Z+PDf 8VY/zoZZcWzM3u0= -----END CERTIFICATE-----

User peer0Admin setting tag key peer-admin-cert to value

NodeAdminTuple(user=u'peer0Admin', nodeName=u'peer0', organization=u'peerOrg0')

Created new user peer1Admin with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIJysKvQcUhHd6ZoN+sR8dFsJ8fgh3zLPNMS0UPvijcLUoAoGCCqGSM49 AwEHoUQDQgAEN+mkCvhPd2W+TS5+YK5H/4K/MEpBWKgZyAAMrv7xaO9kWnNDZHMA bJMjJ1vXj+X6EM2njfCTW9/x0ny/CDQjHg== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'peer1Admin', nodeName=u'peer1', organization=u'peerOrg0')

-----BEGIN CERTIFICATE----- MIIB5zCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y ZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG A1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM2WhcNMTgwNDI3MTg0 OTM2WjBSMQ4wDAYDVQQDDAVwZWVyMTELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU UDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG SM49AgEGCCqGSM49AwEHA0IABDfppAr4T3dlvk0ufmCuR/+CvzBKQVioGcgADK7+ 8WjvZFpzQ2RzAGyTIydb14/l+hDNp43wk1vf8dJ8vwg0Ix6jUDBOMAwGA1UdEwEB /wQCMAAwHQYDVR0OBBYEFM3Wj2f6wA6snCM1GTFZkmesWTSBMB8GA1UdIwQYMBaA FMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIAzqajN4XFRz TOj2CK39lF7Vx3/uPla9ooPIJjgJGjU4AiEA4dHn2KtDImCVCwo0Zja5Skefm0Cz hYWuSt0qeCXw1FY= -----END CERTIFICATE-----

User peer1Admin setting tag key peer-admin-cert to value

NodeAdminTuple(user=u'peer1Admin', nodeName=u'peer1', organization=u'peerOrg0')

Created new user peer2Admin with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIJ9EIVADhVNQLoUGifENjIeT7WvSaY9H4fF2hYEmvf3zoAoGCCqGSM49 AwEHoUQDQgAEV4V1gkuBwq4pc4olF9RAicthfUsjg6yVLODd5xYrgTYb5LY2Dx5X anajp1qS0Zkxaf+lfyZK1kCgeAdL9fjtMw== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'peer2Admin', nodeName=u'peer2', organization=u'peerOrg0')

-----BEGIN CERTIFICATE----- MIIB6DCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y ZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG A1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM2WhcNMTgwNDI3MTg0 OTM2WjBSMQ4wDAYDVQQDDAVwZWVyMjELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU UDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG SM49AgEGCCqGSM49AwEHA0IABFeFdYJLgcKuKXOKJRfUQInLYX1LI4OslSzg3ecW K4E2G+S2Ng8eV2p2o6daktGZMWn/pX8mStZAoHgHS/X47TOjUDBOMAwGA1UdEwEB /wQCMAAwHQYDVR0OBBYEFBQXXCr+x0jRBznXUn9fyV1fnAoMMB8GA1UdIwQYMBaA FMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCuEXbVSwwK x3bv9/jJZzEF1oFDah9V59U+XEyugk7XTwIhANmrlxI+R6VhhSq1tNj2X0ewaROx JvWYaNzp9maPSwvy -----END CERTIFICATE-----

User peer2Admin setting tag key peer-admin-cert to value

NodeAdminTuple(user=u'peer2Admin', nodeName=u'peer2', organization=u'peerOrg0')

Created new user peer3Admin with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIKp8+XtRG/LKeG861lXpQrRnNXiJ+WRroijDKeiGUn6YoAoGCCqGSM49 AwEHoUQDQgAENHXdUR+VmDsjCEOduTYlvnq2Pj//VQe6kqjgAxFBwvY6GD+2RpO7 OLmZyjALvRmAaWLs1WWxVblBk19yEyTPTQ== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'peer3Admin', nodeName=u'peer3', organization=u'peerOrg0')

-----BEGIN CERTIFICATE----- MIIB5zCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y ZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG A1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM2WhcNMTgwNDI3MTg0 OTM2WjBSMQ4wDAYDVQQDDAVwZWVyMzELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU UDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG SM49AgEGCCqGSM49AwEHA0IABDR13VEflZg7IwhDnbk2Jb56tj4//1UHupKo4AMR QcL2Ohg/tkaTuzi5mcowC70ZgGli7NVlsVW5QZNfchMkz02jUDBOMAwGA1UdEwEB /wQCMAAwHQYDVR0OBBYEFFU9pbjNkxgQ0/PQG4GV/5PrkUGQMB8GA1UdIwQYMBaA FMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIGw0WJ3+otqZ t5bEtMqbACZUi/XkXmTuLoNQo53kqHptAiEAk0Dg2aNI5JCdCaC9YkKLcbbTnJ7O T2FvUoHwEFmDh3k= -----END CERTIFICATE-----

User peer3Admin setting tag key peer-admin-cert to value

NodeAdminTuple(user=u'peer3Admin', nodeName=u'peer3', organization=u'peerOrg0')

Step 12


And we compose "docker-compose-next-4.yml"

COMPOSE_PROJECT_NAME=40dc98342b7a11e79ac800163e000427 CORE_PEER_NETWORKID=40dc98342b7a11e79ac800163e000427 ORDERER0_ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/localMspConfig ORDERER0_ORDERER_GENERAL_LOCALMSPID=ordererOrg0 ORDERER0_ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/tls_config/orderer0Signer-orderer0-ordererOrg0-tls.crt ORDERER0_ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/tls_config/orderer0Signer-orderer0-ordererOrg0-tls.key ORDERER_GENERAL_GENESISFILE=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/genesis_file ORDERER_GENERAL_GENESISMETHOD=file PEER0_CORE_PEER_LOCALMSPID=peerOrg0 PEER0_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/localMspConfig PEER0_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/tls_config/peer0Signer-peer0-peerOrg0-tls.crt PEER0_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/tls_config/peer0Signer-peer0-peerOrg0-tls.key PEER0_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/localMspConfig/cacerts/peerOrg0.pem PEER0_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer0 PEER1_CORE_PEER_LOCALMSPID=peerOrg0 PEER1_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/localMspConfig PEER1_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/tls_config/peer1Signer-peer1-peerOrg0-tls.crt PEER1_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/tls_config/peer1Signer-peer1-peerOrg0-tls.key PEER1_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/localMspConfig/cacerts/peerOrg0.pem PEER1_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer1 PEER2_CORE_PEER_LOCALMSPID=peerOrg0 PEER2_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/localMspConfig PEER2_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/tls_config/peer2Signer-peer2-peerOrg0-tls.crt PEER2_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/tls_config/peer2Signer-peer2-peerOrg0-tls.key PEER2_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/localMspConfig/cacerts/peerOrg0.pem PEER2_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer2 PEER3_CORE_PEER_LOCALMSPID=peerOrg0 PEER3_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/localMspConfig PEER3_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/tls_config/peer3Signer-peer3-peerOrg0-tls.crt PEER3_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/tls_config/peer3Signer-peer3-peerOrg0-tls.key PEER3_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/localMspConfig/cacerts/peerOrg0.pem PEER3_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer3 docker-compose -f docker-compose-next-4.yml config

Configuration

networks: {} services: orderer0: command: orderer environment: CONFIGTX_ORDERER_ORDERERTYPE: solo ORDERER_GENERAL_BATCHSIZE: '10' ORDERER_GENERAL_BATCHTIMEOUT: 10s ORDERER_GENERAL_GENESISFILE: /var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/genesis_file ORDERER_GENERAL_GENESISMETHOD: file ORDERER_GENERAL_LEDGERTYPE: ram ORDERER_GENERAL_LISTENADDRESS: 0.0.0.0 ORDERER_GENERAL_LISTENPORT: '7050' ORDERER_GENERAL_LOCALMSPDIR: /var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/localMspConfig ORDERER_GENERAL_LOCALMSPID: ordererOrg0 ORDERER_GENERAL_LOGLEVEL: debug ORDERER_GENERAL_MAXWINDOWSIZE: '1000' ORDERER_GENERAL_QUEUESIZE: '1000' ORDERER_GENERAL_TLS_CERTIFICATE: /var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/tls_config/orderer0Signer-orderer0-ordererOrg0-tls.crt ORDERER_GENERAL_TLS_ENABLED: 'true' ORDERER_GENERAL_TLS_PRIVATEKEY: /var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/tls_config/orderer0Signer-orderer0-ordererOrg0-tls.key ORDERER_GENERAL_TLS_ROOTCAS: '' ORDERER_RAMLEDGER_HISTORY_SIZE: '100' image: hyperledger/fabric-orderer ports: - 7050/tcp volumes: - /home/fabric/gopath/src/github.com/hyperledger/fabric/bddtests/volumes/orderer:/var/hyperledger/bddtests/volumes/orderer:rw working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderer peer0: command: peer node start --peer-defaultchain=false depends_on: - orderer0 environment: CORE_LOGGING_LEVEL: DEBUG CORE_NEXT: 'true' CORE_PEER_ADDRESSAUTODETECT: 'true' CORE_PEER_COMMITTER_LEDGER_ORDERER: orderer0:7050 CORE_PEER_ENDORSER_ENABLED: 'true' CORE_PEER_GOSSIP_BOOTSTRAP: peer1:7051 CORE_PEER_GOSSIP_ORGLEADER: 'false' CORE_PEER_GOSSIP_SKIPHANDSHAKE: 'true' CORE_PEER_GOSSIP_USELEADERELECTION: 'true' CORE_PEER_ID: vp0 CORE_PEER_LOCALMSPID: peerOrg0 CORE_PEER_MSPCONFIGPATH: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/localMspConfig CORE_PEER_NETWORKID: 40dc98342b7a11e79ac800163e000427 CORE_PEER_PROFILE_ENABLED: 'true' CORE_PEER_TLS_CERT_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/tls_config/peer0Signer-peer0-peerOrg0-tls.crt CORE_PEER_TLS_ENABLED: 'true' CORE_PEER_TLS_KEY_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/tls_config/peer0Signer-peer0-peerOrg0-tls.key CORE_PEER_TLS_ROOTCERT_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/localMspConfig/cacerts/peerOrg0.pem CORE_PEER_TLS_SERVERHOSTOVERRIDE: peer0 image: hyperledger/fabric-peer ports: - 7051/tcp - 7053/tcp volumes: - /home/fabric/gopath/src/github.com/hyperledger/fabric/bddtests/volumes/peer:/var/hyperledger/bddtests/volumes/peer:rw - /var/run/docker.sock:/var/run/docker.sock:rw peer1: command: peer node start --peer-defaultchain=false depends_on: - orderer0 - peer0 environment: CORE_LOGGING_LEVEL: DEBUG CORE_NEXT: 'true' CORE_PEER_ADDRESSAUTODETECT: 'true' CORE_PEER_COMMITTER_LEDGER_ORDERER: orderer0:7050 CORE_PEER_ENDORSER_ENABLED: 'true' CORE_PEER_GOSSIP_BOOTSTRAP: peer0:7051 CORE_PEER_GOSSIP_ORGLEADER: 'false' CORE_PEER_GOSSIP_SKIPHANDSHAKE: 'true' CORE_PEER_GOSSIP_USELEADERELECTION: 'true' CORE_PEER_ID: vp1 CORE_PEER_LOCALMSPID: peerOrg0 CORE_PEER_MSPCONFIGPATH: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/localMspConfig CORE_PEER_NETWORKID: 40dc98342b7a11e79ac800163e000427 CORE_PEER_TLS_CERT_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/tls_config/peer1Signer-peer1-peerOrg0-tls.crt CORE_PEER_TLS_ENABLED: 'true' CORE_PEER_TLS_KEY_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/tls_config/peer1Signer-peer1-peerOrg0-tls.key CORE_PEER_TLS_ROOTCERT_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/localMspConfig/cacerts/peerOrg0.pem CORE_PEER_TLS_SERVERHOSTOVERRIDE: peer1 image: hyperledger/fabric-peer ports: - 7051/tcp - 7053/tcp volumes: - /home/fabric/gopath/src/github.com/hyperledger/fabric/bddtests/volumes/peer:/var/hyperledger/bddtests/volumes/peer:rw - /var/run/docker.sock:/var/run/docker.sock:rw peer2: command: peer node start --peer-defaultchain=false depends_on: - orderer0 - peer0 environment: CORE_LOGGING_LEVEL: DEBUG CORE_NEXT: 'true' CORE_PEER_ADDRESSAUTODETECT: 'true' CORE_PEER_COMMITTER_LEDGER_ORDERER: orderer0:7050 CORE_PEER_ENDORSER_ENABLED: 'true' CORE_PEER_GOSSIP_BOOTSTRAP: peer3:7051 CORE_PEER_GOSSIP_ORGLEADER: 'false' CORE_PEER_GOSSIP_SKIPHANDSHAKE: 'true' CORE_PEER_GOSSIP_USELEADERELECTION: 'true' CORE_PEER_ID: vp2 CORE_PEER_LOCALMSPID: peerOrg0 CORE_PEER_MSPCONFIGPATH: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/localMspConfig CORE_PEER_NETWORKID: 40dc98342b7a11e79ac800163e000427 CORE_PEER_TLS_CERT_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/tls_config/peer2Signer-peer2-peerOrg0-tls.crt CORE_PEER_TLS_ENABLED: 'true' CORE_PEER_TLS_KEY_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/tls_config/peer2Signer-peer2-peerOrg0-tls.key CORE_PEER_TLS_ROOTCERT_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/localMspConfig/cacerts/peerOrg0.pem CORE_PEER_TLS_SERVERHOSTOVERRIDE: peer2 image: hyperledger/fabric-peer ports: - 7051/tcp - 7053/tcp volumes: - /home/fabric/gopath/src/github.com/hyperledger/fabric/bddtests/volumes/peer:/var/hyperledger/bddtests/volumes/peer:rw - /var/run/docker.sock:/var/run/docker.sock:rw peer3: command: peer node start --peer-defaultchain=false depends_on: - orderer0 - peer0 environment: CORE_LOGGING_LEVEL: DEBUG CORE_NEXT: 'true' CORE_PEER_ADDRESSAUTODETECT: 'true' CORE_PEER_COMMITTER_LEDGER_ORDERER: orderer0:7050 CORE_PEER_ENDORSER_ENABLED: 'true' CORE_PEER_GOSSIP_BOOTSTRAP: peer2:7051 CORE_PEER_GOSSIP_ORGLEADER: 'false' CORE_PEER_GOSSIP_SKIPHANDSHAKE: 'true' CORE_PEER_GOSSIP_USELEADERELECTION: 'true' CORE_PEER_ID: vp3 CORE_PEER_LOCALMSPID: peerOrg0 CORE_PEER_MSPCONFIGPATH: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/localMspConfig CORE_PEER_NETWORKID: 40dc98342b7a11e79ac800163e000427 CORE_PEER_TLS_CERT_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/tls_config/peer3Signer-peer3-peerOrg0-tls.crt CORE_PEER_TLS_ENABLED: 'true' CORE_PEER_TLS_KEY_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/tls_config/peer3Signer-peer3-peerOrg0-tls.key CORE_PEER_TLS_ROOTCERT_FILE: /var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/localMspConfig/cacerts/peerOrg0.pem CORE_PEER_TLS_SERVERHOSTOVERRIDE: peer3 image: hyperledger/fabric-peer ports: - 7051/tcp - 7053/tcp volumes: - /home/fabric/gopath/src/github.com/hyperledger/fabric/bddtests/volumes/peer:/var/hyperledger/bddtests/volumes/peer:rw - /var/run/docker.sock:/var/run/docker.sock:rw version: '2.0' volumes: {}

Network Graph

COMPOSE_PROJECT_NAME=40dc98342b7a11e79ac800163e000427 CORE_PEER_NETWORKID=40dc98342b7a11e79ac800163e000427 ORDERER0_ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/localMspConfig ORDERER0_ORDERER_GENERAL_LOCALMSPID=ordererOrg0 ORDERER0_ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/tls_config/orderer0Signer-orderer0-ordererOrg0-tls.crt ORDERER0_ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/tls_config/orderer0Signer-orderer0-ordererOrg0-tls.key ORDERER_GENERAL_GENESISFILE=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/genesis_file ORDERER_GENERAL_GENESISMETHOD=file PEER0_CORE_PEER_LOCALMSPID=peerOrg0 PEER0_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/localMspConfig PEER0_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/tls_config/peer0Signer-peer0-peerOrg0-tls.crt PEER0_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/tls_config/peer0Signer-peer0-peerOrg0-tls.key PEER0_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/localMspConfig/cacerts/peerOrg0.pem PEER0_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer0 PEER1_CORE_PEER_LOCALMSPID=peerOrg0 PEER1_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/localMspConfig PEER1_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/tls_config/peer1Signer-peer1-peerOrg0-tls.crt PEER1_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/tls_config/peer1Signer-peer1-peerOrg0-tls.key PEER1_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/localMspConfig/cacerts/peerOrg0.pem PEER1_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer1 PEER2_CORE_PEER_LOCALMSPID=peerOrg0 PEER2_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/localMspConfig PEER2_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/tls_config/peer2Signer-peer2-peerOrg0-tls.crt PEER2_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/tls_config/peer2Signer-peer2-peerOrg0-tls.key PEER2_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/localMspConfig/cacerts/peerOrg0.pem PEER2_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer2 PEER3_CORE_PEER_LOCALMSPID=peerOrg0 PEER3_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/localMspConfig PEER3_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/tls_config/peer3Signer-peer3-peerOrg0-tls.crt PEER3_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/tls_config/peer3Signer-peer3-peerOrg0-tls.key PEER3_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/localMspConfig/cacerts/peerOrg0.pem PEER3_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer3 docker-compose -f docker-compose-next-4.yml config --services
COMPOSE_PROJECT_NAME=40dc98342b7a11e79ac800163e000427 CORE_PEER_NETWORKID=40dc98342b7a11e79ac800163e000427 ORDERER0_ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/localMspConfig ORDERER0_ORDERER_GENERAL_LOCALMSPID=ordererOrg0 ORDERER0_ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/tls_config/orderer0Signer-orderer0-ordererOrg0-tls.crt ORDERER0_ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/tls_config/orderer0Signer-orderer0-ordererOrg0-tls.key ORDERER_GENERAL_GENESISFILE=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/genesis_file ORDERER_GENERAL_GENESISMETHOD=file PEER0_CORE_PEER_LOCALMSPID=peerOrg0 PEER0_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/localMspConfig PEER0_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/tls_config/peer0Signer-peer0-peerOrg0-tls.crt PEER0_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/tls_config/peer0Signer-peer0-peerOrg0-tls.key PEER0_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/localMspConfig/cacerts/peerOrg0.pem PEER0_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer0 PEER1_CORE_PEER_LOCALMSPID=peerOrg0 PEER1_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/localMspConfig PEER1_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/tls_config/peer1Signer-peer1-peerOrg0-tls.crt PEER1_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/tls_config/peer1Signer-peer1-peerOrg0-tls.key PEER1_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/localMspConfig/cacerts/peerOrg0.pem PEER1_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer1 PEER2_CORE_PEER_LOCALMSPID=peerOrg0 PEER2_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/localMspConfig PEER2_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/tls_config/peer2Signer-peer2-peerOrg0-tls.crt PEER2_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/tls_config/peer2Signer-peer2-peerOrg0-tls.key PEER2_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/localMspConfig/cacerts/peerOrg0.pem PEER2_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer2 PEER3_CORE_PEER_LOCALMSPID=peerOrg0 PEER3_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/localMspConfig PEER3_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/tls_config/peer3Signer-peer3-peerOrg0-tls.crt PEER3_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/tls_config/peer3Signer-peer3-peerOrg0-tls.key PEER3_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/localMspConfig/cacerts/peerOrg0.pem PEER3_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer3 docker-compose -f docker-compose-next-4.yml up -d --force-recreate
COMPOSE_PROJECT_NAME=40dc98342b7a11e79ac800163e000427 CORE_PEER_NETWORKID=40dc98342b7a11e79ac800163e000427 ORDERER0_ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/localMspConfig ORDERER0_ORDERER_GENERAL_LOCALMSPID=ordererOrg0 ORDERER0_ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/tls_config/orderer0Signer-orderer0-ordererOrg0-tls.crt ORDERER0_ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/orderer0/tls_config/orderer0Signer-orderer0-ordererOrg0-tls.key ORDERER_GENERAL_GENESISFILE=/var/hyperledger/bddtests/volumes/orderer/40dc98342b7a11e79ac800163e000427/genesis_file ORDERER_GENERAL_GENESISMETHOD=file PEER0_CORE_PEER_LOCALMSPID=peerOrg0 PEER0_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/localMspConfig PEER0_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/tls_config/peer0Signer-peer0-peerOrg0-tls.crt PEER0_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/tls_config/peer0Signer-peer0-peerOrg0-tls.key PEER0_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer0/localMspConfig/cacerts/peerOrg0.pem PEER0_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer0 PEER1_CORE_PEER_LOCALMSPID=peerOrg0 PEER1_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/localMspConfig PEER1_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/tls_config/peer1Signer-peer1-peerOrg0-tls.crt PEER1_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/tls_config/peer1Signer-peer1-peerOrg0-tls.key PEER1_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer1/localMspConfig/cacerts/peerOrg0.pem PEER1_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer1 PEER2_CORE_PEER_LOCALMSPID=peerOrg0 PEER2_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/localMspConfig PEER2_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/tls_config/peer2Signer-peer2-peerOrg0-tls.crt PEER2_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/tls_config/peer2Signer-peer2-peerOrg0-tls.key PEER2_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer2/localMspConfig/cacerts/peerOrg0.pem PEER2_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer2 PEER3_CORE_PEER_LOCALMSPID=peerOrg0 PEER3_CORE_PEER_MSPCONFIGPATH=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/localMspConfig PEER3_CORE_PEER_TLS_CERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/tls_config/peer3Signer-peer3-peerOrg0-tls.crt PEER3_CORE_PEER_TLS_KEY_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/tls_config/peer3Signer-peer3-peerOrg0-tls.key PEER3_CORE_PEER_TLS_ROOTCERT_FILE=/var/hyperledger/bddtests/volumes/peer/40dc98342b7a11e79ac800163e000427/peer3/localMspConfig/cacerts/peerOrg0.pem PEER3_CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer3 docker-compose -f docker-compose-next-4.yml ps -q

Step 13


And I wait "0" seconds

Step 14


And the following application developers are defined for peer organizations and each saves their cert as alias

Developer Consortium Organization AliasSavedUnder
dev0Org0 consortium1 peerOrg0 dev0Org0App1
dev0Org1 consortium1 peerOrg0 dev0Org1App1

Created new user dev0Org0 with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIEO4d1W3zGA4PT+v+YfdXuuRc0KECPlYyK9VY7VcGyPwoAoGCCqGSM49 AwEHoUQDQgAEbPcUyi9Gy0ErkO5tNJaXhq5QE2NR4ySZbrHRRsReicr+yPo7kCEQ 3gSSt/JUkX+wD2bnYAeyYTNo/ah0iBgTHw== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'dev0Org0', nodeName=u'consortium1', organization=u'peerOrg0')

-----BEGIN CERTIFICATE----- MIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y ZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG A1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0 OTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV BAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ MBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk mW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG A1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud IwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV GtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx UuWd5HCHk0DT3FI2osl/qYIO -----END CERTIFICATE-----

User dev0Org0 setting tag key dev0Org0App1 to value

NodeAdminTuple(user=u'dev0Org0', nodeName=u'consortium1', organization=u'peerOrg0')

Created new user dev0Org1 with private key

-----BEGIN EC PRIVATE KEY----- MHcCAQEEIAhEOqXZhZ3lngw+n8RjKMyA/6O9VAokOHc9ZwQdrZ7JoAoGCCqGSM49 AwEHoUQDQgAEFqYSxy6AVb10nQXXEL9vLa8PSGLFpEG2IvfE1Y7kIZwqaRzvc3v/ qvrfYsmpvuOh9fq7ATUhv3fmaLaz4uLGZQ== -----END EC PRIVATE KEY-----

Created new named node admin tuple: NodeAdminTuple(user=u'dev0Org1', nodeName=u'consortium1', organization=u'peerOrg0')

-----BEGIN CERTIFICATE----- MIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y ZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG A1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0 OTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV BAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ MBMGByqGSM49AgEGCCqGSM49AwEHA0IABBamEscugFW9dJ0F1xC/by2vD0hixaRB tiL3xNWO5CGcKmkc73N7/6r632LJqb7jofX6uwE1Ib935mi2s+LixmWjUDBOMAwG A1UdEwEB/wQCMAAwHQYDVR0OBBYEFLb6oil7KHKd67G+mDqgzphpFet4MB8GA1Ud IwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIFP+ k95YP4GWpCqayw1w+xMvrUJLap09D0kRrUgvVIHYAiEAw9ae6L0cUx62eD0HBbNy ahPwqTJzh29i7wDevYXycho= -----END CERTIFICATE-----

User dev0Org1 setting tag key dev0Org1App1 to value

NodeAdminTuple(user=u'dev0Org1', nodeName=u'consortium1', organization=u'peerOrg0')

Step 15


And the user "dev0Org0" creates a peer template "template1" with chaincode deployment policy using consortium "consortium1" and peer organizations

Organization
peerOrg0

User dev0Org0 setting tag key template1 to value

[name:peerOrg0, networks: [<Network.Peer: 2>]]

Step 16


And the user "dev0Org0" creates an peer anchor set "anchors1" for channel "com.acme.blockchain.jdoe.Channel1" for orgs

User Peer Organization
peer0Signer peer0 peerOrg0

User dev0Org0 setting tag key anchors1 to value

Protobuf message in binary form
groups { key: "Application" value { groups { key: "peerOrg0" value { values { key: "AnchorPeers" value { value: "\n\n\n\005peer0\020\2137" } } } } } }
from common.configtx_pb2 import ConfigGroup configGroup = ConfigGroup() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-anchors1-0000.protobuf') as f: data = f.read() configGroup.ParseFromString(data)

Step 17


And the user "dev0Org0" creates a ConfigUpdateEnvelope "createChannelConfigUpdate1"

ChannelID Template Consortium Anchors
com.acme.blockchain.jdoe.Channel1 template1 consortium1 anchors1

User dev0Org0 setting tag key createChannelConfigUpdate1_signedMspConfigItems to value

Protobuf message in binary form
groups { key: "Application" value { groups { key: "peerOrg0" value { } } policies { key: "Admins" value { policy { type: 3 policy: "\n\006Admins\020\002" } } } policies { key: "Readers" value { policy { type: 3 policy: "\n\007Readers" } } } policies { key: "Writers" value { policy { type: 3 policy: "\n\007Writers" } } } } }
from common.configtx_pb2 import ConfigGroup configGroup = ConfigGroup() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-createchannelconfigupdate1-signedmspconfigitems-0000.protobuf') as f: data = f.read() configGroup.ParseFromString(data)

User dev0Org0 setting tag key createChannelConfigUpdate1_channel_config_groups to value

Protobuf message in binary form
groups { key: "Application" value { version: 1 groups { key: "peerOrg0" value { } } policies { key: "Admins" value { policy { type: 3 policy: "\n\006Admins\020\002" } } } policies { key: "Readers" value { policy { type: 3 policy: "\n\007Readers" } } } policies { key: "Writers" value { policy { type: 3 policy: "\n\007Writers" } } } } } values { key: "Consortium" value { value: "\n\013consortium1" } }
from common.configtx_pb2 import ConfigGroup configGroup = ConfigGroup() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-createchannelconfigupdate1-channel-config-groups.protobuf') as f: data = f.read() configGroup.ParseFromString(data)

User dev0Org0 setting tag key createChannelConfigUpdate1 to value

Protobuf message in binary form
config_update: "\n!com.acme.blockchain.jdoe.Channel1\022>\022\035\n\013Application\022\016\022\014\n\010peerOrg0\022\000\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032\224\001\022s\n\013Application\022d\010\001\022\014\n\010peerOrg0\022\000\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\032\035\n\nConsortium\022\017\022\r\n\013consortium1"
from common.configtx_pb2 import ConfigUpdateEnvelope configUpdateEnvelope = ConfigUpdateEnvelope() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-createchannelconfigupdate1.protobuf') as f: data = f.read() configUpdateEnvelope.ParseFromString(data)

Step 18


And the user "dev0Org0" collects signatures for ConfigUpdateEnvelope "createChannelConfigUpdate1" from developers

Developer Cert Alias
dev0Org0 dev0Org0App1
dev0Org1 dev0Org1App1

Step 19


And the user "dev0Org0" creates a ConfigUpdate Tx "configUpdateTx1" using cert alias "dev0Org0App1" using signed ConfigUpdateEnvelope "createChannelConfigUpdate1"

User dev0Org0 setting tag key configUpdateTx1 to value

Protobuf message in binary form
payload: "\n\267\006\n/\010\002\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030x\304\242\246\224\317w\014\0279*\355\"\246\2370\220\310\233\305k`\024l\022\241\017\n\372\001\n!com.acme.blockchain.jdoe.Channel1\022>\022\035\n\013Application\022\016\022\014\n\010peerOrg0\022\000\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032\224\001\022s\n\013Application\022d\010\001\022\014\n\010peerOrg0\022\000\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\032\035\n\nConsortium\022\017\022\r\n\013consortium1\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030\2771\351\243\370\256\004\261\324\262~\234\3149\232\346\240\245\016\365\362i\031\234\022G0E\002!\000\360\250\262\200~q\3175C3\233\201\342q\333i\363\324\324dwUD\325\243\017\021\273\205\007Q\"\002 ?\375\301\005\2455\362\215[\231\007\323Y\300\265{C\254\313\200\265\023_\361\365M\272\357\232R2$\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBamEscugFW9dJ0F1xC/by2vD0hixaRB\ntiL3xNWO5CGcKmkc73N7/6r632LJqb7jofX6uwE1Ib935mi2s+LixmWjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLb6oil7KHKd67G+mDqgzphpFet4MB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIFP+\nk95YP4GWpCqayw1w+xMvrUJLap09D0kRrUgvVIHYAiEAw9ae6L0cUx62eD0HBbNy\nahPwqTJzh29i7wDevYXycho=\n-----END CERTIFICATE-----\n\022\030\357v_\007i\014\375\373\342\013\031\232\217\030;\340)^\203s\225\026;\326\022G0E\002!\000\230sr\217\312\354\350\233\2766\200\035\273\371\2543\\\212r\302-h\316\353\224\206\264c\036\223\315\002\002 N\347=\352O\302\225iX\311\364\200\220\311F}]\201\203\311\246\212*\260R[fZ\312\335\315\'" signature: "0D\002 ?M\324\270Fr\201\322\000\024S\002\360<cb\351boH4Z\205\216\222\225\025o\304\326\301\003\002 1{(!\376\nsrO\010E\311\275\367\361\353\342[od_\367\217:\036\207L\332c\r\t4"
from common.common_pb2 import Envelope envelope = Envelope() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-configupdatetx1.protobuf') as f: data = f.read() envelope.ParseFromString(data)

Step 20


And the user "dev0Org0" using cert alias "dev0Org0App1" broadcasts ConfigUpdate Tx "configUpdateTx1" to orderer "orderer0" to create channel "com.acme.blockchain.jdoe.Channel1"

Step 21


And I wait "2" seconds

Step 22


When user "dev0Org0" using cert alias "dev0Org0App1" connects to deliver function on orderer "orderer0"

Step 23


And user "dev0Org0" sends deliver a seek request on orderer "orderer0" with properties

ChainId Start End
com.acme.blockchain.jdoe.Channel1 0 0

Step 24


Then user "dev0Org0" should get a delivery "genesisBlockForMyNewChannel" from "orderer0" of "1" blocks with "1" messages within "1" seconds

User dev0Org0 setting tag key genesisBlockForMyNewChannel to value

Protobuf message in binary form
header { data_hash: "y7*\252<\347\257y]15VH\320[\355t\277\207~3\204g\n\263\224\003\261A\305u\260" } data { data: "\n\334<\n\242\006\n-\010\001\032\006\010\306\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\360\005\n\323\005\n\013ordererOrg0\022\303\005-----BEGIN -----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBVMREwDwYDVQQDDAhvcmRlcmVyMDELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB8Bc1xevTEOQV7O5mIjqQP/fNpq/NMo\nIuiFnFkG+1S5Msdled7AEUMgeUaEP8U/wMfqR8Edb5cdwkeH47lPzHSjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMnu76tt+7C+iOtOu+UrIVCnnu5QMB8GA1Ud\nIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMCA0gAMEUCIEBp\nCM37305NHEqxGZwOsFKncUVTISI+D8+qg1qFn/GQAiEAuohclwpctW0QtHp/sp0L\n38MGiwiA78Rt5aElon+ejTE=\n-----END -----\n\022\030{\346H\310\273\247L\022\326\005\272\202\r-\256Xj\211a\220\225#\242j\022\2646\n\205 \010\001\022\200 \022\330\017\n\007Orderer\022\314\017\022\251\r\n\013ordererOrg0\022\231\r\032\363\013\n\003MSP\022\353\013\022\340\013\022\335\013\n\013ordererOrg0\022\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\"\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\032\006Admins\"4\n\007Writers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"4\n\007Readers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"5\n\006Admins\022+\022!\010\001\022\035\022\010\022\006\010\001\022\002\010\000\032\021\022\017\n\013ordererOrg0\020\001\032\006Admins\032\037\n\023ChannelRestrictions\022\010\032\006Admins\032\036\n\014BatchTimeout\022\016\022\004\n\0021s\032\006Admins\032!\n\rConsensusType\022\020\022\006\n\004solo\032\006Admins\032\"\n\tBatchSize\022\025\022\013\010\n\020\200\302\327/\030\200\200 \032\006Admins\"*\n\017BlockValidation\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\022\363\r\n\013Application\022\343\r\010\001\022\212\r\n\010peerOrg0\022\375\014\032\340\013\n\003MSP\022\330\013\022\315\013\022\312\013\n\010peerOrg0\022\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\"\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\032\006Admins\"1\n\007Readers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"2\n\006Admins\022(\022\036\010\001\022\032\022\010\022\006\010\001\022\002\010\000\032\016\022\014\n\010peerOrg0\020\001\032\006Admins\"1\n\007Writers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032K\n\020OrdererAddresses\0227\022-\n\rorderer0:7050\n\rorderer1:7050\n\rorderer2:7050\032\006Admins\032&\n\020HashingAlgorithm\022\022\022\010\n\006SHA256\032\006Admins\032-\n\031BlockDataHashingStructure\022\020\022\006\010\377\377\377\377\017\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\022\251\026\n\336\025\n\267\006\n/\010\002\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030x\304\242\246\224\317w\014\0279*\355\"\246\2370\220\310\233\305k`\024l\022\241\017\n\372\001\n!com.acme.blockchain.jdoe.Channel1\022>\022\035\n\013Application\022\016\022\014\n\010peerOrg0\022\000\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032\224\001\022s\n\013Application\022d\010\001\022\014\n\010peerOrg0\022\000\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\032\035\n\nConsortium\022\017\022\r\n\013consortium1\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030\2771\351\243\370\256\004\261\324\262~\234\3149\232\346\240\245\016\365\362i\031\234\022G0E\002!\000\360\250\262\200~q\3175C3\233\201\342q\333i\363\324\324dwUD\325\243\017\021\273\205\007Q\"\002 ?\375\301\005\2455\362\215[\231\007\323Y\300\265{C\254\313\200\265\023_\361\365M\272\357\232R2$\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBamEscugFW9dJ0F1xC/by2vD0hixaRB\ntiL3xNWO5CGcKmkc73N7/6r632LJqb7jofX6uwE1Ib935mi2s+LixmWjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLb6oil7KHKd67G+mDqgzphpFet4MB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIFP+\nk95YP4GWpCqayw1w+xMvrUJLap09D0kRrUgvVIHYAiEAw9ae6L0cUx62eD0HBbNy\nahPwqTJzh29i7wDevYXycho=\n-----END CERTIFICATE-----\n\022\030\357v_\007i\014\375\373\342\013\031\232\217\030;\340)^\203s\225\026;\326\022G0E\002!\000\230sr\217\312\354\350\233\2766\200\035\273\371\2543\\\212r\302-h\316\353\224\206\264c\036\223\315\002\002 N\347=\352O\302\225iX\311\364\200\220\311F}]\201\203\311\246\212*\260R[fZ\312\335\315\'\022F0D\002 ?M\324\270Fr\201\322\000\024S\002\360<cb\351boH4Z\205\216\222\225\025o\304\326\301\003\002 1{(!\376\nsrO\010E\311\275\367\361\353\342[od_\367\217:\036\207L\332c\r\t4\022F0D\002 g\374\032Q\236{\362:\204\207\230\330\205\030b\200^J]R\026\2500\300\314\244IT\321is\344\002 E\306\271s\273\2613y\021\027\222d\217\303M\320\t\374(\323\323MS\263\225\303\300\347\201\013\021\006" } metadata { metadata: "" metadata: "" metadata: "" metadata: "" }
from common.common_pb2 import Block block = Block() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-genesisblockformynewchannel-0000.protobuf') as f: data = f.read() block.ParseFromString(data)

Step 25


Given user "dev0Org0" gives "genesisBlockForMyNewChannel" to user "dev0Org1"

User dev0Org1 setting tag key genesisBlockForMyNewChannel to value

Protobuf message in binary form
header { data_hash: "y7*\252<\347\257y]15VH\320[\355t\277\207~3\204g\n\263\224\003\261A\305u\260" } data { data: "\n\334<\n\242\006\n-\010\001\032\006\010\306\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\360\005\n\323\005\n\013ordererOrg0\022\303\005-----BEGIN -----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBVMREwDwYDVQQDDAhvcmRlcmVyMDELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB8Bc1xevTEOQV7O5mIjqQP/fNpq/NMo\nIuiFnFkG+1S5Msdled7AEUMgeUaEP8U/wMfqR8Edb5cdwkeH47lPzHSjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMnu76tt+7C+iOtOu+UrIVCnnu5QMB8GA1Ud\nIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMCA0gAMEUCIEBp\nCM37305NHEqxGZwOsFKncUVTISI+D8+qg1qFn/GQAiEAuohclwpctW0QtHp/sp0L\n38MGiwiA78Rt5aElon+ejTE=\n-----END -----\n\022\030{\346H\310\273\247L\022\326\005\272\202\r-\256Xj\211a\220\225#\242j\022\2646\n\205 \010\001\022\200 \022\330\017\n\007Orderer\022\314\017\022\251\r\n\013ordererOrg0\022\231\r\032\363\013\n\003MSP\022\353\013\022\340\013\022\335\013\n\013ordererOrg0\022\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\"\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\032\006Admins\"4\n\007Writers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"4\n\007Readers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"5\n\006Admins\022+\022!\010\001\022\035\022\010\022\006\010\001\022\002\010\000\032\021\022\017\n\013ordererOrg0\020\001\032\006Admins\032\037\n\023ChannelRestrictions\022\010\032\006Admins\032\036\n\014BatchTimeout\022\016\022\004\n\0021s\032\006Admins\032!\n\rConsensusType\022\020\022\006\n\004solo\032\006Admins\032\"\n\tBatchSize\022\025\022\013\010\n\020\200\302\327/\030\200\200 \032\006Admins\"*\n\017BlockValidation\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\022\363\r\n\013Application\022\343\r\010\001\022\212\r\n\010peerOrg0\022\375\014\032\340\013\n\003MSP\022\330\013\022\315\013\022\312\013\n\010peerOrg0\022\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\"\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\032\006Admins\"1\n\007Readers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"2\n\006Admins\022(\022\036\010\001\022\032\022\010\022\006\010\001\022\002\010\000\032\016\022\014\n\010peerOrg0\020\001\032\006Admins\"1\n\007Writers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032K\n\020OrdererAddresses\0227\022-\n\rorderer0:7050\n\rorderer1:7050\n\rorderer2:7050\032\006Admins\032&\n\020HashingAlgorithm\022\022\022\010\n\006SHA256\032\006Admins\032-\n\031BlockDataHashingStructure\022\020\022\006\010\377\377\377\377\017\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\022\251\026\n\336\025\n\267\006\n/\010\002\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030x\304\242\246\224\317w\014\0279*\355\"\246\2370\220\310\233\305k`\024l\022\241\017\n\372\001\n!com.acme.blockchain.jdoe.Channel1\022>\022\035\n\013Application\022\016\022\014\n\010peerOrg0\022\000\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032\224\001\022s\n\013Application\022d\010\001\022\014\n\010peerOrg0\022\000\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\032\035\n\nConsortium\022\017\022\r\n\013consortium1\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030\2771\351\243\370\256\004\261\324\262~\234\3149\232\346\240\245\016\365\362i\031\234\022G0E\002!\000\360\250\262\200~q\3175C3\233\201\342q\333i\363\324\324dwUD\325\243\017\021\273\205\007Q\"\002 ?\375\301\005\2455\362\215[\231\007\323Y\300\265{C\254\313\200\265\023_\361\365M\272\357\232R2$\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBamEscugFW9dJ0F1xC/by2vD0hixaRB\ntiL3xNWO5CGcKmkc73N7/6r632LJqb7jofX6uwE1Ib935mi2s+LixmWjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLb6oil7KHKd67G+mDqgzphpFet4MB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIFP+\nk95YP4GWpCqayw1w+xMvrUJLap09D0kRrUgvVIHYAiEAw9ae6L0cUx62eD0HBbNy\nahPwqTJzh29i7wDevYXycho=\n-----END CERTIFICATE-----\n\022\030\357v_\007i\014\375\373\342\013\031\232\217\030;\340)^\203s\225\026;\326\022G0E\002!\000\230sr\217\312\354\350\233\2766\200\035\273\371\2543\\\212r\302-h\316\353\224\206\264c\036\223\315\002\002 N\347=\352O\302\225iX\311\364\200\220\311F}]\201\203\311\246\212*\260R[fZ\312\335\315\'\022F0D\002 ?M\324\270Fr\201\322\000\024S\002\360<cb\351boH4Z\205\216\222\225\025o\304\326\301\003\002 1{(!\376\nsrO\010E\311\275\367\361\353\342[od_\367\217:\036\207L\332c\r\t4\022F0D\002 g\374\032Q\236{\362:\204\207\230\330\205\030b\200^J]R\026\2500\300\314\244IT\321is\344\002 E\306\271s\273\2613y\021\027\222d\217\303M\320\t\374(\323\323MS\263\225\303\300\347\201\013\021\006" } metadata { metadata: "" metadata: "" metadata: "" metadata: "" }
from common.common_pb2 import Block block = Block() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org1-genesisblockformynewchannel-0000.protobuf') as f: data = f.read() block.ParseFromString(data)

Step 26


Given user "dev0Org0" gives "genesisBlockForMyNewChannel" to user "peer0Admin"

User peer0Admin setting tag key genesisBlockForMyNewChannel to value

Protobuf message in binary form
header { data_hash: "y7*\252<\347\257y]15VH\320[\355t\277\207~3\204g\n\263\224\003\261A\305u\260" } data { data: "\n\334<\n\242\006\n-\010\001\032\006\010\306\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\360\005\n\323\005\n\013ordererOrg0\022\303\005-----BEGIN -----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBVMREwDwYDVQQDDAhvcmRlcmVyMDELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB8Bc1xevTEOQV7O5mIjqQP/fNpq/NMo\nIuiFnFkG+1S5Msdled7AEUMgeUaEP8U/wMfqR8Edb5cdwkeH47lPzHSjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMnu76tt+7C+iOtOu+UrIVCnnu5QMB8GA1Ud\nIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMCA0gAMEUCIEBp\nCM37305NHEqxGZwOsFKncUVTISI+D8+qg1qFn/GQAiEAuohclwpctW0QtHp/sp0L\n38MGiwiA78Rt5aElon+ejTE=\n-----END -----\n\022\030{\346H\310\273\247L\022\326\005\272\202\r-\256Xj\211a\220\225#\242j\022\2646\n\205 \010\001\022\200 \022\330\017\n\007Orderer\022\314\017\022\251\r\n\013ordererOrg0\022\231\r\032\363\013\n\003MSP\022\353\013\022\340\013\022\335\013\n\013ordererOrg0\022\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\"\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\032\006Admins\"4\n\007Writers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"4\n\007Readers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"5\n\006Admins\022+\022!\010\001\022\035\022\010\022\006\010\001\022\002\010\000\032\021\022\017\n\013ordererOrg0\020\001\032\006Admins\032\037\n\023ChannelRestrictions\022\010\032\006Admins\032\036\n\014BatchTimeout\022\016\022\004\n\0021s\032\006Admins\032!\n\rConsensusType\022\020\022\006\n\004solo\032\006Admins\032\"\n\tBatchSize\022\025\022\013\010\n\020\200\302\327/\030\200\200 \032\006Admins\"*\n\017BlockValidation\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\022\363\r\n\013Application\022\343\r\010\001\022\212\r\n\010peerOrg0\022\375\014\032\340\013\n\003MSP\022\330\013\022\315\013\022\312\013\n\010peerOrg0\022\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\"\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\032\006Admins\"1\n\007Readers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"2\n\006Admins\022(\022\036\010\001\022\032\022\010\022\006\010\001\022\002\010\000\032\016\022\014\n\010peerOrg0\020\001\032\006Admins\"1\n\007Writers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032K\n\020OrdererAddresses\0227\022-\n\rorderer0:7050\n\rorderer1:7050\n\rorderer2:7050\032\006Admins\032&\n\020HashingAlgorithm\022\022\022\010\n\006SHA256\032\006Admins\032-\n\031BlockDataHashingStructure\022\020\022\006\010\377\377\377\377\017\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\022\251\026\n\336\025\n\267\006\n/\010\002\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030x\304\242\246\224\317w\014\0279*\355\"\246\2370\220\310\233\305k`\024l\022\241\017\n\372\001\n!com.acme.blockchain.jdoe.Channel1\022>\022\035\n\013Application\022\016\022\014\n\010peerOrg0\022\000\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032\224\001\022s\n\013Application\022d\010\001\022\014\n\010peerOrg0\022\000\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\032\035\n\nConsortium\022\017\022\r\n\013consortium1\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030\2771\351\243\370\256\004\261\324\262~\234\3149\232\346\240\245\016\365\362i\031\234\022G0E\002!\000\360\250\262\200~q\3175C3\233\201\342q\333i\363\324\324dwUD\325\243\017\021\273\205\007Q\"\002 ?\375\301\005\2455\362\215[\231\007\323Y\300\265{C\254\313\200\265\023_\361\365M\272\357\232R2$\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBamEscugFW9dJ0F1xC/by2vD0hixaRB\ntiL3xNWO5CGcKmkc73N7/6r632LJqb7jofX6uwE1Ib935mi2s+LixmWjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLb6oil7KHKd67G+mDqgzphpFet4MB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIFP+\nk95YP4GWpCqayw1w+xMvrUJLap09D0kRrUgvVIHYAiEAw9ae6L0cUx62eD0HBbNy\nahPwqTJzh29i7wDevYXycho=\n-----END CERTIFICATE-----\n\022\030\357v_\007i\014\375\373\342\013\031\232\217\030;\340)^\203s\225\026;\326\022G0E\002!\000\230sr\217\312\354\350\233\2766\200\035\273\371\2543\\\212r\302-h\316\353\224\206\264c\036\223\315\002\002 N\347=\352O\302\225iX\311\364\200\220\311F}]\201\203\311\246\212*\260R[fZ\312\335\315\'\022F0D\002 ?M\324\270Fr\201\322\000\024S\002\360<cb\351boH4Z\205\216\222\225\025o\304\326\301\003\002 1{(!\376\nsrO\010E\311\275\367\361\353\342[od_\367\217:\036\207L\332c\r\t4\022F0D\002 g\374\032Q\236{\362:\204\207\230\330\205\030b\200^J]R\026\2500\300\314\244IT\321is\344\002 E\306\271s\273\2613y\021\027\222d\217\303M\320\t\374(\323\323MS\263\225\303\300\347\201\013\021\006" } metadata { metadata: "" metadata: "" metadata: "" metadata: "" }
from common.common_pb2 import Block block = Block() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer0admin-genesisblockformynewchannel-0000.protobuf') as f: data = f.read() block.ParseFromString(data)

Step 27


Given user "dev0Org0" gives "genesisBlockForMyNewChannel" to user "peer1Admin"

User peer1Admin setting tag key genesisBlockForMyNewChannel to value

Protobuf message in binary form
header { data_hash: "y7*\252<\347\257y]15VH\320[\355t\277\207~3\204g\n\263\224\003\261A\305u\260" } data { data: "\n\334<\n\242\006\n-\010\001\032\006\010\306\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\360\005\n\323\005\n\013ordererOrg0\022\303\005-----BEGIN -----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBVMREwDwYDVQQDDAhvcmRlcmVyMDELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB8Bc1xevTEOQV7O5mIjqQP/fNpq/NMo\nIuiFnFkG+1S5Msdled7AEUMgeUaEP8U/wMfqR8Edb5cdwkeH47lPzHSjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMnu76tt+7C+iOtOu+UrIVCnnu5QMB8GA1Ud\nIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMCA0gAMEUCIEBp\nCM37305NHEqxGZwOsFKncUVTISI+D8+qg1qFn/GQAiEAuohclwpctW0QtHp/sp0L\n38MGiwiA78Rt5aElon+ejTE=\n-----END -----\n\022\030{\346H\310\273\247L\022\326\005\272\202\r-\256Xj\211a\220\225#\242j\022\2646\n\205 \010\001\022\200 \022\330\017\n\007Orderer\022\314\017\022\251\r\n\013ordererOrg0\022\231\r\032\363\013\n\003MSP\022\353\013\022\340\013\022\335\013\n\013ordererOrg0\022\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\"\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\032\006Admins\"4\n\007Writers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"4\n\007Readers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"5\n\006Admins\022+\022!\010\001\022\035\022\010\022\006\010\001\022\002\010\000\032\021\022\017\n\013ordererOrg0\020\001\032\006Admins\032\037\n\023ChannelRestrictions\022\010\032\006Admins\032\036\n\014BatchTimeout\022\016\022\004\n\0021s\032\006Admins\032!\n\rConsensusType\022\020\022\006\n\004solo\032\006Admins\032\"\n\tBatchSize\022\025\022\013\010\n\020\200\302\327/\030\200\200 \032\006Admins\"*\n\017BlockValidation\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\022\363\r\n\013Application\022\343\r\010\001\022\212\r\n\010peerOrg0\022\375\014\032\340\013\n\003MSP\022\330\013\022\315\013\022\312\013\n\010peerOrg0\022\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\"\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\032\006Admins\"1\n\007Readers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"2\n\006Admins\022(\022\036\010\001\022\032\022\010\022\006\010\001\022\002\010\000\032\016\022\014\n\010peerOrg0\020\001\032\006Admins\"1\n\007Writers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032K\n\020OrdererAddresses\0227\022-\n\rorderer0:7050\n\rorderer1:7050\n\rorderer2:7050\032\006Admins\032&\n\020HashingAlgorithm\022\022\022\010\n\006SHA256\032\006Admins\032-\n\031BlockDataHashingStructure\022\020\022\006\010\377\377\377\377\017\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\022\251\026\n\336\025\n\267\006\n/\010\002\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030x\304\242\246\224\317w\014\0279*\355\"\246\2370\220\310\233\305k`\024l\022\241\017\n\372\001\n!com.acme.blockchain.jdoe.Channel1\022>\022\035\n\013Application\022\016\022\014\n\010peerOrg0\022\000\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032\224\001\022s\n\013Application\022d\010\001\022\014\n\010peerOrg0\022\000\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\032\035\n\nConsortium\022\017\022\r\n\013consortium1\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030\2771\351\243\370\256\004\261\324\262~\234\3149\232\346\240\245\016\365\362i\031\234\022G0E\002!\000\360\250\262\200~q\3175C3\233\201\342q\333i\363\324\324dwUD\325\243\017\021\273\205\007Q\"\002 ?\375\301\005\2455\362\215[\231\007\323Y\300\265{C\254\313\200\265\023_\361\365M\272\357\232R2$\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBamEscugFW9dJ0F1xC/by2vD0hixaRB\ntiL3xNWO5CGcKmkc73N7/6r632LJqb7jofX6uwE1Ib935mi2s+LixmWjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLb6oil7KHKd67G+mDqgzphpFet4MB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIFP+\nk95YP4GWpCqayw1w+xMvrUJLap09D0kRrUgvVIHYAiEAw9ae6L0cUx62eD0HBbNy\nahPwqTJzh29i7wDevYXycho=\n-----END CERTIFICATE-----\n\022\030\357v_\007i\014\375\373\342\013\031\232\217\030;\340)^\203s\225\026;\326\022G0E\002!\000\230sr\217\312\354\350\233\2766\200\035\273\371\2543\\\212r\302-h\316\353\224\206\264c\036\223\315\002\002 N\347=\352O\302\225iX\311\364\200\220\311F}]\201\203\311\246\212*\260R[fZ\312\335\315\'\022F0D\002 ?M\324\270Fr\201\322\000\024S\002\360<cb\351boH4Z\205\216\222\225\025o\304\326\301\003\002 1{(!\376\nsrO\010E\311\275\367\361\353\342[od_\367\217:\036\207L\332c\r\t4\022F0D\002 g\374\032Q\236{\362:\204\207\230\330\205\030b\200^J]R\026\2500\300\314\244IT\321is\344\002 E\306\271s\273\2613y\021\027\222d\217\303M\320\t\374(\323\323MS\263\225\303\300\347\201\013\021\006" } metadata { metadata: "" metadata: "" metadata: "" metadata: "" }
from common.common_pb2 import Block block = Block() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer1admin-genesisblockformynewchannel-0000.protobuf') as f: data = f.read() block.ParseFromString(data)

Step 28


When user "peer0Admin" using cert alias "peer-admin-cert" requests to join channel using genesis block "genesisBlockForMyNewChannel" on peers with result "joinChannelResult"

Peer
peer0

User peer0Admin setting tag key joinChannelResult to value

Protobuf message in binary form
response { status: 200 }
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer0admin-joinchannelresult-peer0.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)

Step 29


Then user "peer0Admin" expects result code for "joinChannelResult" of "200" from peers

Peer
peer0

Step 30


When user "peer1Admin" using cert alias "peer-admin-cert" requests to join channel using genesis block "genesisBlockForMyNewChannel" on peers with result "joinChannelResult"

Peer
peer1

User peer1Admin setting tag key joinChannelResult to value

Protobuf message in binary form
response { status: 200 }
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer1admin-joinchannelresult-peer1.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)

Step 31


Then user "peer1Admin" expects result code for "joinChannelResult" of "200" from peers

Peer
peer1

Step 32


Given user "dev0Org1" gives "genesisBlockForMyNewChannel" to user "peer2Admin"

User peer2Admin setting tag key genesisBlockForMyNewChannel to value

Protobuf message in binary form
header { data_hash: "y7*\252<\347\257y]15VH\320[\355t\277\207~3\204g\n\263\224\003\261A\305u\260" } data { data: "\n\334<\n\242\006\n-\010\001\032\006\010\306\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\360\005\n\323\005\n\013ordererOrg0\022\303\005-----BEGIN -----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBVMREwDwYDVQQDDAhvcmRlcmVyMDELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB8Bc1xevTEOQV7O5mIjqQP/fNpq/NMo\nIuiFnFkG+1S5Msdled7AEUMgeUaEP8U/wMfqR8Edb5cdwkeH47lPzHSjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMnu76tt+7C+iOtOu+UrIVCnnu5QMB8GA1Ud\nIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMCA0gAMEUCIEBp\nCM37305NHEqxGZwOsFKncUVTISI+D8+qg1qFn/GQAiEAuohclwpctW0QtHp/sp0L\n38MGiwiA78Rt5aElon+ejTE=\n-----END -----\n\022\030{\346H\310\273\247L\022\326\005\272\202\r-\256Xj\211a\220\225#\242j\022\2646\n\205 \010\001\022\200 \022\330\017\n\007Orderer\022\314\017\022\251\r\n\013ordererOrg0\022\231\r\032\363\013\n\003MSP\022\353\013\022\340\013\022\335\013\n\013ordererOrg0\022\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\"\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\032\006Admins\"4\n\007Writers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"4\n\007Readers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"5\n\006Admins\022+\022!\010\001\022\035\022\010\022\006\010\001\022\002\010\000\032\021\022\017\n\013ordererOrg0\020\001\032\006Admins\032\037\n\023ChannelRestrictions\022\010\032\006Admins\032\036\n\014BatchTimeout\022\016\022\004\n\0021s\032\006Admins\032!\n\rConsensusType\022\020\022\006\n\004solo\032\006Admins\032\"\n\tBatchSize\022\025\022\013\010\n\020\200\302\327/\030\200\200 \032\006Admins\"*\n\017BlockValidation\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\022\363\r\n\013Application\022\343\r\010\001\022\212\r\n\010peerOrg0\022\375\014\032\340\013\n\003MSP\022\330\013\022\315\013\022\312\013\n\010peerOrg0\022\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\"\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\032\006Admins\"1\n\007Readers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"2\n\006Admins\022(\022\036\010\001\022\032\022\010\022\006\010\001\022\002\010\000\032\016\022\014\n\010peerOrg0\020\001\032\006Admins\"1\n\007Writers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032K\n\020OrdererAddresses\0227\022-\n\rorderer0:7050\n\rorderer1:7050\n\rorderer2:7050\032\006Admins\032&\n\020HashingAlgorithm\022\022\022\010\n\006SHA256\032\006Admins\032-\n\031BlockDataHashingStructure\022\020\022\006\010\377\377\377\377\017\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\022\251\026\n\336\025\n\267\006\n/\010\002\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030x\304\242\246\224\317w\014\0279*\355\"\246\2370\220\310\233\305k`\024l\022\241\017\n\372\001\n!com.acme.blockchain.jdoe.Channel1\022>\022\035\n\013Application\022\016\022\014\n\010peerOrg0\022\000\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032\224\001\022s\n\013Application\022d\010\001\022\014\n\010peerOrg0\022\000\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\032\035\n\nConsortium\022\017\022\r\n\013consortium1\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030\2771\351\243\370\256\004\261\324\262~\234\3149\232\346\240\245\016\365\362i\031\234\022G0E\002!\000\360\250\262\200~q\3175C3\233\201\342q\333i\363\324\324dwUD\325\243\017\021\273\205\007Q\"\002 ?\375\301\005\2455\362\215[\231\007\323Y\300\265{C\254\313\200\265\023_\361\365M\272\357\232R2$\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBamEscugFW9dJ0F1xC/by2vD0hixaRB\ntiL3xNWO5CGcKmkc73N7/6r632LJqb7jofX6uwE1Ib935mi2s+LixmWjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLb6oil7KHKd67G+mDqgzphpFet4MB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIFP+\nk95YP4GWpCqayw1w+xMvrUJLap09D0kRrUgvVIHYAiEAw9ae6L0cUx62eD0HBbNy\nahPwqTJzh29i7wDevYXycho=\n-----END CERTIFICATE-----\n\022\030\357v_\007i\014\375\373\342\013\031\232\217\030;\340)^\203s\225\026;\326\022G0E\002!\000\230sr\217\312\354\350\233\2766\200\035\273\371\2543\\\212r\302-h\316\353\224\206\264c\036\223\315\002\002 N\347=\352O\302\225iX\311\364\200\220\311F}]\201\203\311\246\212*\260R[fZ\312\335\315\'\022F0D\002 ?M\324\270Fr\201\322\000\024S\002\360<cb\351boH4Z\205\216\222\225\025o\304\326\301\003\002 1{(!\376\nsrO\010E\311\275\367\361\353\342[od_\367\217:\036\207L\332c\r\t4\022F0D\002 g\374\032Q\236{\362:\204\207\230\330\205\030b\200^J]R\026\2500\300\314\244IT\321is\344\002 E\306\271s\273\2613y\021\027\222d\217\303M\320\t\374(\323\323MS\263\225\303\300\347\201\013\021\006" } metadata { metadata: "" metadata: "" metadata: "" metadata: "" }
from common.common_pb2 import Block block = Block() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer2admin-genesisblockformynewchannel-0000.protobuf') as f: data = f.read() block.ParseFromString(data)

Step 33


Given user "dev0Org1" gives "genesisBlockForMyNewChannel" to user "peer3Admin"

User peer3Admin setting tag key genesisBlockForMyNewChannel to value

Protobuf message in binary form
header { data_hash: "y7*\252<\347\257y]15VH\320[\355t\277\207~3\204g\n\263\224\003\261A\305u\260" } data { data: "\n\334<\n\242\006\n-\010\001\032\006\010\306\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\360\005\n\323\005\n\013ordererOrg0\022\303\005-----BEGIN -----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBVMREwDwYDVQQDDAhvcmRlcmVyMDELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB8Bc1xevTEOQV7O5mIjqQP/fNpq/NMo\nIuiFnFkG+1S5Msdled7AEUMgeUaEP8U/wMfqR8Edb5cdwkeH47lPzHSjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMnu76tt+7C+iOtOu+UrIVCnnu5QMB8GA1Ud\nIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMCA0gAMEUCIEBp\nCM37305NHEqxGZwOsFKncUVTISI+D8+qg1qFn/GQAiEAuohclwpctW0QtHp/sp0L\n38MGiwiA78Rt5aElon+ejTE=\n-----END -----\n\022\030{\346H\310\273\247L\022\326\005\272\202\r-\256Xj\211a\220\225#\242j\022\2646\n\205 \010\001\022\200 \022\330\017\n\007Orderer\022\314\017\022\251\r\n\013ordererOrg0\022\231\r\032\363\013\n\003MSP\022\353\013\022\340\013\022\335\013\n\013ordererOrg0\022\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\"\345\005-----BEGIN CERTIFICATE-----\nMIIB9TCCAZygAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBYMRQwEgYDVQQDDAtvcmRlcmVyT3JnMDELMAkGA1UEBhMCVVMxDDAK\nBgNVBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGlu\nYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLawQik+bOgaBNS9M74sjdw4Imqt\ng64ZdUP83144uaSHQPuUq8OYMMK/apGUSWtrorOJ2Gj9PMV+0Qs8yzeOAdWjVjBU\nMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFDRTjX3QJOAHbnREWkYokhXR\npzsGMB8GA1UdIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMC\nA0cAMEQCIBdqKO3TZ2KLWKcDErGiOc7TWIVChFfzO4Bn9AuunU6QAiAvweATe3z1\n4CISjkUeaw8SdMSKV5GgRZCjgwzF8lLvNA==\n-----END CERTIFICATE-----\n\032\006Admins\"4\n\007Writers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"4\n\007Readers\022)\022\037\010\001\022\033\022\010\022\006\010\001\022\002\010\000\032\017\022\r\n\013ordererOrg0\032\006Admins\"5\n\006Admins\022+\022!\010\001\022\035\022\010\022\006\010\001\022\002\010\000\032\021\022\017\n\013ordererOrg0\020\001\032\006Admins\032\037\n\023ChannelRestrictions\022\010\032\006Admins\032\036\n\014BatchTimeout\022\016\022\004\n\0021s\032\006Admins\032!\n\rConsensusType\022\020\022\006\n\004solo\032\006Admins\032\"\n\tBatchSize\022\025\022\013\010\n\020\200\302\327/\030\200\200 \032\006Admins\"*\n\017BlockValidation\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\022\363\r\n\013Application\022\343\r\010\001\022\212\r\n\010peerOrg0\022\375\014\032\340\013\n\003MSP\022\330\013\022\315\013\022\312\013\n\010peerOrg0\022\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\"\335\005-----BEGIN CERTIFICATE-----\nMIIB8DCCAZagAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBVMREwDwYDVQQDDAhwZWVyT3JnMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcM\nA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMG\nByqGSM49AgEGCCqGSM49AwEHA0IABHoyrgAAOk5OlEGB1GCLY4eIZuhVtAy55Mea\nmoa+LzZGyA5kKfI9n5rw6pbum0ZcoWvv26bB6MJsE53eRJexOu6jVjBUMBIGA1Ud\nEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFMjjW1UqCPlfPHykFupBF0DJjgAjMB8G\nA1UdIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUC\nIQDNERoPNQ0pCa+mnU/q4ef6o/hgMZeOm6cwDVreH/79gwIgf9Xvl2FCIdUFdS5G\nv4D1ZnEJ9emNk6FETGC8NKnnUuc=\n-----END CERTIFICATE-----\n\032\006Admins\"1\n\007Readers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"2\n\006Admins\022(\022\036\010\001\022\032\022\010\022\006\010\001\022\002\010\000\032\016\022\014\n\010peerOrg0\020\001\032\006Admins\"1\n\007Writers\022&\022\034\010\001\022\030\022\010\022\006\010\001\022\002\010\000\032\014\022\n\n\010peerOrg0\032\006Admins\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032K\n\020OrdererAddresses\0227\022-\n\rorderer0:7050\n\rorderer1:7050\n\rorderer2:7050\032\006Admins\032&\n\020HashingAlgorithm\022\022\022\010\n\006SHA256\032\006Admins\032-\n\031BlockDataHashingStructure\022\020\022\006\010\377\377\377\377\017\032\006Admins\"\"\n\007Readers\022\027\022\r\010\003\022\t\n\007Readers\032\006Admins\"\"\n\006Admins\022\030\022\016\010\003\022\n\n\006Admins\020\002\032\006Admins\"\"\n\007Writers\022\027\022\r\010\003\022\t\n\007Writers\032\006Admins\022\251\026\n\336\025\n\267\006\n/\010\002\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030x\304\242\246\224\317w\014\0279*\355\"\246\2370\220\310\233\305k`\024l\022\241\017\n\372\001\n!com.acme.blockchain.jdoe.Channel1\022>\022\035\n\013Application\022\016\022\014\n\010peerOrg0\022\000\032\035\n\nConsortium\022\017\022\r\n\013consortium1\032\224\001\022s\n\013Application\022d\010\001\022\014\n\010peerOrg0\022\000\"\032\n\007Writers\022\017\022\r\010\003\022\t\n\007Writers\"\032\n\007Readers\022\017\022\r\010\003\022\t\n\007Readers\"\032\n\006Admins\022\020\022\016\010\003\022\n\n\006Admins\020\002\032\035\n\nConsortium\022\017\022\r\n\013consortium1\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030\2771\351\243\370\256\004\261\324\262~\234\3149\232\346\240\245\016\365\362i\031\234\022G0E\002!\000\360\250\262\200~q\3175C3\233\201\342q\333i\363\324\324dwUD\325\243\017\021\273\205\007Q\"\002 ?\375\301\005\2455\362\215[\231\007\323Y\300\265{C\254\313\200\265\023_\361\365M\272\357\232R2$\022\317\006\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBamEscugFW9dJ0F1xC/by2vD0hixaRB\ntiL3xNWO5CGcKmkc73N7/6r632LJqb7jofX6uwE1Ib935mi2s+LixmWjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFLb6oil7KHKd67G+mDqgzphpFet4MB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIFP+\nk95YP4GWpCqayw1w+xMvrUJLap09D0kRrUgvVIHYAiEAw9ae6L0cUx62eD0HBbNy\nahPwqTJzh29i7wDevYXycho=\n-----END CERTIFICATE-----\n\022\030\357v_\007i\014\375\373\342\013\031\232\217\030;\340)^\203s\225\026;\326\022G0E\002!\000\230sr\217\312\354\350\233\2766\200\035\273\371\2543\\\212r\302-h\316\353\224\206\264c\036\223\315\002\002 N\347=\352O\302\225iX\311\364\200\220\311F}]\201\203\311\246\212*\260R[fZ\312\335\315\'\022F0D\002 ?M\324\270Fr\201\322\000\024S\002\360<cb\351boH4Z\205\216\222\225\025o\304\326\301\003\002 1{(!\376\nsrO\010E\311\275\367\361\353\342[od_\367\217:\036\207L\332c\r\t4\022F0D\002 g\374\032Q\236{\362:\204\207\230\330\205\030b\200^J]R\026\2500\300\314\244IT\321is\344\002 E\306\271s\273\2613y\021\027\222d\217\303M\320\t\374(\323\323MS\263\225\303\300\347\201\013\021\006" } metadata { metadata: "" metadata: "" metadata: "" metadata: "" }
from common.common_pb2 import Block block = Block() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer3admin-genesisblockformynewchannel-0000.protobuf') as f: data = f.read() block.ParseFromString(data)

Step 34


When user "peer2Admin" using cert alias "peer-admin-cert" requests to join channel using genesis block "genesisBlockForMyNewChannel" on peers with result "joinChannelResult"

Peer
peer2

User peer2Admin setting tag key joinChannelResult to value

Protobuf message in binary form
response { status: 200 }
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer2admin-joinchannelresult-peer2.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)

Step 35


Then user "peer2Admin" expects result code for "joinChannelResult" of "200" from peers

Peer
peer2

Step 36


When user "peer3Admin" using cert alias "peer-admin-cert" requests to join channel using genesis block "genesisBlockForMyNewChannel" on peers with result "joinChannelResult"

Peer
peer3

User peer3Admin setting tag key joinChannelResult to value

Protobuf message in binary form
response { status: 200 }
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer3admin-joinchannelresult-peer3.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)

Step 37


Then user "peer3Admin" expects result code for "joinChannelResult" of "200" from peers

Peer
peer3

Step 38


When user "peer0Admin" creates a chaincode spec "cc_spec" with name "example02" of type "GOLANG" for chaincode "github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" with args

funcName arg1 arg2 arg3 arg4
init a 100 b 200

User peer0Admin setting tag key cc_spec to value

Protobuf message in binary form
type: GOLANG chaincode_id { path: "github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" name: "example02" version: "test" } input { args: "init" args: "a" args: "100" args: "b" args: "200" }
from peer.chaincode_pb2 import ChaincodeSpec chaincodeSpec = ChaincodeSpec() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer0admin-cc-spec.protobuf') as f: data = f.read() chaincodeSpec.ParseFromString(data)

Step 39


And user "peer0Admin" using cert alias "peer-admin-cert" creates a install proposal "installProposal1" for channel "com.acme.blockchain.jdoe.Channel1" using chaincode spec "cc_spec"

User peer0Admin setting tag key installProposal1 to value

Protobuf message in binary form Not showing message, exceeded max lenth of 10240 byes.
from peer.proposal_pb2 import SignedProposal signedProposal = SignedProposal() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer0admin-installproposal1.protobuf') as f: data = f.read() signedProposal.ParseFromString(data)

Step 40


And user "peer0Admin" using cert alias "peer-admin-cert" sends proposal "installProposal1" to endorsers with timeout of "90" seconds with proposal responses "installProposalResponses"

Endorser
peer0

User peer0Admin setting tag key installProposalResponses to value

Protobuf message in binary form
version: 1 response { status: 200 message: "OK" payload: "OK" } payload: "\n d\317\032%/V\307\205P(\025\273\017\3579\236\225#He\301\017\351K\315\n\te\255f\302\323\022)\032\007\010\310\001\032\002OK\"\036\022\004lscc\032\0261.0.0-snapshot-ca3a1a2" endorsement { endorser: "\n\010peerOrg0\022\273\005-----BEGIN -----\nMIIB6DCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBSMQ4wDAYDVQQDDAVwZWVyMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU\nUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABJy9UK+oXuGSbpbzgZU64aVp7LsMjk75CscMjB5I\naD2dUl2WmcLGeAtBqbHyMWGjc2JRseCKnutbgPwnkm9UCBajUDBOMAwGA1UdEwEB\n/wQCMAAwHQYDVR0OBBYEFPtBGBSCzm6QkrZH6e/mCSa2M9PrMB8GA1UdIwQYMBaA\nFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQDvOHWvdVLz\nOOOO6zVzlTlnpx7l3tnFYENIX3bPx0mMWwIhANWacbcNaErmH+AO7iSpTEG0+yOv\nricFnKdPqNrYWOOK\n-----END -----\n" signature: "0D\002 \014\231{\246\025L\374\243a\332\374Lc1_\346\316v\234\234\202M\314t\271)gj]\225n\340\002 d\216\035j\235hF\032\323\243\271\277\366\307\231\2542zy\353\021\242\370\260\300*\363(\351\265\211\332" }
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer0admin-installproposalresponses-peer0.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)

Step 41


Then user "peer0Admin" expects proposal responses "installProposalResponses" with status "200" from endorsers

Endorser
peer0

Step 42


Given user "peer0Admin" gives "cc_spec" to user "peer2Admin"

User peer2Admin setting tag key cc_spec to value

Protobuf message in binary form
type: GOLANG chaincode_id { path: "github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" name: "example02" version: "test" } input { args: "init" args: "a" args: "100" args: "b" args: "200" }
from peer.chaincode_pb2 import ChaincodeSpec chaincodeSpec = ChaincodeSpec() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer2admin-cc-spec.protobuf') as f: data = f.read() chaincodeSpec.ParseFromString(data)

Step 43


When user "peer2Admin" using cert alias "peer-admin-cert" creates a install proposal "installProposal1" for channel "com.acme.blockchain.jdoe.Channel1" using chaincode spec "cc_spec"

User peer2Admin setting tag key installProposal1 to value

Protobuf message in binary form Not showing message, exceeded max lenth of 10240 byes.
from peer.proposal_pb2 import SignedProposal signedProposal = SignedProposal() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer2admin-installproposal1.protobuf') as f: data = f.read() signedProposal.ParseFromString(data)

Step 44


And user "peer2Admin" using cert alias "peer-admin-cert" sends proposal "installProposal1" to endorsers with timeout of "90" seconds with proposal responses "installProposalResponses"

Endorser
peer2

User peer2Admin setting tag key installProposalResponses to value

Protobuf message in binary form
version: 1 response { status: 200 message: "OK" payload: "OK" } payload: "\n \2228e10)\230\373E\322\220\272fy\336\317a\205\200\033\322RW4\235\251tl\261i`|\022)\032\007\010\310\001\032\002OK\"\036\022\004lscc\032\0261.0.0-snapshot-ca3a1a2" endorsement { endorser: "\n\010peerOrg0\022\273\005-----BEGIN -----\nMIIB5zCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM1WhcNMTgwNDI3MTg0\nOTM1WjBSMQ4wDAYDVQQDDAVwZWVyMjELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU\nUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABD0T8OXva7RUQQ5Y66BJOXhWR+fRJgI+uJcemZu8\nLxejvMPCTIe/vqOJGCgAFYBsEEu/UARICOFk688ksHElKmijUDBOMAwGA1UdEwEB\n/wQCMAAwHQYDVR0OBBYEFKin2+gnq87xKAR+ipKYcsJS3rTUMB8GA1UdIwQYMBaA\nFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIBk2lroR3Q8b\nxxLGeCjwY7TIPO5rONr4KGG6mOiLHIoZAiEAy9rZZ2i5oLtkxHaScy18I+9paj2u\nMFB4/f++r6yDDi8=\n-----END -----\n" signature: "0D\002 t&Eh>\207\231\327F\303$\340<\301PE\001G&\007d?t:\367[k\374\367\3222\344\002 \016\025OW\205\270J\351\237\261U_K\320=\326j<\335{=5\375\020\\D\202n$h\312\255" }
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/peer2admin-installproposalresponses-peer2.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)

Step 45


Then user "peer2Admin" expects proposal responses "installProposalResponses" with status "200" from endorsers

Endorser
peer2

Step 46


Given user "peer0Admin" gives "cc_spec" to user "dev0Org0"

User dev0Org0 setting tag key cc_spec to value

Protobuf message in binary form
type: GOLANG chaincode_id { path: "github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" name: "example02" version: "test" } input { args: "init" args: "a" args: "100" args: "b" args: "200" }
from peer.chaincode_pb2 import ChaincodeSpec chaincodeSpec = ChaincodeSpec() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-cc-spec.protobuf') as f: data = f.read() chaincodeSpec.ParseFromString(data)

Step 47


When user "dev0Org0" using cert alias "dev0Org0App1" creates a instantiate proposal "instantiateProposal1" for channel "com.acme.blockchain.jdoe.Channel1" using chaincode spec "cc_spec"

User dev0Org0 setting tag key instantiateProposal1 to value

Protobuf message in binary form
proposal_bytes: "\n\212\007\n\201\001\010\003\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1*@98af23c34c27a23ccd8a5de5001ffe44a41dd9dd98ae22d3db00a7501f61dfdd:\016\022\014\022\004lscc\032\004test\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030M=\341\006\375J{\346\003\344\001~\023\243\004\347R\204\354\347 \332K\325\022\276\001\n\273\001\n\270\001\010\001\022\014\022\004lscc\032\004test\032\245\001\n\006deploy\n!com.acme.blockchain.jdoe.Channel1\nx\nv\010\001\022Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test\032\026\n\004init\n\001a\n\003100\n\001b\n\003200" signature: "0D\002 {=\035v;.wB\376\211\\dk\213f\304eE\230<\310X\366p\\@Z\255\247\315`\305\002 U\003=(\2428Y\320\341\222\235\006`OF\355s\303PiBOJ2W\241BUb\225\361p"
from peer.proposal_pb2 import SignedProposal signedProposal = SignedProposal() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-instantiateproposal1.protobuf') as f: data = f.read() signedProposal.ParseFromString(data)

Step 48


And user "dev0Org0" using cert alias "dev0Org0App1" sends proposal "instantiateProposal1" to endorsers with timeout of "90" seconds with proposal responses "instantiateProposalResponses"

Endorser
peer0
peer2

User dev0Org0 setting tag key instantiateProposalResponses to value

Protobuf message in binary form Not showing message, exceeded max lenth of 10240 byes.
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-instantiateproposalresponses-peer0.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)
Protobuf message in binary form Not showing message, exceeded max lenth of 10240 byes.
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-instantiateproposalresponses-peer2.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)

Step 49


Then user "dev0Org0" expects proposal responses "instantiateProposalResponses" with status "200" from endorsers

Endorser
peer0
peer2

Step 50


And user "dev0Org0" expects proposal responses "instantiateProposalResponses" each have the same value from endorsers

Endorser
peer0
peer2

Step 51


When the user "dev0Org0" creates transaction "instantiateTx1" from proposal "instantiateProposal1" and proposal responses "instantiateProposalResponses" for channel "com.acme.blockchain.jdoe.Channel1"

User dev0Org0 setting tag key instantiateTx1 to value

Protobuf message in binary form Not showing message, exceeded max lenth of 10240 byes.
from common.common_pb2 import Envelope envelope = Envelope() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-instantiatetx1.protobuf') as f: data = f.read() envelope.ParseFromString(data)

Step 52


And the user "dev0Org0" broadcasts transaction "instantiateTx1" to orderer "orderer0" on channel "com.acme.blockchain.jdoe.Channel1"

Step 53


And I wait "2" seconds

Step 54


And user "dev0Org0" sends deliver a seek request on orderer "orderer0" with properties

ChainId Start End
com.acme.blockchain.jdoe.Channel1 1 1

Step 55


Then user "dev0Org0" should get a delivery "deliveredInstantiateTx1Block" from "orderer0" of "1" blocks with "1" messages within "1" seconds

User dev0Org0 setting tag key deliveredInstantiateTx1Block to value

Protobuf message in binary form Not showing message, exceeded max lenth of 10240 byes.
from common.common_pb2 import Block block = Block() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-deliveredinstantiatetx1block-0000.protobuf') as f: data = f.read() block.ParseFromString(data)

Step 56


And I wait "1" seconds

Step 57


When user "dev0Org0" creates a chaincode invocation spec "querySpec1" using spec "cc_spec" with input

funcName arg1
query a

User dev0Org0 setting tag key querySpec1 to value

Protobuf message in binary form
type: GOLANG chaincode_id { path: "github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" name: "example02" version: "test" } input { args: "query" args: "a" }
from peer.chaincode_pb2 import ChaincodeSpec chaincodeSpec = ChaincodeSpec() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-queryspec1.protobuf') as f: data = f.read() chaincodeSpec.ParseFromString(data)

Step 58


And user "dev0Org0" using cert alias "dev0Org0App1" creates a proposal "queryProposal1" for channel "com.acme.blockchain.jdoe.Channel1" using chaincode spec "querySpec1"

User dev0Org0 setting tag key queryProposal1 to value

Protobuf message in binary form
proposal_bytes: "\n\330\007\n\317\001\010\003\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1*@17d57b8b07264d9e9c74023c2621fbe045bd112bc00520829097f3ab8893b76b:\\\022Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030\325\357x\017Z\023\237\360\277\035\263\345\t\362\376{\013\305\254\240\366\203\241\014\022n\nl\nj\010\001\022Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test\032\n\n\005query\n\001a" signature: "0D\002 \006\270G\266\027`\0259\353\312\252\'\211\256\320\264)\027\264(\260\021;\311:\300zq\203^\323\247\002 t`\037\276\2669)\245&\004s\346\243p\364\377\005\303L\265Y\360\213&\251\025\254\300\024\226\376\347"
from peer.proposal_pb2 import SignedProposal signedProposal = SignedProposal() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-queryproposal1.protobuf') as f: data = f.read() signedProposal.ParseFromString(data)

Step 59


And user "dev0Org0" using cert alias "dev0Org0App1" sends proposal "queryProposal1" to endorsers with timeout of "30" seconds with proposal responses "queryProposal1Responses"

Endorser
peer0
peer2

User dev0Org0 setting tag key queryProposal1Responses to value

Protobuf message in binary form
version: 1 response { status: 200 message: "OK" payload: "100" } payload: "\n \310^\376\177\304\025\231\2079\343\356i\206\005]\000:\346/\244\'\304\327\222\262Q#\332\212\317\tK\022\233\001\n3\022\026\n\texample02\022\t\n\007\n\001a\022\002\010\001\022\031\n\004lscc\022\021\n\017\n\texample02\022\002\010\001\032\010\010\310\001\032\003100\"Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test" endorsement { endorser: "\n\010peerOrg0\022\273\005-----BEGIN -----\nMIIB6DCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBSMQ4wDAYDVQQDDAVwZWVyMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU\nUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABJy9UK+oXuGSbpbzgZU64aVp7LsMjk75CscMjB5I\naD2dUl2WmcLGeAtBqbHyMWGjc2JRseCKnutbgPwnkm9UCBajUDBOMAwGA1UdEwEB\n/wQCMAAwHQYDVR0OBBYEFPtBGBSCzm6QkrZH6e/mCSa2M9PrMB8GA1UdIwQYMBaA\nFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQDvOHWvdVLz\nOOOO6zVzlTlnpx7l3tnFYENIX3bPx0mMWwIhANWacbcNaErmH+AO7iSpTEG0+yOv\nricFnKdPqNrYWOOK\n-----END -----\n" signature: "0E\002!\000\375\265x-\303^5\337RQ\307\301Y\014\372g\370\004J\304\002;\327\007v\031(T|\372Z\270\002 \026\213\014`.\263\246\341\226X\017\234AG\0200g\375\314OxZd\010\265&\201>\355\'\031\177" }
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-queryproposal1responses-peer0.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)
Protobuf message in binary form
version: 1 response { status: 200 message: "OK" payload: "100" } payload: "\n \310^\376\177\304\025\231\2079\343\356i\206\005]\000:\346/\244\'\304\327\222\262Q#\332\212\317\tK\022\233\001\n3\022\026\n\texample02\022\t\n\007\n\001a\022\002\010\001\022\031\n\004lscc\022\021\n\017\n\texample02\022\002\010\001\032\010\010\310\001\032\003100\"Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test" endorsement { endorser: "\n\010peerOrg0\022\273\005-----BEGIN -----\nMIIB5zCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM1WhcNMTgwNDI3MTg0\nOTM1WjBSMQ4wDAYDVQQDDAVwZWVyMjELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU\nUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABD0T8OXva7RUQQ5Y66BJOXhWR+fRJgI+uJcemZu8\nLxejvMPCTIe/vqOJGCgAFYBsEEu/UARICOFk688ksHElKmijUDBOMAwGA1UdEwEB\n/wQCMAAwHQYDVR0OBBYEFKin2+gnq87xKAR+ipKYcsJS3rTUMB8GA1UdIwQYMBaA\nFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIBk2lroR3Q8b\nxxLGeCjwY7TIPO5rONr4KGG6mOiLHIoZAiEAy9rZZ2i5oLtkxHaScy18I+9paj2u\nMFB4/f++r6yDDi8=\n-----END -----\n" signature: "0D\002 \032\332\032\3017\261\203qa\020Q\336\311k\211\2674\1772\265\016\321\210\203T ?\227\333P\347\256\002 %^\362\364@\302B\353\356m\301\030\326t$\257\205 \374\201\3739\016W\310_\240@R\247\317\032" }
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-queryproposal1responses-peer2.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)

Step 60


Then user "dev0Org0" expects proposal responses "queryProposal1Responses" with status "200" from endorsers

Endorser
peer0
peer2

Step 61


And user "dev0Org0" expects proposal responses "queryProposal1Responses" each have the same value from endorsers

Endorser
peer0
peer2

Step 62


When user "dev0Org0" creates a chaincode invocation spec "invocationSpec1" using spec "cc_spec" with input

funcName arg1 arg2 arg3
invoke a b 10

User dev0Org0 setting tag key invocationSpec1 to value

Protobuf message in binary form
type: GOLANG chaincode_id { path: "github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" name: "example02" version: "test" } input { args: "invoke" args: "a" args: "b" args: "10" }
from peer.chaincode_pb2 import ChaincodeSpec chaincodeSpec = ChaincodeSpec() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-invocationspec1.protobuf') as f: data = f.read() chaincodeSpec.ParseFromString(data)

Step 63


And user "dev0Org0" using cert alias "dev0Org0App1" creates a proposal "invokeProposal1" for channel "com.acme.blockchain.jdoe.Channel1" using chaincode spec "invocationSpec1"

User dev0Org0 setting tag key invokeProposal1 to value

Protobuf message in binary form
proposal_bytes: "\n\330\007\n\317\001\010\003\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1*@9de9a6ee29a75fab1e45dc2127f95a8d71afa56610ebacbbda0d9a354f369af5:\\\022Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030Y\325\"\260\375\037\366\305\251\300\"\337\301\303\370F\022\313\241\311\263\360\210\300\022v\nt\nr\010\001\022Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test\032\022\n\006invoke\n\001a\n\001b\n\00210" signature: "0E\002!\000\274\335\ni\025\027&\335%\371\220\257\226^\007\033\212\251~\202\324x\021#\300\245\023z\232\000O+\002 \026\343\000%P\030\242\354\323K\255Q\255\350\3462\315\277\223s\315\025a\214\216\2105\353/)z\272"
from peer.proposal_pb2 import SignedProposal signedProposal = SignedProposal() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-invokeproposal1.protobuf') as f: data = f.read() signedProposal.ParseFromString(data)

Step 64


And user "dev0Org0" using cert alias "dev0Org0App1" sends proposal "invokeProposal1" to endorsers with timeout of "30" seconds with proposal responses "invokeProposal1Responses"

Endorser
peer0
peer2

User dev0Org0 setting tag key invokeProposal1Responses to value

Protobuf message in binary form
version: 1 response { status: 200 message: "OK" } payload: "\n g^0\244Kot@\254\030\247\214#\3526.`\262<\315`\314C\340\367\222\266\271G\313\320_\022\262\001\nO\0222\n\texample02\022%\n\007\n\001a\022\002\010\001\n\007\n\001b\022\002\010\001\032\007\n\001a\032\00290\032\010\n\001b\032\003210\022\031\n\004lscc\022\021\n\017\n\texample02\022\002\010\001\032\003\010\310\001\"Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test" endorsement { endorser: "\n\010peerOrg0\022\273\005-----BEGIN -----\nMIIB6DCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBSMQ4wDAYDVQQDDAVwZWVyMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU\nUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABJy9UK+oXuGSbpbzgZU64aVp7LsMjk75CscMjB5I\naD2dUl2WmcLGeAtBqbHyMWGjc2JRseCKnutbgPwnkm9UCBajUDBOMAwGA1UdEwEB\n/wQCMAAwHQYDVR0OBBYEFPtBGBSCzm6QkrZH6e/mCSa2M9PrMB8GA1UdIwQYMBaA\nFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQDvOHWvdVLz\nOOOO6zVzlTlnpx7l3tnFYENIX3bPx0mMWwIhANWacbcNaErmH+AO7iSpTEG0+yOv\nricFnKdPqNrYWOOK\n-----END -----\n" signature: "0D\002 q\027\270!b\177\330\341V\234\300\331}r\343\236L\r\334\214\201\256\t\3311\211<\031\345-\205\003\002 %\325\300\272D\342\375^\264\256\240\263\020k\010K\"\034RGE=\007\027\332_\037\277\3500\223\267" }
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-invokeproposal1responses-peer0.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)
Protobuf message in binary form
version: 1 response { status: 200 message: "OK" } payload: "\n g^0\244Kot@\254\030\247\214#\3526.`\262<\315`\314C\340\367\222\266\271G\313\320_\022\262\001\nO\0222\n\texample02\022%\n\007\n\001a\022\002\010\001\n\007\n\001b\022\002\010\001\032\007\n\001a\032\00290\032\010\n\001b\032\003210\022\031\n\004lscc\022\021\n\017\n\texample02\022\002\010\001\032\003\010\310\001\"Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test" endorsement { endorser: "\n\010peerOrg0\022\273\005-----BEGIN -----\nMIIB5zCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM1WhcNMTgwNDI3MTg0\nOTM1WjBSMQ4wDAYDVQQDDAVwZWVyMjELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU\nUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABD0T8OXva7RUQQ5Y66BJOXhWR+fRJgI+uJcemZu8\nLxejvMPCTIe/vqOJGCgAFYBsEEu/UARICOFk688ksHElKmijUDBOMAwGA1UdEwEB\n/wQCMAAwHQYDVR0OBBYEFKin2+gnq87xKAR+ipKYcsJS3rTUMB8GA1UdIwQYMBaA\nFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIBk2lroR3Q8b\nxxLGeCjwY7TIPO5rONr4KGG6mOiLHIoZAiEAy9rZZ2i5oLtkxHaScy18I+9paj2u\nMFB4/f++r6yDDi8=\n-----END -----\n" signature: "0D\002 [\217\204\376\'\2255s;[\360l\367lAN\350\243\023\261\322\006\177O\345^\264\217?\352\357\260\002 1\332k\021i\024h\310\227\214-\350\202\001u\025\032\265u\034\035N\302W\361\335\330\312\371S\323\023" }
from peer.proposal_response_pb2 import ProposalResponse proposalResponse = ProposalResponse() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-invokeproposal1responses-peer2.protobuf') as f: data = f.read() proposalResponse.ParseFromString(data)

Step 65


Then user "dev0Org0" expects proposal responses "invokeProposal1Responses" with status "200" from endorsers

Endorser
peer0
peer2

Step 66


And user "dev0Org0" expects proposal responses "invokeProposal1Responses" each have the same value from endorsers

Endorser
peer0
peer2

Step 67


When the user "dev0Org0" creates transaction "invokeTx1" from proposal "invokeProposal1" and proposal responses "invokeProposal1Responses" for channel "com.acme.blockchain.jdoe.Channel1"

User dev0Org0 setting tag key invokeTx1 to value

Protobuf message in binary form
payload: "\n\330\007\n\317\001\010\003\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1*@9de9a6ee29a75fab1e45dc2127f95a8d71afa56610ebacbbda0d9a354f369af5:\\\022Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030Y\325\"\260\375\037\366\305\251\300\"\337\301\303\370F\022\313\241\311\263\360\210\300\022\215\025\n\212\025\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030Y\325\"\260\375\037\366\305\251\300\"\337\301\303\370F\022\313\241\311\263\360\210\300\022\201\017\nv\nt\nr\010\001\022Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test\032\022\n\006invoke\n\001a\n\001b\n\00210\022\206\016\n\327\001\n g^0\244Kot@\254\030\247\214#\3526.`\262<\315`\314C\340\367\222\266\271G\313\320_\022\262\001\nO\0222\n\texample02\022%\n\007\n\001a\022\002\010\001\n\007\n\001b\022\002\010\001\032\007\n\001a\032\00290\032\010\n\001b\032\003210\022\031\n\004lscc\022\021\n\017\n\texample02\022\002\010\001\032\003\010\310\001\"Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test\022\223\006\n\310\005\n\010peerOrg0\022\273\005-----BEGIN -----\nMIIB6DCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBSMQ4wDAYDVQQDDAVwZWVyMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU\nUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABJy9UK+oXuGSbpbzgZU64aVp7LsMjk75CscMjB5I\naD2dUl2WmcLGeAtBqbHyMWGjc2JRseCKnutbgPwnkm9UCBajUDBOMAwGA1UdEwEB\n/wQCMAAwHQYDVR0OBBYEFPtBGBSCzm6QkrZH6e/mCSa2M9PrMB8GA1UdIwQYMBaA\nFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQDvOHWvdVLz\nOOOO6zVzlTlnpx7l3tnFYENIX3bPx0mMWwIhANWacbcNaErmH+AO7iSpTEG0+yOv\nricFnKdPqNrYWOOK\n-----END -----\n\022F0D\002 q\027\270!b\177\330\341V\234\300\331}r\343\236L\r\334\214\201\256\t\3311\211<\031\345-\205\003\002 %\325\300\272D\342\375^\264\256\240\263\020k\010K\"\034RGE=\007\027\332_\037\277\3500\223\267\022\223\006\n\310\005\n\010peerOrg0\022\273\005-----BEGIN -----\nMIIB5zCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM1WhcNMTgwNDI3MTg0\nOTM1WjBSMQ4wDAYDVQQDDAVwZWVyMjELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU\nUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABD0T8OXva7RUQQ5Y66BJOXhWR+fRJgI+uJcemZu8\nLxejvMPCTIe/vqOJGCgAFYBsEEu/UARICOFk688ksHElKmijUDBOMAwGA1UdEwEB\n/wQCMAAwHQYDVR0OBBYEFKin2+gnq87xKAR+ipKYcsJS3rTUMB8GA1UdIwQYMBaA\nFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIBk2lroR3Q8b\nxxLGeCjwY7TIPO5rONr4KGG6mOiLHIoZAiEAy9rZZ2i5oLtkxHaScy18I+9paj2u\nMFB4/f++r6yDDi8=\n-----END -----\n\022F0D\002 [\217\204\376\'\2255s;[\360l\367lAN\350\243\023\261\322\006\177O\345^\264\217?\352\357\260\002 1\332k\021i\024h\310\227\214-\350\202\001u\025\032\265u\034\035N\302W\361\335\330\312\371S\323\023" signature: "0D\002 _\214\344\205\007\\\263\374\331\313\250\352\204\311y\210V\270\376\342\221\252r\204\216\260\230\325!\357+t\002 \016\030\000G\352j\213\205\251I\351\243G\217\361\030\r\236\264\242\243ga=\217\\I0P\217d\004"
from common.common_pb2 import Envelope envelope = Envelope() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-invoketx1.protobuf') as f: data = f.read() envelope.ParseFromString(data)

Step 68


And the user "dev0Org0" broadcasts transaction "invokeTx1" to orderer "orderer0" on channel "com.acme.blockchain.jdoe.Channel1"

Step 69


And I wait "2" seconds

Step 70


And user "dev0Org0" sends deliver a seek request on orderer "orderer0" with properties

ChainId Start End
com.acme.blockchain.jdoe.Channel1 2 2

Step 71


Then user "dev0Org0" should get a delivery "deliveredInvokeTx1Block" from "orderer0" of "1" blocks with "1" messages within "1" seconds

User dev0Org0 setting tag key deliveredInvokeTx1Block to value

Protobuf message in binary form
header { number: 2 previous_hash: "+\337C\317j\250\230b\240\320Q\347\234\020\336\005\t;O\003Da4^r\213\366^\033F*/" data_hash: "\320]\337\t\177\242\257x_\241\266HN\245\354\3231:S6\032h\317`+\304,\027\374\242\214/" } data { data: "\n\353\034\n\330\007\n\317\001\010\003\020\001\032\006\010\275\372\210\310\005\"!com.acme.blockchain.jdoe.Channel1*@9de9a6ee29a75fab1e45dc2127f95a8d71afa56610ebacbbda0d9a354f369af5:\\\022Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test\022\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030Y\325\"\260\375\037\366\305\251\300\"\337\301\303\370F\022\313\241\311\263\360\210\300\022\215\025\n\212\025\n\203\006\n\346\005\n\010peerOrg0\022\331\005-----BEGIN CERTIFICATE-----\nMIIB7jCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTQyWhcNMTgwNDI3MTg0\nOTQyWjBYMRQwEgYDVQQDDAtjb25zb3J0aXVtMTELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGz3FMovRstBK5DubTSWl4auUBNjUeMk\nmW6x0UbEXonK/sj6O5AhEN4EkrfyVJF/sA9m52AHsmEzaP2odIgYEx+jUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFAJ9LmlaPF5mnEYRzANjO816UdYaMB8GA1Ud\nIwQYMBaAFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQCV\nGtvbmUTYRzpmlju3p/cUA5kQRhXwxEf9llMUhePEEAIhAKOv+ja0WY9izP2MAdGx\nUuWd5HCHk0DT3FI2osl/qYIO\n-----END CERTIFICATE-----\n\022\030Y\325\"\260\375\037\366\305\251\300\"\337\301\303\370F\022\313\241\311\263\360\210\300\022\201\017\nv\nt\nr\010\001\022Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test\032\022\n\006invoke\n\001a\n\001b\n\00210\022\206\016\n\327\001\n g^0\244Kot@\254\030\247\214#\3526.`\262<\315`\314C\340\367\222\266\271G\313\320_\022\262\001\nO\0222\n\texample02\022%\n\007\n\001a\022\002\010\001\n\007\n\001b\022\002\010\001\032\007\n\001a\032\00290\032\010\n\001b\032\003210\022\031\n\004lscc\022\021\n\017\n\texample02\022\002\010\001\032\003\010\310\001\"Z\nGgithub.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02\022\texample02\032\004test\022\223\006\n\310\005\n\010peerOrg0\022\273\005-----BEGIN -----\nMIIB6DCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM0WhcNMTgwNDI3MTg0\nOTM0WjBSMQ4wDAYDVQQDDAVwZWVyMDELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU\nUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABJy9UK+oXuGSbpbzgZU64aVp7LsMjk75CscMjB5I\naD2dUl2WmcLGeAtBqbHyMWGjc2JRseCKnutbgPwnkm9UCBajUDBOMAwGA1UdEwEB\n/wQCMAAwHQYDVR0OBBYEFPtBGBSCzm6QkrZH6e/mCSa2M9PrMB8GA1UdIwQYMBaA\nFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0kAMEYCIQDvOHWvdVLz\nOOOO6zVzlTlnpx7l3tnFYENIX3bPx0mMWwIhANWacbcNaErmH+AO7iSpTEG0+yOv\nricFnKdPqNrYWOOK\n-----END -----\n\022F0D\002 q\027\270!b\177\330\341V\234\300\331}r\343\236L\r\334\214\201\256\t\3311\211<\031\345-\205\003\002 %\325\300\272D\342\375^\264\256\240\263\020k\010K\"\034RGE=\007\027\332_\037\277\3500\223\267\022\223\006\n\310\005\n\010peerOrg0\022\273\005-----BEGIN -----\nMIIB5zCCAY2gAwIBAwICA+gwCgYIKoZIzj0EAwIwVTERMA8GA1UEAwwIcGVlck9y\nZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEXMBUG\nA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTM1WhcNMTgwNDI3MTg0\nOTM1WjBSMQ4wDAYDVQQDDAVwZWVyMjELMAkGA1UEBhMCVVMxDDAKBgNVBAcMA1JU\nUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABD0T8OXva7RUQQ5Y66BJOXhWR+fRJgI+uJcemZu8\nLxejvMPCTIe/vqOJGCgAFYBsEEu/UARICOFk688ksHElKmijUDBOMAwGA1UdEwEB\n/wQCMAAwHQYDVR0OBBYEFKin2+gnq87xKAR+ipKYcsJS3rTUMB8GA1UdIwQYMBaA\nFMjjW1UqCPlfPHykFupBF0DJjgAjMAoGCCqGSM49BAMCA0gAMEUCIBk2lroR3Q8b\nxxLGeCjwY7TIPO5rONr4KGG6mOiLHIoZAiEAy9rZZ2i5oLtkxHaScy18I+9paj2u\nMFB4/f++r6yDDi8=\n-----END -----\n\022F0D\002 [\217\204\376\'\2255s;[\360l\367lAN\350\243\023\261\322\006\177O\345^\264\217?\352\357\260\002 1\332k\021i\024h\310\227\214-\350\202\001u\025\032\265u\034\035N\302W\361\335\330\312\371S\323\023\022F0D\002 _\214\344\205\007\\\263\374\331\313\250\352\204\311y\210V\270\376\342\221\252r\204\216\260\230\325!\357+t\002 \016\030\000G\352j\213\205\251I\351\243G\217\361\030\r\236\264\242\243ga=\217\\I0P\217d\004" } metadata { metadata: "\022\274\006\n\360\005\n\323\005\n\013ordererOrg0\022\303\005-----BEGIN -----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBVMREwDwYDVQQDDAhvcmRlcmVyMDELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB8Bc1xevTEOQV7O5mIjqQP/fNpq/NMo\nIuiFnFkG+1S5Msdled7AEUMgeUaEP8U/wMfqR8Edb5cdwkeH47lPzHSjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMnu76tt+7C+iOtOu+UrIVCnnu5QMB8GA1Ud\nIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMCA0gAMEUCIEBp\nCM37305NHEqxGZwOsFKncUVTISI+D8+qg1qFn/GQAiEAuohclwpctW0QtHp/sp0L\n38MGiwiA78Rt5aElon+ejTE=\n-----END -----\n\022\030?\210\035\260\026BE\3650\316\257_\304dM\3360\232\237:>\200v\026\022G0E\002!\000\366\220\276(\320G\327\007\006N\027w\305\336\204\327V\231\264\347\026q\231^\235\340\344N \234\236/\002 w*\016\232\344\240x\376\2478\007\235%f\356\220\235{\365\372\354\325x\330Q\327\'\320\243\305\306M" metadata: "\n\002\010\001\022\273\006\n\360\005\n\323\005\n\013ordererOrg0\022\303\005-----BEGIN -----\nMIIB7TCCAZOgAwIBAwICA+gwCgYIKoZIzj0EAwIwWDEUMBIGA1UEAwwLb3JkZXJl\nck9yZzAxCzAJBgNVBAYTAlVTMQwwCgYDVQQHDANSVFAxDDAKBgNVBAoMA0lCTTEX\nMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmEwHhcNMTcwNDI3MTg0OTMzWhcNMTgwNDI3\nMTg0OTMzWjBVMREwDwYDVQQDDAhvcmRlcmVyMDELMAkGA1UEBhMCVVMxDDAKBgNV\nBAcMA1JUUDEMMAoGA1UECgwDSUJNMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB8Bc1xevTEOQV7O5mIjqQP/fNpq/NMo\nIuiFnFkG+1S5Msdled7AEUMgeUaEP8U/wMfqR8Edb5cdwkeH47lPzHSjUDBOMAwG\nA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMnu76tt+7C+iOtOu+UrIVCnnu5QMB8GA1Ud\nIwQYMBaAFDRTjX3QJOAHbnREWkYokhXRpzsGMAoGCCqGSM49BAMCA0gAMEUCIEBp\nCM37305NHEqxGZwOsFKncUVTISI+D8+qg1qFn/GQAiEAuohclwpctW0QtHp/sp0L\n38MGiwiA78Rt5aElon+ejTE=\n-----END -----\n\022\030\032pd\310{\205\235\206\306K\330H\'\2349:\317j\271s\365\340\331\237\022F0D\002 TF\265\237\247\3412\031\000(\276\330\233[\262\371$\375\021\274\270\251S\243\227\223\205\225\341\010t\'\002 +\267\360\225Wv\237W\214\263w\211<n\331\222J\246|\347\336\375\245\351*\037\256sJ\264f>" metadata: "" metadata: "" }
from common.common_pb2 import Block block = Block() data = None with open('tmp/40dc98342b7a11e79ac800163e000427/dev0org0-deliveredinvoketx1block-0000.protobuf') as f: data = f.read() block.ParseFromString(data)