From a53391bb58541876da51af61ac740a1c4de8eb8a Mon Sep 17 00:00:00 2001 From: Baohua Yang Date: Wed, 3 Mar 2021 13:52:28 -0800 Subject: [PATCH] Add cc queryapproved --- .../channel-artifacts/businesschannel_0.block | Bin 28882 -> 28880 bytes .../businesschannel_0.block.json | 18 +- .../businesschannel_0.block.json-flat.json | 18 +- .../channel-artifacts/businesschannel_1.block | Bin 28649 -> 28647 bytes .../businesschannel_1.block.json | 22 +- .../businesschannel_1.block.json-flat.json | 22 +- .../channel-artifacts/businesschannel_2.block | Bin 28705 -> 28704 bytes .../businesschannel_2.block.json | 22 +- .../businesschannel_2.block.json-flat.json | 22 +- .../channel-artifacts/businesschannel_3.block | Bin 4778 -> 4778 bytes .../businesschannel_3.block.json | 20 +- .../businesschannel_3.block.json-flat.json | 20 +- .../channel-artifacts/businesschannel_4.block | Bin 4774 -> 4772 bytes .../businesschannel_4.block.json | 20 +- .../businesschannel_4.block.json-flat.json | 20 +- .../channel-artifacts/businesschannel_5.block | Bin 5755 -> 5755 bytes .../businesschannel_5.block.json | 22 +- .../businesschannel_5.block.json-flat.json | 22 +- .../channel-artifacts/businesschannel_6.block | Bin 4084 -> 4081 bytes .../businesschannel_6.block.json | 20 +- .../businesschannel_6.block.json-flat.json | Bin 10333 -> 10329 bytes .../channel-artifacts/businesschannel_7.block | Bin 4074 -> 4073 bytes .../businesschannel_7.block.json | 20 +- .../businesschannel_7.block.json-flat.json | Bin 10762 -> 10758 bytes .../channel-artifacts/businesschannel_8.block | Bin 4072 -> 4075 bytes .../businesschannel_8.block.json | 20 +- .../businesschannel_8.block.json-flat.json | Bin 10762 -> 10762 bytes .../channel-artifacts/businesschannel_9.block | Bin 41699 -> 41699 bytes .../businesschannel_9.block.json | 30 +- .../businesschannel_9.block.json-flat.json | 30 +- .../businesschannel_config.block | Bin 41699 -> 41699 bytes .../businesschannel_config.block.json | 30 +- ...usinesschannel_config.block.json-flat.json | 30 +- .../raft/channel-artifacts/config_delta.pb | Bin 5884 -> 5884 bytes .../channel-artifacts/config_delta_env.pb | Bin 8709 -> 8711 bytes .../raft/channel-artifacts/original_config.pb | Bin 24522 -> 24522 bytes .../channel-artifacts/testchainid_1.block | Bin 30811 -> 30809 bytes .../testchainid_1.block.json | 26 +- .../testchainid_1.block.json-flat.json | 26 +- .../raft/channel-artifacts/updated_config.pb | Bin 30057 -> 30057 bytes hyperledger_fabric/latest/scripts/func.sh | 1720 +++++++++-------- .../latest/scripts/test_cc_queryapproved.sh | 24 + .../latest/scripts/variables.sh | 16 +- .../v2.2.0/scripts/download_images.sh | 10 +- hyperledger_fabric/v2.2.0/scripts/func.sh | 1718 ++++++++-------- hyperledger_fabric/v2.3.0/Makefile | 6 +- .../v2.3.0/scripts/download_images.sh | 8 +- hyperledger_fabric/v2.3.0/scripts/func.sh | 150 +- .../v2.3.0/scripts/test_cc_queryapproved.sh | 24 + 49 files changed, 2142 insertions(+), 2014 deletions(-) create mode 100644 hyperledger_fabric/latest/scripts/test_cc_queryapproved.sh create mode 100644 hyperledger_fabric/v2.3.0/scripts/test_cc_queryapproved.sh diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_0.block b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_0.block index ca9ac52f02875ba35139d39f1edb31c795011d7c..db8f3e71e4737340cb6b83ea90c52456eb1bee92 100644 GIT binary patch delta 494 zcmccgknzGpMtd$LDTPz_j$|<^FlNW++rEkjXZv%vWJA84Zj9oNl{o}PVk^8LgWlcN)xCofA-oqQold9t5@uE;+ruFXGJr%8r^ko&Ki8@Dp#ssc;*De9Ic-TXFhFpdNl9iPrcbk zC(e9Ze_g`uzn}S&+Ud?=+HL23nH2aNdX1N{Ro%*BC<&j%TCJh^>}aUn3GdQ^{7tf| z*EU>%7!+g1C7i!%rVu-slgWI{02F$B@o&TlqLQ9&f$61%f`W*Y_ppR<*0KLdX; z!(u?DL>0rGug?t#I`0jic%OYX=sIo^M=(VKApqAo*cZrn7c;9WiLfpjEkZQJ!}^XH z%k*Mqc^m4h{YU~J9EN`nu&+5o;x?f4XKKQ6(^oh(gVoyKuc@b_} x0w721y%op;zkpu28(rjcDft*B_|}$1L#Zue7Gh0J1fv=X3IGZK3IGZK3INUg)1m+X diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_0.block.json b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_0.block.json index d24bf9c4..33a98d0d 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_0.block.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_0.block.json @@ -1057,13 +1057,13 @@ }, "signatures": [ { - "signature": "MEUCIQDXOdgXyHgXM6sqibAuGi1CNMTD+o4Zy/RiZnkb6qv9SAIgHIZ/D7CvT8emrEEvw6DT0qPqkxcFnuD7c3ou0JsFdz8=", + "signature": "MEQCIEhM2lXwMWkiHvgLTV4fzucmRFM3ndPf3LQm5+PKYq17AiAYbsnVxUn6qhQ15OuK2rlE48CsLa7szTD3Cncif6HMyA==", "signature_header": { "creator": { "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRU2RCRkpVZ1JrQmh6bVc5aHRZaCtVakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSjJ1bll5RzdGRVkKOW9TcTJ0Z3RSN0FNYzB0dG8zNmNid3NMSEVRNmFWUFB3WkFqa3VUaWo2TXBReE1mOGdmTGx3NmNkQkE4OThiRwpyTDJEbHR0bndNNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUtxZjM2Zy9zQ3ZNbHhiNXBBSEluTC9sejJVNlJKZllSemdiQzM4V3JwNVFNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJMKy9Bd1JCZWgxM3BsK2NZOFpsY0pzTlBEWFBEYzQxd0tLY2hlOHpkU1NBaUI1aTVMdQorMVRub3k0VDRsM0RTZjJLOHhyeDlVZ0ZObjcza0dmcFlSMTJVUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org1MSP" }, - "nonce": "McNiQKZEFcOdr88NCDrvDZ94n3026Dpu" + "nonce": "BwKJAVK8lpbdGQ7mRSIiJKRYDuV6dBdI" } } ] @@ -1073,7 +1073,7 @@ "channel_id": "businesschannel", "epoch": "0", "extension": null, - "timestamp": "2020-12-07T20:41:25Z", + "timestamp": "2021-03-03T21:48:10Z", "tls_cert_hash": null, "tx_id": "", "type": 2, @@ -1084,11 +1084,11 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRU2RCRkpVZ1JrQmh6bVc5aHRZaCtVakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSjJ1bll5RzdGRVkKOW9TcTJ0Z3RSN0FNYzB0dG8zNmNid3NMSEVRNmFWUFB3WkFqa3VUaWo2TXBReE1mOGdmTGx3NmNkQkE4OThiRwpyTDJEbHR0bndNNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUtxZjM2Zy9zQ3ZNbHhiNXBBSEluTC9sejJVNlJKZllSemdiQzM4V3JwNVFNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJMKy9Bd1JCZWgxM3BsK2NZOFpsY0pzTlBEWFBEYzQxd0tLY2hlOHpkU1NBaUI1aTVMdQorMVRub3k0VDRsM0RTZjJLOHhyeDlVZ0ZObjcza0dmcFlSMTJVUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org1MSP" }, - "nonce": "2dSe0bDcXj5kQjDVMQTR1c5vNktRQSTe" + "nonce": "wqaYZPHSLWgfOtWlND+uEqpSvDe/k2+x" } } }, - "signature": "MEUCIQDBpNjy5Xz+sGpkpLuFcE3JnvF5qscUG54wRfK/fRoGiwIgS23cSRfXBF+bM5d7xwCY/TEMJ7MCX3mX59sSBEammA8=" + "signature": "MEQCICr5YMzytULintH5LpvFkZntf9cYRv9ON+SXQ1Yrhs9NAiAPgI0zpgZ62moAdFeaBXsoKebFVT7IS3Vwb7IdJdaw1A==" } }, "header": { @@ -1096,7 +1096,7 @@ "channel_id": "businesschannel", "epoch": "0", "extension": null, - "timestamp": "2020-12-07T20:41:25Z", + "timestamp": "2021-03-03T21:48:10Z", "tls_cert_hash": null, "tx_id": "", "type": 1, @@ -1107,16 +1107,16 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNIekNDQWNhZ0F3SUJBZ0lSQUw0WU5uNXJzTTBiT3cwdjBTSEtwSUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmFNR3N4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJBd0RnWURWUVFMRXdkdmNtUmxjbVZ5TVIwd0d3WURWUVFERXhSdmNtUmxjbVZ5TUM1bGVHRnRjR3hsCkxtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTmw4cEZsMENVenVWaTkvOStkdWR0c2cKN1FCSlhMaUkxKzVhVmlTZTFXTWdiSkZiRkxVNkNXZzF3ajJVZ0pLcHFHam5IK05VbHlmY3JjYWkwb0J4dUdDagpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkSXdRa01DS0FJREMyCmt2clhibXlVVm5BQjQxUUFtbU1TaDNTRmFXb0JMUmNENDliUUJkd05NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUMKSUVjWGpITUxXOUg1S1BEUm04Tlpxak56UU0ybEEzL3hNbzlIWUdMVXQxRE5BaUFiVmYxeGVYanp6S1VxRTdpSApwcm1CNUNBOUpqVjVhUWdjSFJUdXNnM0hpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "OrdererMSP" }, - "nonce": "LW+Nh1InbFwwXduACfJDSD0+bGCcD9B8" + "nonce": "7bLWvAeppKBi+2lZ+X+wNae/Tjb3Zcmk" } } }, - "signature": "MEQCIHNf4DL+Vc2MBdvyH7pfSb0++Khj9InMNGJPP/F5EW5aAiBH7L0VyAK/gF64G13kcyn5GCX41pZFQ6ktYxZiTU0Eow==" + "signature": "MEQCIFw2ChNvqrHXXHHw6v2u6rsq8weNm3SdYYXEJWgoAOnAAiA9y+buRYS3MwiZ/+bHuzFNt3PqWU9S1Zsg4+OZGScwxA==" } ] }, "header": { - "data_hash": "fJolYfXMFU8xVFLGpTmIbpOo2P5Ab1lSycSu4UaRy5Q=", + "data_hash": "yt7EagEgAWtfbz3qWFcG/N10sG8+LVwhuKm5u30PYP0=", "number": "0", "previous_hash": null }, diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_0.block.json-flat.json b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_0.block.json-flat.json index 01ba7c19..bf83e004 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_0.block.json-flat.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_0.block.json-flat.json @@ -373,35 +373,35 @@ .data.data[0].payload.data.last_update.payload.data.config_update.write_set.values.Consortium.value.name=SampleConsortium .data.data[0].payload.data.last_update.payload.data.config_update.write_set.values.Consortium.version=0 .data.data[0].payload.data.last_update.payload.data.config_update.write_set.version=0 -.data.data[0].payload.data.last_update.payload.data.signatures[0].signature=MEUCIQDXOdgXyHgXM6sqibAuGi1CNMTD+o4Zy/RiZnkb6qv9SAIgHIZ/D7CvT8emrEEvw6DT0qPqkxcFnuD7c3ou0JsFdz8= +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature=MEQCIEhM2lXwMWkiHvgLTV4fzucmRFM3ndPf3LQm5+PKYq17AiAYbsnVxUn6qhQ15OuK2rlE48CsLa7szTD3Cncif6HMyA== .data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.mspid=Org1MSP -.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.nonce=McNiQKZEFcOdr88NCDrvDZ94n3026Dpu +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.nonce=BwKJAVK8lpbdGQ7mRSIiJKRYDuV6dBdI .data.data[0].payload.data.last_update.payload.header.channel_header.channel_id=businesschannel .data.data[0].payload.data.last_update.payload.header.channel_header.epoch=0 .data.data[0].payload.data.last_update.payload.header.channel_header.extension=None -.data.data[0].payload.data.last_update.payload.header.channel_header.timestamp=2020-12-07T20:41:25Z +.data.data[0].payload.data.last_update.payload.header.channel_header.timestamp=2021-03-03T21:48:10Z .data.data[0].payload.data.last_update.payload.header.channel_header.tls_cert_hash=None .data.data[0].payload.data.last_update.payload.header.channel_header.tx_id= .data.data[0].payload.data.last_update.payload.header.channel_header.type=2 .data.data[0].payload.data.last_update.payload.header.channel_header.version=0 .data.data[0].payload.data.last_update.payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.data.last_update.payload.header.signature_header.creator.mspid=Org1MSP -.data.data[0].payload.data.last_update.payload.header.signature_header.nonce=2dSe0bDcXj5kQjDVMQTR1c5vNktRQSTe -.data.data[0].payload.data.last_update.signature=MEUCIQDBpNjy5Xz+sGpkpLuFcE3JnvF5qscUG54wRfK/fRoGiwIgS23cSRfXBF+bM5d7xwCY/TEMJ7MCX3mX59sSBEammA8= +.data.data[0].payload.data.last_update.payload.header.signature_header.nonce=wqaYZPHSLWgfOtWlND+uEqpSvDe/k2+x +.data.data[0].payload.data.last_update.signature=MEQCICr5YMzytULintH5LpvFkZntf9cYRv9ON+SXQ1Yrhs9NAiAPgI0zpgZ62moAdFeaBXsoKebFVT7IS3Vwb7IdJdaw1A== .data.data[0].payload.header.channel_header.channel_id=businesschannel .data.data[0].payload.header.channel_header.epoch=0 .data.data[0].payload.header.channel_header.extension=None -.data.data[0].payload.header.channel_header.timestamp=2020-12-07T20:41:25Z +.data.data[0].payload.header.channel_header.timestamp=2021-03-03T21:48:10Z .data.data[0].payload.header.channel_header.tls_cert_hash=None .data.data[0].payload.header.channel_header.tx_id= .data.data[0].payload.header.channel_header.type=1 .data.data[0].payload.header.channel_header.version=0 .data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICHzCCAcagAwIBAgIRAL4YNn5rsM0bOw0v0SHKpIEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBaMGsxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRAwDgYDVQQLEwdvcmRlcmVyMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxl\nLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNl8pFl0CUzuVi9/9+dudtsg\n7QBJXLiI1+5aViSe1WMgbJFbFLU6CWg1wj2UgJKpqGjnH+NUlyfcrcai0oBxuGCj\nTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIDC2\nkvrXbmyUVnAB41QAmmMSh3SFaWoBLRcD49bQBdwNMAoGCCqGSM49BAMCA0cAMEQC\nIEcXjHMLW9H5KPDRm8NZqjNzQM2lA3/xMo9HYGLUt1DNAiAbVf1xeXjzzKUqE7iH\nprmB5CA9JjV5aQgcHRTusg3Hiw==\n-----END CERTIFICATE-----\n') .data.data[0].payload.header.signature_header.creator.mspid=OrdererMSP -.data.data[0].payload.header.signature_header.nonce=LW+Nh1InbFwwXduACfJDSD0+bGCcD9B8 -.data.data[0].signature=MEQCIHNf4DL+Vc2MBdvyH7pfSb0++Khj9InMNGJPP/F5EW5aAiBH7L0VyAK/gF64G13kcyn5GCX41pZFQ6ktYxZiTU0Eow== -.header.data_hash=fJolYfXMFU8xVFLGpTmIbpOo2P5Ab1lSycSu4UaRy5Q= +.data.data[0].payload.header.signature_header.nonce=7bLWvAeppKBi+2lZ+X+wNae/Tjb3Zcmk +.data.data[0].signature=MEQCIFw2ChNvqrHXXHHw6v2u6rsq8weNm3SdYYXEJWgoAOnAAiA9y+buRYS3MwiZ/+bHuzFNt3PqWU9S1Zsg4+OZGScwxA== +.header.data_hash=yt7EagEgAWtfbz3qWFcG/N10sG8+LVwhuKm5u30PYP0= .header.number=0 .header.previous_hash=None .metadata.metadata[0]= diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_1.block b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_1.block index 26502e7787b046c0ea006666d07758556b9834eb..caf34fe1b41e5e836200f171932815f22a3ebd6d 100644 GIT binary patch delta 698 zcmV;r0!97l-vQ^}0e=cc2mulx4To42ltSI{%2u*+@Of%^YL|o$8WPEI{Pl=$Lp&RM z8X#{DlKS@QvHRVRMr$ zV=a@=0~NE(8Q2t)Dj6x0`z{TWq%M||JxU0(lN@0plWJj4lUZXB1)qq3f(Em0V^0GZC>ru|mZv-+02uzO zf*x;lAqlC8GO(S0v(;u}1b?CZg^(5uquTOYXUsVAa9aI%FjQ@?ne-AzFhv3(0LDvu zsZL)ijXC<0v`n*~1}$O2OZ2FGC~h6-OfM9r{sJIaXXAvzFO*LZ*xc`Lfzdyj7_LjJ z&}wM3ko8D^w$pSHM=(VKAppdbWxh625cJj>H%yhQ_DM}RQ*bpKxqsK#pjD`z?F3H( zAShFZOSZDumzdYn^{4|M`OSFxJG>2s+`g;RB5U1kMiNFaL;@fj2LfsD{NBU#`b2T; zDr{;?TbHN8<@DSGsZ}zHZb|$CAUkM%E=pIGUg1APL4KaR77;x+JAKP)`&0k#blfga z=Nh^P3abYS5efnb0h2du4gr<3Mr<|%Y}z(I*HbZ5Io}~s71u4e3PNGah~pId^b$re zL;@gFU7WG05O0a}RdIj}$?&;bgNzX1pW5{kb8lb$dZvtdRO6_X}LB$LToc9Zi(CX<+3 z43j@x2(z;=*%Xt)MV6D-TPl+oMhvq*T%`n)2w|y{31cJ(Dh5GhZE0?Ev(E#x6qC6a zX_JB&HnSob-4>H6VI-6PFLSf8VK)Jj3}Z!;C}AX%QDYbd`lh=61+#8rPXicwj$RWa z>(2%?GCZfMbiZ*-_3}6WD}}+c)n;P^e>kBwvNO0L6*)LL=O2Yyit?>N=>DKyS`tSv zMFJrJ?LFiODd4nhl_?lNK0eOP?Hs)h@=Krh=8S*#;$jS!0w62J-H{NLu8V}SDvQFS zb>h5CP+5_D5O!J)SDeYcRm>7cFhv3(0KOssxc`R*Fy!~drW&=kXUTQwlP#LSe^C;1@TZpoJw%e@$rzn>(caT*AARXB$;hekSR^F?Ngq->=+I4XMyj)?>p~Vby3Me`O{Wd;rOk+ZezCAQ!&Xb4$*6 oQdsVaP{!zZrQ+f6kyHgDB#CZ+t*fONmI?$40tf*L015yK08k7uK>z>% diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_1.block.json b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_1.block.json index c1a5a659..4acbecc6 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_1.block.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_1.block.json @@ -976,13 +976,13 @@ }, "signatures": [ { - "signature": "MEUCIQDtPeQIKeC0bJUpGEA+Ps7N7Ry9DvJLn/fmjH/24mIMlwIgK8XdkRCVrouEsiqLwqN14rxMUFmRfBB2Wg5XnMm9Vcw=", + "signature": "MEUCIQDGS3upTl8qjTn6k7RMs58GLWHCS/SofChuHehMLxSl/gIgWGfjhMIvlE8Q2Nzvb4HRP5oYrkur0GpotJD1SH+203Q=", "signature_header": { "creator": { "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRU2RCRkpVZ1JrQmh6bVc5aHRZaCtVakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSjJ1bll5RzdGRVkKOW9TcTJ0Z3RSN0FNYzB0dG8zNmNid3NMSEVRNmFWUFB3WkFqa3VUaWo2TXBReE1mOGdmTGx3NmNkQkE4OThiRwpyTDJEbHR0bndNNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUtxZjM2Zy9zQ3ZNbHhiNXBBSEluTC9sejJVNlJKZllSemdiQzM4V3JwNVFNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJMKy9Bd1JCZWgxM3BsK2NZOFpsY0pzTlBEWFBEYzQxd0tLY2hlOHpkU1NBaUI1aTVMdQorMVRub3k0VDRsM0RTZjJLOHhyeDlVZ0ZObjcza0dmcFlSMTJVUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org1MSP" }, - "nonce": "OKE2sjO4IRU5ODnnH4VaivKtQej+oF5a" + "nonce": "of2FkBYMo9ryW2fMOPJwWv14MFRtr5n0" } } ] @@ -992,7 +992,7 @@ "channel_id": "businesschannel", "epoch": "0", "extension": null, - "timestamp": "2020-12-07T20:41:30Z", + "timestamp": "2021-03-03T21:48:15Z", "tls_cert_hash": null, "tx_id": "", "type": 2, @@ -1003,11 +1003,11 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRU2RCRkpVZ1JrQmh6bVc5aHRZaCtVakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSjJ1bll5RzdGRVkKOW9TcTJ0Z3RSN0FNYzB0dG8zNmNid3NMSEVRNmFWUFB3WkFqa3VUaWo2TXBReE1mOGdmTGx3NmNkQkE4OThiRwpyTDJEbHR0bndNNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUtxZjM2Zy9zQ3ZNbHhiNXBBSEluTC9sejJVNlJKZllSemdiQzM4V3JwNVFNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJMKy9Bd1JCZWgxM3BsK2NZOFpsY0pzTlBEWFBEYzQxd0tLY2hlOHpkU1NBaUI1aTVMdQorMVRub3k0VDRsM0RTZjJLOHhyeDlVZ0ZObjcza0dmcFlSMTJVUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org1MSP" }, - "nonce": "eo5eEyTrzwY1MjynqnS/cUz18jf/K4XB" + "nonce": "KBrycpanPCEAGP6rgh5vdCEJqYkysJ1/" } } }, - "signature": "MEUCIQC+IgC4/4cFMOT3xKYatbdnyXXoky2awFES/V+tA9TwbgIgA9XecP9xEuMOnn6n2TNs5n3WPVpr+kOjs2y9WdAn0XI=" + "signature": "MEUCIQDElGW+NlIQ9NYaN0yVq/ZJTThTcDUbudfYoFWonu0ETwIgKFOHS7ay2JeY19P1qAMf+c14+ju8DYbcvqvTImvdbUY=" } }, "header": { @@ -1015,7 +1015,7 @@ "channel_id": "businesschannel", "epoch": "0", "extension": null, - "timestamp": "2020-12-07T20:41:31Z", + "timestamp": "2021-03-03T21:48:15Z", "tls_cert_hash": null, "tx_id": "", "type": 1, @@ -1026,22 +1026,22 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNIekNDQWNhZ0F3SUJBZ0lSQUw0WU5uNXJzTTBiT3cwdjBTSEtwSUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmFNR3N4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJBd0RnWURWUVFMRXdkdmNtUmxjbVZ5TVIwd0d3WURWUVFERXhSdmNtUmxjbVZ5TUM1bGVHRnRjR3hsCkxtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTmw4cEZsMENVenVWaTkvOStkdWR0c2cKN1FCSlhMaUkxKzVhVmlTZTFXTWdiSkZiRkxVNkNXZzF3ajJVZ0pLcHFHam5IK05VbHlmY3JjYWkwb0J4dUdDagpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkSXdRa01DS0FJREMyCmt2clhibXlVVm5BQjQxUUFtbU1TaDNTRmFXb0JMUmNENDliUUJkd05NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUMKSUVjWGpITUxXOUg1S1BEUm04Tlpxak56UU0ybEEzL3hNbzlIWUdMVXQxRE5BaUFiVmYxeGVYanp6S1VxRTdpSApwcm1CNUNBOUpqVjVhUWdjSFJUdXNnM0hpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "OrdererMSP" }, - "nonce": "0cDn4YeynErSi/x+7XRO9SiIiTFS2iJ6" + "nonce": "Li/SRZXsfggUvzTNneOsXQfx//LRVMQc" } } }, - "signature": "MEUCIQCpnJrAJ+bUGhN1OxamYB5M11uIsny2260ApyiXMXeQVQIgHdkp4Zy74Vbeq4uEnSc9S/kMiWEq/twVZ4Ig6M2Ce4E=" + "signature": "MEQCIBwHAmnv/N7D9PpEcewqbGpLW5enwuX03AOpVTKKbkn8AiA7aH0uSleVXuE/REF+nrwWET03O33LavtT/+903C5P5w==" } ] }, "header": { - "data_hash": "OjEsrHbjt5SKgVFmngZW5lL5gaJCJho2/9sCkNGLwwg=", + "data_hash": "bw6S+vbqtAe8Mvx1QzV5X/M8Ghsmcv96NqCxVcIixRY=", "number": "1", - "previous_hash": "GeRzisfsSwqgisOlKGGDq4In1eZ31E50mXk4LL2iVm8=" + "previous_hash": "DYdYFZRC3fHKVrJy8HlqeWqXhA8aEslx/PWIb0M8G3s=" }, "metadata": { "metadata": [ - "ChEKAggBEgsKCQoDAQIDEAQYBRKWBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYgDzc9OObeAGY1rO1Ohvg7r5HYuWJNcc+EkcwRQIhAJrwHwSM36/cUA2p0FDWY8NWYdVoIX9lJhV8AMmS2xjAAiAXvtVzS854UljuilDG6Hil4uHwkVQFIiSJbn+tq6UYlg==", + "ChEKAggBEgsKCQoDAQIDEAQYBRKVBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIY2jY/11MxUznfIVEV1y24CkJhy4jjFPv0EkYwRAIgU12csakQb4n0VXGADMnOhPPOT+Phg959UWojCG9JT04CIAeV8FjJT/t5nhUzbi0zUZRTOHbD2EZGfhTd4FWynjB8", "CgIIAQ==", "", "", diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_1.block.json-flat.json b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_1.block.json-flat.json index 4dc08a98..b437d33e 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_1.block.json-flat.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_1.block.json-flat.json @@ -353,38 +353,38 @@ .data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.version=1 .data.data[0].payload.data.last_update.payload.data.config_update.write_set.mod_policy= .data.data[0].payload.data.last_update.payload.data.config_update.write_set.version=0 -.data.data[0].payload.data.last_update.payload.data.signatures[0].signature=MEUCIQDtPeQIKeC0bJUpGEA+Ps7N7Ry9DvJLn/fmjH/24mIMlwIgK8XdkRCVrouEsiqLwqN14rxMUFmRfBB2Wg5XnMm9Vcw= +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature=MEUCIQDGS3upTl8qjTn6k7RMs58GLWHCS/SofChuHehMLxSl/gIgWGfjhMIvlE8Q2Nzvb4HRP5oYrkur0GpotJD1SH+203Q= .data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.mspid=Org1MSP -.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.nonce=OKE2sjO4IRU5ODnnH4VaivKtQej+oF5a +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.nonce=of2FkBYMo9ryW2fMOPJwWv14MFRtr5n0 .data.data[0].payload.data.last_update.payload.header.channel_header.channel_id=businesschannel .data.data[0].payload.data.last_update.payload.header.channel_header.epoch=0 .data.data[0].payload.data.last_update.payload.header.channel_header.extension=None -.data.data[0].payload.data.last_update.payload.header.channel_header.timestamp=2020-12-07T20:41:30Z +.data.data[0].payload.data.last_update.payload.header.channel_header.timestamp=2021-03-03T21:48:15Z .data.data[0].payload.data.last_update.payload.header.channel_header.tls_cert_hash=None .data.data[0].payload.data.last_update.payload.header.channel_header.tx_id= .data.data[0].payload.data.last_update.payload.header.channel_header.type=2 .data.data[0].payload.data.last_update.payload.header.channel_header.version=0 .data.data[0].payload.data.last_update.payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.data.last_update.payload.header.signature_header.creator.mspid=Org1MSP -.data.data[0].payload.data.last_update.payload.header.signature_header.nonce=eo5eEyTrzwY1MjynqnS/cUz18jf/K4XB -.data.data[0].payload.data.last_update.signature=MEUCIQC+IgC4/4cFMOT3xKYatbdnyXXoky2awFES/V+tA9TwbgIgA9XecP9xEuMOnn6n2TNs5n3WPVpr+kOjs2y9WdAn0XI= +.data.data[0].payload.data.last_update.payload.header.signature_header.nonce=KBrycpanPCEAGP6rgh5vdCEJqYkysJ1/ +.data.data[0].payload.data.last_update.signature=MEUCIQDElGW+NlIQ9NYaN0yVq/ZJTThTcDUbudfYoFWonu0ETwIgKFOHS7ay2JeY19P1qAMf+c14+ju8DYbcvqvTImvdbUY= .data.data[0].payload.header.channel_header.channel_id=businesschannel .data.data[0].payload.header.channel_header.epoch=0 .data.data[0].payload.header.channel_header.extension=None -.data.data[0].payload.header.channel_header.timestamp=2020-12-07T20:41:31Z +.data.data[0].payload.header.channel_header.timestamp=2021-03-03T21:48:15Z .data.data[0].payload.header.channel_header.tls_cert_hash=None .data.data[0].payload.header.channel_header.tx_id= .data.data[0].payload.header.channel_header.type=1 .data.data[0].payload.header.channel_header.version=0 .data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICHzCCAcagAwIBAgIRAL4YNn5rsM0bOw0v0SHKpIEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBaMGsxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRAwDgYDVQQLEwdvcmRlcmVyMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxl\nLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNl8pFl0CUzuVi9/9+dudtsg\n7QBJXLiI1+5aViSe1WMgbJFbFLU6CWg1wj2UgJKpqGjnH+NUlyfcrcai0oBxuGCj\nTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIDC2\nkvrXbmyUVnAB41QAmmMSh3SFaWoBLRcD49bQBdwNMAoGCCqGSM49BAMCA0cAMEQC\nIEcXjHMLW9H5KPDRm8NZqjNzQM2lA3/xMo9HYGLUt1DNAiAbVf1xeXjzzKUqE7iH\nprmB5CA9JjV5aQgcHRTusg3Hiw==\n-----END CERTIFICATE-----\n') .data.data[0].payload.header.signature_header.creator.mspid=OrdererMSP -.data.data[0].payload.header.signature_header.nonce=0cDn4YeynErSi/x+7XRO9SiIiTFS2iJ6 -.data.data[0].signature=MEUCIQCpnJrAJ+bUGhN1OxamYB5M11uIsny2260ApyiXMXeQVQIgHdkp4Zy74Vbeq4uEnSc9S/kMiWEq/twVZ4Ig6M2Ce4E= -.header.data_hash=OjEsrHbjt5SKgVFmngZW5lL5gaJCJho2/9sCkNGLwwg= +.data.data[0].payload.header.signature_header.nonce=Li/SRZXsfggUvzTNneOsXQfx//LRVMQc +.data.data[0].signature=MEQCIBwHAmnv/N7D9PpEcewqbGpLW5enwuX03AOpVTKKbkn8AiA7aH0uSleVXuE/REF+nrwWET03O33LavtT/+903C5P5w== +.header.data_hash=bw6S+vbqtAe8Mvx1QzV5X/M8Ghsmcv96NqCxVcIixRY= .header.number=1 -.header.previous_hash=GeRzisfsSwqgisOlKGGDq4In1eZ31E50mXk4LL2iVm8= -.metadata.metadata[0]=ChEKAggBEgsKCQoDAQIDEAQYBRKWBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYgDzc9OObeAGY1rO1Ohvg7r5HYuWJNcc+EkcwRQIhAJrwHwSM36/cUA2p0FDWY8NWYdVoIX9lJhV8AMmS2xjAAiAXvtVzS854UljuilDG6Hil4uHwkVQFIiSJbn+tq6UYlg== +.header.previous_hash=DYdYFZRC3fHKVrJy8HlqeWqXhA8aEslx/PWIb0M8G3s= +.metadata.metadata[0]=ChEKAggBEgsKCQoDAQIDEAQYBRKVBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIY2jY/11MxUznfIVEV1y24CkJhy4jjFPv0EkYwRAIgU12csakQb4n0VXGADMnOhPPOT+Phg959UWojCG9JT04CIAeV8FjJT/t5nhUzbi0zUZRTOHbD2EZGfhTd4FWynjB8 .metadata.metadata[1]=CgIIAQ== .metadata.metadata[2]= .metadata.metadata[3]= diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_2.block b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_2.block index 45ea79734d375ae30f6207f45c9d8171ee1d93b8..18c59fa652c18541276b87cbbf246749c7fc1803 100644 GIT binary patch delta 739 zcmV<90v!FJ-~piE0e=cc2m%ry{i?jnBmd&Fn+Vst&JZt@n85^gPMT0&R9tFkpRE{W z8X%nL2O#y&$Y|NU1-@n_sj<~Q{{%fCc*ej2#O0C7uyzuc*Z~TY*Z~U1*8vLZ1_~Pp z0U8DfqKJTk1|kn)b#rNMWpi_5Xkl({Wo#141`4eP3JOnhWU+rL117D^#ou~B>)L_& zHT4vAo?a|K7_#Cvd_)q~&;bg{zX1pX62!j&lO#1Fv#>QM6q7|YYLh}rHIvs#YXK^g zEMX_Je@e6#lV@WjlXqc!lg|Suvn~Y46qBVcAd?jY7?UU&o0Ik!GLyp@8k6<|ACtu{ z7?Ujo7PImhvlNpk86}f6FLsmm7$&oxFR%oYYGWajlQfBw$6+m#cVeiM^I?ONXJaIj z_%tMw$6+iL5`_^8xeyBT1_~Pp0vZMgqKJTk2D7MRPXidCFG00A?TGH&j%^=_GymOw zV4#Jg5xtVL4`*Wpf7WZmlL&O}hW(q1QIAjeY3lopcfd#jAZjH2FO)*mCg4$UTVj+vYnW6XO2L`D#_6^$ z{8=&>2NFjxMFJrJ<6YaR;gW+4B}I3c9r&P(JD?B&g}2xYf2R47Bx^3vBmy9RHl=#r zVmOg&!~rON)%+ARV)FgNx2D+HL*!0V5*R%aMleJIAb24062fh73t+AT?x!2>;d*BSIXRob4nHmuXPFZ-6%#BIg^}`Y=3CNY^nMx(5oY z2MQ4i0tf;UvvF)h18gD@8cB4LFhYL!CS7Jby%CIoLl8fNG*}WwFhl|%CD1IEPGkr* zIN7?n>*2Fz@)_*s3X5-R0viKuDiN?v0w6X*7ltSBD;8Cz4Z;S@n9dR zCIm4}Q&5w=MWd6FMjDgFFcq`;Mza)?jYS}n%SITJM_e+K#YH8P(OY)2d0eCflgeQs zlOJOxlRsgIlZ#^slh6YplNlIkv+x5b6qC0YYmqtI{sptBV^0GZ z%=wJOsw)>hv<}MPgmuN1%~vJ5Ri1aLvkzxu1b={v$>4?Al*mgbYH&Ix68BpV56uxH z$4(MPFhl|%XpHEG_lOq*x5R({Bnzc;L$2%}~=e8h=~&1mmU&zX@Y?lvu+jfeP}P4+(LW#u!rf1PTHO0tx^M015yBDm}6Q diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_2.block.json b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_2.block.json index 8c60827e..d467b1a2 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_2.block.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_2.block.json @@ -988,13 +988,13 @@ }, "signatures": [ { - "signature": "MEQCIGiM6If3iBcDt8R//yQLpXNDruwVVroBAwFcQ8thP4c6AiBstp8K1JY1+8+oUWbYvuiyO4zApI+bxtftzCOy1AooJQ==", + "signature": "MEQCICp5RKWIxE3E+8XTtukaKdqI29qAKuXhzztp6vuNd8BIAiBqJP0vlELUJuBRcFtilDxrmFQeSsGZvMbpti78WTIYBw==", "signature_header": { "creator": { "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRSTg3cFpPdjNjb3U3cTdwOGFFSVE3ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQ3FtQ1VPNTVudjkKeDg1SHNTWVZQU2lERHl4a0hna200azlFRW1kVUloZ3Y4V3hFRWdXd0pNS3B3TndQTWo2TU1SU012UFZVQ1lzVworZzNCcU8zdm1hS2pUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUdrVG1URTlzQ2tRdm9DalhmbFZjcGlPOGdXeC9tV2pSc0R3VjZsS0pSNjNNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUZWNTJod3VndGE3UG5XdDhmSkZXY1FKeW84Z0tTVzJtS21QWkhkY0l2MkdBaUFvNkEweApDc1o4Y0NkWFd2ckIzTzAzZThpRHF3dWNqTWFUVmhrUVl6ZEZsUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org2MSP" }, - "nonce": "gIrJ4IXZlMhLJ2pwOiYS91sPD80RI8dO" + "nonce": "1mvDkwh07Yb9m4tRljuxZLEeeHzMieiv" } } ] @@ -1004,7 +1004,7 @@ "channel_id": "businesschannel", "epoch": "0", "extension": null, - "timestamp": "2020-12-07T20:41:33Z", + "timestamp": "2021-03-03T21:48:18Z", "tls_cert_hash": null, "tx_id": "", "type": 2, @@ -1015,11 +1015,11 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRSTg3cFpPdjNjb3U3cTdwOGFFSVE3ekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1pNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCQ3FtQ1VPNTVudjkKeDg1SHNTWVZQU2lERHl4a0hna200azlFRW1kVUloZ3Y4V3hFRWdXd0pNS3B3TndQTWo2TU1SU012UFZVQ1lzVworZzNCcU8zdm1hS2pUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUdrVG1URTlzQ2tRdm9DalhmbFZjcGlPOGdXeC9tV2pSc0R3VjZsS0pSNjNNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUZWNTJod3VndGE3UG5XdDhmSkZXY1FKeW84Z0tTVzJtS21QWkhkY0l2MkdBaUFvNkEweApDc1o4Y0NkWFd2ckIzTzAzZThpRHF3dWNqTWFUVmhrUVl6ZEZsUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org2MSP" }, - "nonce": "zPmMxKorFz60DsrghHXFls1XJbpVnnep" + "nonce": "oS9BtTntiO7cjm0fiTP/3X5goIWjEb2S" } } }, - "signature": "MEUCIQClJuLkEFLPCtGaKdDv9Pogn5YzHGSTWI/rQSaVk53sbgIgGn9b9wTjpgm/CWN1lFjDJ4EK71ROm+RE98+3np3spX4=" + "signature": "MEUCIQDjXduo4ZKDDCVFd5kd+KCMO6AQAYW32Aym+ZEkay7QJAIgfzalet5iOJFrxAEoftX8FDRi8v3Dt6bY2UPkTlMSGD0=" } }, "header": { @@ -1027,7 +1027,7 @@ "channel_id": "businesschannel", "epoch": "0", "extension": null, - "timestamp": "2020-12-07T20:41:33Z", + "timestamp": "2021-03-03T21:48:18Z", "tls_cert_hash": null, "tx_id": "", "type": 1, @@ -1038,22 +1038,22 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNIekNDQWNhZ0F3SUJBZ0lSQUw0WU5uNXJzTTBiT3cwdjBTSEtwSUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmFNR3N4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJBd0RnWURWUVFMRXdkdmNtUmxjbVZ5TVIwd0d3WURWUVFERXhSdmNtUmxjbVZ5TUM1bGVHRnRjR3hsCkxtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTmw4cEZsMENVenVWaTkvOStkdWR0c2cKN1FCSlhMaUkxKzVhVmlTZTFXTWdiSkZiRkxVNkNXZzF3ajJVZ0pLcHFHam5IK05VbHlmY3JjYWkwb0J4dUdDagpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkSXdRa01DS0FJREMyCmt2clhibXlVVm5BQjQxUUFtbU1TaDNTRmFXb0JMUmNENDliUUJkd05NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUMKSUVjWGpITUxXOUg1S1BEUm04Tlpxak56UU0ybEEzL3hNbzlIWUdMVXQxRE5BaUFiVmYxeGVYanp6S1VxRTdpSApwcm1CNUNBOUpqVjVhUWdjSFJUdXNnM0hpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "OrdererMSP" }, - "nonce": "uhCPxpKQl5e7g48NJIhPfEcs/UhBEKuo" + "nonce": "rczF33pA69qB+TX1FHWeXixAGLLiNnxE" } } }, - "signature": "MEUCIQCiHJ2VYQ8rA25HddC4tVEfJMcl8+fJ+YUKhEytW3UIMwIgMBYWjL/Q6+5ehJ5PkDqsd8krdNTM3no6BZar2T7/6qw=" + "signature": "MEQCIHgg8RLCbW8LYK4D7qcb7uF6e7oiijS5ByC60Ta1+Y0kAiArpUJMFyNCHJmc7SQNl2lQvW+ANxgi5xvY+jA8T0jXMQ==" } ] }, "header": { - "data_hash": "JvaROg09K9obl9iEYmQqNS9SfNkEcfyip6Dsy+Mf2TM=", + "data_hash": "nOgHIPXPyGjZvQW+ZiWpsdU+/wQ9IHjGwALE5ZHKsHY=", "number": "2", - "previous_hash": "mss/OU+w3uKPClhTm8O+49Rihwi2NktQrNlD4HViqs0=" + "previous_hash": "/aq8yyP/4rObCNe7zhAvlJjBBHZOmlBeVFxqaJ+tGGU=" }, "metadata": { "metadata": [ - "ChEKAggCEgsKCQoDAQIDEAQYBhKVBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYzRh9HqyPF3mC58XisFirgQbSbxVFIrYkEkYwRAIgEjOEXQM+mQ86EP/cQnv5sIohalH6NBrWSyqVE+Ki7jgCIHB9Z4rCG3vLrBvI1KOfnrCJ/MwBFGe/5fcgDS2K0NzG", + "ChEKAggCEgsKCQoDAQIDEAQYBhKVBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYIhEaSXSSMEJ+9yZdZju9EYyBQxA/hDRYEkYwRAIgJdAslk5kCDU42bq56+GzZvIZ7OcKi29rAhsDbSoRsE0CIDZCF4Yn8CsWVaYNwgbMmM4SJXZ2RluON6Xwp/uVTCOS", "CgIIAg==", "", "", diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_2.block.json-flat.json b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_2.block.json-flat.json index 674bcc9b..d06a9c3e 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_2.block.json-flat.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_2.block.json-flat.json @@ -357,38 +357,38 @@ .data.data[0].payload.data.last_update.payload.data.config_update.write_set.groups.Application.version=1 .data.data[0].payload.data.last_update.payload.data.config_update.write_set.mod_policy= .data.data[0].payload.data.last_update.payload.data.config_update.write_set.version=0 -.data.data[0].payload.data.last_update.payload.data.signatures[0].signature=MEQCIGiM6If3iBcDt8R//yQLpXNDruwVVroBAwFcQ8thP4c6AiBstp8K1JY1+8+oUWbYvuiyO4zApI+bxtftzCOy1AooJQ== +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature=MEQCICp5RKWIxE3E+8XTtukaKdqI29qAKuXhzztp6vuNd8BIAiBqJP0vlELUJuBRcFtilDxrmFQeSsGZvMbpti78WTIYBw== .data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQI87pZOv3cou7q7p8aEIQ7zAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMi5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCqmCUO55nv9\nx85HsSYVPSiDDyxkHgkm4k9EEmdUIhgv8WxEEgWwJMKpwNwPMj6MMRSMvPVUCYsW\n+g3BqO3vmaKjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIGkTmTE9sCkQvoCjXflVcpiO8gWx/mWjRsDwV6lKJR63MAoGCCqGSM49\nBAMCA0cAMEQCIFV52hwugta7PnWt8fJFWcQJyo8gKSW2mKmPZHdcIv2GAiAo6A0x\nCsZ8cCdXWvrB3O03e8iDqwucjMaTVhkQYzdFlQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.creator.mspid=Org2MSP -.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.nonce=gIrJ4IXZlMhLJ2pwOiYS91sPD80RI8dO +.data.data[0].payload.data.last_update.payload.data.signatures[0].signature_header.nonce=1mvDkwh07Yb9m4tRljuxZLEeeHzMieiv .data.data[0].payload.data.last_update.payload.header.channel_header.channel_id=businesschannel .data.data[0].payload.data.last_update.payload.header.channel_header.epoch=0 .data.data[0].payload.data.last_update.payload.header.channel_header.extension=None -.data.data[0].payload.data.last_update.payload.header.channel_header.timestamp=2020-12-07T20:41:33Z +.data.data[0].payload.data.last_update.payload.header.channel_header.timestamp=2021-03-03T21:48:18Z .data.data[0].payload.data.last_update.payload.header.channel_header.tls_cert_hash=None .data.data[0].payload.data.last_update.payload.header.channel_header.tx_id= .data.data[0].payload.data.last_update.payload.header.channel_header.type=2 .data.data[0].payload.data.last_update.payload.header.channel_header.version=0 .data.data[0].payload.data.last_update.payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQI87pZOv3cou7q7p8aEIQ7zAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMi5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCqmCUO55nv9\nx85HsSYVPSiDDyxkHgkm4k9EEmdUIhgv8WxEEgWwJMKpwNwPMj6MMRSMvPVUCYsW\n+g3BqO3vmaKjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIGkTmTE9sCkQvoCjXflVcpiO8gWx/mWjRsDwV6lKJR63MAoGCCqGSM49\nBAMCA0cAMEQCIFV52hwugta7PnWt8fJFWcQJyo8gKSW2mKmPZHdcIv2GAiAo6A0x\nCsZ8cCdXWvrB3O03e8iDqwucjMaTVhkQYzdFlQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.data.last_update.payload.header.signature_header.creator.mspid=Org2MSP -.data.data[0].payload.data.last_update.payload.header.signature_header.nonce=zPmMxKorFz60DsrghHXFls1XJbpVnnep -.data.data[0].payload.data.last_update.signature=MEUCIQClJuLkEFLPCtGaKdDv9Pogn5YzHGSTWI/rQSaVk53sbgIgGn9b9wTjpgm/CWN1lFjDJ4EK71ROm+RE98+3np3spX4= +.data.data[0].payload.data.last_update.payload.header.signature_header.nonce=oS9BtTntiO7cjm0fiTP/3X5goIWjEb2S +.data.data[0].payload.data.last_update.signature=MEUCIQDjXduo4ZKDDCVFd5kd+KCMO6AQAYW32Aym+ZEkay7QJAIgfzalet5iOJFrxAEoftX8FDRi8v3Dt6bY2UPkTlMSGD0= .data.data[0].payload.header.channel_header.channel_id=businesschannel .data.data[0].payload.header.channel_header.epoch=0 .data.data[0].payload.header.channel_header.extension=None -.data.data[0].payload.header.channel_header.timestamp=2020-12-07T20:41:33Z +.data.data[0].payload.header.channel_header.timestamp=2021-03-03T21:48:18Z .data.data[0].payload.header.channel_header.tls_cert_hash=None .data.data[0].payload.header.channel_header.tx_id= .data.data[0].payload.header.channel_header.type=1 .data.data[0].payload.header.channel_header.version=0 .data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICHzCCAcagAwIBAgIRAL4YNn5rsM0bOw0v0SHKpIEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBaMGsxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRAwDgYDVQQLEwdvcmRlcmVyMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxl\nLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNl8pFl0CUzuVi9/9+dudtsg\n7QBJXLiI1+5aViSe1WMgbJFbFLU6CWg1wj2UgJKpqGjnH+NUlyfcrcai0oBxuGCj\nTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIDC2\nkvrXbmyUVnAB41QAmmMSh3SFaWoBLRcD49bQBdwNMAoGCCqGSM49BAMCA0cAMEQC\nIEcXjHMLW9H5KPDRm8NZqjNzQM2lA3/xMo9HYGLUt1DNAiAbVf1xeXjzzKUqE7iH\nprmB5CA9JjV5aQgcHRTusg3Hiw==\n-----END CERTIFICATE-----\n') .data.data[0].payload.header.signature_header.creator.mspid=OrdererMSP -.data.data[0].payload.header.signature_header.nonce=uhCPxpKQl5e7g48NJIhPfEcs/UhBEKuo -.data.data[0].signature=MEUCIQCiHJ2VYQ8rA25HddC4tVEfJMcl8+fJ+YUKhEytW3UIMwIgMBYWjL/Q6+5ehJ5PkDqsd8krdNTM3no6BZar2T7/6qw= -.header.data_hash=JvaROg09K9obl9iEYmQqNS9SfNkEcfyip6Dsy+Mf2TM= +.data.data[0].payload.header.signature_header.nonce=rczF33pA69qB+TX1FHWeXixAGLLiNnxE +.data.data[0].signature=MEQCIHgg8RLCbW8LYK4D7qcb7uF6e7oiijS5ByC60Ta1+Y0kAiArpUJMFyNCHJmc7SQNl2lQvW+ANxgi5xvY+jA8T0jXMQ== +.header.data_hash=nOgHIPXPyGjZvQW+ZiWpsdU+/wQ9IHjGwALE5ZHKsHY= .header.number=2 -.header.previous_hash=mss/OU+w3uKPClhTm8O+49Rihwi2NktQrNlD4HViqs0= -.metadata.metadata[0]=ChEKAggCEgsKCQoDAQIDEAQYBhKVBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYzRh9HqyPF3mC58XisFirgQbSbxVFIrYkEkYwRAIgEjOEXQM+mQ86EP/cQnv5sIohalH6NBrWSyqVE+Ki7jgCIHB9Z4rCG3vLrBvI1KOfnrCJ/MwBFGe/5fcgDS2K0NzG +.header.previous_hash=/aq8yyP/4rObCNe7zhAvlJjBBHZOmlBeVFxqaJ+tGGU= +.metadata.metadata[0]=ChEKAggCEgsKCQoDAQIDEAQYBhKVBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYIhEaSXSSMEJ+9yZdZju9EYyBQxA/hDRYEkYwRAIgJdAslk5kCDU42bq56+GzZvIZ7OcKi29rAhsDbSoRsE0CIDZCF4Yn8CsWVaYNwgbMmM4SJXZ2RluON6Xwp/uVTCOS .metadata.metadata[1]=CgIIAg== .metadata.metadata[2]= .metadata.metadata[3]= diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_3.block b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_3.block index 99570c4610904b5b735de322ed6490821feba361..33341f2cca56be7b0dc3932971ff50875c265c2e 100644 GIT binary patch delta 547 zcmZ3bx=OX4%Z-CsNMUl0coWyR&uda%-^q}CA&6lRE+pjDt+d^#PW$nFY`=apAB9iv{067o-Eg88LrdpT*VyBQal`c zI~$tV1P;vD`j<(GKdH1hGcUEcI5{IRFE2Gm%fZqx#n{};D%CP6CB@9##L(Oz%{IL*k+$igt$!q_+|HN`SDH7O}6)yy#2)Wjg!G%dx#ILX+=*ur$RwtJ$w8?0fUtJ7N9SS=Aji1@c_=S6sT7 z4{d&Cm2uqU{0h~pcUU*)b9`p4U&OfocT1&Ep#5RFvX$F7wJ-EuySn_PNX_*nPFp6g zO}fpb5MLa9=!o`CxV8MWAVlf=JleX#9`VQlt=P2H`VbKHd73|yELcs^*Kn5*^r z#fCKPo&%=lo8Nm~_frj157e6HU}EuMR5^|rW0`J#`d6qdhN z^Y*xz?@+0&Q>%UZ;i0atx2}qveBpAKF?nk@OWSOrg|b}pWVtTOaGhr7D&}C8;^COS zV%I-bfg7`@-epwcPbw|W%u6jUPR>Zo%S+ACa!4{rF*Z)NGBYzwNl8vKH%c`zF*dg} zGchntGB5>lOq0zGO${wglGBV0Qw+_Lj8c=5Q;gG+4UAIEjSLKu3^wlcW0sh*HN4=? z%vq%?E5rp zCX+t6TLeR+nu?i^6;l+{gdSX@mJsONvJZY*(Ky=;KHO(`bqSi^MM?> zJMx=)7Wp3kIQ7@j4Kk)T_Y~ZC7j$TPeKwOqAeWNq=UuxTSD1!WKTf_VI%)C2kj303 z=HG7$9Z}HsJp6L=8@@p1T#lzQE0x79UQRk+;yXKf9=neAntPjHa$5+w8@MtlGAy69 zu(Q}>j>>W2UT diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_3.block.json b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_3.block.json index 7cf9e97d..9a54b954 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_3.block.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_3.block.json @@ -11,14 +11,14 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRU2RCRkpVZ1JrQmh6bVc5aHRZaCtVakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSjJ1bll5RzdGRVkKOW9TcTJ0Z3RSN0FNYzB0dG8zNmNid3NMSEVRNmFWUFB3WkFqa3VUaWo2TXBReE1mOGdmTGx3NmNkQkE4OThiRwpyTDJEbHR0bndNNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUtxZjM2Zy9zQ3ZNbHhiNXBBSEluTC9sejJVNlJKZllSemdiQzM4V3JwNVFNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJMKy9Bd1JCZWgxM3BsK2NZOFpsY0pzTlBEWFBEYzQxd0tLY2hlOHpkU1NBaUI1aTVMdQorMVRub3k0VDRsM0RTZjJLOHhyeDlVZ0ZObjcza0dmcFlSMTJVUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org1MSP" }, - "nonce": "lLVXcNzjfb2cgzpRPO0UZMuKouHNhtBR" + "nonce": "fI0ZIJK0mIl0RU6ljmITWqcIzxs860kq" }, "payload": { "action": { "endorsements": [ { "endorser": "CgdPcmcxTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWM2Z0F3SUJBZ0lRTXRuZ1RFUlB4ckdYN2RlM21wR1I4akFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN4CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUU2R3gyQUZCQjZiZloKQThOUm1TRmJIdjBFK1VwTGtMRFRvQmFsT05pelhTR2wwOWV2b0laaGxwWnNLMkx3Q2k2NGxiVlBsUW5IVzdtZwpTZUZZTTRkSXlhTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0FncXAvZnFEK3dLOHlYRnZta0FjaWN2K1hQWlRwRWw5aEhPQnNMZnhhdW5sQXdDZ1lJS29aSXpqMEUKQXdJRFNBQXdSUUloQUxucVlKS1RlR1d3aVE0S2VWYysrSFIyUkpUYTJVOEhOMGJ5TDJ2WXQ0ZWFBaUJLK0FjYwpvZFNzOGxHR3JzcWtWUmFIWnZaYUZRSm92UEpsUWc3SXdzQktwdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", - "signature": "MEUCIQCgZ+cSNN2RJDO7KiQrx9XQkpoIPddv4x2jG0unK25kfAIgBawP7AL82CHIjbnDPszcJOH5OX/kY/9f1e28YHowfLo=" + "signature": "MEUCIQCiAb/7hHkSUT/DHnaptgkr0I3W1afpFHzXpEK0k61i2wIgX3NbwvRDgW4QR5AcJl3ukhf0teC25DFda9Cyi4WzbEY=" } ], "proposal_response_payload": { @@ -80,7 +80,7 @@ ] } }, - "proposal_hash": "8v8TDG3ZbzW2XKFRrlYk8L7ymrGee7ZlrVxU80tqO6Y=" + "proposal_hash": "vuzrS2CvtZp7iHxwHwp/1ESKA8Kz5jpoxzTPqCXV3AU=" } }, "chaincode_proposal_payload": { @@ -120,9 +120,9 @@ "version": "" } }, - "timestamp": "2020-12-07T20:44:07.463818200Z", + "timestamp": "2021-03-03T21:50:53.799886400Z", "tls_cert_hash": null, - "tx_id": "b0d33c661ddcf72e443796405b05e445c715194cf31d16b2ebcd3fc02d7200b0", + "tx_id": "91d376e9bdd674170f7a08da73f26281c833bed9eebbbe61c540c5fd83b34385", "type": 3, "version": 0 }, @@ -131,22 +131,22 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRU2RCRkpVZ1JrQmh6bVc5aHRZaCtVakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSjJ1bll5RzdGRVkKOW9TcTJ0Z3RSN0FNYzB0dG8zNmNid3NMSEVRNmFWUFB3WkFqa3VUaWo2TXBReE1mOGdmTGx3NmNkQkE4OThiRwpyTDJEbHR0bndNNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUtxZjM2Zy9zQ3ZNbHhiNXBBSEluTC9sejJVNlJKZllSemdiQzM4V3JwNVFNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJMKy9Bd1JCZWgxM3BsK2NZOFpsY0pzTlBEWFBEYzQxd0tLY2hlOHpkU1NBaUI1aTVMdQorMVRub3k0VDRsM0RTZjJLOHhyeDlVZ0ZObjcza0dmcFlSMTJVUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org1MSP" }, - "nonce": "lLVXcNzjfb2cgzpRPO0UZMuKouHNhtBR" + "nonce": "fI0ZIJK0mIl0RU6ljmITWqcIzxs860kq" } } }, - "signature": "MEQCIHXyFe5DwGwe3B+yjKJNx/GV+sWwHDXZvHDY7lLCl39rAiBRCiI187q6Qag1VHvjY9EVkqPBVKN0N/fZEsQgK0nD6Q==" + "signature": "MEQCIAzwK8idKuvosGYrjMA1N7PvStD3ySe8f+mEBJ5xWfVQAiBYWJbcRgiFPGbKxPAK59qDfY768QDwxKSnY5TVoGBQ5A==" } ] }, "header": { - "data_hash": "p+8mS0jZb0B5Kyx9K9vhwor12tUWyehEwwFjtYsEhps=", + "data_hash": "uTrPX8qFhZ+N0XS6srEhWPx1G8z/GKeRculuNevNU6g=", "number": "3", - "previous_hash": "MBtGhgUKyUliJxxyzhWCsTLYTNfYZXOdwqu2XqJvFeM=" + "previous_hash": "k2wXggr286xk6G0zsEH/MxCr12kMg3LiUFNXzJnYm1Y=" }, "metadata": { "metadata": [ - "ChEKAggCEgsKCQoDAQIDEAQYBxKWBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYCOUcqSMXOOmSz3RNm1ueBywrrN6z6Qs4EkcwRQIhAKeaoYlzSJwk/wJfRMmI5ntmGb0pbaXxjlWhwSzNKUmEAiAjWcrL37n1IW8HWObA2H28CzB6kSiZIVHNB6DhOtAxVA==", + "ChEKAggCEgsKCQoDAQIDEAQYBxKWBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYT4I8s8DM63XsyFiAb50gni3xQjsmupYeEkcwRQIhAN4xXMZgD0qzF2G9n8KHmdkQygI2RormLjqb6WGBFyE1AiBUE+7/xQ4Bcof4TwCipKE7qJaC9JwstTaITU64z1ALDQ==", "CgIIAg==", "", "", diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_3.block.json-flat.json b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_3.block.json-flat.json index 51f58ed8..4aec663a 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_3.block.json-flat.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_3.block.json-flat.json @@ -1,8 +1,8 @@ .data.data[0].payload.data.actions[0].header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.data.actions[0].header.creator.mspid=Org1MSP -.data.data[0].payload.data.actions[0].header.nonce=lLVXcNzjfb2cgzpRPO0UZMuKouHNhtBR +.data.data[0].payload.data.actions[0].header.nonce=fI0ZIJK0mIl0RU6ljmITWqcIzxs860kq .data.data[0].payload.data.actions[0].payload.action.endorsements[0].endorser=CgdPcmcxTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWM2Z0F3SUJBZ0lRTXRuZ1RFUlB4ckdYN2RlM21wR1I4akFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN4CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUU2R3gyQUZCQjZiZloKQThOUm1TRmJIdjBFK1VwTGtMRFRvQmFsT05pelhTR2wwOWV2b0laaGxwWnNLMkx3Q2k2NGxiVlBsUW5IVzdtZwpTZUZZTTRkSXlhTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0FncXAvZnFEK3dLOHlYRnZta0FjaWN2K1hQWlRwRWw5aEhPQnNMZnhhdW5sQXdDZ1lJS29aSXpqMEUKQXdJRFNBQXdSUUloQUxucVlKS1RlR1d3aVE0S2VWYysrSFIyUkpUYTJVOEhOMGJ5TDJ2WXQ0ZWFBaUJLK0FjYwpvZFNzOGxHR3JzcWtWUmFIWnZaYUZRSm92UEpsUWc3SXdzQktwdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K -.data.data[0].payload.data.actions[0].payload.action.endorsements[0].signature=MEUCIQCgZ+cSNN2RJDO7KiQrx9XQkpoIPddv4x2jG0unK25kfAIgBawP7AL82CHIjbnDPszcJOH5OX/kY/9f1e28YHowfLo= +.data.data[0].payload.data.actions[0].payload.action.endorsements[0].signature=MEUCIQCiAb/7hHkSUT/DHnaptgkr0I3W1afpFHzXpEK0k61i2wIgX3NbwvRDgW4QR5AcJl3ukhf0teC25DFda9Cyi4WzbEY= .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.name=_lifecycle .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.path= .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.version=syscc @@ -22,7 +22,7 @@ .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].namespace=lscc .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].rwset.reads[0].key=exp02 .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].rwset.reads[0].version=None -.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.proposal_hash=8v8TDG3ZbzW2XKFRrlYk8L7ymrGee7ZlrVxU80tqO6Y= +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.proposal_hash=vuzrS2CvtZp7iHxwHwp/1ESKA8Kz5jpoxzTPqCXV3AU= .data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.name=_lifecycle .data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.path= .data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.version= @@ -36,19 +36,19 @@ .data.data[0].payload.header.channel_header.extension.chaincode_id.name=_lifecycle .data.data[0].payload.header.channel_header.extension.chaincode_id.path= .data.data[0].payload.header.channel_header.extension.chaincode_id.version= -.data.data[0].payload.header.channel_header.timestamp=2020-12-07T20:44:07.463818200Z +.data.data[0].payload.header.channel_header.timestamp=2021-03-03T21:50:53.799886400Z .data.data[0].payload.header.channel_header.tls_cert_hash=None -.data.data[0].payload.header.channel_header.tx_id=b0d33c661ddcf72e443796405b05e445c715194cf31d16b2ebcd3fc02d7200b0 +.data.data[0].payload.header.channel_header.tx_id=91d376e9bdd674170f7a08da73f26281c833bed9eebbbe61c540c5fd83b34385 .data.data[0].payload.header.channel_header.type=3 .data.data[0].payload.header.channel_header.version=0 .data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.header.signature_header.creator.mspid=Org1MSP -.data.data[0].payload.header.signature_header.nonce=lLVXcNzjfb2cgzpRPO0UZMuKouHNhtBR -.data.data[0].signature=MEQCIHXyFe5DwGwe3B+yjKJNx/GV+sWwHDXZvHDY7lLCl39rAiBRCiI187q6Qag1VHvjY9EVkqPBVKN0N/fZEsQgK0nD6Q== -.header.data_hash=p+8mS0jZb0B5Kyx9K9vhwor12tUWyehEwwFjtYsEhps= +.data.data[0].payload.header.signature_header.nonce=fI0ZIJK0mIl0RU6ljmITWqcIzxs860kq +.data.data[0].signature=MEQCIAzwK8idKuvosGYrjMA1N7PvStD3ySe8f+mEBJ5xWfVQAiBYWJbcRgiFPGbKxPAK59qDfY768QDwxKSnY5TVoGBQ5A== +.header.data_hash=uTrPX8qFhZ+N0XS6srEhWPx1G8z/GKeRculuNevNU6g= .header.number=3 -.header.previous_hash=MBtGhgUKyUliJxxyzhWCsTLYTNfYZXOdwqu2XqJvFeM= -.metadata.metadata[0]=ChEKAggCEgsKCQoDAQIDEAQYBxKWBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYCOUcqSMXOOmSz3RNm1ueBywrrN6z6Qs4EkcwRQIhAKeaoYlzSJwk/wJfRMmI5ntmGb0pbaXxjlWhwSzNKUmEAiAjWcrL37n1IW8HWObA2H28CzB6kSiZIVHNB6DhOtAxVA== +.header.previous_hash=k2wXggr286xk6G0zsEH/MxCr12kMg3LiUFNXzJnYm1Y= +.metadata.metadata[0]=ChEKAggCEgsKCQoDAQIDEAQYBxKWBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYT4I8s8DM63XsyFiAb50gni3xQjsmupYeEkcwRQIhAN4xXMZgD0qzF2G9n8KHmdkQygI2RormLjqb6WGBFyE1AiBUE+7/xQ4Bcof4TwCipKE7qJaC9JwstTaITU64z1ALDQ== .metadata.metadata[1]=CgIIAg== .metadata.metadata[2]= .metadata.metadata[3]= diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_4.block b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_4.block index 32efffadfee9597c2e517d65164ed0de94925614..143f76863439943b12ffa2b32e5d2e1a8e40dc36 100644 GIT binary patch delta 600 zcmZ3cxZ z+0eu$u%KzhbVeoqq|)Ndywu|2&B+E1dbHgOFq+|;t0}BK5 zv?R-9iRG)r@1izLewLrXIg1Ivv&{g~x>SG}1P z_?&rxv&n)pGB*u*4{Z4UV?SH=d7-}|T)#xPHlDI&mcprK;pAHO)9P1wxGu4BDX9GU z##^hg>+@;m@O7DLB`s}Ai;R2c&Z;qR`29`!XxyRA`5YUW82@foImN1y+4*lQ`x_)k@v`LJW#{G5-^*4gmJT)wcjQEC@E*J^eyK`tf^CLwMv zPA+CfCT0N^2@avDo0<8|m~+m|&PfY!Jz=)suEy delta 602 zcmZ3Yx=gj6%Z-CYNWtHQ$6zW8hxiizoiRIg4Bt(>+Y)n4=*9*eCe@hNh9NVg6pADi zpMSi5Q6_e0$Ih)!J}*9({>vkK&cWpFMS+e|Q|h~g=E`!-lI1!t!*!aStC)jXiicy? zie3L$1tu)|_?1zKKdH1hGcUEcI5{IRFE2Gm%ONE>(bUky%EZvfFwNX7$;{LwG0iy9 z*fb@{z`!Um$->mwB+)3@*gVNFCE36<)y&es%+%c2+}OZ4$;{Bw*vxR_PCsUO4?h`| zkN58UeJsN+@i1|>-T(Jazgq&nJQDgR!u4B(YvUiV(Kh>v$Cx$4J{3KR7JwCz0@Zb3VsLCdPl86}ios>)j1pnG_kO z{$}E?@#+)%Gcn&}&qleTj#uV>TV9&wO!7S-rlov!GLu5m=_z5mQ-A(_wbbA2Z~HZy zvsIGqS+*bR!xADmel49)A>?M@!laC)Twwa0Fj5+rNtIcocdA0$y{_UGT{5vvZt-9Ggbw`(CA&6JL z%m`Tj{HW(zsf33H(-%6=;k>?o<4%U7#*+M@2^R~g{BTdpH#Tst8gt=;X2LERm{OG#lvx= zv!RJi;J~()J8^t?~-mc&O<)zm22k~o7w_Ti;%(UWt|Bub095KvHjqDT8m~LLd&C2ZVX5hl4 z;M6vUXL@+|f-df>C-_f#O1}R0>}BZNwhxWVeyzJZYv(;C1t}}h|C{?hJyWmTefgkY zdGBK83z0(* zpZN|`|2s1eTpSsXbx;VJu{$cGBCo*1nqTQv@> z`2Lc|CHiX)gWwir_Qmf0oA(L@G3TsbD!NE7{MbHalkNE@e(%1bZnZy-^|T?>nhAQB zA7|T!vS%8l)z1FX{o;z;*8S7v|F2q`+_qfbT{VD7A@B3iNqZQhb}454{U~!bEh#eW cw51kb)en=Z$!>|IhR3*AxR^MYxEMeX0HG2WOaK4? delta 649 zcmeyZ^INB$%Z-CoNFjQL^0aggfiI6Z3^+xS6#VkU*M9qz5V|m7$`8xd=D=H03L$=Z zD=wKwZ`J>*naS^PV_j6v#RRikb62eJ7Ou_jkPH?2q{8)Hg=>il*J*aHVh(009*%h{ zcKu@&So87T4@M>aq|)Ndywu|2lj=5g7+UM&&hCN|h-%fkM^7DVngJtSXU$+L&|5p$r zDzjy78IywJ%o9^4&RjF4O26`3RlaM>s!t1E1b!)Wld>;dy7l<803kO67bXRfJ?E-J z)7ra3RvGDgv8(qt{nJ1BtM$WeMNYx3vTtQyGbxmFPOI==yy1O0BcstlfpdNg|4;h& za2L+iy}`FnXz#Kg37hu{1u^G5oLZ%PBhqZWwBLA?EM?ev8^ zY$|U*$#NA8F+O}Z^2+peFUxwnYkhxr2(HxI%cNlT-oNBoWWM9+1i2Tl#LDk+?fR3a aX3|!_%U}B)!^6|gTr6Bn986pcAP4~VzXJ9E diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_5.block.json b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_5.block.json index d11635fd..abfaf644 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_5.block.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_5.block.json @@ -11,18 +11,18 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRU2RCRkpVZ1JrQmh6bVc5aHRZaCtVakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSjJ1bll5RzdGRVkKOW9TcTJ0Z3RSN0FNYzB0dG8zNmNid3NMSEVRNmFWUFB3WkFqa3VUaWo2TXBReE1mOGdmTGx3NmNkQkE4OThiRwpyTDJEbHR0bndNNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUtxZjM2Zy9zQ3ZNbHhiNXBBSEluTC9sejJVNlJKZllSemdiQzM4V3JwNVFNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJMKy9Bd1JCZWgxM3BsK2NZOFpsY0pzTlBEWFBEYzQxd0tLY2hlOHpkU1NBaUI1aTVMdQorMVRub3k0VDRsM0RTZjJLOHhyeDlVZ0ZObjcza0dmcFlSMTJVUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org1MSP" }, - "nonce": "CWMIoQEsezoPhtFiBoZoFWkpiQouHntW" + "nonce": "puCoOO9qNhdd16TJ5kzejBA/63hhf9qa" }, "payload": { "action": { "endorsements": [ { "endorser": "CgdPcmcxTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWM2Z0F3SUJBZ0lRTXRuZ1RFUlB4ckdYN2RlM21wR1I4akFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN4CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUU2R3gyQUZCQjZiZloKQThOUm1TRmJIdjBFK1VwTGtMRFRvQmFsT05pelhTR2wwOWV2b0laaGxwWnNLMkx3Q2k2NGxiVlBsUW5IVzdtZwpTZUZZTTRkSXlhTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0FncXAvZnFEK3dLOHlYRnZta0FjaWN2K1hQWlRwRWw5aEhPQnNMZnhhdW5sQXdDZ1lJS29aSXpqMEUKQXdJRFNBQXdSUUloQUxucVlKS1RlR1d3aVE0S2VWYysrSFIyUkpUYTJVOEhOMGJ5TDJ2WXQ0ZWFBaUJLK0FjYwpvZFNzOGxHR3JzcWtWUmFIWnZaYUZRSm92UEpsUWc3SXdzQktwdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", - "signature": "MEUCIQCTEk1sWU6ukhMh8fRoRwceHSzYLlKXHOd9B/5EBm8zGQIgb0sZMkmyYCOuxJYL8QT8mJgyPaTvOH8uDcPoUKSlEAk=" + "signature": "MEQCIEKGnAyXV4ugigvVyA/JSRnr/ubpVe2G8IGm+q7dmrneAiAaOhX/s47y5id5u9PBTneNowPQWXIQwPcd4ciomzw/Zg==" }, { "endorser": "CgdPcmcyTVNQEqYGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNKekNDQWM2Z0F3SUJBZ0lRSm9WSTNkTkU2ZjBwVy9MUFUwRU05VEFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN5CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzaUgxTEVSSlV1Q0sKNmZPdHRqS1lMRTNXVkRqUDFwWUFYWTRydnlMMlhpV3RXZzBpVWxsb2t6MThBUk90MVovait0bHNwVy83QTMrdQoxcnJDZk1JeWk2Tk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0FnYVJPWk1UMndLUkMrZ0tOZCtWVnltSTd5QmJIK1phTkd3UEJYcVVvbEhyY3dDZ1lJS29aSXpqMEUKQXdJRFJ3QXdSQUlnVm1kZ1Q4dHkveWpCYitITzRiS1l4NWluMklHaFZkMlVudHBIWE4zdlp2MENJRW5sMW1FaApXemhsU2lPVDJwTTFXY053ajJ0Y3J3VGVzQlhMdkMvcmxVRkgKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=", - "signature": "MEQCICV7TPW+ALxWte2W6AT5/2TgpieC9bVTn/5wXBUctJ12AiBBmciUkZmslHovefZ6b0WEqvKg6FH0cUYaP3GltcfmUA==" + "signature": "MEQCIC2GWJgIdi0jjD7YZq0apSMh7Zh5/BwVTFNZ+W9Alf9DAiBfgIy8o1mdYOUH/Fnh8F1TNMqX+A6Wk3223JcNOALpGw==" } ], "proposal_response_payload": { @@ -115,7 +115,7 @@ ] } }, - "proposal_hash": "Ious3tH+gLV6DtodxiawpZwYqLloi1+3qaxqNuyyv8U=" + "proposal_hash": "BSPoZZaAgVWBF4ky7a+/9Okql+BfrTW20ZZjAqjvj/g=" } }, "chaincode_proposal_payload": { @@ -155,9 +155,9 @@ "version": "" } }, - "timestamp": "2020-12-07T20:44:14.521648300Z", + "timestamp": "2021-03-03T21:51:00.931208Z", "tls_cert_hash": null, - "tx_id": "7761b46d03a2d9e9de720cb8f8437249bda776e99f8c9ac7f72ac319a6aaa743", + "tx_id": "773872e81cbaad305dc488970c4aeeeffcbee695c1feb8d6aa77b1d313de36c3", "type": 3, "version": 0 }, @@ -166,22 +166,22 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRU2RCRkpVZ1JrQmh6bVc5aHRZaCtVakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSjJ1bll5RzdGRVkKOW9TcTJ0Z3RSN0FNYzB0dG8zNmNid3NMSEVRNmFWUFB3WkFqa3VUaWo2TXBReE1mOGdmTGx3NmNkQkE4OThiRwpyTDJEbHR0bndNNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUtxZjM2Zy9zQ3ZNbHhiNXBBSEluTC9sejJVNlJKZllSemdiQzM4V3JwNVFNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJMKy9Bd1JCZWgxM3BsK2NZOFpsY0pzTlBEWFBEYzQxd0tLY2hlOHpkU1NBaUI1aTVMdQorMVRub3k0VDRsM0RTZjJLOHhyeDlVZ0ZObjcza0dmcFlSMTJVUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org1MSP" }, - "nonce": "CWMIoQEsezoPhtFiBoZoFWkpiQouHntW" + "nonce": "puCoOO9qNhdd16TJ5kzejBA/63hhf9qa" } } }, - "signature": "MEQCIBS8zntVZoeLVKoyL0oHJ4+C/i/J+oXw2yEJEbUd7R3rAiB3CZZ4T6Ow73cBATLBEM5OAP/JT4xxnS3YDr4Svab4YA==" + "signature": "MEUCIQDXu9a+srmdrMG3+/IpW9ZxV8bSbVbbDMFQJhUGiDUEWgIgVjhSaJ8vx+aHDLxcKqS1KMCo9+lEW/VsABG0IwejR08=" } ] }, "header": { - "data_hash": "VE5uqNI3W7Uv9SlpD0DYrlps0WA22p2oqEsTfW+IGVU=", + "data_hash": "V49nO+9BF10p/VfvMU4h6elOQUNKGkPIOdyMy7GhNUA=", "number": "5", - "previous_hash": "W5gjlmcIEPTiCDAJFGIgTm4Xrfb6YFWhYJT4OYWDUdo=" + "previous_hash": "6W5VDLHJeBtx66IPLmn18U7mezFygQmjwa7L1a6Xlr0=" }, "metadata": { "metadata": [ - "ChEKAggCEgsKCQoDAQIDEAQYCRKWBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYK+GVeiPYWTavQZfoiV0VoFMfDatMPhKKEkcwRQIhAP6tl6G4PHnb5GpFEVQzw91Z1Jeu6XaNi31N+4gRqS69AiA270905llvQctgHujqFnfeCrr8biY0hn+6TyvuAOHLQw==", + "ChEKAggCEgsKCQoDAQIDEAQYCRKWBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYK6+lFaIuV8a+IzS3b8j7u9QnOr9eBcsxEkcwRQIhAJAu0+NrPVUHaTJmfZv0i+jUHrW/lx//qq1jhqcvRyVQAiBu88WSvAFauiFq/fEczWZiWVbLOSoOevg0epNGYXUxxg==", "CgIIAg==", "", "", diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_5.block.json-flat.json b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_5.block.json-flat.json index 6dbbe0a4..4adf3791 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_5.block.json-flat.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_5.block.json-flat.json @@ -1,10 +1,10 @@ .data.data[0].payload.data.actions[0].header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.data.actions[0].header.creator.mspid=Org1MSP -.data.data[0].payload.data.actions[0].header.nonce=CWMIoQEsezoPhtFiBoZoFWkpiQouHntW +.data.data[0].payload.data.actions[0].header.nonce=puCoOO9qNhdd16TJ5kzejBA/63hhf9qa .data.data[0].payload.data.actions[0].payload.action.endorsements[0].endorser=CgdPcmcxTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWM2Z0F3SUJBZ0lRTXRuZ1RFUlB4ckdYN2RlM21wR1I4akFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN4CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUU2R3gyQUZCQjZiZloKQThOUm1TRmJIdjBFK1VwTGtMRFRvQmFsT05pelhTR2wwOWV2b0laaGxwWnNLMkx3Q2k2NGxiVlBsUW5IVzdtZwpTZUZZTTRkSXlhTk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0FncXAvZnFEK3dLOHlYRnZta0FjaWN2K1hQWlRwRWw5aEhPQnNMZnhhdW5sQXdDZ1lJS29aSXpqMEUKQXdJRFNBQXdSUUloQUxucVlKS1RlR1d3aVE0S2VWYysrSFIyUkpUYTJVOEhOMGJ5TDJ2WXQ0ZWFBaUJLK0FjYwpvZFNzOGxHR3JzcWtWUmFIWnZaYUZRSm92UEpsUWc3SXdzQktwdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K -.data.data[0].payload.data.actions[0].payload.action.endorsements[0].signature=MEUCIQCTEk1sWU6ukhMh8fRoRwceHSzYLlKXHOd9B/5EBm8zGQIgb0sZMkmyYCOuxJYL8QT8mJgyPaTvOH8uDcPoUKSlEAk= +.data.data[0].payload.data.actions[0].payload.action.endorsements[0].signature=MEQCIEKGnAyXV4ugigvVyA/JSRnr/ubpVe2G8IGm+q7dmrneAiAaOhX/s47y5id5u9PBTneNowPQWXIQwPcd4ciomzw/Zg== .data.data[0].payload.data.actions[0].payload.action.endorsements[1].endorser=CgdPcmcyTVNQEqYGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNKekNDQWM2Z0F3SUJBZ0lRSm9WSTNkTkU2ZjBwVy9MUFUwRU05VEFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN5CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzaUgxTEVSSlV1Q0sKNmZPdHRqS1lMRTNXVkRqUDFwWUFYWTRydnlMMlhpV3RXZzBpVWxsb2t6MThBUk90MVovait0bHNwVy83QTMrdQoxcnJDZk1JeWk2Tk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0FnYVJPWk1UMndLUkMrZ0tOZCtWVnltSTd5QmJIK1phTkd3UEJYcVVvbEhyY3dDZ1lJS29aSXpqMEUKQXdJRFJ3QXdSQUlnVm1kZ1Q4dHkveWpCYitITzRiS1l4NWluMklHaFZkMlVudHBIWE4zdlp2MENJRW5sMW1FaApXemhsU2lPVDJwTTFXY053ajJ0Y3J3VGVzQlhMdkMvcmxVRkgKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= -.data.data[0].payload.data.actions[0].payload.action.endorsements[1].signature=MEQCICV7TPW+ALxWte2W6AT5/2TgpieC9bVTn/5wXBUctJ12AiBBmciUkZmslHovefZ6b0WEqvKg6FH0cUYaP3GltcfmUA== +.data.data[0].payload.data.actions[0].payload.action.endorsements[1].signature=MEQCIC2GWJgIdi0jjD7YZq0apSMh7Zh5/BwVTFNZ+W9Alf9DAiBfgIy8o1mdYOUH/Fnh8F1TNMqX+A6Wk3223JcNOALpGw== .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.name=_lifecycle .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.path= .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.chaincode_id.version=syscc @@ -42,7 +42,7 @@ .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].namespace=lscc .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].rwset.reads[0].key=exp02 .data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.extension.results.ns_rwset[1].rwset.reads[0].version=None -.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.proposal_hash=Ious3tH+gLV6DtodxiawpZwYqLloi1+3qaxqNuyyv8U= +.data.data[0].payload.data.actions[0].payload.action.proposal_response_payload.proposal_hash=BSPoZZaAgVWBF4ky7a+/9Okql+BfrTW20ZZjAqjvj/g= .data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.name=_lifecycle .data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.path= .data.data[0].payload.data.actions[0].payload.chaincode_proposal_payload.input.chaincode_spec.chaincode_id.version= @@ -56,19 +56,19 @@ .data.data[0].payload.header.channel_header.extension.chaincode_id.name=_lifecycle .data.data[0].payload.header.channel_header.extension.chaincode_id.path= .data.data[0].payload.header.channel_header.extension.chaincode_id.version= -.data.data[0].payload.header.channel_header.timestamp=2020-12-07T20:44:14.521648300Z +.data.data[0].payload.header.channel_header.timestamp=2021-03-03T21:51:00.931208Z .data.data[0].payload.header.channel_header.tls_cert_hash=None -.data.data[0].payload.header.channel_header.tx_id=7761b46d03a2d9e9de720cb8f8437249bda776e99f8c9ac7f72ac319a6aaa743 +.data.data[0].payload.header.channel_header.tx_id=773872e81cbaad305dc488970c4aeeeffcbee695c1feb8d6aa77b1d313de36c3 .data.data[0].payload.header.channel_header.type=3 .data.data[0].payload.header.channel_header.version=0 .data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.header.signature_header.creator.mspid=Org1MSP -.data.data[0].payload.header.signature_header.nonce=CWMIoQEsezoPhtFiBoZoFWkpiQouHntW -.data.data[0].signature=MEQCIBS8zntVZoeLVKoyL0oHJ4+C/i/J+oXw2yEJEbUd7R3rAiB3CZZ4T6Ow73cBATLBEM5OAP/JT4xxnS3YDr4Svab4YA== -.header.data_hash=VE5uqNI3W7Uv9SlpD0DYrlps0WA22p2oqEsTfW+IGVU= +.data.data[0].payload.header.signature_header.nonce=puCoOO9qNhdd16TJ5kzejBA/63hhf9qa +.data.data[0].signature=MEUCIQDXu9a+srmdrMG3+/IpW9ZxV8bSbVbbDMFQJhUGiDUEWgIgVjhSaJ8vx+aHDLxcKqS1KMCo9+lEW/VsABG0IwejR08= +.header.data_hash=V49nO+9BF10p/VfvMU4h6elOQUNKGkPIOdyMy7GhNUA= .header.number=5 -.header.previous_hash=W5gjlmcIEPTiCDAJFGIgTm4Xrfb6YFWhYJT4OYWDUdo= -.metadata.metadata[0]=ChEKAggCEgsKCQoDAQIDEAQYCRKWBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYK+GVeiPYWTavQZfoiV0VoFMfDatMPhKKEkcwRQIhAP6tl6G4PHnb5GpFEVQzw91Z1Jeu6XaNi31N+4gRqS69AiA270905llvQctgHujqFnfeCrr8biY0hn+6TyvuAOHLQw== +.header.previous_hash=6W5VDLHJeBtx66IPLmn18U7mezFygQmjwa7L1a6Xlr0= +.metadata.metadata[0]=ChEKAggCEgsKCQoDAQIDEAQYCRKWBwrKBgqtBgoKT3JkZXJlck1TUBKeBi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDSHpDQ0FjYWdBd0lCQWdJUkFMNFlObjVyc00wYk93MHYwU0hLcElFd0NnWUlLb1pJemowRUF3SXdhVEVMCk1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaGJpQkcKY21GdVkybHpZMjh4RkRBU0JnTlZCQW9UQzJWNFlXMXdiR1V1WTI5dE1SY3dGUVlEVlFRREV3NWpZUzVsZUdGdApjR3hsTG1OdmJUQWVGdzB5TURBM01UY3hPREU1TURCYUZ3MHpNREEzTVRVeE9ERTVNREJhTUdzeEN6QUpCZ05WCkJBWVRBbFZUTVJNd0VRWURWUVFJRXdwRFlXeHBabTl5Ym1saE1SWXdGQVlEVlFRSEV3MVRZVzRnUm5KaGJtTnAKYzJOdk1SQXdEZ1lEVlFRTEV3ZHZjbVJsY21WeU1SMHdHd1lEVlFRREV4UnZjbVJsY21WeU1DNWxlR0Z0Y0d4bApMbU52YlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQk5sOHBGbDBDVXp1Vmk5LzkrZHVkdHNnCjdRQkpYTGlJMSs1YVZpU2UxV01nYkpGYkZMVTZDV2cxd2oyVWdKS3BxR2puSCtOVWx5ZmNyY2FpMG9CeHVHQ2oKVFRCTE1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBTUJnTlZIUk1CQWY4RUFqQUFNQ3NHQTFVZEl3UWtNQ0tBSURDMgprdnJYYm15VVZuQUI0MVFBbW1NU2gzU0ZhV29CTFJjRDQ5YlFCZHdOTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDCklFY1hqSE1MVzlINUtQRFJtOE5acWpOelFNMmxBMy94TW85SFlHTFV0MUROQWlBYlZmMXhlWGp6ektVcUU3aUgKcHJtQjVDQTlKalY1YVFnY0hSVHVzZzNIaXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tChIYK6+lFaIuV8a+IzS3b8j7u9QnOr9eBcsxEkcwRQIhAJAu0+NrPVUHaTJmfZv0i+jUHrW/lx//qq1jhqcvRyVQAiBu88WSvAFauiFq/fEczWZiWVbLOSoOevg0epNGYXUxxg== .metadata.metadata[1]=CgIIAg== .metadata.metadata[2]= .metadata.metadata[3]= diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_6.block b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_6.block index cf05901e8ae704d4660848bffc1ec7d151125efb..2bd48af45ac2725cee8c3c50281b378283e7fe34 100644 GIT binary patch delta 597 zcmew&|53i4%Z-CgNa5|>0#k+{u4xqqyB|e-`W$gX!M!&<);gx)Z2M22ghfZB6kL|d zJBkPXFgbF&Uhh+Mr`^M=li6)QZhWoI`6DFT&OAWqr8w6!ajx0oTu0ftaygi#xH(RC zHZ-vbyt#0UTZuoZv^X;_wYWGrBQY;8HAl$@(B`wu5F)cYc(K6M-Ff}nT)gZ;# z$k^P%Ak8w(#3ISS*fP!BJkh`~(ag-y#5~O`#XQ+O(Ztd`H6X4#v)@qwm` z`Cl(Ta6j$ktSFIp-iNom`B!mI=mJ02+0F7S_RLZ^m3*08!LF-*jDu@GBbUO}`h)AQ z+}V_w<|;BnlEcgP-ilWCaQVx2?30d$czZm2Klu#%JjTY&*&No)^=<|(ObW4KX|@U0 z)pZ;9&h@|R(Z*Wr|NV?>Xp<$!MA^8VMw4eTDU`nBbu4r`T6|URIA6-;wV^3dIu(1R zZ)Df}Io04E^rTJ*Y>xQccExQbk!y8j{|R*W-;wzJcVVedaMaFN_m#gVc(K_rDX4FG zF_G(btGw>F{aY)wj4o&^pItYvJwo8r9e{ zSAF+vOp3fwwX&|@eZR7s?0?gRdevRpqD=DsQ>*nN!zxwOuLT7(xpz+LXmp4^XlnI! T_I1x~L64Vkv4E`RVgNw^TFUV@ delta 600 zcmew;|3$u@%Z-CgNMVJnsln|qN&b=@_VaF^_6TWoTrUW|5R?nrLWfoMvHc zVQ6ZYl$w-iVq%$`l5CP>U}2GFkYZqIV4j?8W@((1W@>B#jozaw=1=z7*N-AbrUGL~^`@&_#Z(bDQN@?3tx-D)~COoLyJ_I0x5$MlOZF5nGGI z6_-tw{F8WzL$KsdzlcXiv9aw3yLdJi6`%9VC!c1Y$Jn$vi^H0^-rc~JNs-~sY{7Cy zLGfoj)4A1W`1^PBJl?kTi|A>|Nk8(pJ-MB%&ZM9;bC&L7_ldEoGg>|g{}4=@l6HIZ z;uEUd7Jf+Ay|C7sOUTW@g-Ibm!tsLX^-k7>_olCWB%4vtGi6B}|A}~B@t(zw{b?%f zObXsxqxg~nPrXwJKh|k}#6joR%xCAOT;W#?_5F0nrz3f#jMQ#+t~Kmjf?P}-OhVjT zoLtO|Ow0l-5?n&lHv99KG3Q?N7VNLgmiTo1(gpYT*~=>~v8%~nku1>?f_PM?_-*k?2zW2WMZfMN%sCj2JC!zKhEx zsb}?M>{nlRkE{3lkGAc-?cQ6Jm3Ux{#vtsXIg~kwr_(@+Li1X$2OZ6{*sdCDqDkPL zMb~EH1|UPwa1EJvX~VxN@d-=-bHvXxUxpn-$f4CT5bn8*6M{@ZuUpR-}oy$FeF>NRiCFA=gPM zrD!Hg7R8DCn)_#wZ+rgo%(HX*U1Vp`h1NC#Rr55csdETQ71ZNt(dreVIVoM5a>Qk; zOfXZ(AO$eh=cCsU>48#F8+~>$!ph+)wtDilrG%k|fn=cPZrDLY$hZpUnOfZ)p*!aG zO}r0%d^IO)o3g;r~X zi0L9onyc|z5yXH3^FB_-ab_|R-J1@w!ZJsAiw!Je%CZ_Z>&Ft$SQH1kE6V}!3^9uC K&ZN3K_J09FaPJ2I delta 748 zcmaiyJ8#o)0K|nFAyiZ$1~O16j}8>MZT^17t`t$nacn2CV>_{(cmVv2o!GIHIL{^G zGk9TS-~&|3!pg^BU}a2%-Z@AA#t6?@X>!;TJnBW(d_ zdpRr#eVFX$Uk_g8?++jBnuT5At;PsS&52ialvdduo~(P!+Us`#)T*`HNaid0dKGsd z4nlA#8#b20KuBY&P=VAsLa-4x=u(bIPGwYaLpXnk zH$`^0Ek3(@3@%{g0+hQ5xWce2n7TwL0!MHP05kt^e3Acn!d~wK4+bzo_@wRO77U|4 ziIOl5+n#M<80EMQW&@J+feR>5b{v92Z68Omy+s@!`wiNCe2N$TzwFN!C)+yRS6mu~ zu~9v7iQdE$T#IMKsHu82GVp7vCnkWC%~0X#u-eM>q}`ABW;v|(R>=rmu{9$0>~qYu_Ad9VLXidi* z$U#V#n2hyw5y?J3%Rj$-4Na;57NyMK6bj61kcW_&q#4G_G$@Q;4?5bEw8WrI3K*GR zpFPTtPEYO_yYo}Num##o9iq{clUqE9eiE~X7=Q_sDmB+y>#lvx~ zv!RJi;LVJVZ%j)3Nu|Y^d8x(4$r*`xd8s*C4yG2yMiz-yDaHmy<`zkYCYEN&X=!OG zX~u@eNd~DYKp_KT)8s@GQ}fhhBTI8rVc~nPvOM=CkgT zv|mxY(Qn&|-tQ-xg=Qs%=YCrvbc~xiCkvEEd@*ywW6$w%2|F*a^a;IL+{cQbHdQsBRG_0hX+ z`#;?MoS=5EjnBcG#Vb7_B~nLh`t*o`yd{^I6!hH~g%8&?FI_vOaYATj7 zmSd)>+~EdG;-ZAy4P2QN878h(G~Lqu>b^YQeywwFMBH11tbFbge$}M72 zaQ?q&`l%aF-Y?)dwm#d+POL=zhjJ#Q?uVKZoAOM#lpqJ J!NkP?f&d{PK_1#J9wsNq)xut!srnPFC#qG^e9%5RNpZ)b%&dt~)rEuXX z>#;p+SOaV;(>B;#c)ah9;Oh+;UmgkR)TzF{eyzq>=%F~*J#nr{;#^1BxpFy}rMNj( zuGsaDRiNj@iYz7mq|)Ndywu|2A6hlJ;gOrUsJ(*?oC(VnT zK5j>&Rw#7JFtXoJw9#u3%SJKg_|kn~_W5pu9-o z=O!bIZ}HQcLw#c2mUqV2b*?yXdAzGf#rL-I!O6$iXE8QyPUNs=u6H+ZWm07L(fsw^ zr)|wmA@?RFC0x6l@PpUU$-A_#?Ec(N-cyGyqnQ*!BilYpv+KTz={nuDB6ea@?#}wg z2`j!`SRHl1y!YOY2|^HqW-8wis%|?HoWG;0cL&Sk$oQ;2*+0|8^!|ANSTXVE&V@`0 z973BWIBwXYd0c)=N2sxQ$XOAMKgBI6%B3xA^_q`&-Zqok&Ca!EvLTNs>-+-u#}ilA0bT=IlR==It|zt=2RtCCKXk6*lE&b?3T zU#wfC9C=GW;53s${G+>fQ?dj5E7z;3+q_(PTQy$mzXOkuHA!qKLYRwc zFG-}K6WEgioRbH+bSS;iII&(efv>EyRdox4b|__}(3r3a%P(e@ppO*R9!^2Db(Ti2 z9@jT|$QxToHWoH!h9kCbHL&(@##{Qd$FQmeBrO}NvhEMUTJ88VD*ik_JKUcNj}gSu z>0EUri|=s_UQ@QZF(3pQoeeX2$Ki&XlYM0h9B*e9pUUrw_vN$V{*)JYrzrmH@W^txz6JxvkdRaDjlG{E9v9#uHsR(AiAyQQbnq7M z>Tc~(CGu_0UsXIiv)@K`8r8NKBw18ST8;H?r8P`07ivqhawfJ5X`q$KI#j_ur4tTZ~GE7BLsml22#1{tRr& z8#7oZNx#(qH^m&B;JtdVKX}`(%Z7mb@`!LtTkvmsWWG>*kZOLh3TnnY1+&oc!tq?& zCT(Vz$^KxlXmXoGYLSf_Br7!*p*dba#zRdb?l?vamQ@YWWTjLq|2$Uy=f&~<{;2u1 zn3-JP_4ImsHiILE2!sB{Wk*CA(O8Mw9J4`jTWQda%r)}Qh4=Y~!f}3o#OFT?)WhDN z7U;w0)D?hN6x)N;HA2^rDM1K%3|We@@{_Yt{^d+~;{xaa!Z|DlJ>X#1#)Nhl#MqMw zAw0w!1EK49ls7>RKs@3BuwBCQEo*na{ceIgLInA`(GV z(=}@ZV_ovLBQapPZaIkN-hzn?*{|2s?Yz;<(t0RKY*!xiwEoUCqOznnthxrKRjaHL zoq@Y?1>^5CT439ugl$*gl;hJ z4LzZq8yAEN#3$BZO&iZdx`V6`Yu1&N3&mhLX-VZdA4#@x+JL!MTZ=A5Z!U5x2^5pP2! zjGVE_dl3#?dabUpiUS#hb_)otYEbh~N>8k2YR>4zS_xbZ+o7WjxHwZe#EdzE^E7`e M?hbL&uRKJNzr6YBX#fBK diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_8.block b/hyperledger_fabric/latest/raft/channel-artifacts/businesschannel_8.block index ed14432f6557deb69b77f0df5477f36df9902610..83cff45d34ddbe045715363c3e811b183f6fd197 100644 GIT binary patch delta 574 zcmaDM|60DD%Z-CWNFn42lkYv_zarOZo%S+ACa!50?G&M=FN=-CQH8)R7OEWSyOEO9{ zHnlJ|O-VAeNJ=tDPBk($H8o30PBln2HcvE2HcCoMF-$f|vrIELG)dgJ!;@K7GIK?j z6o*xKSAV&g#gVt1*_Q=hzTM3mCUl&i>&Rv~7JFtXoJw9#E@xL)Kg_|kn~_W5tlk%i z`)3TYU(B0O{+To2k8Ae#=sOGB@){mYOquy8z_0n|znQ_*{GJ z(_c$6YWDH>{a7&f*JdGzK~qAXFTKhxAo(^StJ2`A=IMr23)Rc4P32b`S8}UgfBlY0 zLAfaHy2%}5L5!Q+vz>% delta 571 zcmaDY|3bc=%Z-CWNFi9c;kk3va)J0W7cQ*OTa_#*cpTzfJBO=k$Fm*MRJ;jv1yXAQJT4tX=<9eiP^@Tp3Jf_9r-fulkyv1 zNklqihIF&^EPfbqmi6{sp=119hd0Z!*fUGvRPt(a1-rWXAr7wHj9dyK$?v)P%1-jd zg>r5E#2z+FFl-g?MnTt;o7Qpiam6llnS6|W7GvY)L=J1_dN%_XCWS!lqnCXHPM(bu zlvwO}!CNb$ZOWFveX=HXpLac3{<^A+Nuj2#&!LC2uq<6FMf|(<^JVjwZm9cg$9z?W z<>_ht4W%oDz~-2pd)f9bq;{Jtzj-!;m`Zd&%7q3-#lI7Ks>CZQR09q(DKH79yH`}U zd3s;Fl0Nx$;tqk0xA-$M@_qV zcdfUKo;Sf=$lbt|Ns-|w_osy$RFn@T|5$d!e$$64)~OpJ+-m2{$`%yc$UH5yoJpZX t`qSEyr`47=H8LNLtFklfQsNB1kW_N z{iY^#>Z@qt)J{$A6?N#=p2e&26C_v*d+?e~+{{A7_#!$cTFNSZ;H9LQ?Q zPBN84ak|aHqyT61K`I?e?=@CX*ruL#Wc8Nuw%a+#u-mzga?+u(w$sTi4YuU1AZd|D z;&CnnT6=}t+b)*nsXGkazK2^fSEIWIGUz2A*0KN_U=r(LYq@dkv5G$zr-z3V{yDZE zGX&qqWtq>Cc-exrJW_B@U)MqACZ@Fw2JFZZ09GIa7(mqt!Ya-#E5(<~_B)@hQ&kVy5HXDJ`y`|t(uPzGQl0~9 zjzhSJq$rAZTtv8#u?d%Sd=I!)zwR@jYCk?YbY4|U|A+kg=KSuTp{64g0mW5#1Ohvr z=U^Q70%;YB&}90fqXwM!#Jay`0wEBfxBz?Am3Lf1<^ew87W&NHyLb~V^(m(_sSyS= zHY7(%<5?v{wujag&ra zwOm5tj~a6=>h6}y=CrAHW`1aCTYgc< zo~fWt{S^gI?NrDw>d>u2<6qDlj+^d|;~x4C{qKLCy&X1#l_Glj7%HhOh1fRr4%ghy zpgB`HcjXr33EHq7> zi7OIZ5lkNt*AQLthPl8J6%po1&pZ96(XXr4fKG zix7Guw+@^;= zq@^}ed5m?XerIivLoyX zH5xCffoHp3R(0*A{V}i?K?4W1FthqAx|3sw&a_w>iIVQjx2?*EzICj2yEBb*))_D} zqR=ibE5^2qX+pJ=4d?GvK}&g*S{t!PNPwHTyIe`AT=q4jh*t6Y^40$5#iVp^@N;MB z^+RTnPq`6CLB}AcYk;y{IF1ue5$~LJPiqGF#^|uAyl(Ngyj7b<8=%F!Mq7{@MeV@5Ow95VD z8X!9`!?l`9*qdmfEEM>YfN@rhB3wMKj0jL5)MO8O3EdLfy#fl>y#fk}y#fmA1_~Pp z0U8Df<%xiT1|kn)b#rNMWpi_5Xkl({Wo#141`4eP3JOnhWU+rL116uk&A79AMg#y8 zz?$$7V__Iv6*<+E|Nat~wgL+2>H!D@665Ltlfz0PvrkJW6qDpiYLj+fsk4S)Y!;Iq zU}uvScXX3!N+grJN(qzD10De}lkWo_v&k>B6qCRhAd{Of7?T%8GLy$HCX+oy43n-z zX&EX8L1b-dZgUdkD+&isa%VD4Q&1AvD+mFTz!*4_vo9924Ft0klld+sleZZTlPoVP zlT;ZHlN&`MlT;Z#v&9+F6qEWcXp_&9ZL?BEnFNz(cO#Q&N>Y>RNm~Iblj3*WlahB= zlW9sNlS6k;6%wdR3fxKx^9BkV2m%@g2<3@@f(Elkc~1ivb=;bCz@MdxxSCWQI|sVO zE5OF?cy5_$v#xwY8gE$!h=lMHRX6{68_647YrS;QNo(L*Eg%v`Fhl|%ao~XYW*#uc z4_H`&06s@bOJvMH9XCn681@WKiUSzB0w6HE8Op=c&L2kPdSuK9GKR-M-hay2t))#` z8O#@bB>f5-S+fRup*x)U4R4}Z^`_d=VmLZ%m|- z1mTP6163*kvQ0+wpe4#9$RINmaG@hlv#^sv1Aj!)IsRFs7QP~2tS9nVoy}P*#^0HR zu;>y-Fhl|%K(>vUS^uBuBBeWHGCz@+ye-T0rJAby{egb4R12f;0w7#!BrEh&kOSd* zIRB=~s9VW^TXX z+keYV5C8||ho%A`STfQ=G@gUd{=plNaJXgCAa(1M_+|$j!YIh~eI4Kzt*0p9 zP{kv`!l*$Fr89})!y38=3abYS5efnb39~YvMFVW>CQlIqyn$h!~zhjJ$zKg90EsStzjSC1daV mmb-F4Aj#HN)z)_IJ0@Yz61*x|N8gGH1PTHO2?_uT015zWZK@pr delta 1034 zcmV+l1oivl#RB8S0)Gld2niA(!4D&tvkzZNhTQ=DoEf9w+4y#fl>y#fk}y#fmA1_~Pp z0U8Df!Kk|a1tJe(b#rNMWpi_5Xkl({Wo#141`4eP3JOnhWU+rL119&%Y}Rgx%k*b7 zo2PyddOi1tPeThES^g53wgL+2>H!D@665Ltlb$di0Wy=mFdnn}Mza)?k3}Gp%|;lL znUX4#Z(IzM7hGhMD@G*-GEGxZ5COAuT-g+p$VDZS3~~&U`9&s^3~~&UD@G-gaB)PF zdt3>Vokj--ZcNc&l|U_tTgOG0iIiR=#BGDwIDuM%7n7-Qa$ys*zMg^;3ov z`ghQFz`xJ}AWrIfn~gE?8zW5-LI*!YuMln}$4+t$#rSywPR}yH!4gL>MFJrJm~^{8 z_l7xWsqK?j^r7uW2%^RUB(-^eyt_}2{!}P;e*z$E^(@<2UJ*l*_C_%Ld*C$MT_5`B z9^16x2DRRyEikhZM=(VKAppQIcv>dXqV}zF@?Nnq52=%CG>8_oL`<>x0O!a~r?>(j zP&hPJ*T}wY+ZC@U*db4WfAk*}QQ|9Zj=8fOipoJq8oCDxs|N}Z3IYhTF`q^QYyypw zmcHmhzQxHnp2X?VwoQ&Lg^enn77|7%F!Mq7{@MeV@5Ow95VD z8X!9`!?l`9*qdmfEEM>YfN@rhB3wMKj0jL5)MO8O3EdLfy#fl>y#fk}y#fmA1_~Pp z0U8Df<%xiT1|kn)b#rNMWpi_5Xkl({Wo#141`4eP3JOnhWU+rL116uk&A79AMg#y8 zz?$$7V__Iv6*<+E|Nat~wgL+2>H!D@665Ltlfz0PvrkJW6qDpiYLj+fsk4S)Y!;Iq zU}uvScXX3!N+grJN(qzD10De}lkWo_v&k>B6qCRhAd{Of7?T%8GLy$HCX+oy43n-z zX&EX8L1b-dZgUdkD+&isa%VD4Q&1AvD+mFTz!*4_vo9924Ft0klld+sleZZTlPoVP zlT;ZHlN&`MlT;Z#v&9+F6qEWcXp_&9ZL?BEnFNz(cO#Q&N>Y>RNm~Iblj3*WlahB= zlW9sNlS6k;6%wdR3fxKx^9BkV2m%@g2<3@@f(Elkc~1ivb=;bCz@MdxxSCWQI|sVO zE5OF?cy5_$v#xwY8gE$!h=lMHRX6{68_647YrS;QNo(L*Eg%v`Fhl|%ao~XYW*#uc z4_H`&06s@bOJvMH9XCn681@WKiUSzB0w6HE8Op=c&L2kPdSuK9GKR-M-hay2t))#` z8O#@bB>f5-S+fRup*x)U4R4}Z^`_d=VmLZ%m|- z1mTP6163*kvQ0+wpe4#9$RINmaG@hlv#^sv1Aj!)IsRFs7QP~2tS9nVoy}P*#^0HR zu;>y-Fhl|%K(>vUS^uBuBBeWHGCz@+ye-T0rJAby{egb4R12f;0w7#!BrEh&kOSd* zIRB=~s9VW^TXX z+keYV5C8||ho%A`STfQ=G@gUd{=plNaJXgCAa(1M_+|$j!YIh~eI4Kzt*0p9 zP{kv`!l*$Fr89})!y38=3abYS5efnb39~YvMFVW>CQlIqyn$h!~zhjJ$zKg90EsStzjSC1daV mmb-F4Aj#HN)z)_IJ0@Yz61*x|N8gGH1PTHO2?_uT015zWZK@pr delta 1034 zcmV+l1oivl#RB8S0)Gld2niA(!4D&tvkzZNhTQ=DoEf9w+4y#fl>y#fk}y#fmA1_~Pp z0U8Df!Kk|a1tJe(b#rNMWpi_5Xkl({Wo#141`4eP3JOnhWU+rL119&%Y}Rgx%k*b7 zo2PyddOi1tPeThES^g53wgL+2>H!D@665Ltlb$di0Wy=mFdnn}Mza)?k3}Gp%|;lL znUX4#Z(IzM7hGhMD@G*-GEGxZ5COAuT-g+p$VDZS3~~&U`9&s^3~~&UD@G-gaB)PF zdt3>Vokj--ZcNc&l|U_tTgOG0iIiR=#BGDwIDuM%7n7-Qa$ys*zMg^;3ov z`ghQFz`xJ}AWrIfn~gE?8zW5-LI*!YuMln}$4+t$#rSywPR}yH!4gL>MFJrJm~^{8 z_l7xWsqK?j^r7uW2%^RUB(-^eyt_}2{!}P;e*z$E^(@<2UJ*l*_C_%Ld*C$MT_5`B z9^16x2DRRyEikhZM=(VKAppQIcv>dXqV}zF@?Nnq52=%CG>8_oL`<>x0O!a~r?>(j zP&hPJ*T}wY+ZC@U*db4WfAk*}QQ|9Zj=8fOipoJq8oCDxs|N}Z3IYhTF`q^QYyypw zmcHmhzQxHnp2X?VwoQ&Lg^enn77|73aDWgK2cr-#7rTE^y5U3zmB|~$oF^9Wnn@ki5jv#9#qC&7kdv95 xSdy8aC$ve2g9)k>T_@C_jb~1ZOx6)IojgT!I)@gUV@hsjUhzbCS*WRSApi`bBzph= delta 126 zcmeyP`$u@bB> zf5-S+fRup*x)U4R4}Z^`_d=VmLZ%m|-1mTP6163*kvQ0+wpe4#9 z$RINmaG@hl5=Ssa0wDm{SyF=|!+1@QZMTE8d$U>7UXnYVXxS^`tg@u9A1h`70w5oV hyjiqzKi7rG(#@kg39f@YI1|y8qLkb_wc0G;+CBmTkDLGi delta 333 zcmV-T0kZywM1@2W3c5oI^9BkV2m%@g2*9Yi{splTPXij4IK9<}Y8fAXkp#g|3gQ#< z>u|dF6}j#b!LxepNN{PP3sQw`rn{HHJKE`3;Pc$QcYqS&+MleJIAWzE1FH}ul zXrd{C99CSIq1ZMleJIAU`gJ`fjZR19GREDcI f@{ROGOWrsmAktLQvfM!!GI5W?e)SYmy|(MZVM>>` diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/original_config.pb b/hyperledger_fabric/latest/raft/channel-artifacts/original_config.pb index 45a6112b20af4a66d1a07b9ad78b905161ca0117..fa0b3d6f9cce3d5c03198bc08ac79a6bb0b83c50 100644 GIT binary patch delta 150 zcmX@LpYhawMm7#+p(FblH%A-Bh;F{&wn=RAHaEq|I}LItuaDK1)nao@$<53w7P^$g z#qC&7kdv95Sdy8aCv+%@gK;yH*mKd1(!!#XJ+w6^zZ2z|JWVuZvWT`SzoBn%fB>Tu sRI}D*4xK8N$tkhklhq7$CpQ_?GipsPje7_bQJWkPrvtPthXZC40Ku&@-v9sr delta 138 zcmX@LpYhawMrjUap(Fblg)Sv=aXS_i~en|DSOu}oeZTR(YTyvpR#SUnCcHpi6Q%)H`_Y%!vf qMRgQ5CyH(sn;aOcI(d&olV| diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/testchainid_1.block b/hyperledger_fabric/latest/raft/channel-artifacts/testchainid_1.block index 05a87a136539ab659c8b3367df54901b2c38e966..8c8b4e1d2b41bab96d45c5eb59acf691478196b9 100644 GIT binary patch delta 726 zcmccpf$`=C#t9nM29@jXiW!`G_3!-BSRIBdMGn*Iuk|~mpKlOR2>k4GwO8oc3r4O> zK->z%&)B%cIas9FIA(P;G_h?=c4F4I+$A|}*Xi97Os^vP%pX;!&Xam&usK3fOK8SJ zMy@jt7`a}taY=J9!t`vu!tBN@^>)*>J?tx&EJ*sD8Tqq*gX!}9erDfOPc9Ldtp5bXYd1ajHWJS-i%_lwm zr6%j--<({Mx?=K&l;+6`^HnED<-5yju{oyXX66+O{gdL_EXDO1&TGfN#> zHY4TZCEW~ptE)>*?AHmc3fg17e{%jtp*P^bfi^TjBBJnUd-TM}*uBT$vOZuI$yHag1@HHG|#msZ-z1Kk!X> z`uB*9Hb?X}-QD-^q4bANCWTDNzijeK;+JX_KMJt>pvaY zyrjgRIpfHdiy^t`ri&ZSw4QZ|auKy+Pz*2O6rKZdugm1^JJe$L^IWW%o7xi8ZnLe= z<=crz59Qp|Kf8Eu5%6SEV99yNcq_v~Y2kzWeGkqqx{&!aIyl9cr*B1G+KeSf^6j`7 GAP@jGZ#?J# delta 734 zcmcclf${bS#t9nM&&pi`dQ_g>_C|5(=|T4>fo zMy_)Y7`a}taY=J9!t`vu!tBN@rJLW|9;BWVV-S10f%B8Ihpk;s!W{k!H9~hco3I}c znXDy~Ir+1+8Kc(bT{2t6CeM~poBY^VWpci8$!2zwZz7Xd#i>jV_AHz160f#-uV=K> zJ$Nj9QZ?rFKpJkg{@eW{T(JsC;EvEjGuL+|0aUp$2KLEmB;cL9StfyJl&c zKeN=$EAuXHxD#iW;$(2ukmcglbNOc8fsQKogm!P{%aUeeoWEJCz@E9@@NkmDG8fUq zbJw5e<*<6sJHKLnt=S8!JRx@jS0+V<>y|gfPgIB-uh#0^peLp4WOC&2uRh7sUy{-) zrC+W7>%pWT(^k*FVZHzHWosPu4==cUY4NMc;;i!?{4TE2yD*!z+#YJs!6i37J+1k- zAuDCc?$!d|lk+}St~xFvT|dvj_0#@ZDYkAV1@GKDp5oV8;%6IAuRhK&W=Wof!uyyMm`{05^S*jh^WXCAW%sw4ziRF1o<1^C8Y+^NZaF zs$4cND)DE|P&a>gb8(@p-mjB6`+i*(T6En*@@Vp5rgISYMs+D?vCaN|N$IrktmM4f z+DX+Du3I0O=X9!4^QZamXV;h%7#dwy$0>C(6$MIe-uHgVir5LEKAZ3IXZhRI%Lji; Jn8?KdfdGWRH{<{S diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/testchainid_1.block.json b/hyperledger_fabric/latest/raft/channel-artifacts/testchainid_1.block.json index 13f1e4db..b51f18d2 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/testchainid_1.block.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/testchainid_1.block.json @@ -1059,13 +1059,13 @@ }, "signatures": [ { - "signature": "MEUCIQDXOdgXyHgXM6sqibAuGi1CNMTD+o4Zy/RiZnkb6qv9SAIgHIZ/D7CvT8emrEEvw6DT0qPqkxcFnuD7c3ou0JsFdz8=", + "signature": "MEQCIEhM2lXwMWkiHvgLTV4fzucmRFM3ndPf3LQm5+PKYq17AiAYbsnVxUn6qhQ15OuK2rlE48CsLa7szTD3Cncif6HMyA==", "signature_header": { "creator": { "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRU2RCRkpVZ1JrQmh6bVc5aHRZaCtVakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSjJ1bll5RzdGRVkKOW9TcTJ0Z3RSN0FNYzB0dG8zNmNid3NMSEVRNmFWUFB3WkFqa3VUaWo2TXBReE1mOGdmTGx3NmNkQkE4OThiRwpyTDJEbHR0bndNNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUtxZjM2Zy9zQ3ZNbHhiNXBBSEluTC9sejJVNlJKZllSemdiQzM4V3JwNVFNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJMKy9Bd1JCZWgxM3BsK2NZOFpsY0pzTlBEWFBEYzQxd0tLY2hlOHpkU1NBaUI1aTVMdQorMVRub3k0VDRsM0RTZjJLOHhyeDlVZ0ZObjcza0dmcFlSMTJVUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org1MSP" }, - "nonce": "McNiQKZEFcOdr88NCDrvDZ94n3026Dpu" + "nonce": "BwKJAVK8lpbdGQ7mRSIiJKRYDuV6dBdI" } } ] @@ -1075,7 +1075,7 @@ "channel_id": "businesschannel", "epoch": "0", "extension": null, - "timestamp": "2020-12-07T20:41:25Z", + "timestamp": "2021-03-03T21:48:10Z", "tls_cert_hash": null, "tx_id": "", "type": 2, @@ -1086,11 +1086,11 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWMrZ0F3SUJBZ0lRU2RCRkpVZ1JrQmh6bVc5aHRZaCtVakFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmEKTUdzeEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE0d0RBWURWUVFMRXdWaFpHMXBiakVmTUIwR0ExVUVBd3dXUVdSdGFXNUFiM0puCk1TNWxlR0Z0Y0d4bExtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSjJ1bll5RzdGRVkKOW9TcTJ0Z3RSN0FNYzB0dG8zNmNid3NMSEVRNmFWUFB3WkFqa3VUaWo2TXBReE1mOGdmTGx3NmNkQkE4OThiRwpyTDJEbHR0bndNNmpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkCkl3UWtNQ0tBSUtxZjM2Zy9zQ3ZNbHhiNXBBSEluTC9sejJVNlJKZllSemdiQzM4V3JwNVFNQW9HQ0NxR1NNNDkKQkFNQ0EwY0FNRVFDSUJMKy9Bd1JCZWgxM3BsK2NZOFpsY0pzTlBEWFBEYzQxd0tLY2hlOHpkU1NBaUI1aTVMdQorMVRub3k0VDRsM0RTZjJLOHhyeDlVZ0ZObjcza0dmcFlSMTJVUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "Org1MSP" }, - "nonce": "2dSe0bDcXj5kQjDVMQTR1c5vNktRQSTe" + "nonce": "wqaYZPHSLWgfOtWlND+uEqpSvDe/k2+x" } } }, - "signature": "MEUCIQDBpNjy5Xz+sGpkpLuFcE3JnvF5qscUG54wRfK/fRoGiwIgS23cSRfXBF+bM5d7xwCY/TEMJ7MCX3mX59sSBEammA8=" + "signature": "MEQCICr5YMzytULintH5LpvFkZntf9cYRv9ON+SXQ1Yrhs9NAiAPgI0zpgZ62moAdFeaBXsoKebFVT7IS3Vwb7IdJdaw1A==" } }, "header": { @@ -1098,7 +1098,7 @@ "channel_id": "businesschannel", "epoch": "0", "extension": null, - "timestamp": "2020-12-07T20:41:25Z", + "timestamp": "2021-03-03T21:48:10Z", "tls_cert_hash": null, "tx_id": "", "type": 1, @@ -1109,18 +1109,18 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNIekNDQWNhZ0F3SUJBZ0lSQUw0WU5uNXJzTTBiT3cwdjBTSEtwSUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmFNR3N4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJBd0RnWURWUVFMRXdkdmNtUmxjbVZ5TVIwd0d3WURWUVFERXhSdmNtUmxjbVZ5TUM1bGVHRnRjR3hsCkxtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTmw4cEZsMENVenVWaTkvOStkdWR0c2cKN1FCSlhMaUkxKzVhVmlTZTFXTWdiSkZiRkxVNkNXZzF3ajJVZ0pLcHFHam5IK05VbHlmY3JjYWkwb0J4dUdDagpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkSXdRa01DS0FJREMyCmt2clhibXlVVm5BQjQxUUFtbU1TaDNTRmFXb0JMUmNENDliUUJkd05NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUMKSUVjWGpITUxXOUg1S1BEUm04Tlpxak56UU0ybEEzL3hNbzlIWUdMVXQxRE5BaUFiVmYxeGVYanp6S1VxRTdpSApwcm1CNUNBOUpqVjVhUWdjSFJUdXNnM0hpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "OrdererMSP" }, - "nonce": "LW+Nh1InbFwwXduACfJDSD0+bGCcD9B8" + "nonce": "7bLWvAeppKBi+2lZ+X+wNae/Tjb3Zcmk" } } }, - "signature": "MEQCIHNf4DL+Vc2MBdvyH7pfSb0++Khj9InMNGJPP/F5EW5aAiBH7L0VyAK/gF64G13kcyn5GCX41pZFQ6ktYxZiTU0Eow==" + "signature": "MEQCIFw2ChNvqrHXXHHw6v2u6rsq8weNm3SdYYXEJWgoAOnAAiA9y+buRYS3MwiZ/+bHuzFNt3PqWU9S1Zsg4+OZGScwxA==" }, "header": { "channel_header": { "channel_id": "testchainid", "epoch": "0", "extension": null, - "timestamp": "2020-12-07T20:41:25Z", + "timestamp": "2021-03-03T21:48:10Z", "tls_cert_hash": null, "tx_id": "", "type": 4, @@ -1131,22 +1131,22 @@ "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNIekNDQWNhZ0F3SUJBZ0lSQUw0WU5uNXJzTTBiT3cwdjBTSEtwSUV3Q2dZSUtvWkl6ajBFQXdJd2FURUwKTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oYmlCRwpjbUZ1WTJselkyOHhGREFTQmdOVkJBb1RDMlY0WVcxd2JHVXVZMjl0TVJjd0ZRWURWUVFERXc1allTNWxlR0Z0CmNHeGxMbU52YlRBZUZ3MHlNREEzTVRjeE9ERTVNREJhRncwek1EQTNNVFV4T0RFNU1EQmFNR3N4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVFlXNGdSbkpoYm1OcApjMk52TVJBd0RnWURWUVFMRXdkdmNtUmxjbVZ5TVIwd0d3WURWUVFERXhSdmNtUmxjbVZ5TUM1bGVHRnRjR3hsCkxtTnZiVEJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCTmw4cEZsMENVenVWaTkvOStkdWR0c2cKN1FCSlhMaUkxKzVhVmlTZTFXTWdiSkZiRkxVNkNXZzF3ajJVZ0pLcHFHam5IK05VbHlmY3JjYWkwb0J4dUdDagpUVEJMTUE0R0ExVWREd0VCL3dRRUF3SUhnREFNQmdOVkhSTUJBZjhFQWpBQU1Dc0dBMVVkSXdRa01DS0FJREMyCmt2clhibXlVVm5BQjQxUUFtbU1TaDNTRmFXb0JMUmNENDliUUJkd05NQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUMKSUVjWGpITUxXOUg1S1BEUm04Tlpxak56UU0ybEEzL3hNbzlIWUdMVXQxRE5BaUFiVmYxeGVYanp6S1VxRTdpSApwcm1CNUNBOUpqVjVhUWdjSFJUdXNnM0hpdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K", "mspid": "OrdererMSP" }, - "nonce": "GYw5RfuCds1bVYtW7aoaA73RDu/jLThb" + "nonce": "OboZlrrLuxgC6liON+J7ZZ4a6jCzWBkq" } } }, - "signature": "MEUCIQDnIDg6cyhYwm1sxJTbPJIdctd3AysECky71wMZDKETvgIgA8pJlkvV2Sn+p7d237Y36oWIjZf3i/PCCXM30YvAekQ=" + "signature": "MEUCIQDUvS+YxgGhAD67lZXtn8D2E5f3WLE8xC6y3b7+4RvwiQIgaRn9Bh8iF9J9IfERh9wf4GNyVyGksnUBJODDcCev8sQ=" } ] }, "header": { - "data_hash": "5ndFUI1kvPosX2TnBtHmVOaXKDE36xOVKUxfUkaO/as=", + "data_hash": "MHmu3RYwyur+z6VdLADUckCWf9aPQGfPgBQgUfNM1Y0=", "number": "1", "previous_hash": "6W5kLgUNCKdJdB8UECw8Wn4EBT+x5nQYo38cG7uFMUE=" }, "metadata": { "metadata": [ - "Cg8KABILCgkKAwECAxAEGAUSlQcKygYKrQYKCk9yZGVyZXJNU1ASngYtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ0h6Q0NBY2FnQXdJQkFnSVJBTDRZTm41cnNNMGJPdzB2MFNIS3BJRXdDZ1lJS29aSXpqMEVBd0l3YVRFTApNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHCmNtRnVZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUmN3RlFZRFZRUURFdzVqWVM1bGVHRnQKY0d4bExtTnZiVEFlRncweU1EQTNNVGN4T0RFNU1EQmFGdzB6TURBM01UVXhPREU1TURCYU1Hc3hDekFKQmdOVgpCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUll3RkFZRFZRUUhFdzFUWVc0Z1JuSmhibU5wCmMyTnZNUkF3RGdZRFZRUUxFd2R2Y21SbGNtVnlNUjB3R3dZRFZRUURFeFJ2Y21SbGNtVnlNQzVsZUdGdGNHeGwKTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJObDhwRmwwQ1V6dVZpOS85K2R1ZHRzZwo3UUJKWExpSTErNWFWaVNlMVdNZ2JKRmJGTFU2Q1dnMXdqMlVnSktwcUdqbkgrTlVseWZjcmNhaTBvQnh1R0NqClRUQkxNQTRHQTFVZER3RUIvd1FFQXdJSGdEQU1CZ05WSFJNQkFmOEVBakFBTUNzR0ExVWRJd1FrTUNLQUlEQzIKa3ZyWGJteVVWbkFCNDFRQW1tTVNoM1NGYVdvQkxSY0Q0OWJRQmR3Tk1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQwpJRWNYakhNTFc5SDVLUERSbThOWnFqTnpRTTJsQTMveE1vOUhZR0xVdDFETkFpQWJWZjF4ZVhqenpLVXFFN2lICnBybUI1Q0E5SmpWNWFRZ2NIUlR1c2czSGl3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoSGCc34dmjcR0u+slsvvrTEqLXSBnFY8MCzhJGMEQCIFqKI2oGm/fSIssTmmNufX2Se5DXO8SeQsp5Kfk3++bWAiAAgUWrXiKJAnJRGbO+76SoXZBVTLPdD2pPPH8fU/ZgkQ==", + "Cg8KABILCgkKAwECAxAEGAUSlQcKygYKrQYKCk9yZGVyZXJNU1ASngYtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ0h6Q0NBY2FnQXdJQkFnSVJBTDRZTm41cnNNMGJPdzB2MFNIS3BJRXdDZ1lJS29aSXpqMEVBd0l3YVRFTApNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHCmNtRnVZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUmN3RlFZRFZRUURFdzVqWVM1bGVHRnQKY0d4bExtTnZiVEFlRncweU1EQTNNVGN4T0RFNU1EQmFGdzB6TURBM01UVXhPREU1TURCYU1Hc3hDekFKQmdOVgpCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUll3RkFZRFZRUUhFdzFUWVc0Z1JuSmhibU5wCmMyTnZNUkF3RGdZRFZRUUxFd2R2Y21SbGNtVnlNUjB3R3dZRFZRUURFeFJ2Y21SbGNtVnlNQzVsZUdGdGNHeGwKTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJObDhwRmwwQ1V6dVZpOS85K2R1ZHRzZwo3UUJKWExpSTErNWFWaVNlMVdNZ2JKRmJGTFU2Q1dnMXdqMlVnSktwcUdqbkgrTlVseWZjcmNhaTBvQnh1R0NqClRUQkxNQTRHQTFVZER3RUIvd1FFQXdJSGdEQU1CZ05WSFJNQkFmOEVBakFBTUNzR0ExVWRJd1FrTUNLQUlEQzIKa3ZyWGJteVVWbkFCNDFRQW1tTVNoM1NGYVdvQkxSY0Q0OWJRQmR3Tk1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQwpJRWNYakhNTFc5SDVLUERSbThOWnFqTnpRTTJsQTMveE1vOUhZR0xVdDFETkFpQWJWZjF4ZVhqenpLVXFFN2lICnBybUI1Q0E5SmpWNWFRZ2NIUlR1c2czSGl3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoSGMS00VRtZzWjgMyFzURaRBU6ACFXdAkTnBJGMEQCIESTt7gmXb8M0XydZYRShzy2jkT2yOLhHkcn80RLtBBJAiAEbOEB2mg4IqHg347gzaLQaeVbU2QzDI6obmaYpMRvPg==", "", "", "", diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/testchainid_1.block.json-flat.json b/hyperledger_fabric/latest/raft/channel-artifacts/testchainid_1.block.json-flat.json index 981daa35..92cec051 100644 --- a/hyperledger_fabric/latest/raft/channel-artifacts/testchainid_1.block.json-flat.json +++ b/hyperledger_fabric/latest/raft/channel-artifacts/testchainid_1.block.json-flat.json @@ -373,50 +373,50 @@ .data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.values.Consortium.value.name=SampleConsortium .data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.values.Consortium.version=0 .data.data[0].payload.data.payload.data.last_update.payload.data.config_update.write_set.version=0 -.data.data[0].payload.data.payload.data.last_update.payload.data.signatures[0].signature=MEUCIQDXOdgXyHgXM6sqibAuGi1CNMTD+o4Zy/RiZnkb6qv9SAIgHIZ/D7CvT8emrEEvw6DT0qPqkxcFnuD7c3ou0JsFdz8= +.data.data[0].payload.data.payload.data.last_update.payload.data.signatures[0].signature=MEQCIEhM2lXwMWkiHvgLTV4fzucmRFM3ndPf3LQm5+PKYq17AiAYbsnVxUn6qhQ15OuK2rlE48CsLa7szTD3Cncif6HMyA== .data.data[0].payload.data.payload.data.last_update.payload.data.signatures[0].signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.data.payload.data.last_update.payload.data.signatures[0].signature_header.creator.mspid=Org1MSP -.data.data[0].payload.data.payload.data.last_update.payload.data.signatures[0].signature_header.nonce=McNiQKZEFcOdr88NCDrvDZ94n3026Dpu +.data.data[0].payload.data.payload.data.last_update.payload.data.signatures[0].signature_header.nonce=BwKJAVK8lpbdGQ7mRSIiJKRYDuV6dBdI .data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.channel_id=businesschannel .data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.epoch=0 .data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.extension=None -.data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.timestamp=2020-12-07T20:41:25Z +.data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.timestamp=2021-03-03T21:48:10Z .data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.tls_cert_hash=None .data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.tx_id= .data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.type=2 .data.data[0].payload.data.payload.data.last_update.payload.header.channel_header.version=0 .data.data[0].payload.data.payload.data.last_update.payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICKDCCAc+gAwIBAgIQSdBFJUgRkBhzmW9htYh+UjAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBa\nMGsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ4wDAYDVQQLEwVhZG1pbjEfMB0GA1UEAwwWQWRtaW5Ab3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2unYyG7FEY\n9oSq2tgtR7AMc0tto36cbwsLHEQ6aVPPwZAjkuTij6MpQxMf8gfLlw6cdBA898bG\nrL2DlttnwM6jTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIKqf36g/sCvMlxb5pAHInL/lz2U6RJfYRzgbC38Wrp5QMAoGCCqGSM49\nBAMCA0cAMEQCIBL+/AwRBeh13pl+cY8ZlcJsNPDXPDc41wKKche8zdSSAiB5i5Lu\n+1Tnoy4T4l3DSf2K8xrx9UgFNn73kGfpYR12UQ==\n-----END CERTIFICATE-----\n') .data.data[0].payload.data.payload.data.last_update.payload.header.signature_header.creator.mspid=Org1MSP -.data.data[0].payload.data.payload.data.last_update.payload.header.signature_header.nonce=2dSe0bDcXj5kQjDVMQTR1c5vNktRQSTe -.data.data[0].payload.data.payload.data.last_update.signature=MEUCIQDBpNjy5Xz+sGpkpLuFcE3JnvF5qscUG54wRfK/fRoGiwIgS23cSRfXBF+bM5d7xwCY/TEMJ7MCX3mX59sSBEammA8= +.data.data[0].payload.data.payload.data.last_update.payload.header.signature_header.nonce=wqaYZPHSLWgfOtWlND+uEqpSvDe/k2+x +.data.data[0].payload.data.payload.data.last_update.signature=MEQCICr5YMzytULintH5LpvFkZntf9cYRv9ON+SXQ1Yrhs9NAiAPgI0zpgZ62moAdFeaBXsoKebFVT7IS3Vwb7IdJdaw1A== .data.data[0].payload.data.payload.header.channel_header.channel_id=businesschannel .data.data[0].payload.data.payload.header.channel_header.epoch=0 .data.data[0].payload.data.payload.header.channel_header.extension=None -.data.data[0].payload.data.payload.header.channel_header.timestamp=2020-12-07T20:41:25Z +.data.data[0].payload.data.payload.header.channel_header.timestamp=2021-03-03T21:48:10Z .data.data[0].payload.data.payload.header.channel_header.tls_cert_hash=None .data.data[0].payload.data.payload.header.channel_header.tx_id= .data.data[0].payload.data.payload.header.channel_header.type=1 .data.data[0].payload.data.payload.header.channel_header.version=0 .data.data[0].payload.data.payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICHzCCAcagAwIBAgIRAL4YNn5rsM0bOw0v0SHKpIEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBaMGsxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRAwDgYDVQQLEwdvcmRlcmVyMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxl\nLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNl8pFl0CUzuVi9/9+dudtsg\n7QBJXLiI1+5aViSe1WMgbJFbFLU6CWg1wj2UgJKpqGjnH+NUlyfcrcai0oBxuGCj\nTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIDC2\nkvrXbmyUVnAB41QAmmMSh3SFaWoBLRcD49bQBdwNMAoGCCqGSM49BAMCA0cAMEQC\nIEcXjHMLW9H5KPDRm8NZqjNzQM2lA3/xMo9HYGLUt1DNAiAbVf1xeXjzzKUqE7iH\nprmB5CA9JjV5aQgcHRTusg3Hiw==\n-----END CERTIFICATE-----\n') .data.data[0].payload.data.payload.header.signature_header.creator.mspid=OrdererMSP -.data.data[0].payload.data.payload.header.signature_header.nonce=LW+Nh1InbFwwXduACfJDSD0+bGCcD9B8 -.data.data[0].payload.data.signature=MEQCIHNf4DL+Vc2MBdvyH7pfSb0++Khj9InMNGJPP/F5EW5aAiBH7L0VyAK/gF64G13kcyn5GCX41pZFQ6ktYxZiTU0Eow== +.data.data[0].payload.data.payload.header.signature_header.nonce=7bLWvAeppKBi+2lZ+X+wNae/Tjb3Zcmk +.data.data[0].payload.data.signature=MEQCIFw2ChNvqrHXXHHw6v2u6rsq8weNm3SdYYXEJWgoAOnAAiA9y+buRYS3MwiZ/+bHuzFNt3PqWU9S1Zsg4+OZGScwxA== .data.data[0].payload.header.channel_header.channel_id=testchainid .data.data[0].payload.header.channel_header.epoch=0 .data.data[0].payload.header.channel_header.extension=None -.data.data[0].payload.header.channel_header.timestamp=2020-12-07T20:41:25Z +.data.data[0].payload.header.channel_header.timestamp=2021-03-03T21:48:10Z .data.data[0].payload.header.channel_header.tls_cert_hash=None .data.data[0].payload.header.channel_header.tx_id= .data.data[0].payload.header.channel_header.type=4 .data.data[0].payload.header.channel_header.version=0 .data.data[0].payload.header.signature_header.creator.id_bytes=b64(b'-----BEGIN CERTIFICATE-----\nMIICHzCCAcagAwIBAgIRAL4YNn5rsM0bOw0v0SHKpIEwCgYIKoZIzj0EAwIwaTEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt\ncGxlLmNvbTAeFw0yMDA3MTcxODE5MDBaFw0zMDA3MTUxODE5MDBaMGsxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp\nc2NvMRAwDgYDVQQLEwdvcmRlcmVyMR0wGwYDVQQDExRvcmRlcmVyMC5leGFtcGxl\nLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNl8pFl0CUzuVi9/9+dudtsg\n7QBJXLiI1+5aViSe1WMgbJFbFLU6CWg1wj2UgJKpqGjnH+NUlyfcrcai0oBxuGCj\nTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIDC2\nkvrXbmyUVnAB41QAmmMSh3SFaWoBLRcD49bQBdwNMAoGCCqGSM49BAMCA0cAMEQC\nIEcXjHMLW9H5KPDRm8NZqjNzQM2lA3/xMo9HYGLUt1DNAiAbVf1xeXjzzKUqE7iH\nprmB5CA9JjV5aQgcHRTusg3Hiw==\n-----END CERTIFICATE-----\n') .data.data[0].payload.header.signature_header.creator.mspid=OrdererMSP -.data.data[0].payload.header.signature_header.nonce=GYw5RfuCds1bVYtW7aoaA73RDu/jLThb -.data.data[0].signature=MEUCIQDnIDg6cyhYwm1sxJTbPJIdctd3AysECky71wMZDKETvgIgA8pJlkvV2Sn+p7d237Y36oWIjZf3i/PCCXM30YvAekQ= -.header.data_hash=5ndFUI1kvPosX2TnBtHmVOaXKDE36xOVKUxfUkaO/as= +.data.data[0].payload.header.signature_header.nonce=OboZlrrLuxgC6liON+J7ZZ4a6jCzWBkq +.data.data[0].signature=MEUCIQDUvS+YxgGhAD67lZXtn8D2E5f3WLE8xC6y3b7+4RvwiQIgaRn9Bh8iF9J9IfERh9wf4GNyVyGksnUBJODDcCev8sQ= +.header.data_hash=MHmu3RYwyur+z6VdLADUckCWf9aPQGfPgBQgUfNM1Y0= .header.number=1 .header.previous_hash=6W5kLgUNCKdJdB8UECw8Wn4EBT+x5nQYo38cG7uFMUE= -.metadata.metadata[0]=Cg8KABILCgkKAwECAxAEGAUSlQcKygYKrQYKCk9yZGVyZXJNU1ASngYtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ0h6Q0NBY2FnQXdJQkFnSVJBTDRZTm41cnNNMGJPdzB2MFNIS3BJRXdDZ1lJS29aSXpqMEVBd0l3YVRFTApNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHCmNtRnVZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUmN3RlFZRFZRUURFdzVqWVM1bGVHRnQKY0d4bExtTnZiVEFlRncweU1EQTNNVGN4T0RFNU1EQmFGdzB6TURBM01UVXhPREU1TURCYU1Hc3hDekFKQmdOVgpCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUll3RkFZRFZRUUhFdzFUWVc0Z1JuSmhibU5wCmMyTnZNUkF3RGdZRFZRUUxFd2R2Y21SbGNtVnlNUjB3R3dZRFZRUURFeFJ2Y21SbGNtVnlNQzVsZUdGdGNHeGwKTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJObDhwRmwwQ1V6dVZpOS85K2R1ZHRzZwo3UUJKWExpSTErNWFWaVNlMVdNZ2JKRmJGTFU2Q1dnMXdqMlVnSktwcUdqbkgrTlVseWZjcmNhaTBvQnh1R0NqClRUQkxNQTRHQTFVZER3RUIvd1FFQXdJSGdEQU1CZ05WSFJNQkFmOEVBakFBTUNzR0ExVWRJd1FrTUNLQUlEQzIKa3ZyWGJteVVWbkFCNDFRQW1tTVNoM1NGYVdvQkxSY0Q0OWJRQmR3Tk1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQwpJRWNYakhNTFc5SDVLUERSbThOWnFqTnpRTTJsQTMveE1vOUhZR0xVdDFETkFpQWJWZjF4ZVhqenpLVXFFN2lICnBybUI1Q0E5SmpWNWFRZ2NIUlR1c2czSGl3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoSGCc34dmjcR0u+slsvvrTEqLXSBnFY8MCzhJGMEQCIFqKI2oGm/fSIssTmmNufX2Se5DXO8SeQsp5Kfk3++bWAiAAgUWrXiKJAnJRGbO+76SoXZBVTLPdD2pPPH8fU/ZgkQ== +.metadata.metadata[0]=Cg8KABILCgkKAwECAxAEGAUSlQcKygYKrQYKCk9yZGVyZXJNU1ASngYtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ0h6Q0NBY2FnQXdJQkFnSVJBTDRZTm41cnNNMGJPdzB2MFNIS3BJRXdDZ1lJS29aSXpqMEVBd0l3YVRFTApNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQWdUQ2tOaGJHbG1iM0p1YVdFeEZqQVVCZ05WQkFjVERWTmhiaUJHCmNtRnVZMmx6WTI4eEZEQVNCZ05WQkFvVEMyVjRZVzF3YkdVdVkyOXRNUmN3RlFZRFZRUURFdzVqWVM1bGVHRnQKY0d4bExtTnZiVEFlRncweU1EQTNNVGN4T0RFNU1EQmFGdzB6TURBM01UVXhPREU1TURCYU1Hc3hDekFKQmdOVgpCQVlUQWxWVE1STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUll3RkFZRFZRUUhFdzFUWVc0Z1JuSmhibU5wCmMyTnZNUkF3RGdZRFZRUUxFd2R2Y21SbGNtVnlNUjB3R3dZRFZRUURFeFJ2Y21SbGNtVnlNQzVsZUdGdGNHeGwKTG1OdmJUQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJObDhwRmwwQ1V6dVZpOS85K2R1ZHRzZwo3UUJKWExpSTErNWFWaVNlMVdNZ2JKRmJGTFU2Q1dnMXdqMlVnSktwcUdqbkgrTlVseWZjcmNhaTBvQnh1R0NqClRUQkxNQTRHQTFVZER3RUIvd1FFQXdJSGdEQU1CZ05WSFJNQkFmOEVBakFBTUNzR0ExVWRJd1FrTUNLQUlEQzIKa3ZyWGJteVVWbkFCNDFRQW1tTVNoM1NGYVdvQkxSY0Q0OWJRQmR3Tk1Bb0dDQ3FHU000OUJBTUNBMGNBTUVRQwpJRWNYakhNTFc5SDVLUERSbThOWnFqTnpRTTJsQTMveE1vOUhZR0xVdDFETkFpQWJWZjF4ZVhqenpLVXFFN2lICnBybUI1Q0E5SmpWNWFRZ2NIUlR1c2czSGl3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoSGMS00VRtZzWjgMyFzURaRBU6ACFXdAkTnBJGMEQCIESTt7gmXb8M0XydZYRShzy2jkT2yOLhHkcn80RLtBBJAiAEbOEB2mg4IqHg347gzaLQaeVbU2QzDI6obmaYpMRvPg== .metadata.metadata[1]= .metadata.metadata[2]= .metadata.metadata[3]= diff --git a/hyperledger_fabric/latest/raft/channel-artifacts/updated_config.pb b/hyperledger_fabric/latest/raft/channel-artifacts/updated_config.pb index 8aaed06e450bafc7a33cae55ab0f886f23b08b35..ad6015e7deb4dbbc93051e62ba9aedbe11281847 100644 GIT binary patch delta 136 zcmaF)it*(u#tCwpcZ>einw+7nI+@>*ce0>Tz4lOpvl-$g`;*GK= zMJB&;P@P;NYB%|*Nap4S$3-lYwTe|HA9d56tmsz1`IFlok;zY@GbgW&He=Mfo zoNS}bJ9#Eh97KcUZM5wt`^Io??sS~VGP%U9Zn9>v>SQ-J-OZoe_J~ZDh%ueKHacta pA5o6Uhl&log.txt +channelJoinAction() { + local channel=$1 + peer channel join \ + -b ${channel}.block \ + >&log.txt } ## Sometimes Join takes time hence RETRY atleast for 5 times -channelJoinWithRetry () { - local channel=$1 - local peer=$2 - local counter=0 - channelJoinAction ${channel} - local rc=$? - while [ ${counter} -lt ${MAX_RETRY} -a ${rc} -ne 0 ]; do - echo "peer${peer} failed to join channel ${channel}, retry after 2s" - sleep 2 - channelJoinAction ${channel} - rc=$? - let counter=${counter}+1 - done - [ $rc -ne 0 ] && cat log.txt +channelJoinWithRetry() { + local channel=$1 + local peer=$2 + local counter=0 + channelJoinAction ${channel} + local rc=$? + while [ ${counter} -lt ${MAX_RETRY} -a ${rc} -ne 0 ]; do + echo "peer${peer} failed to join channel ${channel}, retry after 2s" + sleep 2 + channelJoinAction ${channel} + rc=$? + let counter=${counter}+1 + done + [ $rc -ne 0 ] && cat log.txt verifyResult ${rc} "After $MAX_RETRY attempts, peer${peer} failed to Join the Channel" } # Join given (by default all) peers into the channel # channelJoin channel org peer -channelJoin () { - local channel=$1 - local org=$2 - local peer=$3 - [ -z $channel ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 +channelJoin() { + local channel=$1 + local org=$2 + local peer=$3 + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 - echo "=== Join org $org/peer $peer into channel ${channel} === " - setEnvs $org $peer - channelJoinWithRetry ${channel} $peer - echo "=== org $org/peer $peer joined into channel ${channel} === " + echo "=== Join org $org/peer $peer into channel ${channel} === " + setEnvs $org $peer + channelJoinWithRetry ${channel} $peer + echo "=== org $org/peer $peer joined into channel ${channel} === " } -getShaSum () { - [ ! $# -eq 1 ] && exit 1 - shasum ${1} | awk '{print $1}' +getShaSum() { + [ ! $# -eq 1 ] && exit 1 + shasum ${1} | awk '{print $1}' } # List the channel that the peer joined # E.g., for peer 0 at org 1, will do # channelList 1 0 -channelList () { - local org=$1 - local peer=$2 - echo "=== List the channels that org${org}/peer${peer} joined === " +channelList() { + local org=$1 + local peer=$2 + echo "=== List the channels that org${org}/peer${peer} joined === " - setEnvs $org $peer + setEnvs $org $peer - peer channel list >&log.txt - rc=$? - [ $rc -ne 0 ] && cat log.txt - if [ $rc -ne 0 ]; then - echo "=== Failed to list the channels that org${org}/peer${peer} joined === " - else - echo "=== Done to list the channels that org${org}/peer${peer} joined === " - fi + peer channel list >&log.txt + rc=$? + [ $rc -ne 0 ] && cat log.txt + if [ $rc -ne 0 ]; then + echo "=== Failed to list the channels that org${org}/peer${peer} joined === " + else + echo "=== Done to list the channels that org${org}/peer${peer} joined === " + fi } # Get the info of specific channel, including {height, currentBlockHash, previousBlockHash}. # E.g., for peer 0 at org 1, get info of business channel will do # channelGetInfo businesschannel 1 0 -channelGetInfo () { - local channel=$1 - local org=$2 - local peer=$3 - echo "=== Get channel info (height, currentBlockHash, previousBlockHash) of ${channel} with id of org${org}/peer${peer} === " +channelGetInfo() { + local channel=$1 + local org=$2 + local peer=$3 + echo "=== Get channel info (height, currentBlockHash, previousBlockHash) of ${channel} with id of org${org}/peer${peer} === " - setEnvs $org $peer + setEnvs $org $peer - peer channel getinfo -c ${channel} >&log.txt - rc=$? - cat log.txt - if [ $rc -ne 0 ]; then - echo "=== Fail to get channel info of ${channel} with id of org${org}/peer${peer} === " - else - echo "=== Done to get channel info of ${channel} with id of org${org}/peer${peer} === " - fi + peer channel getinfo -c ${channel} >&log.txt + rc=$? + cat log.txt + if [ $rc -ne 0 ]; then + echo "=== Fail to get channel info of ${channel} with id of org${org}/peer${peer} === " + else + echo "=== Done to get channel info of ${channel} with id of org${org}/peer${peer} === " + fi } # Fetch all blocks for a channel # Usage: channelFetchAll channel org peer orderer_url orderer_tls_rootcert -channelFetchAll () { - local channel=$1 - local org=$2 - local peer=$3 - local orderer_url=$4 - local orderer_tls_rootcert=$5 +channelFetchAll() { + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 - echo "=== Fetch all block for channel $channel === " + echo "=== Fetch all block for channel $channel === " - local block_file=/tmp/${channel}_newest.block - channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} "newest" ${block_file} - [ $? -ne 0 ] && exit 1 - newest_block_shasum=$(getShaSum ${block_file}) - echo "fetch newest block ${block_file} with shasum=${newest_block_shasum}" + local block_file=/tmp/${channel}_newest.block + channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} "newest" ${block_file} + [ $? -ne 0 ] && exit 1 + newest_block_shasum=$(getShaSum ${block_file}) + echo "fetch newest block ${block_file} with shasum=${newest_block_shasum}" - block_file=${CHANNEL_ARTIFACTS}/${channel}_config.block - channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} "config" ${block_file} - [ $? -ne 0 ] && exit 1 - echo "fetch config block ${block_file}" + block_file=${CHANNEL_ARTIFACTS}/${channel}_config.block + channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} "config" ${block_file} + [ $? -ne 0 ] && exit 1 + echo "fetch config block ${block_file}" - for i in $(seq 0 16); do # we at most fetch 16 blocks - block_file=${CHANNEL_ARTIFACTS}/${channel}_${i}.block - channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} $i ${block_file} - [ $? -ne 0 ] && exit 1 - [ -f $block_file ] || break - echo "fetch block $i and saved into ${block_file}" - block_shasum=$(getShaSum ${block_file}) - [ ${block_shasum} = ${newest_block_shasum} ] && { echo "Block $i is the last one for channel $channel"; break; } - done + for i in $(# we at most fetch 16 blocks + seq 0 16 + ); do + block_file=${CHANNEL_ARTIFACTS}/${channel}_${i}.block + channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} $i ${block_file} + [ $? -ne 0 ] && exit 1 + [ -f $block_file ] || break + echo "fetch block $i and saved into ${block_file}" + block_shasum=$(getShaSum ${block_file}) + [ ${block_shasum} = ${newest_block_shasum} ] && { + echo "Block $i is the last one for channel $channel" + break + } + done } # Fetch some block from a given channel # channelFetch channel org peer orderer_url blockNum block_file -channelFetch () { - local channel=$1 - local org=$2 - local peer=$3 - local orderer_url=$4 - local orderer_tls_rootcert=$5 - local num=$6 - local block_file=$7 - echo "=== Fetch block $num of channel $channel === " +channelFetch() { + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 + local num=$6 + local block_file=$7 + echo "=== Fetch block $num of channel $channel === " - #setEnvs $org $peer - setOrdererEnvs # system channel required id from ordererOrg - # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), - # lets supply it directly as we know it using the "-o" option - if [ -z "${CORE_PEER_TLS_ENABLED}" ] || [ "${CORE_PEER_TLS_ENABLED}" = "false" ]; then - peer channel fetch $num ${block_file} \ - -o ${orderer_url} \ - -c ${channel} \ - >&log.txt - else - peer channel fetch $num ${block_file} \ - -o ${orderer_url} \ - -c ${channel} \ - --tls \ - --cafile ${orderer_tls_rootcert} \ - >&log.txt - fi - if [ $? -ne 0 ]; then - cat log.txt - echo_r "Fetch block $num of channel $channel failed" - return 1 - else - echo "=== Fetch block $num of channel $channel OK === " - return 0 - fi + #setEnvs $org $peer + setOrdererEnvs # system channel required id from ordererOrg + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "${CORE_PEER_TLS_ENABLED}" ] || [ "${CORE_PEER_TLS_ENABLED}" = "false" ]; then + peer channel fetch $num ${block_file} \ + -o ${orderer_url} \ + -c ${channel} \ + >&log.txt + else + peer channel fetch $num ${block_file} \ + -o ${orderer_url} \ + -c ${channel} \ + --tls \ + --cafile ${orderer_tls_rootcert} \ + >&log.txt + fi + if [ $? -ne 0 ]; then + cat log.txt + echo_r "Fetch block $num of channel $channel failed" + return 1 + else + echo "=== Fetch block $num of channel $channel OK === " + return 0 + fi } # Sign a channel config tx # Usage: channelSignConfigTx channel org peer transaction -channelSignConfigTx () { - local channel=$1 - local org=$2 - local peer=$3 - local tx=$4 - [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 - echo "=== Sign channel config tx $tx for channel $channel by org $org/peer $peer === " - [ -f ${CHANNEL_ARTIFACTS}/${tx} ] || { echo_r "${tx} not exist"; exit 1; } +channelSignConfigTx() { + local channel=$1 + local org=$2 + local peer=$3 + local tx=$4 + [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 + echo "=== Sign channel config tx $tx for channel $channel by org $org/peer $peer === " + [ -f ${CHANNEL_ARTIFACTS}/${tx} ] || { + echo_r "${tx} not exist" + exit 1 + } - setEnvs $org $peer + setEnvs $org $peer - peer channel signconfigtx -f ${CHANNEL_ARTIFACTS}/${tx} >&log.txt - rc=$? - [ $rc -ne 0 ] && cat log.txt - if [ $rc -ne 0 ]; then - echo_r "Sign channel config tx for channel $channel by org $org/peer $peer failed" - else - echo "=== Sign channel config tx channel $channel by org $org/peer $peer is successful === " - fi + peer channel signconfigtx -f ${CHANNEL_ARTIFACTS}/${tx} >&log.txt + rc=$? + [ $rc -ne 0 ] && cat log.txt + if [ $rc -ne 0 ]; then + echo_r "Sign channel config tx for channel $channel by org $org/peer $peer failed" + else + echo "=== Sign channel config tx channel $channel by org $org/peer $peer is successful === " + fi } # Update a channel config # Usage: channelUpdate channel org peer orderer_url orderer_tls_rootcert transaction_file channelUpdate() { - local channel=$1 - local org=$2 - local peer=$3 - local orderer_url=$4 - local orderer_tls_rootcert=$5 - local tx=$6 - [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 + local tx=$6 + [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 - setEnvs $org $peer - echo "=== Update config on channel ${channel} === " - [ -f ${CHANNEL_ARTIFACTS}/${tx} ] || { echo_r "${tx} not exist"; exit 1; } - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer channel update \ - -c ${channel} \ - -o ${orderer_url} \ - -f ${CHANNEL_ARTIFACTS}/${tx} \ - >&log.txt - else - peer channel update \ - -c ${channel} \ - -o ${orderer_url} \ - -f ${CHANNEL_ARTIFACTS}/${tx} \ - --tls \ - --cafile ${orderer_tls_rootcert} \ - >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "peer channel update failed" - echo "=== Channel ${channel} is updated. === " - sleep 2 + setEnvs $org $peer + echo "=== Update config on channel ${channel} === " + [ -f ${CHANNEL_ARTIFACTS}/${tx} ] || { + echo_r "${tx} not exist" + exit 1 + } + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer channel update \ + -c ${channel} \ + -o ${orderer_url} \ + -f ${CHANNEL_ARTIFACTS}/${tx} \ + >&log.txt + else + peer channel update \ + -c ${channel} \ + -o ${orderer_url} \ + -f ${CHANNEL_ARTIFACTS}/${tx} \ + --tls \ + --cafile ${orderer_tls_rootcert} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "peer channel update failed" + echo "=== Channel ${channel} is updated. === " + sleep 2 } # Install chaincode on the peer node # In v2.x it will package, install and approve # chaincodeInstall peer cc_name version cc_path [lang] -chaincodeInstall () { - if [ "$#" -ne 7 ]; then - echo_r "Wrong param number for chaincode install" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 - local name=$5 - local version=$6 - local cc_path=$7 +chaincodeInstall() { + if [ "$#" -ne 7 ]; then + echo_r "Wrong param number for chaincode install" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local cc_name=$5 + local version=$6 + local cc_path=$7 - [ -z $org ] && [ -z $peer ] && [ -z $name ] && [ -z $version ] && [ -z $cc_path ] && echo_r "input param invalid" && exit -1 - echo "=== Install Chaincode on org ${org}/peer ${peer} === " - echo "name=${name}, version=${version}, path=${cc_path}" - setEnvs $org $peer - echo "packaging chaincode into tar.gz package" - local label=${name} - #local label=${name}_${version} + [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $version ] && [ -z $cc_path ] && echo_r "input param invalid" && exit -1 + echo "=== Install Chaincode on org ${org}/peer ${peer} === " + echo "cc_name=${cc_name}, version=${version}, path=${cc_path}" + setEnvs $org $peer + echo "packaging chaincode into tar.gz package" + local label=${cc_name} + #local label=${cc_name}_${version} - echo "packaging chaincode ${name} with path ${cc_path} and label ${label}" - peer lifecycle chaincode package ${name}.tar.gz \ + echo "packaging chaincode ${cc_name} with path ${cc_path} and label ${label}" + peer lifecycle chaincode package ${cc_name}.tar.gz \ --path ${cc_path} \ --lang golang \ --label ${label} - rc=$? - [ $rc -ne 0 ] && echo "Error in packaging chaincode ${name}" && exit -1 + rc=$? + [ $rc -ne 0 ] && echo "Error in packaging chaincode ${cc_name}" && exit -1 - # v1.x action - #peer chaincode install \ - # -n ${name} \ - # -v $version \ - # -p ${cc_path} \ - # >&log.txt + # v1.x action + #peer chaincode install \ + # -n ${cc_name} \ + # -v $version \ + # -p ${cc_path} \ + # >&log.txt - echo "installing chaincode to peer${peer}/org${org}" - peer lifecycle chaincode install \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - ${name}.tar.gz | tee >&log.txt - rc=$? - [ $rc -ne 0 ] && cat log.txt + echo "installing chaincode to peer${peer}/org${org}" + peer lifecycle chaincode install \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + ${cc_name}.tar.gz | tee >&log.txt + rc=$? + [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Chaincode installation on remote org ${org}/peer$peer has Failed" - echo "=== Chaincode is installed on org ${org}/peer $peer === " + verifyResult $rc "Chaincode installation on remote org ${org}/peer$peer has Failed" + echo "=== Chaincode is installed on org ${org}/peer $peer === " } # Query the installed chaincode # chaincodeQueryCommitted org peer peer_url peer_tls_root_cert -chaincodeQueryInstalled () { - if [ "$#" -ne 4 ]; then - echo_r "Wrong param number for chaincode query installed" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 +chaincodeQueryInstalled() { + if [ "$#" -ne 4 ]; then + echo_r "Wrong param number for chaincode query installed" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 - setEnvs $org $peer + setEnvs $org $peer - echo "Query the installed chaincode on peer $peer at $peer_url " - peer lifecycle chaincode queryinstalled \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - --output json \ - --connTimeout "3s" - rc=$? - [ $rc -ne 0 ] && cat log.txt - cat log.txt - verifyResult $rc "ChaincodeQueryInstalled Failed: org ${org}/peer$peer" + echo "Query the installed chaincode on peer $peer at $peer_url " + peer lifecycle chaincode queryinstalled \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --output json \ + --connTimeout "3s" + rc=$? + [ $rc -ne 0 ] && cat log.txt + cat log.txt + verifyResult $rc "ChaincodeQueryInstalled Failed: org ${org}/peer$peer" } # Get the installed chaincode packages # chaincodeGetCommitted org peer peer_url peer_tls_root_cert cc_name -chaincodeGetInstalled () { - if [ "$#" -ne 5 ]; then - echo_r "Wrong param number for chaincode get installed" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 - local cc_name=$5 +chaincodeGetInstalled() { + if [ "$#" -ne 5 ]; then + echo_r "Wrong param number for chaincode get installed" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local cc_name=$5 - setEnvs $org $peer - echo "querying installed chaincode and get its package id" - peer lifecycle chaincode queryinstalled >&query.log - local label=${cc_name} - #package_id=$(grep -o "${name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) - package_id=$(grep -o "${label}:[a-z0-9]*" query.log) + setEnvs $org $peer + echo "querying installed chaincode and get its package id" + peer lifecycle chaincode queryinstalled >&query.log + local label=${cc_name} + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + package_id=$(grep -o "${label}:[a-z0-9]*" query.log) - echo "Get the installed chaincode package with id= ${package_id} on peer $peer at $peer_url " - peer lifecycle chaincode getinstalledpackage \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - --package-id ${package_id} \ - --output-directory ./ \ - --output json \ - --connTimeout "3s" - rc=$? - [ $rc -ne 0 ] && cat log.txt - cat log.txt - verifyResult $rc "ChaincodeGetInstalled Failed: org ${org}/peer$peer" + echo "Get the installed chaincode package with id= ${package_id} on peer $peer at $peer_url " + peer lifecycle chaincode getinstalledpackage \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --package-id ${package_id} \ + --output-directory ./ \ + --output json \ + --connTimeout "3s" + rc=$? + [ $rc -ne 0 ] && cat log.txt + cat log.txt + verifyResult $rc "ChaincodeGetInstalled Failed: org ${org}/peer$peer" } - # Approve the chaincode definition -# chaincodeApproveForMyOrg channel org peer peer_url peer_tls_root_cert orderer_url orderer_tls_rootcert channel name version -chaincodeApproveForMyOrg () { - if [ "$#" -ne 9 -a "$#" -ne 11 ]; then - echo_r "Wrong param number for chaincode approve" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 - local orderer_url=$5 - local orderer_tls_rootcert=$6 - local channel=$7 - local name=$8 - local version=$9 - local collection_config="" # collection config file path for sideDB - local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy +# chaincodeApproveForMyOrg channel org peer peer_url peer_tls_root_cert orderer_url orderer_tls_rootcert channel cc_name version +chaincodeApproveForMyOrg() { + if [ "$#" -ne 9 -a "$#" -ne 11 ]; then + echo_r "Wrong param number for chaincode approve" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local orderer_url=$5 + local orderer_tls_rootcert=$6 + local channel=$7 + local cc_name=$8 + local version=$9 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy - if [ ! -z "${10}" ]; then - collection_config=${10} - fi + if [ ! -z "${10}" ]; then + collection_config=${10} + fi - if [ ! -z "${11}" ]; then - policy=${12} - fi + if [ ! -z "${11}" ]; then + policy=${12} + fi - setEnvs $org $peer - echo "querying installed chaincode and get its package id" - peer lifecycle chaincode queryinstalled >&query.log - cat query.log - local label=${name} - #package_id=$(grep -o "${name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) - package_id=$(grep -o "${label}:[a-z0-9]*" query.log) - echo "Approve package id=${package_id} by Org ${org}/Peer ${peer}" + setEnvs $org $peer + echo "querying installed chaincode and get its package id" + peer lifecycle chaincode queryinstalled >&query.log + cat query.log + local label=${cc_name} + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + package_id=$(grep -o "${label}:[a-z0-9]*" query.log) + echo "Approve package id=${package_id} by Org ${org}/Peer ${peer}" - # use the --init-required flag to request the ``Init`` function be invoked to initialize the chaincode - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer lifecycle chaincode approveformyorg \ - --peerAddresses ${peer_url} \ - --channelID ${channel} \ - --name ${name} \ - --version ${version} \ - --init-required \ - --package-id ${package_id} \ - --sequence 1 \ - --signature-policy "${policy}" \ - --waitForEvent \ - --orderer ${orderer_url} >&log.txt - else - peer lifecycle chaincode approveformyorg \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - --channelID ${channel} \ - --name ${name} \ - --version ${version} \ - --init-required \ - --package-id ${package_id} \ - --sequence 1 \ - --signature-policy "${policy}" \ - --waitForEvent \ - --orderer ${orderer_url} \ - --tls true \ - --cafile ${orderer_tls_rootcert} >&log.txt - fi + # use the --init-required flag to request the ``Init`` function be invoked to initialize the chaincode + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer lifecycle chaincode approveformyorg \ + --peerAddresses ${peer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --package-id ${package_id} \ + --sequence 1 \ + --signature-policy "${policy}" \ + --waitForEvent \ + --orderer ${orderer_url} >&log.txt + else + peer lifecycle chaincode approveformyorg \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --package-id ${package_id} \ + --sequence 1 \ + --signature-policy "${policy}" \ + --waitForEvent \ + --orderer ${orderer_url} \ + --tls true \ + --cafile ${orderer_tls_rootcert} >&log.txt + fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Chaincode Approval on remote org ${org}/peer$peer has Failed" - echo "=== Chaincode is approved on remote peer$peer === " + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode Approval on remote org ${org}/peer$peer has Failed" + echo "=== Chaincode is approved on remote peer$peer === " } -# Query the Approve the chaincode definition -# chaincodeCheckCommitReadiness channel org peer name version sequence -chaincodeCheckCommitReadiness () { - if [ "$#" -ne 8 ]; then - echo_r "Wrong param number for chaincode queryapproval" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 - local channel=$5 - local name=$6 - local version=$7 - local sequence=$8 +# Query the Approved chaincode definition +# chaincodeQueryApproved org peer peer_url peer_tls_root_cert channel cc_name +chaincodeQueryApproved() { + if [ "$#" -ne 6 ]; then + echo_r "Wrong param number for chaincode queryapproved" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local channel=$5 + local cc_name=$6 - setEnvs $org $peer + setEnvs $org $peer - echo "checkcommitreadiness with chaincode $name $version $sequence" - peer lifecycle chaincode checkcommitreadiness \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - --channelID ${channel} \ - --name ${name} \ - --output json \ - --version ${version} \ - --sequence ${sequence} + echo "Query the approved chaincode definition of $cc_name with ${peer_url} " + env | grep CORE_PEER + peer lifecycle chaincode queryapproved \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --name ${cc_name} \ + --output json - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "ChaincodeQueryApproval Failed: org ${org}/peer$peer" + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeQueryApproved Failed: org ${org}/peer$peer" +} + +# Check the commitReadiness of the chaincode definition +# chaincodeCheckCommitReadiness channel org peer cc_name version sequence +chaincodeCheckCommitReadiness() { + if [ "$#" -ne 8 ]; then + echo_r "Wrong param number for chaincode queryapproval" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local channel=$5 + local cc_name=$6 + local version=$7 + local sequence=$8 + + setEnvs $org $peer + + echo "checkcommitreadiness with chaincode $cc_name $version $sequence" + peer lifecycle chaincode checkcommitreadiness \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --name ${cc_name} \ + --output json \ + --version ${version} \ + --sequence ${sequence} + + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeQueryApproval Failed: org ${org}/peer$peer" } # Anyone can commit the chaincode definition once it's approved by major -# chaincodeCommit org peer channel orderer_url orderer_tls_rootcert name version [collection-config] [endorse-policy] -chaincodeCommit () { - if [ "$#" -ne 7 -a "$#" -ne 9 ]; then - echo_r "Wrong param number for chaincode commit" - exit -1 - fi - local org=$1 - local peer=$2 - local channel=$3 - local orderer_url=$4 - local orderer_tls_rootcert=$5 - local name=$6 - local version=$7 - local collection_config="" # collection config file path for sideDB - local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy +# chaincodeCommit org peer channel orderer_url orderer_tls_rootcert cc_name version [collection-config] [endorse-policy] +chaincodeCommit() { + if [ "$#" -ne 7 -a "$#" -ne 9 ]; then + echo_r "Wrong param number for chaincode commit" + exit -1 + fi + local org=$1 + local peer=$2 + local channel=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 + local cc_name=$6 + local version=$7 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy - if [ ! -z "$8" ]; then - collection_config=$8 - fi + if [ ! -z "$8" ]; then + collection_config=$8 + fi - if [ ! -z "$9" ]; then - policy=$9 # chaincode endorsement policy - fi + if [ ! -z "$9" ]; then + policy=$9 # chaincode endorsement policy + fi - setEnvs $org $peer - echo "querying installed chaincode and get its package id" - peer lifecycle chaincode queryinstalled >&query.log - label=${name} - #package_id=$(grep -o "${name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) - package_id=$(grep -o "${label}:[a-z0-9]*" query.log) - echo "package_id=${package_id}" + setEnvs $org $peer + echo "querying installed chaincode and get its package id" + peer lifecycle chaincode queryinstalled >&query.log + label=${cc_name} + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + package_id=$(grep -o "${label}:[a-z0-9]*" query.log) + echo "package_id=${package_id}" - echo "Committing package id=${package_id} by Org ${org}/Peer ${peer}" - # use the --init-required flag to request the ``Init`` function be invoked to initialize the chaincode - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer lifecycle chaincode commit \ - -o ${orderer_url} \ - --channelID ${channel} \ - --name ${name} \ - --version ${version} \ - --init-required \ - --sequence 1 \ - --peerAddresses ${ORG1_PEER0_URL} \ + echo "Committing package id=${package_id} by Org ${org}/Peer ${peer}" + # use the --init-required flag to request the ``Init`` function be invoked to initialize the chaincode + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer lifecycle chaincode commit \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --sequence 1 \ + --peerAddresses ${ORG1_PEER0_URL} \ --tlsRootCertFiles ${ORG1_PEER0_TLS_ROOTCERT} \ --peerAddresses ${ORG2_PEER0_URL} \ --tlsRootCertFiles ${ORG2_PEER0_TLS_ROOTCERT} \ - --waitForEvent \ - --collections-config "${collection_config}" \ - --signature-policy "${policy}" - else - peer lifecycle chaincode commit \ - -o ${orderer_url} \ - --channelID ${channel} \ - --name ${name} \ - --version ${version} \ - --init-required \ - --sequence 1 \ - --peerAddresses ${ORG1_PEER0_URL} \ + --waitForEvent \ + --collections-config "${collection_config}" \ + --signature-policy "${policy}" + else + peer lifecycle chaincode commit \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --sequence 1 \ + --peerAddresses ${ORG1_PEER0_URL} \ --tlsRootCertFiles ${ORG1_PEER0_TLS_ROOTCERT} \ --peerAddresses ${ORG2_PEER0_URL} \ --tlsRootCertFiles ${ORG2_PEER0_TLS_ROOTCERT} \ - --waitForEvent \ - --collections-config "${collection_config}" \ - --signature-policy "${policy}" \ - --tls true \ - --cafile ${orderer_tls_rootcert} >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Chaincode Commit on remote org ${org}/peer$peer has Failed" - echo "=== Chaincode is committed on channel $channel === " + --waitForEvent \ + --collections-config "${collection_config}" \ + --signature-policy "${policy}" \ + --tls true \ + --cafile ${orderer_tls_rootcert} >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode Commit on remote org ${org}/peer$peer has Failed" + echo "=== Chaincode is committed on channel $channel === " } # Query the Commit the chaincode definition # chaincodeQueryCommitted org peer peer_url peer_tls_root_cert channel cc_name -chaincodeQueryCommitted () { - if [ "$#" -ne 6 ]; then - echo_r "Wrong param number for chaincode querycommit" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 - local channel=$5 - local name=$6 +chaincodeQueryCommitted() { + if [ "$#" -ne 6 ]; then + echo_r "Wrong param number for chaincode querycommit" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local channel=$5 + local cc_name=$6 - setEnvs $org $peer + setEnvs $org $peer - echo "Query the committed status of chaincode $name with ${ORG1_PEER0_URL} " - peer lifecycle chaincode querycommitted \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - --channelID ${channel} \ - --output json \ - --name ${name} + echo "Query the committed status of chaincode $cc_name with ${peer_url} " + peer lifecycle chaincode querycommitted \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --output json \ + --name ${cc_name} - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "ChaincodeQueryCommit Failed: org ${org}/peer$peer" + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeQueryCommit Failed: org ${org}/peer$peer" } # Instantiate chaincode on specifized peer node -# chaincodeInstantiate channel org peer orderer_url name version args -chaincodeInstantiate () { - if [ "$#" -gt 9 -a "$#" -lt 7 ]; then - echo_r "Wrong param number for chaincode instantaite" - exit -1 - fi - local channel=$1 - local org=$2 - local peer=$3 - local orderer_url=$4 - local name=$5 - local version=$6 - local args=$7 - local collection_config="" # collection config file path for sideDB - local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy +# chaincodeInstantiate channel org peer orderer_url cc_name version args +chaincodeInstantiate() { + if [ "$#" -gt 9 -a "$#" -lt 7 ]; then + echo_r "Wrong param number for chaincode instantaite" + exit -1 + fi + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local cc_name=$5 + local version=$6 + local args=$7 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy - if [ ! -z "$8" ]; then - collection_config=$8 - fi + if [ ! -z "$8" ]; then + collection_config=$8 + fi - if [ ! -z "$9" ]; then - policy=$9 - fi + if [ ! -z "$9" ]; then + policy=$9 + fi - setEnvs $org $peer - echo "=== chaincodeInstantiate for channel ${channel} on org $org/peer $peer ====" - echo "name=${name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" - # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), - # lets supply it directly as we know it using the "-o" option - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer chaincode instantiate \ - -o ${orderer_url} \ - -C ${channel} \ - -n ${name} \ - -v ${version} \ - -c ${args} \ - -P "${policy}" \ - --collections-config "${collection_config}" \ - >&log.txt - else - peer chaincode instantiate \ - -o ${orderer_url} \ - -C ${channel} \ - -n ${name} \ - -v ${version} \ - -c ${args} \ - -P "${policy}" \ - --collections-config "${collection_config}" \ - --tls \ - --cafile ${ORDERER0_TLS_CA} \ - >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "ChaincodeInstantiation on org $org/peer$peer in channel ${channel} failed" - echo "=== Chaincode Instantiated in channel ${channel} by peer$peer ===" + setEnvs $org $peer + echo "=== chaincodeInstantiate for channel ${channel} on org $org/peer $peer ====" + echo "cc_name=${cc_name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode instantiate \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + >&log.txt + else + peer chaincode instantiate \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + --tls \ + --cafile ${ORDERER0_TLS_CA} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeInstantiation on org $org/peer$peer in channel ${channel} failed" + echo "=== Chaincode Instantiated in channel ${channel} by peer$peer ===" } # Invoke the Init func of chaincode to start the container -# Usage: chaincodeInit org peer channel orderer name args peer_url peer_org_tlsca -chaincodeInit () { - if [ "$#" -ne 8 ]; then - echo_r "Wrong param number for chaincode Init" - exit -1 - fi - local org=$1 - local peer=$2 - local channel=$3 - local orderer=$4 - local name=$5 - local args=$6 - local peer_url=$7 - local peer_org_tlsca=$8 +# Usage: chaincodeInit org peer channel orderer cc_name args peer_url peer_org_tlsca +chaincodeInit() { + if [ "$#" -ne 8 ]; then + echo_r "Wrong param number for chaincode Init" + exit -1 + fi + local org=$1 + local peer=$2 + local channel=$3 + local orderer=$4 + local cc_name=$5 + local args=$6 + local peer_url=$7 + local peer_org_tlsca=$8 - [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 - echo "=== chaincodeInit to orderer by id of org${org}/peer${peer} === " - echo "channel=${channel}, name=${name}, args=${args}" - setEnvs $org $peer - # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), - # lets supply it directly as we know it using the "-o" option - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer chaincode invoke \ - -o ${orderer} \ - --channelID ${channel} \ - --name ${name} \ - --peerAddresses ${peer_url} \ + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + echo "=== chaincodeInit to orderer by id of org${org}/peer${peer} === " + echo "channel=${channel}, cc_name=${cc_name}, args=${args}" + setEnvs $org $peer + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode invoke \ + -o ${orderer} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_org_tlsca} \ - --isInit \ - -c ${args} \ - >&log.txt - else - peer chaincode invoke \ - -o ${orderer} \ - --channelID ${channel} \ - --name ${name} \ - --peerAddresses ${peer_url} \ + --isInit \ + -c ${args} \ + >&log.txt + else + peer chaincode invoke \ + -o ${orderer} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_org_tlsca} \ - --isInit \ - -c ${args} \ - --tls \ - --cafile ${ORDERER0_TLS_CA} \ - >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Chaincode Init failed: peer$peer in channel ${channel}" - echo "=== Chaincode Init done: peer$peer in channel ${channel} === " + --isInit \ + -c ${args} \ + --tls \ + --cafile ${ORDERER0_TLS_CA} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode Init failed: peer$peer in channel ${channel}" + echo "=== Chaincode Init done: peer$peer in channel ${channel} === " } -# Usage: chaincodeInvoke org peer channel orderer name args peer_url peer_org_tlsca -chaincodeInvoke () { - if [ "$#" -ne 9 ]; then - echo_r "Wrong param number for chaincode Invoke" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_org_tlsca=$4 - local channel=$5 - local orderer_url=$6 - local orderer_tls_rootcert=$7 - local name=$8 - local args=$9 +# Usage: chaincodeInvoke org peer channel orderer cc_name args peer_url peer_org_tlsca +chaincodeInvoke() { + if [ "$#" -ne 9 ]; then + echo_r "Wrong param number for chaincode Invoke" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_org_tlsca=$4 + local channel=$5 + local orderer_url=$6 + local orderer_tls_rootcert=$7 + local cc_name=$8 + local args=$9 - [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 - echo "=== chaincodeInvoke to orderer by id of org${org}/peer${peer} === " - echo "channel=${channel}, name=${name}, args=${args}" - setEnvs $org $peer - # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), - # lets supply it directly as we know it using the "-o" option - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer chaincode invoke \ - -o ${orderer_url} \ - --channelID ${channel} \ - --name ${name} \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_org_tlsca} \ - -c ${args} \ - >&log.txt - else - peer chaincode invoke \ - -o ${orderer_url} \ - --channelID ${channel} \ - --name ${name} \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_org_tlsca} \ - -c ${args} \ - --tls \ - --cafile ${orderer_tls_rootcert} \ - >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Invoke execution on peer$peer failed " - echo "=== Invoke transaction on peer$peer in channel ${channel} is successful === " + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + echo "=== chaincodeInvoke to orderer by id of org${org}/peer${peer} === " + echo "channel=${channel}, cc_name=${cc_name}, args=${args}" + setEnvs $org $peer + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode invoke \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_org_tlsca} \ + -c ${args} \ + >&log.txt + else + peer chaincode invoke \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_org_tlsca} \ + -c ${args} \ + --tls \ + --cafile ${orderer_tls_rootcert} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Invoke execution on peer$peer failed " + echo "=== Invoke transaction on peer$peer in channel ${channel} is successful === " } -# query org peer channel name args expected_result -chaincodeQuery () { - if [ "$#" -ne 7 -a "$#" -ne 8 ]; then - echo_r "Wrong param number $# for chaincode Query" - echo $* - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_org_tlsca=$4 - local channel=$5 - local name=$6 - local args=$7 - local expected_result="" +# query org peer channel cc_name args expected_result +chaincodeQuery() { + if [ "$#" -ne 7 -a "$#" -ne 8 ]; then + echo_r "Wrong param number $# for chaincode Query" + echo $* + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_org_tlsca=$4 + local channel=$5 + local cc_name=$6 + local args=$7 + local expected_result="" - [ $# -eq 8 ] && local expected_result=$8 + [ $# -eq 8 ] && local expected_result=$8 - [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 - echo "=== chaincodeQuery to org $org/peer $peer === " - echo "channel=${channel}, name=${name}, args=${args}, expected_result=${expected_result}" - local rc=1 - local starttime=$(date +%s) + echo "=== chaincodeQuery to org $org/peer $peer === " + echo "channel=${channel}, cc_name=${cc_name}, args=${args}, expected_result=${expected_result}" + local rc=1 + local starttime=$(date +%s) - setEnvs $org $peer + setEnvs $org $peer - # we either get a successful response, or reach TIMEOUT - while [ "$(($(date +%s)-starttime))" -lt "$TIMEOUT" -a $rc -ne 0 ]; do - echo "Attempting to Query org ${org}/peer ${peer} ...$(($(date +%s)-starttime)) secs" - peer chaincode query \ - -C "${channel}" \ - -n "${name}" \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_org_tlsca} \ - -c "${args}" \ - >&log.txt - rc=$? - if [ -n "${expected_result}" ]; then # need to check the result - test $? -eq 0 && VALUE=$(cat log.txt | awk 'END {print $NF}') - if [ "$VALUE" = "${expected_result}" ]; then - let rc=0 - echo_b "$VALUE == ${expected_result}, passed" - else - let rc=1 - echo_b "$VALUE != ${expected_result}, will retry" - fi - fi - if [ $rc -ne 0 ]; then - cat log.txt - sleep 2 - fi - done + # we either get a successful response, or reach TIMEOUT + while [ "$(($(date +%s) - starttime))" -lt "$TIMEOUT" -a $rc -ne 0 ]; do + echo "Attempting to Query org ${org}/peer ${peer} ...$(($(date +%s) - starttime)) secs" + peer chaincode query \ + -C "${channel}" \ + -n "${cc_name}" \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_org_tlsca} \ + -c "${args}" \ + >&log.txt + rc=$? + if [ -n "${expected_result}" ]; then # need to check the result + test $? -eq 0 && VALUE=$(cat log.txt | awk 'END {print $NF}') + if [ "$VALUE" = "${expected_result}" ]; then + let rc=0 + echo_b "$VALUE == ${expected_result}, passed" + else + let rc=1 + echo_b "$VALUE != ${expected_result}, will retry" + fi + fi + if [ $rc -ne 0 ]; then + cat log.txt + sleep 2 + fi + done - # rc==0, or timeout - if [ $rc -eq 0 ]; then - echo "=== Query is done: org $org/peer$peer in channel ${channel} === " - else - echo_r "=== Query failed: org $org/peer$peer, run `make stop clean` to clean ===" - exit 1 - fi + # rc==0, or timeout + if [ $rc -eq 0 ]; then + echo "=== Query is done: org $org/peer$peer in channel ${channel} === " + else + echo_r "=== Query failed: org $org/peer$peer, run $(make stop clean) to clean ===" + exit 1 + fi } # List Installed chaincode on specified peer node, and instantiated chaincodes at specific channel # chaincodeList org1 peer0 businesschannel -chaincodeList () { - local org=$1 - local peer=$2 - local channel=$3 +chaincodeList() { + local org=$1 + local peer=$2 + local channel=$3 - [ -z $org ] && [ -z $peer ] && [ -z $channel ] && echo_r "input param invalid" && exit -1 - echo "=== ChaincodeList on org ${org}/peer ${peer} === " - setEnvs $org $peer - echo_b "Get installed chaincodes at peer$peer.org$org" - peer chaincode list \ - --installed > log.txt & - # \ - #--peerAddresses "peer${peer}.org${org}.example.com" --tls false - rc=$? - [ $rc -ne 0 ] && cat log.txt + [ -z $org ] && [ -z $peer ] && [ -z $channel ] && echo_r "input param invalid" && exit -1 + echo "=== ChaincodeList on org ${org}/peer ${peer} === " + setEnvs $org $peer + echo_b "Get installed chaincodes at peer$peer.org$org" + peer chaincode list \ + --installed >log.txt & + # \ + #--peerAddresses "peer${peer}.org${org}.example.com" --tls false + rc=$? + [ $rc -ne 0 ] && cat log.txt verifyResult $rc "List installed chaincodes on remote org ${org}/peer$peer has Failed" - echo_b "Get instantiated chaincodes at channel $org" - peer chaincode list \ - --instantiated \ - -C ${channel} > log.txt & - rc=$? - [ $rc -ne 0 ] && cat log.txt + echo_b "Get instantiated chaincodes at channel $org" + peer chaincode list \ + --instantiated \ + -C ${channel} >log.txt & + rc=$? + [ $rc -ne 0 ] && cat log.txt verifyResult $rc "List installed chaincodes on remote org ${org}/peer$peer has Failed" - echo "=== ChaincodeList is done at peer${peer}.org${org} === " + echo "=== ChaincodeList is done at peer${peer}.org${org} === " } # Start chaincode with dev mode # TODO: use variables instead of hard-coded value -chaincodeStartDev () { - local peer=$1 - local version=$2 - [ -z $peer ] && [ -z $version ] && echo_r "input param invalid" && exit -1 - setEnvs 1 0 - CORE_CHAINCODE_LOGLEVEL=debug \ - CORE_PEER_ADDRESS=peer${peer}.org1.example.com:7052 \ - CORE_CHAINCODE_ID_NAME=${CC_02_NAME}:${version} \ - nohup ./scripts/chaincode_example02 > chaincode_dev.log & - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Chaincode start in dev mode has Failed" - echo "=== Chaincode started in dev mode === " +chaincodeStartDev() { + local peer=$1 + local version=$2 + [ -z $peer ] && [ -z $version ] && echo_r "input param invalid" && exit -1 + setEnvs 1 0 + CORE_CHAINCODE_LOGLEVEL=debug \ + CORE_PEER_ADDRESS=peer${peer}.org1.example.com:7052 \ + CORE_CHAINCODE_ID_NAME=${CC_02_NAME}:${version} \ + nohup ./scripts/chaincode_example02 >chaincode_dev.log & + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode start in dev mode has Failed" + echo "=== Chaincode started in dev mode === " } -# chaincodeUpgrade channel org peer orderer_url name version args -chaincodeUpgrade () { - if [ "$#" -gt 9 -a "$#" -lt 7 ]; then - echo_r "Wrong param number for chaincode instantaite" - exit -1 - fi - local channel=$1 - local org=$2 - local peer=$3 - local orderer_url=$4 - local name=$5 - local version=$6 - local args=$7 - local collection_config="" # collection config file path for sideDB - local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy +# chaincodeUpgrade channel org peer orderer_url cc_name version args +chaincodeUpgrade() { + if [ "$#" -gt 9 -a "$#" -lt 7 ]; then + echo_r "Wrong param number for chaincode instantaite" + exit -1 + fi + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local cc_name=$5 + local version=$6 + local args=$7 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy - echo "=== chaincodeUpgrade to orderer by id of org ${org}/peer $peer === " - echo "name=${name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" + echo "=== chaincodeUpgrade to orderer by id of org ${org}/peer $peer === " + echo "cc_name=${cc_name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" - setEnvs $org $peer - # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), - # lets supply it directly as we know it using the "-o" option - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer chaincode upgrade \ - -o ${orderer_url} \ - -C ${channel} \ - -n ${name} \ - -v ${version} \ - -c ${args} \ - -P "${policy}" \ - --collections-config "${collection_config}" \ - >&log.txt - else - peer chaincode upgrade \ - -o ${orderer_url} \ - -C ${channel} \ - -n ${name} \ - -v ${version} \ - -c ${args} \ - -P "${policy}" \ - --collections-config "${collection_config}" \ - --tls \ - --cafile ${ORDERER0_TLS_CA} \ - >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Upgrade execution on peer$peer failed " - echo "=== Upgrade transaction on peer$peer in channel ${channel} is successful === " + setEnvs $org $peer + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode upgrade \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + >&log.txt + else + peer chaincode upgrade \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + --tls \ + --cafile ${ORDERER0_TLS_CA} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Upgrade execution on peer$peer failed " + echo "=== Upgrade transaction on peer$peer in channel ${channel} is successful === " } # configtxlator encode json to pb # Usage: configtxlatorEncode msgType input output configtxlatorEncode() { - local msgType=$1 - local input=$2 - local output=$3 + local msgType=$1 + local input=$2 + local output=$3 - echo "Encode $input --> $output using type $msgType" - docker exec -it ${CTL_CONTAINER} configtxlator proto_encode \ - --type=${msgType} \ - --input=${input} \ - --output=${output} + echo "Encode $input --> $output using type $msgType" + docker exec -it ${CTL_CONTAINER} configtxlator proto_encode \ + --type=${msgType} \ + --input=${input} \ + --output=${output} - #curl -sX POST \ - # --data-binary @${input} \ - # ${CTL_ENCODE_URL}/${msgType} \ - # >${output} + #curl -sX POST \ + # --data-binary @${input} \ + # ${CTL_ENCODE_URL}/${msgType} \ + # >${output} } # configtxlator decode pb to json # Usage: configtxlatorEncode msgType input output configtxlatorDecode() { - local msgType=$1 - local input=$2 - local output=$3 + local msgType=$1 + local input=$2 + local output=$3 - echo "Config Decode $input --> $output using type $msgType" - if [ ! -f $input ]; then - echo_r "input file not found" - exit 1 - fi + echo "Config Decode $input --> $output using type $msgType" + if [ ! -f $input ]; then + echo_r "input file not found" + exit 1 + fi - docker exec -it ${CTL_CONTAINER} configtxlator proto_decode \ - --type=${msgType} \ - --input=${input} \ - --output=${output} + docker exec -it ${CTL_CONTAINER} configtxlator proto_decode \ + --type=${msgType} \ + --input=${input} \ + --output=${output} - #curl -sX POST \ - # --data-binary @"${input}" \ - # "${CTL_DECODE_URL}/${msgType}" \ - # > "${output}" + #curl -sX POST \ + # --data-binary @"${input}" \ + # "${CTL_DECODE_URL}/${msgType}" \ + # > "${output}" } # compute diff between two pb # Usage: configtxlatorCompare channel origin updated output configtxlatorCompare() { - local channel=$1 - local origin=$2 - local updated=$3 - local output=$4 + local channel=$1 + local origin=$2 + local updated=$3 + local output=$4 - echo "Config Compare $origin vs $updated > ${output} in channel $channel" - if [ ! -f $origin ] || [ ! -f $updated ]; then - echo_r "input file not found" - exit 1 - fi + echo "Config Compare $origin vs $updated > ${output} in channel $channel" + if [ ! -f $origin ] || [ ! -f $updated ]; then + echo_r "input file not found" + exit 1 + fi - docker exec -it ${CTL_CONTAINER} configtxlator compute_update \ - --original=${origin} \ - --updated=${updated} \ - --channel_id=${channel} \ - --output=${output} + docker exec -it ${CTL_CONTAINER} configtxlator compute_update \ + --original=${origin} \ + --updated=${updated} \ + --channel_id=${channel} \ + --output=${output} - #curl -sX POST \ - # -F channel="${channel}" \ - # -F "original=@${origin}" \ - # -F "updated=@${updated}" \ - # "${CTL_COMPARE_URL}" \ - # > "${output}" + #curl -sX POST \ + # -F channel="${channel}" \ + # -F "original=@${origin}" \ + # -F "updated=@${updated}" \ + # "${CTL_COMPARE_URL}" \ + # > "${output}" - [ $? -eq 0 ] || echo_r "Failed to compute config update" + [ $? -eq 0 ] || echo_r "Failed to compute config update" } # Run cmd inside the config generator container gen_con_exec() { - docker exec -it $GEN_CONTAINER "$@" -} \ No newline at end of file + docker exec -it $GEN_CONTAINER "$@" +} diff --git a/hyperledger_fabric/latest/scripts/test_cc_queryapproved.sh b/hyperledger_fabric/latest/scripts/test_cc_queryapproved.sh new file mode 100644 index 00000000..f1ad2ca0 --- /dev/null +++ b/hyperledger_fabric/latest/scripts/test_cc_queryapproved.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_PATH=${CC_PATH:-$CC_02_PATH} + +echo_b "=== Query Approved Chaincode for ${CC_NAME} on all organizations ... ===" + +for org in "${ORGS[@]}" +do + t="\${ORG${org}_PEER0_URL}" && peer_url=`eval echo $t` + t="\${ORG${org}_PEER0_TLS_ROOTCERT}" && peer_tls_rootcert=`eval echo $t` + chaincodeQueryApproved "$org" 0 ${peer_url} ${peer_tls_rootcert} "${APP_CHANNEL}" ${CC_NAME} +done + +echo_g "=== Query Approved Chaincode done ===" + +echo diff --git a/hyperledger_fabric/latest/scripts/variables.sh b/hyperledger_fabric/latest/scripts/variables.sh index b1f38bc9..36ad6c85 100644 --- a/hyperledger_fabric/latest/scripts/variables.sh +++ b/hyperledger_fabric/latest/scripts/variables.sh @@ -22,8 +22,8 @@ TIMEOUT="90" MAX_RETRY=10 # Organization and peers -ORGS=( 1 2 ) -PEERS=( 0 1 ) +ORGS=(1 2) +PEERS=(0 1) #: "${ORGS:=( 1 2 )}" #: "${PEERS:=( 0 1 )}" @@ -81,12 +81,12 @@ CC_MARBLES_NAME="marblesp" CC_MARBLES_PATH="chaincodes/go/marbles02_private/go" CC_MARBLES_INIT_ARGS='{"Args":["init"]}' CC_MARBLES_UPGRADE_ARGS='{"Args":["upgrade",""]}' -CC_MARBLES_INVOKE_INIT_ARGS='{"Args":["initMarble","marble1","blue","10","tom","100"]}' # price is in collectionMarblePrivateDetails +CC_MARBLES_INVOKE_INIT_ARGS='{"Args":["initMarble","marble1","blue","10","tom","100"]}' # price is in collectionMarblePrivateDetails CC_MARBLES_INVOKE_INIT_ARGS_2='{"Args":["initMarble","marble2","blue","10","tom","100"]}' # price is in collectionMarblePrivateDetails -CC_MARBLES_INVOKE_TRANSFER_ARGS='{"Args":["transferMarble","marble1","jerry"]}' # price is in collectionMarblePrivateDetails -CC_MARBLES_QUERY_READ_ARGS='{"Args":["readMarble","marble1"]}' # this requires 'collectionMarbles' collection -CC_MARBLES_QUERY_READPVTDETAILS_ARGS='{"Args":["readMarblePrivateDetails","marble1"]}' # this requires 'collectionMarblePrivateDetails' collection -CC_MARBLES_QUERY_READPVTDETAILS_ARGS_2='{"Args":["readMarblePrivateDetails","marble2"]}' # this requires 'collectionMarblePrivateDetails' collection +CC_MARBLES_INVOKE_TRANSFER_ARGS='{"Args":["transferMarble","marble1","jerry"]}' # price is in collectionMarblePrivateDetails +CC_MARBLES_QUERY_READ_ARGS='{"Args":["readMarble","marble1"]}' # this requires 'collectionMarbles' collection +CC_MARBLES_QUERY_READPVTDETAILS_ARGS='{"Args":["readMarblePrivateDetails","marble1"]}' # this requires 'collectionMarblePrivateDetails' collection +CC_MARBLES_QUERY_READPVTDETAILS_ARGS_2='{"Args":["readMarblePrivateDetails","marble2"]}' # this requires 'collectionMarblePrivateDetails' collection CC_MARBLES_COLLECTION_CONFIG="/go/src/chaincodes/go/marbles02_private/collections_config.json" CC_MARBLES_COLLECTION_CONFIG_NEW="/go/src/chaincodes/go/marbles02_private/collections_config_new.json" @@ -101,7 +101,7 @@ CC_INVOKE_ARGS=${CC_02_INVOKE_ARGS} CC_QUERY_ARGS=${CC_02_QUERY_ARGS} # Generate configs -GEN_IMG=yeasy/hyperledger-fabric:${FABRIC_IMG_TAG} # working dir is `/go/src/github.com/hyperledger/fabric` +GEN_IMG=yeasy/hyperledger-fabric:${FABRIC_IMG_TAG} # working dir is `/go/src/github.com/hyperledger/fabric` GEN_CONTAINER=generator FABRIC_CFG_PATH=/etc/hyperledger/fabric CHANNEL_ARTIFACTS=channel-artifacts diff --git a/hyperledger_fabric/v2.2.0/scripts/download_images.sh b/hyperledger_fabric/v2.2.0/scripts/download_images.sh index b18fbbd8..86bad6a5 100644 --- a/hyperledger_fabric/v2.2.0/scripts/download_images.sh +++ b/hyperledger_fabric/v2.2.0/scripts/download_images.sh @@ -44,14 +44,14 @@ done pull_image yeasy/hyperledger-fabric:$FABRIC_IMG_TAG "true" # pull_image yeasy/blockchain-explorer:0.1.0-preview # TODO: wait for official images -echo "=== Pulling fabric core images ${FABRIC_IMG_TAG} from fabric repo... ===" -for IMG in peer orderer ca tools; do - pull_image hyperledger/fabric-${IMG}:$FABRIC_IMG_TAG & # e.g., v2.0.0 -done +#echo "=== Pulling fabric core images ${FABRIC_IMG_TAG} from fabric repo... ===" +#for IMG in peer orderer ca tools; do +# pull_image hyperledger/fabric-${IMG}:$FABRIC_IMG_TAG & # e.g., v2.3.0 +#done echo "=== Pulling fabric chaincode images ${TWO_DIGIT_VERSION} from fabric repo... ===" for IMG in ccenv baseos javaenv nodeenv; do - pull_image hyperledger/fabric-${IMG}:${TWO_DIGIT_VERSION} & # e.g., v2.0 + pull_image hyperledger/fabric-${IMG}:${TWO_DIGIT_VERSION} & # e.g., v2.2 done # TODO: dockerhub fabric-ccenv:2.0 image is too old diff --git a/hyperledger_fabric/v2.2.0/scripts/func.sh b/hyperledger_fabric/v2.2.0/scripts/func.sh index 2ed98567..1781c83c 100644 --- a/hyperledger_fabric/v2.2.0/scripts/func.sh +++ b/hyperledger_fabric/v2.2.0/scripts/func.sh @@ -1,47 +1,47 @@ #!/usr/bin/env bash -echo_r () { - [ $# -ne 1 ] && return 0 - echo -e "\033[31m$1\033[0m" +echo_r() { + [ $# -ne 1 ] && return 0 + echo -e "\033[31m$1\033[0m" } -echo_g () { - [ $# -ne 1 ] && return 0 - echo -e "\033[32m$1\033[0m" +echo_g() { + [ $# -ne 1 ] && return 0 + echo -e "\033[32m$1\033[0m" } -echo_y () { - [ $# -ne 1 ] && return 0 - echo -e "\033[33m$1\033[0m" +echo_y() { + [ $# -ne 1 ] && return 0 + echo -e "\033[33m$1\033[0m" } -echo_b () { - [ $# -ne 1 ] && return 0 - echo -e "\033[34m$1\033[0m" +echo_b() { + [ $# -ne 1 ] && return 0 + echo -e "\033[34m$1\033[0m" } # Define those global variables if [ -f ./variables.sh ]; then - source ./variables.sh + source ./variables.sh elif [ -f scripts/variables.sh ]; then - source scripts/variables.sh + source scripts/variables.sh else - echo_r "Cannot find the variables.sh files, pls check" - exit 1 + echo_r "Cannot find the variables.sh files, pls check" + exit 1 fi # Verify $1 is not 0, then output error msg $2 and exit -verifyResult () { - if [ $1 -ne 0 ] ; then - echo "$2" - echo_r "=== ERROR !!! FAILED to execute End-2-End Scenario ===" - exit 1 - fi +verifyResult() { + if [ $1 -ne 0 ]; then + echo "$2" + echo_r "=== ERROR !!! FAILED to execute End-2-End Scenario ===" + exit 1 + fi } # set env to use orderOrg's identity -setOrdererEnvs () { - export CORE_PEER_LOCALMSPID="OrdererMSP" - export CORE_PEER_MSPCONFIGPATH=${ORDERER0_ADMIN_MSP} - export CORE_PEER_TLS_ROOTCERT_FILE=${ORDERER0_TLS_ROOTCERT} - #t="\${ORG${org}_PEER${peer}_URL}" && CORE_PEER_ADDRESS=`eval echo $t` +setOrdererEnvs() { + export CORE_PEER_LOCALMSPID="OrdererMSP" + export CORE_PEER_MSPCONFIGPATH=${ORDERER0_ADMIN_MSP} + export CORE_PEER_TLS_ROOTCERT_FILE=${ORDERER0_TLS_ROOTCERT} + #t="\${ORG${org}_PEER${peer}_URL}" && CORE_PEER_ADDRESS=`eval echo $t` } # Set global env variables for fabric cli, after setting: @@ -55,1043 +55,1049 @@ setOrdererEnvs () { # CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # remote peer to send proposal to # Usage: setEnvs org peer -setEnvs () { - local org=$1 # 1 or 2 - local peer=$2 # 0 or 1 - [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 +setEnvs() { + local org=$1 # 1 or 2 + local peer=$2 # 0 or 1 + [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 - local t="" - export CORE_PEER_LOCALMSPID="Org${org}MSP" - #CORE_PEER_MSPCONFIGPATH=\$${ORG${org}_ADMIN_MSP} - t="\${ORG${org}_PEER${peer}_URL}" && export CORE_PEER_ADDRESS=`eval echo $t` # this is not needed if specifying peerAddresses - t="\${ORG${org}_ADMIN_MSP}" && export CORE_PEER_MSPCONFIGPATH=`eval echo $t` - t="\${ORG${org}_PEER${peer}_TLS_ROOTCERT}" && export CORE_PEER_TLS_ROOTCERT_FILE=`eval echo $t` + local t="" + export CORE_PEER_LOCALMSPID="Org${org}MSP" + #CORE_PEER_MSPCONFIGPATH=\$${ORG${org}_ADMIN_MSP} + t="\${ORG${org}_PEER${peer}_URL}" && export CORE_PEER_ADDRESS=$(eval echo $t) # this is not needed if specifying peerAddresses + t="\${ORG${org}_ADMIN_MSP}" && export CORE_PEER_MSPCONFIGPATH=$(eval echo $t) + t="\${ORG${org}_PEER${peer}_TLS_ROOTCERT}" && export CORE_PEER_TLS_ROOTCERT_FILE=$(eval echo $t) - #env |grep CORE - export FABRIC_LOGGING_SPEC="INFO" - #export GOCACHE=/root/.cache/go-build - #go get + #env |grep CORE + export FABRIC_LOGGING_SPEC="INFO" + #export GOCACHE=/root/.cache/go-build + #go get } # Internal func called by channelCreate # channelCreateAction channel tx orderer_url orderer_tls_rootcert -channelCreateAction(){ - local channel=$1 - local channel_tx=$2 - local orderer_url=$3 - local orderer_tls_rootcert=$4 +channelCreateAction() { + local channel=$1 + local channel_tx=$2 + local orderer_url=$3 + local orderer_tls_rootcert=$4 - if [ -z "$CORE_PEER_TLS_ENABLED" ] || [ "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer channel create \ - -c ${channel} \ - -o ${orderer_url} \ - -f ${CHANNEL_ARTIFACTS}/${channel_tx} \ - --timeout "${TIMEOUT}s" - else - peer channel create \ - -c ${channel} \ - -o ${orderer_url} \ - -f ${CHANNEL_ARTIFACTS}/${channel_tx} \ - --timeout "${TIMEOUT}s" \ - --tls \ - --cafile ${orderer_tls_rootcert} - fi - return $? + if [ -z "$CORE_PEER_TLS_ENABLED" ] || [ "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer channel create \ + -c ${channel} \ + -o ${orderer_url} \ + -f ${CHANNEL_ARTIFACTS}/${channel_tx} \ + --timeout "${TIMEOUT}s" + else + peer channel create \ + -c ${channel} \ + -o ${orderer_url} \ + -f ${CHANNEL_ARTIFACTS}/${channel_tx} \ + --timeout "${TIMEOUT}s" \ + --tls \ + --cafile ${orderer_tls_rootcert} + fi + return $? } # Use peer0/org1's identity to create a channel # channelCreate APP_CHANNEL APP_CHANNEL.tx org peer orderer_url orderer_tls_rootcert channelCreate() { - local channel=$1 - local tx=$2 - local org=$3 - local peer=$4 - local orderer_url=$5 - local orderer_tls_rootcert=$6 + local channel=$1 + local tx=$2 + local org=$3 + local peer=$4 + local orderer_url=$5 + local orderer_tls_rootcert=$6 - [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 + [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 - echo "=== Create Channel ${channel} by org $org/peer $peer === " - setEnvs $org $peer - local rc=1 - local counter=0 - while [ ${counter} -lt ${MAX_RETRY} -a ${rc} -ne 0 ]; do - channelCreateAction ${channel} ${tx} ${orderer_url} ${orderer_tls_rootcert} - rc=$? - let counter=${counter}+1 - #COUNTER=` expr $COUNTER + 1` - [ $rc -ne 0 ] && echo "Failed to create channel $channel, retry after 5s" && sleep 5 - done - [ $rc -ne 0 ] && cat log.txt - verifyResult ${rc} "Channel ${channel} creation failed" - echo "=== Channel ${channel} is created. === " + echo "=== Create Channel ${channel} by org $org/peer $peer === " + setEnvs $org $peer + local rc=1 + local counter=0 + while [ ${counter} -lt ${MAX_RETRY} -a ${rc} -ne 0 ]; do + channelCreateAction ${channel} ${tx} ${orderer_url} ${orderer_tls_rootcert} + rc=$? + let counter=${counter}+1 + #COUNTER=` expr $COUNTER + 1` + [ $rc -ne 0 ] && echo "Failed to create channel $channel, retry after 5s" && sleep 5 + done + [ $rc -ne 0 ] && cat log.txt + verifyResult ${rc} "Channel ${channel} creation failed" + echo "=== Channel ${channel} is created. === " } # called by channelJoinWithRetry -channelJoinAction () { - local channel=$1 - peer channel join \ - -b ${channel}.block \ - >&log.txt +channelJoinAction() { + local channel=$1 + peer channel join \ + -b ${channel}.block \ + >&log.txt } ## Sometimes Join takes time hence RETRY atleast for 5 times -channelJoinWithRetry () { - local channel=$1 - local peer=$2 - local counter=0 - channelJoinAction ${channel} - local rc=$? - while [ ${counter} -lt ${MAX_RETRY} -a ${rc} -ne 0 ]; do - echo "peer${peer} failed to join channel ${channel}, retry after 2s" - sleep 2 - channelJoinAction ${channel} - rc=$? - let counter=${counter}+1 - done - [ $rc -ne 0 ] && cat log.txt +channelJoinWithRetry() { + local channel=$1 + local peer=$2 + local counter=0 + channelJoinAction ${channel} + local rc=$? + while [ ${counter} -lt ${MAX_RETRY} -a ${rc} -ne 0 ]; do + echo "peer${peer} failed to join channel ${channel}, retry after 2s" + sleep 2 + channelJoinAction ${channel} + rc=$? + let counter=${counter}+1 + done + [ $rc -ne 0 ] && cat log.txt verifyResult ${rc} "After $MAX_RETRY attempts, peer${peer} failed to Join the Channel" } # Join given (by default all) peers into the channel # channelJoin channel org peer -channelJoin () { - local channel=$1 - local org=$2 - local peer=$3 - [ -z $channel ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 +channelJoin() { + local channel=$1 + local org=$2 + local peer=$3 + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 - echo "=== Join org $org/peer $peer into channel ${channel} === " - setEnvs $org $peer - channelJoinWithRetry ${channel} $peer - echo "=== org $org/peer $peer joined into channel ${channel} === " + echo "=== Join org $org/peer $peer into channel ${channel} === " + setEnvs $org $peer + channelJoinWithRetry ${channel} $peer + echo "=== org $org/peer $peer joined into channel ${channel} === " } -getShaSum () { - [ ! $# -eq 1 ] && exit 1 - shasum ${1} | awk '{print $1}' +getShaSum() { + [ ! $# -eq 1 ] && exit 1 + shasum ${1} | awk '{print $1}' } # List the channel that the peer joined # E.g., for peer 0 at org 1, will do # channelList 1 0 -channelList () { - local org=$1 - local peer=$2 - echo "=== List the channels that org${org}/peer${peer} joined === " +channelList() { + local org=$1 + local peer=$2 + echo "=== List the channels that org${org}/peer${peer} joined === " - setEnvs $org $peer + setEnvs $org $peer - peer channel list >&log.txt - rc=$? - [ $rc -ne 0 ] && cat log.txt - if [ $rc -ne 0 ]; then - echo "=== Failed to list the channels that org${org}/peer${peer} joined === " - else - echo "=== Done to list the channels that org${org}/peer${peer} joined === " - fi + peer channel list >&log.txt + rc=$? + [ $rc -ne 0 ] && cat log.txt + if [ $rc -ne 0 ]; then + echo "=== Failed to list the channels that org${org}/peer${peer} joined === " + else + echo "=== Done to list the channels that org${org}/peer${peer} joined === " + fi } # Get the info of specific channel, including {height, currentBlockHash, previousBlockHash}. # E.g., for peer 0 at org 1, get info of business channel will do # channelGetInfo businesschannel 1 0 -channelGetInfo () { - local channel=$1 - local org=$2 - local peer=$3 - echo "=== Get channel info (height, currentBlockHash, previousBlockHash) of ${channel} with id of org${org}/peer${peer} === " +channelGetInfo() { + local channel=$1 + local org=$2 + local peer=$3 + echo "=== Get channel info (height, currentBlockHash, previousBlockHash) of ${channel} with id of org${org}/peer${peer} === " - setEnvs $org $peer + setEnvs $org $peer - peer channel getinfo -c ${channel} >&log.txt - rc=$? - cat log.txt - if [ $rc -ne 0 ]; then - echo "=== Fail to get channel info of ${channel} with id of org${org}/peer${peer} === " - else - echo "=== Done to get channel info of ${channel} with id of org${org}/peer${peer} === " - fi + peer channel getinfo -c ${channel} >&log.txt + rc=$? + cat log.txt + if [ $rc -ne 0 ]; then + echo "=== Fail to get channel info of ${channel} with id of org${org}/peer${peer} === " + else + echo "=== Done to get channel info of ${channel} with id of org${org}/peer${peer} === " + fi } # Fetch all blocks for a channel # Usage: channelFetchAll channel org peer orderer_url orderer_tls_rootcert -channelFetchAll () { - local channel=$1 - local org=$2 - local peer=$3 - local orderer_url=$4 - local orderer_tls_rootcert=$5 +channelFetchAll() { + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 - echo "=== Fetch all block for channel $channel === " + echo "=== Fetch all block for channel $channel === " - local block_file=/tmp/${channel}_newest.block - channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} "newest" ${block_file} - [ $? -ne 0 ] && exit 1 - newest_block_shasum=$(getShaSum ${block_file}) - echo "fetch newest block ${block_file} with shasum=${newest_block_shasum}" + local block_file=/tmp/${channel}_newest.block + channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} "newest" ${block_file} + [ $? -ne 0 ] && exit 1 + newest_block_shasum=$(getShaSum ${block_file}) + echo "fetch newest block ${block_file} with shasum=${newest_block_shasum}" - block_file=${CHANNEL_ARTIFACTS}/${channel}_config.block - channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} "config" ${block_file} - [ $? -ne 0 ] && exit 1 - echo "fetch config block ${block_file}" + block_file=${CHANNEL_ARTIFACTS}/${channel}_config.block + channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} "config" ${block_file} + [ $? -ne 0 ] && exit 1 + echo "fetch config block ${block_file}" - for i in $(seq 0 16); do # we at most fetch 16 blocks - block_file=${CHANNEL_ARTIFACTS}/${channel}_${i}.block - channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} $i ${block_file} - [ $? -ne 0 ] && exit 1 - [ -f $block_file ] || break - echo "fetch block $i and saved into ${block_file}" - block_shasum=$(getShaSum ${block_file}) - [ ${block_shasum} = ${newest_block_shasum} ] && { echo "Block $i is the last one for channel $channel"; break; } - done + for i in $(# we at most fetch 16 blocks + seq 0 16 + ); do + block_file=${CHANNEL_ARTIFACTS}/${channel}_${i}.block + channelFetch ${channel} $org $peer ${orderer_url} ${orderer_tls_rootcert} $i ${block_file} + [ $? -ne 0 ] && exit 1 + [ -f $block_file ] || break + echo "fetch block $i and saved into ${block_file}" + block_shasum=$(getShaSum ${block_file}) + [ ${block_shasum} = ${newest_block_shasum} ] && { + echo "Block $i is the last one for channel $channel" + break + } + done } # Fetch some block from a given channel # channelFetch channel org peer orderer_url blockNum block_file -channelFetch () { - local channel=$1 - local org=$2 - local peer=$3 - local orderer_url=$4 - local orderer_tls_rootcert=$5 - local num=$6 - local block_file=$7 - echo "=== Fetch block $num of channel $channel === " +channelFetch() { + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 + local num=$6 + local block_file=$7 + echo "=== Fetch block $num of channel $channel === " - #setEnvs $org $peer - setOrdererEnvs # system channel required id from ordererOrg - # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), - # lets supply it directly as we know it using the "-o" option - if [ -z "${CORE_PEER_TLS_ENABLED}" ] || [ "${CORE_PEER_TLS_ENABLED}" = "false" ]; then - peer channel fetch $num ${block_file} \ - -o ${orderer_url} \ - -c ${channel} \ - >&log.txt - else - peer channel fetch $num ${block_file} \ - -o ${orderer_url} \ - -c ${channel} \ - --tls \ - --cafile ${orderer_tls_rootcert} \ - >&log.txt - fi - if [ $? -ne 0 ]; then - cat log.txt - echo_r "Fetch block $num of channel $channel failed" - return 1 - else - echo "=== Fetch block $num of channel $channel OK === " - return 0 - fi + #setEnvs $org $peer + setOrdererEnvs # system channel required id from ordererOrg + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "${CORE_PEER_TLS_ENABLED}" ] || [ "${CORE_PEER_TLS_ENABLED}" = "false" ]; then + peer channel fetch $num ${block_file} \ + -o ${orderer_url} \ + -c ${channel} \ + >&log.txt + else + peer channel fetch $num ${block_file} \ + -o ${orderer_url} \ + -c ${channel} \ + --tls \ + --cafile ${orderer_tls_rootcert} \ + >&log.txt + fi + if [ $? -ne 0 ]; then + cat log.txt + echo_r "Fetch block $num of channel $channel failed" + return 1 + else + echo "=== Fetch block $num of channel $channel OK === " + return 0 + fi } # Sign a channel config tx # Usage: channelSignConfigTx channel org peer transaction -channelSignConfigTx () { - local channel=$1 - local org=$2 - local peer=$3 - local tx=$4 - [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 - echo "=== Sign channel config tx $tx for channel $channel by org $org/peer $peer === " - [ -f ${CHANNEL_ARTIFACTS}/${tx} ] || { echo_r "${tx} not exist"; exit 1; } +channelSignConfigTx() { + local channel=$1 + local org=$2 + local peer=$3 + local tx=$4 + [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 + echo "=== Sign channel config tx $tx for channel $channel by org $org/peer $peer === " + [ -f ${CHANNEL_ARTIFACTS}/${tx} ] || { + echo_r "${tx} not exist" + exit 1 + } - setEnvs $org $peer + setEnvs $org $peer - peer channel signconfigtx -f ${CHANNEL_ARTIFACTS}/${tx} >&log.txt - rc=$? - [ $rc -ne 0 ] && cat log.txt - if [ $rc -ne 0 ]; then - echo_r "Sign channel config tx for channel $channel by org $org/peer $peer failed" - else - echo "=== Sign channel config tx channel $channel by org $org/peer $peer is successful === " - fi + peer channel signconfigtx -f ${CHANNEL_ARTIFACTS}/${tx} >&log.txt + rc=$? + [ $rc -ne 0 ] && cat log.txt + if [ $rc -ne 0 ]; then + echo_r "Sign channel config tx for channel $channel by org $org/peer $peer failed" + else + echo "=== Sign channel config tx channel $channel by org $org/peer $peer is successful === " + fi } # Update a channel config # Usage: channelUpdate channel org peer orderer_url orderer_tls_rootcert transaction_file channelUpdate() { - local channel=$1 - local org=$2 - local peer=$3 - local orderer_url=$4 - local orderer_tls_rootcert=$5 - local tx=$6 - [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 + local tx=$6 + [ -z $channel ] && [ -z $tx ] && [ -z $org ] && [ -z $peer ] && echo_r "input param invalid" && exit -1 - setEnvs $org $peer - echo "=== Update config on channel ${channel} === " - [ -f ${CHANNEL_ARTIFACTS}/${tx} ] || { echo_r "${tx} not exist"; exit 1; } - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer channel update \ - -c ${channel} \ - -o ${orderer_url} \ - -f ${CHANNEL_ARTIFACTS}/${tx} \ - >&log.txt - else - peer channel update \ - -c ${channel} \ - -o ${orderer_url} \ - -f ${CHANNEL_ARTIFACTS}/${tx} \ - --tls \ - --cafile ${orderer_tls_rootcert} \ - >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "peer channel update failed" - echo "=== Channel ${channel} is updated. === " - sleep 2 + setEnvs $org $peer + echo "=== Update config on channel ${channel} === " + [ -f ${CHANNEL_ARTIFACTS}/${tx} ] || { + echo_r "${tx} not exist" + exit 1 + } + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer channel update \ + -c ${channel} \ + -o ${orderer_url} \ + -f ${CHANNEL_ARTIFACTS}/${tx} \ + >&log.txt + else + peer channel update \ + -c ${channel} \ + -o ${orderer_url} \ + -f ${CHANNEL_ARTIFACTS}/${tx} \ + --tls \ + --cafile ${orderer_tls_rootcert} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "peer channel update failed" + echo "=== Channel ${channel} is updated. === " + sleep 2 } # Install chaincode on the peer node # In v2.x it will package, install and approve # chaincodeInstall peer cc_name version cc_path [lang] -chaincodeInstall () { - if [ "$#" -ne 7 ]; then - echo_r "Wrong param number for chaincode install" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 - local cc_name=$5 - local version=$6 - local cc_path=$7 +chaincodeInstall() { + if [ "$#" -ne 7 ]; then + echo_r "Wrong param number for chaincode install" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local cc_name=$5 + local version=$6 + local cc_path=$7 - [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $version ] && [ -z $cc_path ] && echo_r "input param invalid" && exit -1 - echo "=== Install Chaincode on org ${org}/peer ${peer} === " - echo "cc_name=${cc_name}, version=${version}, path=${cc_path}" - setEnvs $org $peer - echo "packaging chaincode into tar.gz package" - local label=${cc_name} - #local label=${cc_name}_${version} + [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $version ] && [ -z $cc_path ] && echo_r "input param invalid" && exit -1 + echo "=== Install Chaincode on org ${org}/peer ${peer} === " + echo "cc_name=${cc_name}, version=${version}, path=${cc_path}" + setEnvs $org $peer + echo "packaging chaincode into tar.gz package" + local label=${cc_name} + #local label=${cc_name}_${version} - #pushd ${GOPATH}/src/${cc_path} - #GO111MODULE=on go mod vendor - #popd - - echo "packaging chaincode ${cc_name} with path ${cc_path} and label ${label}" - peer lifecycle chaincode package ${cc_name}.tar.gz \ + echo "packaging chaincode ${cc_name} with path ${cc_path} and label ${label}" + peer lifecycle chaincode package ${cc_name}.tar.gz \ --path ${cc_path} \ --lang golang \ --label ${label} - rc=$? - [ $rc -ne 0 ] && echo "Error in packaging chaincode ${cc_name}" && exit -1 + rc=$? + [ $rc -ne 0 ] && echo "Error in packaging chaincode ${cc_name}" && exit -1 - # v1.x action - #peer chaincode install \ - # -n ${cc_name} \ - # -v $version \ - # -p ${cc_path} \ - # >&log.txt + # v1.x action + #peer chaincode install \ + # -n ${cc_name} \ + # -v $version \ + # -p ${cc_path} \ + # >&log.txt - echo "installing chaincode to peer${peer}/org${org}" - peer lifecycle chaincode install \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ + echo "installing chaincode to peer${peer}/org${org}" + peer lifecycle chaincode install \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ ${cc_name}.tar.gz | tee >&log.txt - rc=$? - [ $rc -ne 0 ] && cat log.txt + rc=$? + [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Chaincode installation on remote org ${org}/peer$peer has Failed" - echo "=== Chaincode is installed on org ${org}/peer $peer === " + verifyResult $rc "Chaincode installation on remote org ${org}/peer$peer has Failed" + echo "=== Chaincode is installed on org ${org}/peer $peer === " } # Query the installed chaincode # chaincodeQueryCommitted org peer peer_url peer_tls_root_cert -chaincodeQueryInstalled () { - if [ "$#" -ne 4 ]; then - echo_r "Wrong param number for chaincode query installed" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 +chaincodeQueryInstalled() { + if [ "$#" -ne 4 ]; then + echo_r "Wrong param number for chaincode query installed" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 - setEnvs $org $peer + setEnvs $org $peer - echo "Query the installed chaincode on peer $peer at $peer_url " - peer lifecycle chaincode queryinstalled \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - --output json \ - --connTimeout "3s" - rc=$? - [ $rc -ne 0 ] && cat log.txt - cat log.txt - verifyResult $rc "ChaincodeQueryInstalled Failed: org ${org}/peer$peer" + echo "Query the installed chaincode on peer $peer at $peer_url " + peer lifecycle chaincode queryinstalled \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --output json \ + --connTimeout "3s" + rc=$? + [ $rc -ne 0 ] && cat log.txt + cat log.txt + verifyResult $rc "ChaincodeQueryInstalled Failed: org ${org}/peer$peer" } # Get the installed chaincode packages # chaincodeGetCommitted org peer peer_url peer_tls_root_cert cc_name -chaincodeGetInstalled () { - if [ "$#" -ne 5 ]; then - echo_r "Wrong param number for chaincode get installed" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 - local cc_name=$5 +chaincodeGetInstalled() { + if [ "$#" -ne 5 ]; then + echo_r "Wrong param number for chaincode get installed" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local cc_name=$5 - setEnvs $org $peer - echo "querying installed chaincode and get its package id" - peer lifecycle chaincode queryinstalled >&query.log - local label=${cc_name} - #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) - package_id=$(grep -o "${label}:[a-z0-9]*" query.log) + setEnvs $org $peer + echo "querying installed chaincode and get its package id" + peer lifecycle chaincode queryinstalled >&query.log + local label=${cc_name} + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + package_id=$(grep -o "${label}:[a-z0-9]*" query.log) - echo "Get the installed chaincode package with id= ${package_id} on peer $peer at $peer_url " - peer lifecycle chaincode getinstalledpackage \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - --package-id ${package_id} \ - --output-directory ./ \ - --output json \ - --connTimeout "3s" - rc=$? - [ $rc -ne 0 ] && cat log.txt - cat log.txt - verifyResult $rc "ChaincodeGetInstalled Failed: org ${org}/peer$peer" + echo "Get the installed chaincode package with id= ${package_id} on peer $peer at $peer_url " + peer lifecycle chaincode getinstalledpackage \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --package-id ${package_id} \ + --output-directory ./ \ + --output json \ + --connTimeout "3s" + rc=$? + [ $rc -ne 0 ] && cat log.txt + cat log.txt + verifyResult $rc "ChaincodeGetInstalled Failed: org ${org}/peer$peer" } - # Approve the chaincode definition # chaincodeApproveForMyOrg channel org peer peer_url peer_tls_root_cert orderer_url orderer_tls_rootcert channel cc_name version -chaincodeApproveForMyOrg () { - if [ "$#" -ne 9 -a "$#" -ne 11 ]; then - echo_r "Wrong param number for chaincode approve" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 - local orderer_url=$5 - local orderer_tls_rootcert=$6 - local channel=$7 - local cc_name=$8 - local version=$9 - local collection_config="" # collection config file path for sideDB - local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy +chaincodeApproveForMyOrg() { + if [ "$#" -ne 9 -a "$#" -ne 11 ]; then + echo_r "Wrong param number for chaincode approve" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local orderer_url=$5 + local orderer_tls_rootcert=$6 + local channel=$7 + local cc_name=$8 + local version=$9 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy - if [ ! -z "${10}" ]; then - collection_config=${10} - fi + if [ ! -z "${10}" ]; then + collection_config=${10} + fi - if [ ! -z "${11}" ]; then - policy=${12} - fi + if [ ! -z "${11}" ]; then + policy=${12} + fi - setEnvs $org $peer - echo "querying installed chaincode and get its package id" - peer lifecycle chaincode queryinstalled >&query.log - cat query.log - local label=${cc_name} - #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) - package_id=$(grep -o "${label}:[a-z0-9]*" query.log) - echo "Approve package id=${package_id} by Org ${org}/Peer ${peer}" + setEnvs $org $peer + echo "querying installed chaincode and get its package id" + peer lifecycle chaincode queryinstalled >&query.log + cat query.log + local label=${cc_name} + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + package_id=$(grep -o "${label}:[a-z0-9]*" query.log) + echo "Approve package id=${package_id} by Org ${org}/Peer ${peer}" - # use the --init-required flag to request the ``Init`` function be invoked to initialize the chaincode - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer lifecycle chaincode approveformyorg \ - --peerAddresses ${peer_url} \ - --channelID ${channel} \ - --name ${cc_name} \ - --version ${version} \ - --init-required \ - --package-id ${package_id} \ - --sequence 1 \ - --signature-policy "${policy}" \ - --waitForEvent \ - --orderer ${orderer_url} >&log.txt - else - peer lifecycle chaincode approveformyorg \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - --channelID ${channel} \ - --name ${cc_name} \ - --version ${version} \ - --init-required \ - --package-id ${package_id} \ - --sequence 1 \ - --signature-policy "${policy}" \ - --waitForEvent \ - --orderer ${orderer_url} \ - --tls true \ - --cafile ${orderer_tls_rootcert} >&log.txt - fi + # use the --init-required flag to request the ``Init`` function be invoked to initialize the chaincode + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer lifecycle chaincode approveformyorg \ + --peerAddresses ${peer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --package-id ${package_id} \ + --sequence 1 \ + --signature-policy "${policy}" \ + --waitForEvent \ + --orderer ${orderer_url} >&log.txt + else + peer lifecycle chaincode approveformyorg \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --package-id ${package_id} \ + --sequence 1 \ + --signature-policy "${policy}" \ + --waitForEvent \ + --orderer ${orderer_url} \ + --tls true \ + --cafile ${orderer_tls_rootcert} >&log.txt + fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Chaincode Approval on remote org ${org}/peer$peer has Failed" - echo "=== Chaincode is approved on remote peer$peer === " + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode Approval on remote org ${org}/peer$peer has Failed" + echo "=== Chaincode is approved on remote peer$peer === " } # Query the Approved chaincode definition # chaincodeQueryApproved org peer peer_url peer_tls_root_cert channel cc_name -chaincodeQueryApproved () { - if [ "$#" -ne 6 ]; then - echo_r "Wrong param number for chaincode queryapproved" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 - local channel=$5 - local cc_name=$6 +chaincodeQueryApproved() { + if [ "$#" -ne 6 ]; then + echo_r "Wrong param number for chaincode queryapproved" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local channel=$5 + local cc_name=$6 - setEnvs $org $peer + setEnvs $org $peer - echo "Query the approved chaincode definition $cc_name with ${peer_url} " - env | grep CORE_PEER - peer lifecycle chaincode queryapproved \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - --channelID ${channel} \ - --name ${cc_name} \ - --output json + echo "Query the approved chaincode definition of $cc_name with ${peer_url} " + env | grep CORE_PEER + peer lifecycle chaincode queryapproved \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --name ${cc_name} \ + --output json - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "ChaincodeQueryCommit Failed: org ${org}/peer$peer" + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeQueryApproved Failed: org ${org}/peer$peer" } # Check the commitReadiness of the chaincode definition # chaincodeCheckCommitReadiness channel org peer cc_name version sequence -chaincodeCheckCommitReadiness () { - if [ "$#" -ne 8 ]; then - echo_r "Wrong param number for chaincode queryapproval" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 - local channel=$5 - local cc_name=$6 - local version=$7 - local sequence=$8 +chaincodeCheckCommitReadiness() { + if [ "$#" -ne 8 ]; then + echo_r "Wrong param number for chaincode queryapproval" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local channel=$5 + local cc_name=$6 + local version=$7 + local sequence=$8 - setEnvs $org $peer + setEnvs $org $peer - echo "checkcommitreadiness with chaincode $cc_name $version $sequence" - peer lifecycle chaincode checkcommitreadiness \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - --channelID ${channel} \ - --name ${cc_name} \ - --output json \ - --version ${version} \ - --sequence ${sequence} + echo "checkcommitreadiness with chaincode $cc_name $version $sequence" + peer lifecycle chaincode checkcommitreadiness \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --name ${cc_name} \ + --output json \ + --version ${version} \ + --sequence ${sequence} - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "ChaincodeQueryApproval Failed: org ${org}/peer$peer" + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeQueryApproval Failed: org ${org}/peer$peer" } # Anyone can commit the chaincode definition once it's approved by major # chaincodeCommit org peer channel orderer_url orderer_tls_rootcert cc_name version [collection-config] [endorse-policy] -chaincodeCommit () { - if [ "$#" -ne 7 -a "$#" -ne 9 ]; then - echo_r "Wrong param number for chaincode commit" - exit -1 - fi - local org=$1 - local peer=$2 - local channel=$3 - local orderer_url=$4 - local orderer_tls_rootcert=$5 - local cc_name=$6 - local version=$7 - local collection_config="" # collection config file path for sideDB - local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy +chaincodeCommit() { + if [ "$#" -ne 7 -a "$#" -ne 9 ]; then + echo_r "Wrong param number for chaincode commit" + exit -1 + fi + local org=$1 + local peer=$2 + local channel=$3 + local orderer_url=$4 + local orderer_tls_rootcert=$5 + local cc_name=$6 + local version=$7 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy - if [ ! -z "$8" ]; then - collection_config=$8 - fi + if [ ! -z "$8" ]; then + collection_config=$8 + fi - if [ ! -z "$9" ]; then - policy=$9 # chaincode endorsement policy - fi + if [ ! -z "$9" ]; then + policy=$9 # chaincode endorsement policy + fi - setEnvs $org $peer - echo "querying installed chaincode and get its package id" - peer lifecycle chaincode queryinstalled >&query.log - label=${cc_name} - #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) - package_id=$(grep -o "${label}:[a-z0-9]*" query.log) - echo "package_id=${package_id}" + setEnvs $org $peer + echo "querying installed chaincode and get its package id" + peer lifecycle chaincode queryinstalled >&query.log + label=${cc_name} + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + package_id=$(grep -o "${label}:[a-z0-9]*" query.log) + echo "package_id=${package_id}" - echo "Committing package id=${package_id} by Org ${org}/Peer ${peer}" - # use the --init-required flag to request the ``Init`` function be invoked to initialize the chaincode - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer lifecycle chaincode commit \ - -o ${orderer_url} \ - --channelID ${channel} \ - --name ${cc_name} \ - --version ${version} \ - --init-required \ - --sequence 1 \ - --peerAddresses ${ORG1_PEER0_URL} \ + echo "Committing package id=${package_id} by Org ${org}/Peer ${peer}" + # use the --init-required flag to request the ``Init`` function be invoked to initialize the chaincode + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer lifecycle chaincode commit \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --sequence 1 \ + --peerAddresses ${ORG1_PEER0_URL} \ --tlsRootCertFiles ${ORG1_PEER0_TLS_ROOTCERT} \ --peerAddresses ${ORG2_PEER0_URL} \ --tlsRootCertFiles ${ORG2_PEER0_TLS_ROOTCERT} \ - --waitForEvent \ - --collections-config "${collection_config}" \ - --signature-policy "${policy}" - else - peer lifecycle chaincode commit \ - -o ${orderer_url} \ - --channelID ${channel} \ - --name ${cc_name} \ - --version ${version} \ - --init-required \ - --sequence 1 \ - --peerAddresses ${ORG1_PEER0_URL} \ + --waitForEvent \ + --collections-config "${collection_config}" \ + --signature-policy "${policy}" + else + peer lifecycle chaincode commit \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --version ${version} \ + --init-required \ + --sequence 1 \ + --peerAddresses ${ORG1_PEER0_URL} \ --tlsRootCertFiles ${ORG1_PEER0_TLS_ROOTCERT} \ --peerAddresses ${ORG2_PEER0_URL} \ --tlsRootCertFiles ${ORG2_PEER0_TLS_ROOTCERT} \ - --waitForEvent \ - --collections-config "${collection_config}" \ - --signature-policy "${policy}" \ - --tls true \ - --cafile ${orderer_tls_rootcert} >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Chaincode Commit on remote org ${org}/peer$peer has Failed" - echo "=== Chaincode is committed on channel $channel === " + --waitForEvent \ + --collections-config "${collection_config}" \ + --signature-policy "${policy}" \ + --tls true \ + --cafile ${orderer_tls_rootcert} >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode Commit on remote org ${org}/peer$peer has Failed" + echo "=== Chaincode is committed on channel $channel === " } # Query the Commit the chaincode definition # chaincodeQueryCommitted org peer peer_url peer_tls_root_cert channel cc_name -chaincodeQueryCommitted () { - if [ "$#" -ne 6 ]; then - echo_r "Wrong param number for chaincode querycommit" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_tls_root_cert=$4 - local channel=$5 - local cc_name=$6 +chaincodeQueryCommitted() { + if [ "$#" -ne 6 ]; then + echo_r "Wrong param number for chaincode querycommit" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local channel=$5 + local cc_name=$6 - setEnvs $org $peer + setEnvs $org $peer - echo "Query the committed status of chaincode $cc_name with ${peer_url} " - peer lifecycle chaincode querycommitted \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_tls_root_cert} \ - --channelID ${channel} \ - --output json \ - --name ${cc_name} + echo "Query the committed status of chaincode $cc_name with ${peer_url} " + peer lifecycle chaincode querycommitted \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --output json \ + --name ${cc_name} - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "ChaincodeQueryCommit Failed: org ${org}/peer$peer" + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeQueryCommit Failed: org ${org}/peer$peer" } # Instantiate chaincode on specifized peer node # chaincodeInstantiate channel org peer orderer_url cc_name version args -chaincodeInstantiate () { - if [ "$#" -gt 9 -a "$#" -lt 7 ]; then - echo_r "Wrong param number for chaincode instantaite" - exit -1 - fi - local channel=$1 - local org=$2 - local peer=$3 - local orderer_url=$4 - local cc_name=$5 - local version=$6 - local args=$7 - local collection_config="" # collection config file path for sideDB - local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy +chaincodeInstantiate() { + if [ "$#" -gt 9 -a "$#" -lt 7 ]; then + echo_r "Wrong param number for chaincode instantaite" + exit -1 + fi + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local cc_name=$5 + local version=$6 + local args=$7 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy - if [ ! -z "$8" ]; then - collection_config=$8 - fi + if [ ! -z "$8" ]; then + collection_config=$8 + fi - if [ ! -z "$9" ]; then - policy=$9 - fi + if [ ! -z "$9" ]; then + policy=$9 + fi - setEnvs $org $peer - echo "=== chaincodeInstantiate for channel ${channel} on org $org/peer $peer ====" - echo "cc_name=${cc_name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" - # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), - # lets supply it directly as we know it using the "-o" option - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer chaincode instantiate \ - -o ${orderer_url} \ - -C ${channel} \ - -n ${cc_name} \ - -v ${version} \ - -c ${args} \ - -P "${policy}" \ - --collections-config "${collection_config}" \ - >&log.txt - else - peer chaincode instantiate \ - -o ${orderer_url} \ - -C ${channel} \ - -n ${cc_name} \ - -v ${version} \ - -c ${args} \ - -P "${policy}" \ - --collections-config "${collection_config}" \ - --tls \ - --cafile ${ORDERER0_TLS_CA} \ - >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "ChaincodeInstantiation on org $org/peer$peer in channel ${channel} failed" - echo "=== Chaincode Instantiated in channel ${channel} by peer$peer ===" + setEnvs $org $peer + echo "=== chaincodeInstantiate for channel ${channel} on org $org/peer $peer ====" + echo "cc_name=${cc_name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode instantiate \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + >&log.txt + else + peer chaincode instantiate \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + --tls \ + --cafile ${ORDERER0_TLS_CA} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeInstantiation on org $org/peer$peer in channel ${channel} failed" + echo "=== Chaincode Instantiated in channel ${channel} by peer$peer ===" } # Invoke the Init func of chaincode to start the container # Usage: chaincodeInit org peer channel orderer cc_name args peer_url peer_org_tlsca -chaincodeInit () { - if [ "$#" -ne 8 ]; then - echo_r "Wrong param number for chaincode Init" - exit -1 - fi - local org=$1 - local peer=$2 - local channel=$3 - local orderer=$4 - local cc_name=$5 - local args=$6 - local peer_url=$7 - local peer_org_tlsca=$8 +chaincodeInit() { + if [ "$#" -ne 8 ]; then + echo_r "Wrong param number for chaincode Init" + exit -1 + fi + local org=$1 + local peer=$2 + local channel=$3 + local orderer=$4 + local cc_name=$5 + local args=$6 + local peer_url=$7 + local peer_org_tlsca=$8 - [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 - echo "=== chaincodeInit to orderer by id of org${org}/peer${peer} === " - echo "channel=${channel}, cc_name=${cc_name}, args=${args}" - setEnvs $org $peer - # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), - # lets supply it directly as we know it using the "-o" option - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer chaincode invoke \ - -o ${orderer} \ - --channelID ${channel} \ - --name ${cc_name} \ - --peerAddresses ${peer_url} \ + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + echo "=== chaincodeInit to orderer by id of org${org}/peer${peer} === " + echo "channel=${channel}, cc_name=${cc_name}, args=${args}" + setEnvs $org $peer + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode invoke \ + -o ${orderer} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_org_tlsca} \ - --isInit \ - -c ${args} \ - >&log.txt - else - peer chaincode invoke \ - -o ${orderer} \ - --channelID ${channel} \ - --name ${cc_name} \ - --peerAddresses ${peer_url} \ + --isInit \ + -c ${args} \ + >&log.txt + else + peer chaincode invoke \ + -o ${orderer} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_org_tlsca} \ - --isInit \ - -c ${args} \ - --tls \ - --cafile ${ORDERER0_TLS_CA} \ - >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Chaincode Init failed: peer$peer in channel ${channel}" - echo "=== Chaincode Init done: peer$peer in channel ${channel} === " + --isInit \ + -c ${args} \ + --tls \ + --cafile ${ORDERER0_TLS_CA} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode Init failed: peer$peer in channel ${channel}" + echo "=== Chaincode Init done: peer$peer in channel ${channel} === " } # Usage: chaincodeInvoke org peer channel orderer cc_name args peer_url peer_org_tlsca -chaincodeInvoke () { - if [ "$#" -ne 9 ]; then - echo_r "Wrong param number for chaincode Invoke" - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_org_tlsca=$4 - local channel=$5 - local orderer_url=$6 - local orderer_tls_rootcert=$7 - local cc_name=$8 - local args=$9 +chaincodeInvoke() { + if [ "$#" -ne 9 ]; then + echo_r "Wrong param number for chaincode Invoke" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_org_tlsca=$4 + local channel=$5 + local orderer_url=$6 + local orderer_tls_rootcert=$7 + local cc_name=$8 + local args=$9 - [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 - echo "=== chaincodeInvoke to orderer by id of org${org}/peer${peer} === " - echo "channel=${channel}, cc_name=${cc_name}, args=${args}" - setEnvs $org $peer - # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), - # lets supply it directly as we know it using the "-o" option - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer chaincode invoke \ - -o ${orderer_url} \ - --channelID ${channel} \ - --name ${cc_name} \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_org_tlsca} \ - -c ${args} \ - >&log.txt - else - peer chaincode invoke \ - -o ${orderer_url} \ - --channelID ${channel} \ - --name ${cc_name} \ - --peerAddresses ${peer_url} \ + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + echo "=== chaincodeInvoke to orderer by id of org${org}/peer${peer} === " + echo "channel=${channel}, cc_name=${cc_name}, args=${args}" + setEnvs $org $peer + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode invoke \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_org_tlsca} \ - -c ${args} \ - --tls \ - --cafile ${orderer_tls_rootcert} \ - >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Invoke execution on peer$peer failed " - echo "=== Invoke transaction on peer$peer in channel ${channel} is successful === " + -c ${args} \ + >&log.txt + else + peer chaincode invoke \ + -o ${orderer_url} \ + --channelID ${channel} \ + --name ${cc_name} \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_org_tlsca} \ + -c ${args} \ + --tls \ + --cafile ${orderer_tls_rootcert} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Invoke execution on peer$peer failed " + echo "=== Invoke transaction on peer$peer in channel ${channel} is successful === " } # query org peer channel cc_name args expected_result -chaincodeQuery () { - if [ "$#" -ne 7 -a "$#" -ne 8 ]; then - echo_r "Wrong param number $# for chaincode Query" - echo $* - exit -1 - fi - local org=$1 - local peer=$2 - local peer_url=$3 - local peer_org_tlsca=$4 - local channel=$5 - local cc_name=$6 - local args=$7 - local expected_result="" +chaincodeQuery() { + if [ "$#" -ne 7 -a "$#" -ne 8 ]; then + echo_r "Wrong param number $# for chaincode Query" + echo $* + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_org_tlsca=$4 + local channel=$5 + local cc_name=$6 + local args=$7 + local expected_result="" - [ $# -eq 8 ] && local expected_result=$8 + [ $# -eq 8 ] && local expected_result=$8 - [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 - echo "=== chaincodeQuery to org $org/peer $peer === " - echo "channel=${channel}, cc_name=${cc_name}, args=${args}, expected_result=${expected_result}" - local rc=1 - local starttime=$(date +%s) + echo "=== chaincodeQuery to org $org/peer $peer === " + echo "channel=${channel}, cc_name=${cc_name}, args=${args}, expected_result=${expected_result}" + local rc=1 + local starttime=$(date +%s) - setEnvs $org $peer + setEnvs $org $peer - # we either get a successful response, or reach TIMEOUT - while [ "$(($(date +%s)-starttime))" -lt "$TIMEOUT" -a $rc -ne 0 ]; do - echo "Attempting to Query org ${org}/peer ${peer} ...$(($(date +%s)-starttime)) secs" - peer chaincode query \ - -C "${channel}" \ - -n "${cc_name}" \ - --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_org_tlsca} \ - -c "${args}" \ - >&log.txt - rc=$? - if [ -n "${expected_result}" ]; then # need to check the result - test $? -eq 0 && VALUE=$(cat log.txt | awk 'END {print $NF}') - if [ "$VALUE" = "${expected_result}" ]; then - let rc=0 - echo_b "$VALUE == ${expected_result}, passed" - else - let rc=1 - echo_b "$VALUE != ${expected_result}, will retry" - fi - fi - if [ $rc -ne 0 ]; then - cat log.txt - sleep 2 - fi - done + # we either get a successful response, or reach TIMEOUT + while [ "$(($(date +%s) - starttime))" -lt "$TIMEOUT" -a $rc -ne 0 ]; do + echo "Attempting to Query org ${org}/peer ${peer} ...$(($(date +%s) - starttime)) secs" + peer chaincode query \ + -C "${channel}" \ + -n "${cc_name}" \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_org_tlsca} \ + -c "${args}" \ + >&log.txt + rc=$? + if [ -n "${expected_result}" ]; then # need to check the result + test $? -eq 0 && VALUE=$(cat log.txt | awk 'END {print $NF}') + if [ "$VALUE" = "${expected_result}" ]; then + let rc=0 + echo_b "$VALUE == ${expected_result}, passed" + else + let rc=1 + echo_b "$VALUE != ${expected_result}, will retry" + fi + fi + if [ $rc -ne 0 ]; then + cat log.txt + sleep 2 + fi + done - # rc==0, or timeout - if [ $rc -eq 0 ]; then - echo "=== Query is done: org $org/peer$peer in channel ${channel} === " - else - echo_r "=== Query failed: org $org/peer$peer, run `make stop clean` to clean ===" - exit 1 - fi + # rc==0, or timeout + if [ $rc -eq 0 ]; then + echo "=== Query is done: org $org/peer$peer in channel ${channel} === " + else + echo_r "=== Query failed: org $org/peer$peer, run $(make stop clean) to clean ===" + exit 1 + fi } # List Installed chaincode on specified peer node, and instantiated chaincodes at specific channel # chaincodeList org1 peer0 businesschannel -chaincodeList () { - local org=$1 - local peer=$2 - local channel=$3 +chaincodeList() { + local org=$1 + local peer=$2 + local channel=$3 - [ -z $org ] && [ -z $peer ] && [ -z $channel ] && echo_r "input param invalid" && exit -1 - echo "=== ChaincodeList on org ${org}/peer ${peer} === " - setEnvs $org $peer - echo_b "Get installed chaincodes at peer$peer.org$org" - peer chaincode list \ - --installed > log.txt & - # \ - #--peerAddresses "peer${peer}.org${org}.example.com" --tls false - rc=$? - [ $rc -ne 0 ] && cat log.txt + [ -z $org ] && [ -z $peer ] && [ -z $channel ] && echo_r "input param invalid" && exit -1 + echo "=== ChaincodeList on org ${org}/peer ${peer} === " + setEnvs $org $peer + echo_b "Get installed chaincodes at peer$peer.org$org" + peer chaincode list \ + --installed >log.txt & + # \ + #--peerAddresses "peer${peer}.org${org}.example.com" --tls false + rc=$? + [ $rc -ne 0 ] && cat log.txt verifyResult $rc "List installed chaincodes on remote org ${org}/peer$peer has Failed" - echo_b "Get instantiated chaincodes at channel $org" - peer chaincode list \ - --instantiated \ - -C ${channel} > log.txt & - rc=$? - [ $rc -ne 0 ] && cat log.txt + echo_b "Get instantiated chaincodes at channel $org" + peer chaincode list \ + --instantiated \ + -C ${channel} >log.txt & + rc=$? + [ $rc -ne 0 ] && cat log.txt verifyResult $rc "List installed chaincodes on remote org ${org}/peer$peer has Failed" - echo "=== ChaincodeList is done at peer${peer}.org${org} === " + echo "=== ChaincodeList is done at peer${peer}.org${org} === " } # Start chaincode with dev mode # TODO: use variables instead of hard-coded value -chaincodeStartDev () { - local peer=$1 - local version=$2 - [ -z $peer ] && [ -z $version ] && echo_r "input param invalid" && exit -1 - setEnvs 1 0 - CORE_CHAINCODE_LOGLEVEL=debug \ - CORE_PEER_ADDRESS=peer${peer}.org1.example.com:7052 \ - CORE_CHAINCODE_ID_NAME=${CC_02_NAME}:${version} \ - nohup ./scripts/chaincode_example02 > chaincode_dev.log & - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Chaincode start in dev mode has Failed" - echo "=== Chaincode started in dev mode === " +chaincodeStartDev() { + local peer=$1 + local version=$2 + [ -z $peer ] && [ -z $version ] && echo_r "input param invalid" && exit -1 + setEnvs 1 0 + CORE_CHAINCODE_LOGLEVEL=debug \ + CORE_PEER_ADDRESS=peer${peer}.org1.example.com:7052 \ + CORE_CHAINCODE_ID_NAME=${CC_02_NAME}:${version} \ + nohup ./scripts/chaincode_example02 >chaincode_dev.log & + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Chaincode start in dev mode has Failed" + echo "=== Chaincode started in dev mode === " } # chaincodeUpgrade channel org peer orderer_url cc_name version args -chaincodeUpgrade () { - if [ "$#" -gt 9 -a "$#" -lt 7 ]; then - echo_r "Wrong param number for chaincode instantaite" - exit -1 - fi - local channel=$1 - local org=$2 - local peer=$3 - local orderer_url=$4 - local cc_name=$5 - local version=$6 - local args=$7 - local collection_config="" # collection config file path for sideDB - local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy +chaincodeUpgrade() { + if [ "$#" -gt 9 -a "$#" -lt 7 ]; then + echo_r "Wrong param number for chaincode instantaite" + exit -1 + fi + local channel=$1 + local org=$2 + local peer=$3 + local orderer_url=$4 + local cc_name=$5 + local version=$6 + local args=$7 + local collection_config="" # collection config file path for sideDB + local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy - echo "=== chaincodeUpgrade to orderer by id of org ${org}/peer $peer === " - echo "cc_name=${cc_name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" + echo "=== chaincodeUpgrade to orderer by id of org ${org}/peer $peer === " + echo "cc_name=${cc_name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" - setEnvs $org $peer - # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), - # lets supply it directly as we know it using the "-o" option - if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then - peer chaincode upgrade \ - -o ${orderer_url} \ - -C ${channel} \ - -n ${cc_name} \ - -v ${version} \ - -c ${args} \ - -P "${policy}" \ - --collections-config "${collection_config}" \ - >&log.txt - else - peer chaincode upgrade \ - -o ${orderer_url} \ - -C ${channel} \ - -n ${cc_name} \ - -v ${version} \ - -c ${args} \ - -P "${policy}" \ - --collections-config "${collection_config}" \ - --tls \ - --cafile ${ORDERER0_TLS_CA} \ - >&log.txt - fi - rc=$? - [ $rc -ne 0 ] && cat log.txt - verifyResult $rc "Upgrade execution on peer$peer failed " - echo "=== Upgrade transaction on peer$peer in channel ${channel} is successful === " + setEnvs $org $peer + # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), + # lets supply it directly as we know it using the "-o" option + if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then + peer chaincode upgrade \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + >&log.txt + else + peer chaincode upgrade \ + -o ${orderer_url} \ + -C ${channel} \ + -n ${cc_name} \ + -v ${version} \ + -c ${args} \ + -P "${policy}" \ + --collections-config "${collection_config}" \ + --tls \ + --cafile ${ORDERER0_TLS_CA} \ + >&log.txt + fi + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "Upgrade execution on peer$peer failed " + echo "=== Upgrade transaction on peer$peer in channel ${channel} is successful === " } # configtxlator encode json to pb # Usage: configtxlatorEncode msgType input output configtxlatorEncode() { - local msgType=$1 - local input=$2 - local output=$3 + local msgType=$1 + local input=$2 + local output=$3 - echo "Encode $input --> $output using type $msgType" - docker exec -it ${CTL_CONTAINER} configtxlator proto_encode \ - --type=${msgType} \ - --input=${input} \ - --output=${output} + echo "Encode $input --> $output using type $msgType" + docker exec -it ${CTL_CONTAINER} configtxlator proto_encode \ + --type=${msgType} \ + --input=${input} \ + --output=${output} - #curl -sX POST \ - # --data-binary @${input} \ - # ${CTL_ENCODE_URL}/${msgType} \ - # >${output} + #curl -sX POST \ + # --data-binary @${input} \ + # ${CTL_ENCODE_URL}/${msgType} \ + # >${output} } # configtxlator decode pb to json # Usage: configtxlatorEncode msgType input output configtxlatorDecode() { - local msgType=$1 - local input=$2 - local output=$3 + local msgType=$1 + local input=$2 + local output=$3 - echo "Config Decode $input --> $output using type $msgType" - if [ ! -f $input ]; then - echo_r "input file not found" - exit 1 - fi + echo "Config Decode $input --> $output using type $msgType" + if [ ! -f $input ]; then + echo_r "input file not found" + exit 1 + fi - docker exec -it ${CTL_CONTAINER} configtxlator proto_decode \ - --type=${msgType} \ - --input=${input} \ - --output=${output} + docker exec -it ${CTL_CONTAINER} configtxlator proto_decode \ + --type=${msgType} \ + --input=${input} \ + --output=${output} - #curl -sX POST \ - # --data-binary @"${input}" \ - # "${CTL_DECODE_URL}/${msgType}" \ - # > "${output}" + #curl -sX POST \ + # --data-binary @"${input}" \ + # "${CTL_DECODE_URL}/${msgType}" \ + # > "${output}" } # compute diff between two pb # Usage: configtxlatorCompare channel origin updated output configtxlatorCompare() { - local channel=$1 - local origin=$2 - local updated=$3 - local output=$4 + local channel=$1 + local origin=$2 + local updated=$3 + local output=$4 - echo "Config Compare $origin vs $updated > ${output} in channel $channel" - if [ ! -f $origin ] || [ ! -f $updated ]; then - echo_r "input file not found" - exit 1 - fi + echo "Config Compare $origin vs $updated > ${output} in channel $channel" + if [ ! -f $origin ] || [ ! -f $updated ]; then + echo_r "input file not found" + exit 1 + fi - docker exec -it ${CTL_CONTAINER} configtxlator compute_update \ - --original=${origin} \ - --updated=${updated} \ - --channel_id=${channel} \ - --output=${output} + docker exec -it ${CTL_CONTAINER} configtxlator compute_update \ + --original=${origin} \ + --updated=${updated} \ + --channel_id=${channel} \ + --output=${output} - #curl -sX POST \ - # -F channel="${channel}" \ - # -F "original=@${origin}" \ - # -F "updated=@${updated}" \ - # "${CTL_COMPARE_URL}" \ - # > "${output}" + #curl -sX POST \ + # -F channel="${channel}" \ + # -F "original=@${origin}" \ + # -F "updated=@${updated}" \ + # "${CTL_COMPARE_URL}" \ + # > "${output}" - [ $? -eq 0 ] || echo_r "Failed to compute config update" + [ $? -eq 0 ] || echo_r "Failed to compute config update" } # Run cmd inside the config generator container gen_con_exec() { - docker exec -it $GEN_CONTAINER "$@" -} \ No newline at end of file + docker exec -it $GEN_CONTAINER "$@" +} diff --git a/hyperledger_fabric/v2.3.0/Makefile b/hyperledger_fabric/v2.3.0/Makefile index fe67c820..12cfaebd 100644 --- a/hyperledger_fabric/v2.3.0/Makefile +++ b/hyperledger_fabric/v2.3.0/Makefile @@ -88,7 +88,7 @@ ready: # create/join channel, install/instantiate cc channel_test: test_channel_create test_channel_join test_channel_list test_channel_getinfo # chaincode related operations -cc_test: test_cc_install test_cc_queryinstalled test_cc_approveformyorg test_cc_checkcommitreadiness test_cc_commit test_cc_querycommitted test_cc_invoke_query +cc_test: test_cc_install test_cc_queryinstalled test_cc_approveformyorg test_cc_queryapproved test_cc_checkcommitreadiness test_cc_commit test_cc_querycommitted test_cc_invoke_query restart: stop start @@ -165,6 +165,10 @@ test_cc_approveformyorg: # Approve the chaincode definition @echo "Approve the chaincode by all orgs" @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_approveformyorg.sh" +test_cc_queryapproved: # Query the approved chaincode definition + @echo "Query the approved status of chaincode" + @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_queryapproved.sh" + test_cc_checkcommitreadiness: # Query the approval status of chaincode @echo "Query the chaincode approval status by all orgs" @docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_checkcommitreadiness.sh" diff --git a/hyperledger_fabric/v2.3.0/scripts/download_images.sh b/hyperledger_fabric/v2.3.0/scripts/download_images.sh index 05d57645..223856d9 100644 --- a/hyperledger_fabric/v2.3.0/scripts/download_images.sh +++ b/hyperledger_fabric/v2.3.0/scripts/download_images.sh @@ -44,10 +44,10 @@ done pull_image yeasy/hyperledger-fabric:$FABRIC_IMG_TAG "true" # pull_image yeasy/blockchain-explorer:0.1.0-preview # TODO: wait for official images -echo "=== Pulling fabric core images ${FABRIC_IMG_TAG} from fabric repo... ===" -for IMG in peer orderer ca tools; do - pull_image hyperledger/fabric-${IMG}:$FABRIC_IMG_TAG & # e.g., v2.3.0 -done +#echo "=== Pulling fabric core images ${FABRIC_IMG_TAG} from fabric repo... ===" +#for IMG in peer orderer ca tools; do +# pull_image hyperledger/fabric-${IMG}:$FABRIC_IMG_TAG & # e.g., v2.3.0 +#done echo "=== Pulling fabric chaincode images ${TWO_DIGIT_VERSION} from fabric repo... ===" for IMG in ccenv baseos javaenv nodeenv; do diff --git a/hyperledger_fabric/v2.3.0/scripts/func.sh b/hyperledger_fabric/v2.3.0/scripts/func.sh index 4c982866..4f7cc65e 100644 --- a/hyperledger_fabric/v2.3.0/scripts/func.sh +++ b/hyperledger_fabric/v2.3.0/scripts/func.sh @@ -63,7 +63,7 @@ setEnvs () { local t="" export CORE_PEER_LOCALMSPID="Org${org}MSP" #CORE_PEER_MSPCONFIGPATH=\$${ORG${org}_ADMIN_MSP} - t="\${ORG${org}_PEER${peer}_URL}" && export CORE_PEER_ADDRESS=`eval echo $t` + t="\${ORG${org}_PEER${peer}_URL}" && export CORE_PEER_ADDRESS=`eval echo $t` # this is not needed if specifying peerAddresses t="\${ORG${org}_ADMIN_MSP}" && export CORE_PEER_MSPCONFIGPATH=`eval echo $t` t="\${ORG${org}_PEER${peer}_TLS_ROOTCERT}" && export CORE_PEER_TLS_ROOTCERT_FILE=`eval echo $t` @@ -356,30 +356,30 @@ chaincodeInstall () { local peer=$2 local peer_url=$3 local peer_tls_root_cert=$4 - local name=$5 + local cc_name=$5 local version=$6 local cc_path=$7 - [ -z $org ] && [ -z $peer ] && [ -z $name ] && [ -z $version ] && [ -z $cc_path ] && echo_r "input param invalid" && exit -1 + [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $version ] && [ -z $cc_path ] && echo_r "input param invalid" && exit -1 echo "=== Install Chaincode on org ${org}/peer ${peer} === " - echo "name=${name}, version=${version}, path=${cc_path}" + echo "cc_name=${cc_name}, version=${version}, path=${cc_path}" setEnvs $org $peer echo "packaging chaincode into tar.gz package" - local label=${name} - #local label=${name}_${version} + local label=${cc_name} + #local label=${cc_name}_${version} - echo "packaging chaincode ${name} with path ${cc_path} and label ${label}" - peer lifecycle chaincode package ${name}.tar.gz \ + echo "packaging chaincode ${cc_name} with path ${cc_path} and label ${label}" + peer lifecycle chaincode package ${cc_name}.tar.gz \ --path ${cc_path} \ --lang golang \ --label ${label} rc=$? - [ $rc -ne 0 ] && echo "Error in packaging chaincode ${name}" && exit -1 + [ $rc -ne 0 ] && echo "Error in packaging chaincode ${cc_name}" && exit -1 # v1.x action #peer chaincode install \ - # -n ${name} \ + # -n ${cc_name} \ # -v $version \ # -p ${cc_path} \ # >&log.txt @@ -388,7 +388,7 @@ chaincodeInstall () { peer lifecycle chaincode install \ --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_tls_root_cert} \ - ${name}.tar.gz | tee >&log.txt + ${cc_name}.tar.gz | tee >&log.txt rc=$? [ $rc -ne 0 ] && cat log.txt @@ -439,7 +439,7 @@ chaincodeGetInstalled () { echo "querying installed chaincode and get its package id" peer lifecycle chaincode queryinstalled >&query.log local label=${cc_name} - #package_id=$(grep -o "${name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) package_id=$(grep -o "${label}:[a-z0-9]*" query.log) echo "Get the installed chaincode package with id= ${package_id} on peer $peer at $peer_url " @@ -458,7 +458,7 @@ chaincodeGetInstalled () { # Approve the chaincode definition -# chaincodeApproveForMyOrg channel org peer peer_url peer_tls_root_cert orderer_url orderer_tls_rootcert channel name version +# chaincodeApproveForMyOrg channel org peer peer_url peer_tls_root_cert orderer_url orderer_tls_rootcert channel cc_name version chaincodeApproveForMyOrg () { if [ "$#" -ne 9 -a "$#" -ne 11 ]; then echo_r "Wrong param number for chaincode approve" @@ -471,7 +471,7 @@ chaincodeApproveForMyOrg () { local orderer_url=$5 local orderer_tls_rootcert=$6 local channel=$7 - local name=$8 + local cc_name=$8 local version=$9 local collection_config="" # collection config file path for sideDB local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy @@ -488,8 +488,8 @@ chaincodeApproveForMyOrg () { echo "querying installed chaincode and get its package id" peer lifecycle chaincode queryinstalled >&query.log cat query.log - local label=${name} - #package_id=$(grep -o "${name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + local label=${cc_name} + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) package_id=$(grep -o "${label}:[a-z0-9]*" query.log) echo "Approve package id=${package_id} by Org ${org}/Peer ${peer}" @@ -498,7 +498,7 @@ chaincodeApproveForMyOrg () { peer lifecycle chaincode approveformyorg \ --peerAddresses ${peer_url} \ --channelID ${channel} \ - --name ${name} \ + --name ${cc_name} \ --version ${version} \ --init-required \ --package-id ${package_id} \ @@ -511,7 +511,7 @@ chaincodeApproveForMyOrg () { --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_tls_root_cert} \ --channelID ${channel} \ - --name ${name} \ + --name ${cc_name} \ --version ${version} \ --init-required \ --package-id ${package_id} \ @@ -529,8 +529,38 @@ chaincodeApproveForMyOrg () { echo "=== Chaincode is approved on remote peer$peer === " } -# Query the Approve the chaincode definition -# chaincodeCheckCommitReadiness channel org peer name version sequence +# Query the Approved chaincode definition +# chaincodeQueryApproved org peer peer_url peer_tls_root_cert channel cc_name +chaincodeQueryApproved () { + if [ "$#" -ne 6 ]; then + echo_r "Wrong param number for chaincode queryapproved" + exit -1 + fi + local org=$1 + local peer=$2 + local peer_url=$3 + local peer_tls_root_cert=$4 + local channel=$5 + local cc_name=$6 + + setEnvs $org $peer + + echo "Query the approved chaincode definition of $cc_name with ${peer_url} " + env | grep CORE_PEER + peer lifecycle chaincode queryapproved \ + --peerAddresses ${peer_url} \ + --tlsRootCertFiles ${peer_tls_root_cert} \ + --channelID ${channel} \ + --name ${cc_name} \ + --output json + + rc=$? + [ $rc -ne 0 ] && cat log.txt + verifyResult $rc "ChaincodeQueryApproved Failed: org ${org}/peer$peer" +} + +# Check the commitReadiness of the chaincode definition +# chaincodeCheckCommitReadiness channel org peer cc_name version sequence chaincodeCheckCommitReadiness () { if [ "$#" -ne 8 ]; then echo_r "Wrong param number for chaincode queryapproval" @@ -541,18 +571,18 @@ chaincodeCheckCommitReadiness () { local peer_url=$3 local peer_tls_root_cert=$4 local channel=$5 - local name=$6 + local cc_name=$6 local version=$7 local sequence=$8 setEnvs $org $peer - echo "checkcommitreadiness with chaincode $name $version $sequence" + echo "checkcommitreadiness with chaincode $cc_name $version $sequence" peer lifecycle chaincode checkcommitreadiness \ --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_tls_root_cert} \ --channelID ${channel} \ - --name ${name} \ + --name ${cc_name} \ --output json \ --version ${version} \ --sequence ${sequence} @@ -563,7 +593,7 @@ chaincodeCheckCommitReadiness () { } # Anyone can commit the chaincode definition once it's approved by major -# chaincodeCommit org peer channel orderer_url orderer_tls_rootcert name version [collection-config] [endorse-policy] +# chaincodeCommit org peer channel orderer_url orderer_tls_rootcert cc_name version [collection-config] [endorse-policy] chaincodeCommit () { if [ "$#" -ne 7 -a "$#" -ne 9 ]; then echo_r "Wrong param number for chaincode commit" @@ -574,7 +604,7 @@ chaincodeCommit () { local channel=$3 local orderer_url=$4 local orderer_tls_rootcert=$5 - local name=$6 + local cc_name=$6 local version=$7 local collection_config="" # collection config file path for sideDB local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy @@ -590,8 +620,8 @@ chaincodeCommit () { setEnvs $org $peer echo "querying installed chaincode and get its package id" peer lifecycle chaincode queryinstalled >&query.log - label=${name} - #package_id=$(grep -o "${name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) + label=${cc_name} + #package_id=$(grep -o "${cc_name}_${version}:[a-z0-9]*" query.log|cut -d ":" -f 2) package_id=$(grep -o "${label}:[a-z0-9]*" query.log) echo "package_id=${package_id}" @@ -601,7 +631,7 @@ chaincodeCommit () { peer lifecycle chaincode commit \ -o ${orderer_url} \ --channelID ${channel} \ - --name ${name} \ + --name ${cc_name} \ --version ${version} \ --init-required \ --sequence 1 \ @@ -616,7 +646,7 @@ chaincodeCommit () { peer lifecycle chaincode commit \ -o ${orderer_url} \ --channelID ${channel} \ - --name ${name} \ + --name ${cc_name} \ --version ${version} \ --init-required \ --sequence 1 \ @@ -648,17 +678,17 @@ chaincodeQueryCommitted () { local peer_url=$3 local peer_tls_root_cert=$4 local channel=$5 - local name=$6 + local cc_name=$6 setEnvs $org $peer - echo "Query the committed status of chaincode $name with ${ORG1_PEER0_URL} " + echo "Query the committed status of chaincode $cc_name with ${peer_url} " peer lifecycle chaincode querycommitted \ --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_tls_root_cert} \ --channelID ${channel} \ --output json \ - --name ${name} + --name ${cc_name} rc=$? [ $rc -ne 0 ] && cat log.txt @@ -666,7 +696,7 @@ chaincodeQueryCommitted () { } # Instantiate chaincode on specifized peer node -# chaincodeInstantiate channel org peer orderer_url name version args +# chaincodeInstantiate channel org peer orderer_url cc_name version args chaincodeInstantiate () { if [ "$#" -gt 9 -a "$#" -lt 7 ]; then echo_r "Wrong param number for chaincode instantaite" @@ -676,7 +706,7 @@ chaincodeInstantiate () { local org=$2 local peer=$3 local orderer_url=$4 - local name=$5 + local cc_name=$5 local version=$6 local args=$7 local collection_config="" # collection config file path for sideDB @@ -692,14 +722,14 @@ chaincodeInstantiate () { setEnvs $org $peer echo "=== chaincodeInstantiate for channel ${channel} on org $org/peer $peer ====" - echo "name=${name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" + echo "cc_name=${cc_name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), # lets supply it directly as we know it using the "-o" option if [ -z "$CORE_PEER_TLS_ENABLED" -o "$CORE_PEER_TLS_ENABLED" = "false" ]; then peer chaincode instantiate \ -o ${orderer_url} \ -C ${channel} \ - -n ${name} \ + -n ${cc_name} \ -v ${version} \ -c ${args} \ -P "${policy}" \ @@ -709,7 +739,7 @@ chaincodeInstantiate () { peer chaincode instantiate \ -o ${orderer_url} \ -C ${channel} \ - -n ${name} \ + -n ${cc_name} \ -v ${version} \ -c ${args} \ -P "${policy}" \ @@ -725,7 +755,7 @@ chaincodeInstantiate () { } # Invoke the Init func of chaincode to start the container -# Usage: chaincodeInit org peer channel orderer name args peer_url peer_org_tlsca +# Usage: chaincodeInit org peer channel orderer cc_name args peer_url peer_org_tlsca chaincodeInit () { if [ "$#" -ne 8 ]; then echo_r "Wrong param number for chaincode Init" @@ -735,14 +765,14 @@ chaincodeInit () { local peer=$2 local channel=$3 local orderer=$4 - local name=$5 + local cc_name=$5 local args=$6 local peer_url=$7 local peer_org_tlsca=$8 - [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 echo "=== chaincodeInit to orderer by id of org${org}/peer${peer} === " - echo "channel=${channel}, name=${name}, args=${args}" + echo "channel=${channel}, cc_name=${cc_name}, args=${args}" setEnvs $org $peer # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), # lets supply it directly as we know it using the "-o" option @@ -750,7 +780,7 @@ chaincodeInit () { peer chaincode invoke \ -o ${orderer} \ --channelID ${channel} \ - --name ${name} \ + --name ${cc_name} \ --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_org_tlsca} \ --isInit \ @@ -760,7 +790,7 @@ chaincodeInit () { peer chaincode invoke \ -o ${orderer} \ --channelID ${channel} \ - --name ${name} \ + --name ${cc_name} \ --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_org_tlsca} \ --isInit \ @@ -775,7 +805,7 @@ chaincodeInit () { echo "=== Chaincode Init done: peer$peer in channel ${channel} === " } -# Usage: chaincodeInvoke org peer channel orderer name args peer_url peer_org_tlsca +# Usage: chaincodeInvoke org peer channel orderer cc_name args peer_url peer_org_tlsca chaincodeInvoke () { if [ "$#" -ne 9 ]; then echo_r "Wrong param number for chaincode Invoke" @@ -788,12 +818,12 @@ chaincodeInvoke () { local channel=$5 local orderer_url=$6 local orderer_tls_rootcert=$7 - local name=$8 + local cc_name=$8 local args=$9 - [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 echo "=== chaincodeInvoke to orderer by id of org${org}/peer${peer} === " - echo "channel=${channel}, name=${name}, args=${args}" + echo "channel=${channel}, cc_name=${cc_name}, args=${args}" setEnvs $org $peer # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), # lets supply it directly as we know it using the "-o" option @@ -801,7 +831,7 @@ chaincodeInvoke () { peer chaincode invoke \ -o ${orderer_url} \ --channelID ${channel} \ - --name ${name} \ + --name ${cc_name} \ --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_org_tlsca} \ -c ${args} \ @@ -810,9 +840,9 @@ chaincodeInvoke () { peer chaincode invoke \ -o ${orderer_url} \ --channelID ${channel} \ - --name ${name} \ + --name ${cc_name} \ --peerAddresses ${peer_url} \ - --tlsRootCertFiles ${peer_org_tlsca} \ + --tlsRootCertFiles ${peer_org_tlsca} \ -c ${args} \ --tls \ --cafile ${orderer_tls_rootcert} \ @@ -824,7 +854,7 @@ chaincodeInvoke () { echo "=== Invoke transaction on peer$peer in channel ${channel} is successful === " } -# query org peer channel name args expected_result +# query org peer channel cc_name args expected_result chaincodeQuery () { if [ "$#" -ne 7 -a "$#" -ne 8 ]; then echo_r "Wrong param number $# for chaincode Query" @@ -836,16 +866,16 @@ chaincodeQuery () { local peer_url=$3 local peer_org_tlsca=$4 local channel=$5 - local name=$6 + local cc_name=$6 local args=$7 local expected_result="" [ $# -eq 8 ] && local expected_result=$8 - [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 + [ -z $channel ] && [ -z $org ] && [ -z $peer ] && [ -z $cc_name ] && [ -z $args ] && echo_r "input param invalid" && exit -1 echo "=== chaincodeQuery to org $org/peer $peer === " - echo "channel=${channel}, name=${name}, args=${args}, expected_result=${expected_result}" + echo "channel=${channel}, cc_name=${cc_name}, args=${args}, expected_result=${expected_result}" local rc=1 local starttime=$(date +%s) @@ -856,7 +886,7 @@ chaincodeQuery () { echo "Attempting to Query org ${org}/peer ${peer} ...$(($(date +%s)-starttime)) secs" peer chaincode query \ -C "${channel}" \ - -n "${name}" \ + -n "${cc_name}" \ --peerAddresses ${peer_url} \ --tlsRootCertFiles ${peer_org_tlsca} \ -c "${args}" \ @@ -933,7 +963,7 @@ chaincodeStartDev () { echo "=== Chaincode started in dev mode === " } -# chaincodeUpgrade channel org peer orderer_url name version args +# chaincodeUpgrade channel org peer orderer_url cc_name version args chaincodeUpgrade () { if [ "$#" -gt 9 -a "$#" -lt 7 ]; then echo_r "Wrong param number for chaincode instantaite" @@ -943,14 +973,14 @@ chaincodeUpgrade () { local org=$2 local peer=$3 local orderer_url=$4 - local name=$5 + local cc_name=$5 local version=$6 local args=$7 local collection_config="" # collection config file path for sideDB local policy="OR ('Org1MSP.member','Org2MSP.member')" # endorsement policy echo "=== chaincodeUpgrade to orderer by id of org ${org}/peer $peer === " - echo "name=${name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" + echo "cc_name=${cc_name}, version=${version}, args=${args}, collection_config=${collection_config}, policy=${policy}" setEnvs $org $peer # while 'peer chaincode' command can get the orderer endpoint from the peer (if join was successful), @@ -959,7 +989,7 @@ chaincodeUpgrade () { peer chaincode upgrade \ -o ${orderer_url} \ -C ${channel} \ - -n ${name} \ + -n ${cc_name} \ -v ${version} \ -c ${args} \ -P "${policy}" \ @@ -969,7 +999,7 @@ chaincodeUpgrade () { peer chaincode upgrade \ -o ${orderer_url} \ -C ${channel} \ - -n ${name} \ + -n ${cc_name} \ -v ${version} \ -c ${args} \ -P "${policy}" \ diff --git a/hyperledger_fabric/v2.3.0/scripts/test_cc_queryapproved.sh b/hyperledger_fabric/v2.3.0/scripts/test_cc_queryapproved.sh new file mode 100644 index 00000000..f1ad2ca0 --- /dev/null +++ b/hyperledger_fabric/v2.3.0/scripts/test_cc_queryapproved.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Importing useful functions for cc testing +if [ -f ./func.sh ]; then + source ./func.sh +elif [ -f scripts/func.sh ]; then + source scripts/func.sh +fi + +CC_NAME=${CC_NAME:-$CC_02_NAME} +CC_PATH=${CC_PATH:-$CC_02_PATH} + +echo_b "=== Query Approved Chaincode for ${CC_NAME} on all organizations ... ===" + +for org in "${ORGS[@]}" +do + t="\${ORG${org}_PEER0_URL}" && peer_url=`eval echo $t` + t="\${ORG${org}_PEER0_TLS_ROOTCERT}" && peer_tls_rootcert=`eval echo $t` + chaincodeQueryApproved "$org" 0 ${peer_url} ${peer_tls_rootcert} "${APP_CHANNEL}" ${CC_NAME} +done + +echo_g "=== Query Approved Chaincode done ===" + +echo