mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-25 11:05:10 +00:00
[Test] Using the Fabric test network
This commit is contained in:
parent
db69c6ff19
commit
cda836cb59
16 changed files with 1893 additions and 8 deletions
5
chaincode/fabcar/external/go.mod
vendored
5
chaincode/fabcar/external/go.mod
vendored
|
|
@ -2,4 +2,7 @@ module github.com/hyperledger/fabric-samples/chaincode/fabcar/external
|
||||||
|
|
||||||
go 1.13
|
go 1.13
|
||||||
|
|
||||||
require github.com/hyperledger/fabric-contract-api-go v1.0.0
|
require (
|
||||||
|
github.com/hyperledger/fabric-chaincode-go v0.0.0-20200128192331-2d899240a7ed
|
||||||
|
github.com/hyperledger/fabric-contract-api-go v1.0.0
|
||||||
|
)
|
||||||
|
|
|
||||||
2
chaincode/fabcar/external/go.sum
vendored
2
chaincode/fabcar/external/go.sum
vendored
|
|
@ -42,6 +42,7 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a
|
||||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||||
github.com/hyperledger/fabric-chaincode-go v0.0.0-20191108205148-17c4b2760b56 h1:BUCrT0VEO4ryJ7DAEGccqnEJcdHydx7wIJQ0ZGFEjJM=
|
github.com/hyperledger/fabric-chaincode-go v0.0.0-20191108205148-17c4b2760b56 h1:BUCrT0VEO4ryJ7DAEGccqnEJcdHydx7wIJQ0ZGFEjJM=
|
||||||
github.com/hyperledger/fabric-chaincode-go v0.0.0-20191108205148-17c4b2760b56/go.mod h1:HZK6PKLWrvdD/t0oSLiyaRaUM6fZ7qjJuOlb0zrn0mo=
|
github.com/hyperledger/fabric-chaincode-go v0.0.0-20191108205148-17c4b2760b56/go.mod h1:HZK6PKLWrvdD/t0oSLiyaRaUM6fZ7qjJuOlb0zrn0mo=
|
||||||
|
github.com/hyperledger/fabric-chaincode-go v0.0.0-20200128192331-2d899240a7ed h1:VNnrD/ilIUO9DDHQP/uioYSy1309rYy0Z1jf3GLNRIc=
|
||||||
github.com/hyperledger/fabric-chaincode-go v0.0.0-20200128192331-2d899240a7ed/go.mod h1:N7H3sA7Tx4k/YzFq7U0EPdqJtqvM4Kild0JoCc7C0Dc=
|
github.com/hyperledger/fabric-chaincode-go v0.0.0-20200128192331-2d899240a7ed/go.mod h1:N7H3sA7Tx4k/YzFq7U0EPdqJtqvM4Kild0JoCc7C0Dc=
|
||||||
github.com/hyperledger/fabric-contract-api-go v0.0.0-20191118113407-4c6ff12b4f96 h1:1PaDE2QfQB/5ZnvlrYZNH62xMtKE/9cjwIzy9fjpJmg=
|
github.com/hyperledger/fabric-contract-api-go v0.0.0-20191118113407-4c6ff12b4f96 h1:1PaDE2QfQB/5ZnvlrYZNH62xMtKE/9cjwIzy9fjpJmg=
|
||||||
github.com/hyperledger/fabric-contract-api-go v0.0.0-20191118113407-4c6ff12b4f96/go.mod h1:SdJkyS7/oJltu5Ap//5sCEdNlvj+ZzD3TwnJOt3zf4c=
|
github.com/hyperledger/fabric-contract-api-go v0.0.0-20191118113407-4c6ff12b4f96/go.mod h1:SdJkyS7/oJltu5Ap//5sCEdNlvj+ZzD3TwnJOt3zf4c=
|
||||||
|
|
@ -51,6 +52,7 @@ github.com/hyperledger/fabric-protos-go v0.0.0-20190821214336-621b908d5022/go.mo
|
||||||
github.com/hyperledger/fabric-protos-go v0.0.0-20190919234611-2a87503ac7c9/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
github.com/hyperledger/fabric-protos-go v0.0.0-20190919234611-2a87503ac7c9/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
||||||
github.com/hyperledger/fabric-protos-go v0.0.0-20191114160927-6bee4929a99f h1:t6+iLphkbJrM8i6YB0T/XxvoTlo50FglEf2hMJHxuOo=
|
github.com/hyperledger/fabric-protos-go v0.0.0-20191114160927-6bee4929a99f h1:t6+iLphkbJrM8i6YB0T/XxvoTlo50FglEf2hMJHxuOo=
|
||||||
github.com/hyperledger/fabric-protos-go v0.0.0-20191114160927-6bee4929a99f/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
github.com/hyperledger/fabric-protos-go v0.0.0-20191114160927-6bee4929a99f/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
||||||
|
github.com/hyperledger/fabric-protos-go v0.0.0-20200124220212-e9cfc186ba7b h1:rZ3Vro68vStzLYfcSrQlprjjCf5UmFk7QjKGgHL8IQg=
|
||||||
github.com/hyperledger/fabric-protos-go v0.0.0-20200124220212-e9cfc186ba7b/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
github.com/hyperledger/fabric-protos-go v0.0.0-20200124220212-e9cfc186ba7b/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
||||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||||
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
|
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8Nz
|
||||||
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||||
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
|
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
|
github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
|
||||||
|
|
@ -33,6 +34,7 @@ github.com/gobuffalo/packr v1.30.1 h1:hu1fuVR3fXEZR7rXNW3h8rqSML8EVAf6KNm0NKO/wK
|
||||||
github.com/gobuffalo/packr v1.30.1/go.mod h1:ljMyFO2EcrnzsHsN99cvbq055Y9OhRrIaviy289eRuk=
|
github.com/gobuffalo/packr v1.30.1/go.mod h1:ljMyFO2EcrnzsHsN99cvbq055Y9OhRrIaviy289eRuk=
|
||||||
github.com/gobuffalo/packr/v2 v2.5.1/go.mod h1:8f9c96ITobJlPzI44jj+4tHnEKNt0xXWSVlXRN9X1Iw=
|
github.com/gobuffalo/packr/v2 v2.5.1/go.mod h1:8f9c96ITobJlPzI44jj+4tHnEKNt0xXWSVlXRN9X1Iw=
|
||||||
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
|
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
|
||||||
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
|
@ -40,17 +42,12 @@ github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs
|
||||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||||
github.com/hyperledger/fabric-chaincode-go v0.0.0-20191108205148-17c4b2760b56 h1:BUCrT0VEO4ryJ7DAEGccqnEJcdHydx7wIJQ0ZGFEjJM=
|
github.com/hyperledger/fabric-chaincode-go v0.0.0-20200128192331-2d899240a7ed h1:VNnrD/ilIUO9DDHQP/uioYSy1309rYy0Z1jf3GLNRIc=
|
||||||
github.com/hyperledger/fabric-chaincode-go v0.0.0-20191108205148-17c4b2760b56/go.mod h1:HZK6PKLWrvdD/t0oSLiyaRaUM6fZ7qjJuOlb0zrn0mo=
|
|
||||||
github.com/hyperledger/fabric-chaincode-go v0.0.0-20200128192331-2d899240a7ed/go.mod h1:N7H3sA7Tx4k/YzFq7U0EPdqJtqvM4Kild0JoCc7C0Dc=
|
github.com/hyperledger/fabric-chaincode-go v0.0.0-20200128192331-2d899240a7ed/go.mod h1:N7H3sA7Tx4k/YzFq7U0EPdqJtqvM4Kild0JoCc7C0Dc=
|
||||||
github.com/hyperledger/fabric-contract-api-go v0.0.0-20191118113407-4c6ff12b4f96 h1:1PaDE2QfQB/5ZnvlrYZNH62xMtKE/9cjwIzy9fjpJmg=
|
|
||||||
github.com/hyperledger/fabric-contract-api-go v0.0.0-20191118113407-4c6ff12b4f96/go.mod h1:SdJkyS7/oJltu5Ap//5sCEdNlvj+ZzD3TwnJOt3zf4c=
|
|
||||||
github.com/hyperledger/fabric-contract-api-go v1.0.0 h1:ma1nQX1S/a3zDkfkTb0QXQHNGgJUmEfqHA9/CWmz8Y0=
|
github.com/hyperledger/fabric-contract-api-go v1.0.0 h1:ma1nQX1S/a3zDkfkTb0QXQHNGgJUmEfqHA9/CWmz8Y0=
|
||||||
github.com/hyperledger/fabric-contract-api-go v1.0.0/go.mod h1:PHF7I0hYI0cZF2j7cdyNHaY5FJD3Q49qnnNgsmxEPbM=
|
github.com/hyperledger/fabric-contract-api-go v1.0.0/go.mod h1:PHF7I0hYI0cZF2j7cdyNHaY5FJD3Q49qnnNgsmxEPbM=
|
||||||
github.com/hyperledger/fabric-protos-go v0.0.0-20190821214336-621b908d5022/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
|
||||||
github.com/hyperledger/fabric-protos-go v0.0.0-20190919234611-2a87503ac7c9/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
github.com/hyperledger/fabric-protos-go v0.0.0-20190919234611-2a87503ac7c9/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
||||||
github.com/hyperledger/fabric-protos-go v0.0.0-20191114160927-6bee4929a99f h1:t6+iLphkbJrM8i6YB0T/XxvoTlo50FglEf2hMJHxuOo=
|
github.com/hyperledger/fabric-protos-go v0.0.0-20200124220212-e9cfc186ba7b h1:rZ3Vro68vStzLYfcSrQlprjjCf5UmFk7QjKGgHL8IQg=
|
||||||
github.com/hyperledger/fabric-protos-go v0.0.0-20191114160927-6bee4929a99f/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
|
||||||
github.com/hyperledger/fabric-protos-go v0.0.0-20200124220212-e9cfc186ba7b/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
github.com/hyperledger/fabric-protos-go v0.0.0-20200124220212-e9cfc186ba7b/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0=
|
||||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||||
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
|
github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
|
||||||
|
|
@ -60,9 +57,11 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW
|
||||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||||
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
|
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
|
||||||
|
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||||
|
|
@ -71,6 +70,7 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN
|
||||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk=
|
github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk=
|
||||||
|
|
@ -88,6 +88,7 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
|
||||||
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
|
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
|
||||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
|
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
|
||||||
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
|
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
|
||||||
|
|
@ -134,6 +135,7 @@ google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoA
|
||||||
google.golang.org/grpc v1.23.0 h1:AzbTB6ux+okLTzP8Ru1Xs41C303zdcfEht7MQnYJt5A=
|
google.golang.org/grpc v1.23.0 h1:AzbTB6ux+okLTzP8Ru1Xs41C303zdcfEht7MQnYJt5A=
|
||||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||||
|
|
|
||||||
BIN
scripts/bin/configtxgen
Executable file
BIN
scripts/bin/configtxgen
Executable file
Binary file not shown.
BIN
scripts/bin/configtxlator
Executable file
BIN
scripts/bin/configtxlator
Executable file
Binary file not shown.
BIN
scripts/bin/cryptogen
Executable file
BIN
scripts/bin/cryptogen
Executable file
Binary file not shown.
BIN
scripts/bin/discover
Executable file
BIN
scripts/bin/discover
Executable file
Binary file not shown.
BIN
scripts/bin/fabric-ca-client
Executable file
BIN
scripts/bin/fabric-ca-client
Executable file
Binary file not shown.
BIN
scripts/bin/fabric-ca-server
Executable file
BIN
scripts/bin/fabric-ca-server
Executable file
Binary file not shown.
BIN
scripts/bin/idemixgen
Executable file
BIN
scripts/bin/idemixgen
Executable file
Binary file not shown.
BIN
scripts/bin/orderer
Executable file
BIN
scripts/bin/orderer
Executable file
Binary file not shown.
BIN
scripts/bin/peer
Executable file
BIN
scripts/bin/peer
Executable file
Binary file not shown.
201
scripts/bootstrap.sh
Executable file
201
scripts/bootstrap.sh
Executable file
|
|
@ -0,0 +1,201 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright IBM Corp. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
# if version not passed in, default to latest released version
|
||||||
|
VERSION=2.0.0
|
||||||
|
# if ca version not passed in, default to latest released version
|
||||||
|
CA_VERSION=1.4.6
|
||||||
|
# current version of thirdparty images (couchdb, kafka and zookeeper) released
|
||||||
|
THIRDPARTY_IMAGE_VERSION=0.4.18
|
||||||
|
ARCH=$(echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')")
|
||||||
|
MARCH=$(uname -m)
|
||||||
|
|
||||||
|
printHelp() {
|
||||||
|
echo "Usage: bootstrap.sh [version [ca_version [thirdparty_version]]] [options]"
|
||||||
|
echo
|
||||||
|
echo "options:"
|
||||||
|
echo "-h : this help"
|
||||||
|
echo "-d : bypass docker image download"
|
||||||
|
echo "-s : bypass fabric-samples repo clone"
|
||||||
|
echo "-b : bypass download of platform-specific binaries"
|
||||||
|
echo
|
||||||
|
echo "e.g. bootstrap.sh 2.0.0 1.4.6 0.4.18 -s"
|
||||||
|
echo "would download docker images and binaries for Fabric v2.0.0 and Fabric CA v1.4.6"
|
||||||
|
}
|
||||||
|
|
||||||
|
# dockerPull() pulls docker images from fabric and chaincode repositories
|
||||||
|
# note, if a docker image doesn't exist for a requested release, it will simply
|
||||||
|
# be skipped, since this script doesn't terminate upon errors.
|
||||||
|
|
||||||
|
dockerPull() {
|
||||||
|
#three_digit_image_tag is passed in, e.g. "1.4.6"
|
||||||
|
three_digit_image_tag=$1
|
||||||
|
shift
|
||||||
|
#two_digit_image_tag is derived, e.g. "1.4", especially useful as a local tag for two digit references to most recent baseos, ccenv, javaenv, nodeenv patch releases
|
||||||
|
two_digit_image_tag=$(echo $three_digit_image_tag | cut -d'.' -f1,2)
|
||||||
|
while [[ $# -gt 0 ]]
|
||||||
|
do
|
||||||
|
image_name="$1"
|
||||||
|
echo "====> hyperledger/fabric-$image_name:$three_digit_image_tag"
|
||||||
|
docker pull "hyperledger/fabric-$image_name:$three_digit_image_tag"
|
||||||
|
docker tag "hyperledger/fabric-$image_name:$three_digit_image_tag" "hyperledger/fabric-$image_name"
|
||||||
|
docker tag "hyperledger/fabric-$image_name:$three_digit_image_tag" "hyperledger/fabric-$image_name:$two_digit_image_tag"
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
cloneSamplesRepo() {
|
||||||
|
# clone (if needed) hyperledger/fabric-samples and checkout corresponding
|
||||||
|
# version to the binaries and docker images to be downloaded
|
||||||
|
if [ -d first-network ]; then
|
||||||
|
# if we are in the fabric-samples repo, checkout corresponding version
|
||||||
|
echo "===> Checking out v${VERSION} of hyperledger/fabric-samples"
|
||||||
|
git checkout v${VERSION}
|
||||||
|
elif [ -d fabric-samples ]; then
|
||||||
|
# if fabric-samples repo already cloned and in current directory,
|
||||||
|
# cd fabric-samples and checkout corresponding version
|
||||||
|
echo "===> Checking out v${VERSION} of hyperledger/fabric-samples"
|
||||||
|
cd fabric-samples && git checkout v${VERSION}
|
||||||
|
else
|
||||||
|
echo "===> Cloning hyperledger/fabric-samples repo and checkout v${VERSION}"
|
||||||
|
git clone -b master https://github.com/hyperledger/fabric-samples.git && cd fabric-samples && git checkout v${VERSION}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# This will download the .tar.gz
|
||||||
|
download() {
|
||||||
|
local BINARY_FILE=$1
|
||||||
|
local URL=$2
|
||||||
|
echo "===> Downloading: " "${URL}"
|
||||||
|
curl -L --retry 5 --retry-delay 3 "${URL}" | tar xz || rc=$?
|
||||||
|
if [ -n "$rc" ]; then
|
||||||
|
echo "==> There was an error downloading the binary file."
|
||||||
|
return 22
|
||||||
|
else
|
||||||
|
echo "==> Done."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pullBinaries() {
|
||||||
|
echo "===> Downloading version ${FABRIC_TAG} platform specific fabric binaries"
|
||||||
|
download "${BINARY_FILE}" "https://github.com/hyperledger/fabric/releases/download/v${VERSION}/${BINARY_FILE}"
|
||||||
|
if [ $? -eq 22 ]; then
|
||||||
|
echo
|
||||||
|
echo "------> ${FABRIC_TAG} platform specific fabric binary is not available to download <----"
|
||||||
|
echo
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "===> Downloading version ${CA_TAG} platform specific fabric-ca-client binary"
|
||||||
|
download "${CA_BINARY_FILE}" "https://github.com/hyperledger/fabric-ca/releases/download/v${CA_VERSION}/${CA_BINARY_FILE}"
|
||||||
|
if [ $? -eq 22 ]; then
|
||||||
|
echo
|
||||||
|
echo "------> ${CA_TAG} fabric-ca-client binary is not available to download (Available from 1.1.0-rc1) <----"
|
||||||
|
echo
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pullDockerImages() {
|
||||||
|
command -v docker >& /dev/null
|
||||||
|
NODOCKER=$?
|
||||||
|
if [ "${NODOCKER}" == 0 ]; then
|
||||||
|
FABRIC_IMAGES=(peer orderer ccenv tools)
|
||||||
|
case "$VERSION" in
|
||||||
|
1.*)
|
||||||
|
FABRIC_IMAGES+=(javaenv)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
2.*)
|
||||||
|
FABRIC_IMAGES+=(nodeenv baseos javaenv)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo "FABRIC_IMAGES:" "${FABRIC_IMAGES[@]}"
|
||||||
|
echo "===> Pulling fabric Images"
|
||||||
|
dockerPull "${FABRIC_TAG}" "${FABRIC_IMAGES[@]}"
|
||||||
|
echo "===> Pulling fabric ca Image"
|
||||||
|
CA_IMAGE=(ca)
|
||||||
|
dockerPull "${CA_TAG}" "${CA_IMAGE[@]}"
|
||||||
|
echo "===> Pulling thirdparty docker images"
|
||||||
|
THIRDPARTY_IMAGES=(zookeeper kafka couchdb)
|
||||||
|
dockerPull "${THIRDPARTY_TAG}" "${THIRDPARTY_IMAGES[@]}"
|
||||||
|
echo
|
||||||
|
echo "===> List out hyperledger docker images"
|
||||||
|
docker images | grep hyperledger
|
||||||
|
else
|
||||||
|
echo "========================================================="
|
||||||
|
echo "Docker not installed, bypassing download of Fabric images"
|
||||||
|
echo "========================================================="
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
DOCKER=true
|
||||||
|
SAMPLES=true
|
||||||
|
BINARIES=true
|
||||||
|
|
||||||
|
# Parse commandline args pull out
|
||||||
|
# version and/or ca-version strings first
|
||||||
|
if [ -n "$1" ] && [ "${1:0:1}" != "-" ]; then
|
||||||
|
VERSION=$1;shift
|
||||||
|
if [ -n "$1" ] && [ "${1:0:1}" != "-" ]; then
|
||||||
|
CA_VERSION=$1;shift
|
||||||
|
if [ -n "$1" ] && [ "${1:0:1}" != "-" ]; then
|
||||||
|
THIRDPARTY_IMAGE_VERSION=$1;shift
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# prior to 1.2.0 architecture was determined by uname -m
|
||||||
|
if [[ $VERSION =~ ^1\.[0-1]\.* ]]; then
|
||||||
|
export FABRIC_TAG=${MARCH}-${VERSION}
|
||||||
|
export CA_TAG=${MARCH}-${CA_VERSION}
|
||||||
|
export THIRDPARTY_TAG=${MARCH}-${THIRDPARTY_IMAGE_VERSION}
|
||||||
|
else
|
||||||
|
# starting with 1.2.0, multi-arch images will be default
|
||||||
|
: "${CA_TAG:="$CA_VERSION"}"
|
||||||
|
: "${FABRIC_TAG:="$VERSION"}"
|
||||||
|
: "${THIRDPARTY_TAG:="$THIRDPARTY_IMAGE_VERSION"}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
BINARY_FILE=hyperledger-fabric-${ARCH}-${VERSION}.tar.gz
|
||||||
|
CA_BINARY_FILE=hyperledger-fabric-ca-${ARCH}-${CA_VERSION}.tar.gz
|
||||||
|
|
||||||
|
# then parse opts
|
||||||
|
while getopts "h?dsb" opt; do
|
||||||
|
case "$opt" in
|
||||||
|
h|\?)
|
||||||
|
printHelp
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
d) DOCKER=false
|
||||||
|
;;
|
||||||
|
s) SAMPLES=false
|
||||||
|
;;
|
||||||
|
b) BINARIES=false
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$SAMPLES" == "true" ]; then
|
||||||
|
echo
|
||||||
|
echo "Clone hyperledger/fabric-samples repo"
|
||||||
|
echo
|
||||||
|
cloneSamplesRepo
|
||||||
|
fi
|
||||||
|
if [ "$BINARIES" == "true" ]; then
|
||||||
|
echo
|
||||||
|
echo "Pull Hyperledger Fabric binaries"
|
||||||
|
echo
|
||||||
|
pullBinaries
|
||||||
|
fi
|
||||||
|
if [ "$DOCKER" == "true" ]; then
|
||||||
|
echo
|
||||||
|
echo "Pull Hyperledger Fabric docker images"
|
||||||
|
echo
|
||||||
|
pullDockerImages
|
||||||
|
fi
|
||||||
606
scripts/config/configtx.yaml
Normal file
606
scripts/config/configtx.yaml
Normal file
|
|
@ -0,0 +1,606 @@
|
||||||
|
# Copyright IBM Corp. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
---
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# ORGANIZATIONS
|
||||||
|
#
|
||||||
|
# This section defines the organizational identities that can be referenced
|
||||||
|
# in the configuration profiles.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
Organizations:
|
||||||
|
|
||||||
|
# SampleOrg defines an MSP using the sampleconfig. It should never be used
|
||||||
|
# in production but may be used as a template for other definitions.
|
||||||
|
- &SampleOrg
|
||||||
|
# Name is the key by which this org will be referenced in channel
|
||||||
|
# configuration transactions.
|
||||||
|
# Name can include alphanumeric characters as well as dots and dashes.
|
||||||
|
Name: SampleOrg
|
||||||
|
|
||||||
|
# SkipAsForeign can be set to true for org definitions which are to be
|
||||||
|
# inherited from the orderer system channel during channel creation. This
|
||||||
|
# is especially useful when an admin of a single org without access to the
|
||||||
|
# MSP directories of the other orgs wishes to create a channel. Note
|
||||||
|
# this property must always be set to false for orgs included in block
|
||||||
|
# creation.
|
||||||
|
SkipAsForeign: false
|
||||||
|
|
||||||
|
# ID is the key by which this org's MSP definition will be referenced.
|
||||||
|
# ID can include alphanumeric characters as well as dots and dashes.
|
||||||
|
ID: SampleOrg
|
||||||
|
|
||||||
|
# MSPDir is the filesystem path which contains the MSP configuration.
|
||||||
|
MSPDir: msp
|
||||||
|
|
||||||
|
# Policies defines the set of policies at this level of the config tree
|
||||||
|
# For organization policies, their canonical path is usually
|
||||||
|
# /Channel/<Application|Orderer>/<OrgName>/<PolicyName>
|
||||||
|
Policies: &SampleOrgPolicies
|
||||||
|
Readers:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
|
# If your MSP is configured with the new NodeOUs, you might
|
||||||
|
# want to use a more specific rule like the following:
|
||||||
|
# Rule: "OR('SampleOrg.admin', 'SampleOrg.peer', 'SampleOrg.client')"
|
||||||
|
Writers:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
|
# If your MSP is configured with the new NodeOUs, you might
|
||||||
|
# want to use a more specific rule like the following:
|
||||||
|
# Rule: "OR('SampleOrg.admin', 'SampleOrg.client')"
|
||||||
|
Admins:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.admin')"
|
||||||
|
Endorsement:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
|
|
||||||
|
# OrdererEndpoints is a list of all orderers this org runs which clients
|
||||||
|
# and peers may to connect to to push transactions and receive blocks respectively.
|
||||||
|
OrdererEndpoints:
|
||||||
|
- "127.0.0.1:7050"
|
||||||
|
|
||||||
|
# AnchorPeers defines the location of peers which can be used for
|
||||||
|
# cross-org gossip communication. Note, this value is only encoded in
|
||||||
|
# the genesis block in the Application section context.
|
||||||
|
AnchorPeers:
|
||||||
|
- Host: 127.0.0.1
|
||||||
|
Port: 7051
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# CAPABILITIES
|
||||||
|
#
|
||||||
|
# This section defines the capabilities of fabric network. This is a new
|
||||||
|
# concept as of v1.1.0 and should not be utilized in mixed networks with
|
||||||
|
# v1.0.x peers and orderers. Capabilities define features which must be
|
||||||
|
# present in a fabric binary for that binary to safely participate in the
|
||||||
|
# fabric network. For instance, if a new MSP type is added, newer binaries
|
||||||
|
# might recognize and validate the signatures from this type, while older
|
||||||
|
# binaries without this support would be unable to validate those
|
||||||
|
# transactions. This could lead to different versions of the fabric binaries
|
||||||
|
# having different world states. Instead, defining a capability for a channel
|
||||||
|
# informs those binaries without this capability that they must cease
|
||||||
|
# processing transactions until they have been upgraded. For v1.0.x if any
|
||||||
|
# capabilities are defined (including a map with all capabilities turned off)
|
||||||
|
# then the v1.0.x peer will deliberately crash.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
Capabilities:
|
||||||
|
# Channel capabilities apply to both the orderers and the peers and must be
|
||||||
|
# supported by both.
|
||||||
|
# Set the value of the capability to true to require it.
|
||||||
|
Channel: &ChannelCapabilities
|
||||||
|
# V2.0 for Channel is a catchall flag for behavior which has been
|
||||||
|
# determined to be desired for all orderers and peers running at the v2.0.0
|
||||||
|
# level, but which would be incompatible with orderers and peers from
|
||||||
|
# prior releases.
|
||||||
|
# Prior to enabling V2.0 channel capabilities, ensure that all
|
||||||
|
# orderers and peers on a channel are at v2.0.0 or later.
|
||||||
|
V2_0: true
|
||||||
|
|
||||||
|
# Orderer capabilities apply only to the orderers, and may be safely
|
||||||
|
# used with prior release peers.
|
||||||
|
# Set the value of the capability to true to require it.
|
||||||
|
Orderer: &OrdererCapabilities
|
||||||
|
# V1.1 for Orderer is a catchall flag for behavior which has been
|
||||||
|
# determined to be desired for all orderers running at the v1.1.x
|
||||||
|
# level, but which would be incompatible with orderers from prior releases.
|
||||||
|
# Prior to enabling V2.0 orderer capabilities, ensure that all
|
||||||
|
# orderers on a channel are at v2.0.0 or later.
|
||||||
|
V2_0: true
|
||||||
|
|
||||||
|
# Application capabilities apply only to the peer network, and may be safely
|
||||||
|
# used with prior release orderers.
|
||||||
|
# Set the value of the capability to true to require it.
|
||||||
|
Application: &ApplicationCapabilities
|
||||||
|
# V2.0 for Application enables the new non-backwards compatible
|
||||||
|
# features and fixes of fabric v2.0.
|
||||||
|
# Prior to enabling V2.0 orderer capabilities, ensure that all
|
||||||
|
# orderers on a channel are at v2.0.0 or later.
|
||||||
|
V2_0: true
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# APPLICATION
|
||||||
|
#
|
||||||
|
# This section defines the values to encode into a config transaction or
|
||||||
|
# genesis block for application-related parameters.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
Application: &ApplicationDefaults
|
||||||
|
ACLs: &ACLsDefault
|
||||||
|
# This section provides defaults for policies for various resources
|
||||||
|
# in the system. These "resources" could be functions on system chaincodes
|
||||||
|
# (e.g., "GetBlockByNumber" on the "qscc" system chaincode) or other resources
|
||||||
|
# (e.g.,who can receive Block events). This section does NOT specify the resource's
|
||||||
|
# definition or API, but just the ACL policy for it.
|
||||||
|
#
|
||||||
|
# Users can override these defaults with their own policy mapping by defining the
|
||||||
|
# mapping under ACLs in their channel definition
|
||||||
|
|
||||||
|
#---New Lifecycle System Chaincode (_lifecycle) function to policy mapping for access control--#
|
||||||
|
|
||||||
|
# ACL policy for _lifecycle's "CheckCommitReadiness" function
|
||||||
|
_lifecycle/CheckCommitReadiness: /Channel/Application/Writers
|
||||||
|
|
||||||
|
# ACL policy for _lifecycle's "CommitChaincodeDefinition" function
|
||||||
|
_lifecycle/CommitChaincodeDefinition: /Channel/Application/Writers
|
||||||
|
|
||||||
|
# ACL policy for _lifecycle's "QueryChaincodeDefinition" function
|
||||||
|
_lifecycle/QueryChaincodeDefinition: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# ACL policy for _lifecycle's "QueryChaincodeDefinitions" function
|
||||||
|
_lifecycle/QueryChaincodeDefinitions: /Channel/Application/Readers
|
||||||
|
|
||||||
|
#---Lifecycle System Chaincode (lscc) function to policy mapping for access control---#
|
||||||
|
|
||||||
|
# ACL policy for lscc's "getid" function
|
||||||
|
lscc/ChaincodeExists: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# ACL policy for lscc's "getdepspec" function
|
||||||
|
lscc/GetDeploymentSpec: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# ACL policy for lscc's "getccdata" function
|
||||||
|
lscc/GetChaincodeData: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# ACL Policy for lscc's "getchaincodes" function
|
||||||
|
lscc/GetInstantiatedChaincodes: /Channel/Application/Readers
|
||||||
|
|
||||||
|
#---Query System Chaincode (qscc) function to policy mapping for access control---#
|
||||||
|
|
||||||
|
# ACL policy for qscc's "GetChainInfo" function
|
||||||
|
qscc/GetChainInfo: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# ACL policy for qscc's "GetBlockByNumber" function
|
||||||
|
qscc/GetBlockByNumber: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# ACL policy for qscc's "GetBlockByHash" function
|
||||||
|
qscc/GetBlockByHash: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# ACL policy for qscc's "GetTransactionByID" function
|
||||||
|
qscc/GetTransactionByID: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# ACL policy for qscc's "GetBlockByTxID" function
|
||||||
|
qscc/GetBlockByTxID: /Channel/Application/Readers
|
||||||
|
|
||||||
|
#---Configuration System Chaincode (cscc) function to policy mapping for access control---#
|
||||||
|
|
||||||
|
# ACL policy for cscc's "GetConfigBlock" function
|
||||||
|
cscc/GetConfigBlock: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# ACL policy for cscc's "GetConfigTree" function
|
||||||
|
cscc/GetConfigTree: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# ACL policy for cscc's "SimulateConfigTreeUpdate" function
|
||||||
|
cscc/SimulateConfigTreeUpdate: /Channel/Application/Readers
|
||||||
|
|
||||||
|
#---Miscellanesous peer function to policy mapping for access control---#
|
||||||
|
|
||||||
|
# ACL policy for invoking chaincodes on peer
|
||||||
|
peer/Propose: /Channel/Application/Writers
|
||||||
|
|
||||||
|
# ACL policy for chaincode to chaincode invocation
|
||||||
|
peer/ChaincodeToChaincode: /Channel/Application/Readers
|
||||||
|
|
||||||
|
#---Events resource to policy mapping for access control###---#
|
||||||
|
|
||||||
|
# ACL policy for sending block events
|
||||||
|
event/Block: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# ACL policy for sending filtered block events
|
||||||
|
event/FilteredBlock: /Channel/Application/Readers
|
||||||
|
|
||||||
|
# Organizations lists the orgs participating on the application side of the
|
||||||
|
# network.
|
||||||
|
Organizations:
|
||||||
|
|
||||||
|
# Policies defines the set of policies at this level of the config tree
|
||||||
|
# For Application policies, their canonical path is
|
||||||
|
# /Channel/Application/<PolicyName>
|
||||||
|
Policies: &ApplicationDefaultPolicies
|
||||||
|
LifecycleEndorsement:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "MAJORITY Endorsement"
|
||||||
|
Endorsement:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "MAJORITY Endorsement"
|
||||||
|
Readers:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "ANY Readers"
|
||||||
|
Writers:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "ANY Writers"
|
||||||
|
Admins:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "MAJORITY Admins"
|
||||||
|
|
||||||
|
# Capabilities describes the application level capabilities, see the
|
||||||
|
# dedicated Capabilities section elsewhere in this file for a full
|
||||||
|
# description
|
||||||
|
Capabilities:
|
||||||
|
<<: *ApplicationCapabilities
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# ORDERER
|
||||||
|
#
|
||||||
|
# This section defines the values to encode into a config transaction or
|
||||||
|
# genesis block for orderer related parameters.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
Orderer: &OrdererDefaults
|
||||||
|
|
||||||
|
# Orderer Type: The orderer implementation to start.
|
||||||
|
# Available types are "solo" and "kafka".
|
||||||
|
OrdererType: solo
|
||||||
|
|
||||||
|
# Addresses used to be the list of orderer addresses that clients and peers
|
||||||
|
# could connect to. However, this does not allow clients to associate orderer
|
||||||
|
# addresses and orderer organizations which can be useful for things such
|
||||||
|
# as TLS validation. The preferred way to specify orderer addresses is now
|
||||||
|
# to include the OrdererEndpoints item in your org definition
|
||||||
|
Addresses:
|
||||||
|
# - 127.0.0.1:7050
|
||||||
|
|
||||||
|
# Batch Timeout: The amount of time to wait before creating a batch.
|
||||||
|
BatchTimeout: 2s
|
||||||
|
|
||||||
|
# Batch Size: Controls the number of messages batched into a block.
|
||||||
|
# The orderer views messages opaquely, but typically, messages may
|
||||||
|
# be considered to be Fabric transactions. The 'batch' is the group
|
||||||
|
# of messages in the 'data' field of the block. Blocks will be a few kb
|
||||||
|
# larger than the batch size, when signatures, hashes, and other metadata
|
||||||
|
# is applied.
|
||||||
|
BatchSize:
|
||||||
|
|
||||||
|
# Max Message Count: The maximum number of messages to permit in a
|
||||||
|
# batch. No block will contain more than this number of messages.
|
||||||
|
MaxMessageCount: 500
|
||||||
|
|
||||||
|
# Absolute Max Bytes: The absolute maximum number of bytes allowed for
|
||||||
|
# the serialized messages in a batch. The maximum block size is this value
|
||||||
|
# plus the size of the associated metadata (usually a few KB depending
|
||||||
|
# upon the size of the signing identities). Any transaction larger than
|
||||||
|
# this value will be rejected by ordering. If the "kafka" OrdererType is
|
||||||
|
# selected, set 'message.max.bytes' and 'replica.fetch.max.bytes' on
|
||||||
|
# the Kafka brokers to a value that is larger than this one.
|
||||||
|
AbsoluteMaxBytes: 10 MB
|
||||||
|
|
||||||
|
# Preferred Max Bytes: The preferred maximum number of bytes allowed
|
||||||
|
# for the serialized messages in a batch. Roughly, this field may be considered
|
||||||
|
# the best effort maximum size of a batch. A batch will fill with messages
|
||||||
|
# until this size is reached (or the max message count, or batch timeout is
|
||||||
|
# exceeded). If adding a new message to the batch would cause the batch to
|
||||||
|
# exceed the preferred max bytes, then the current batch is closed and written
|
||||||
|
# to a block, and a new batch containing the new message is created. If a
|
||||||
|
# message larger than the preferred max bytes is received, then its batch
|
||||||
|
# will contain only that message. Because messages may be larger than
|
||||||
|
# preferred max bytes (up to AbsoluteMaxBytes), some batches may exceed
|
||||||
|
# the preferred max bytes, but will always contain exactly one transaction.
|
||||||
|
PreferredMaxBytes: 2 MB
|
||||||
|
|
||||||
|
# Max Channels is the maximum number of channels to allow on the ordering
|
||||||
|
# network. When set to 0, this implies no maximum number of channels.
|
||||||
|
MaxChannels: 0
|
||||||
|
|
||||||
|
Kafka:
|
||||||
|
# Brokers: A list of Kafka brokers to which the orderer connects. Edit
|
||||||
|
# this list to identify the brokers of the ordering service.
|
||||||
|
# NOTE: Use IP:port notation.
|
||||||
|
Brokers:
|
||||||
|
- kafka0:9092
|
||||||
|
- kafka1:9092
|
||||||
|
- kafka2:9092
|
||||||
|
|
||||||
|
# EtcdRaft defines configuration which must be set when the "etcdraft"
|
||||||
|
# orderertype is chosen.
|
||||||
|
EtcdRaft:
|
||||||
|
# The set of Raft replicas for this network. For the etcd/raft-based
|
||||||
|
# implementation, we expect every replica to also be an OSN. Therefore,
|
||||||
|
# a subset of the host:port items enumerated in this list should be
|
||||||
|
# replicated under the Orderer.Addresses key above.
|
||||||
|
Consenters:
|
||||||
|
- Host: raft0.example.com
|
||||||
|
Port: 7050
|
||||||
|
ClientTLSCert: path/to/ClientTLSCert0
|
||||||
|
ServerTLSCert: path/to/ServerTLSCert0
|
||||||
|
- Host: raft1.example.com
|
||||||
|
Port: 7050
|
||||||
|
ClientTLSCert: path/to/ClientTLSCert1
|
||||||
|
ServerTLSCert: path/to/ServerTLSCert1
|
||||||
|
- Host: raft2.example.com
|
||||||
|
Port: 7050
|
||||||
|
ClientTLSCert: path/to/ClientTLSCert2
|
||||||
|
ServerTLSCert: path/to/ServerTLSCert2
|
||||||
|
|
||||||
|
# Options to be specified for all the etcd/raft nodes. The values here
|
||||||
|
# are the defaults for all new channels and can be modified on a
|
||||||
|
# per-channel basis via configuration updates.
|
||||||
|
Options:
|
||||||
|
# TickInterval is the time interval between two Node.Tick invocations.
|
||||||
|
TickInterval: 500ms
|
||||||
|
|
||||||
|
# ElectionTick is the number of Node.Tick invocations that must pass
|
||||||
|
# between elections. That is, if a follower does not receive any
|
||||||
|
# message from the leader of current term before ElectionTick has
|
||||||
|
# elapsed, it will become candidate and start an election.
|
||||||
|
# ElectionTick must be greater than HeartbeatTick.
|
||||||
|
ElectionTick: 10
|
||||||
|
|
||||||
|
# HeartbeatTick is the number of Node.Tick invocations that must
|
||||||
|
# pass between heartbeats. That is, a leader sends heartbeat
|
||||||
|
# messages to maintain its leadership every HeartbeatTick ticks.
|
||||||
|
HeartbeatTick: 1
|
||||||
|
|
||||||
|
# MaxInflightBlocks limits the max number of in-flight append messages
|
||||||
|
# during optimistic replication phase.
|
||||||
|
MaxInflightBlocks: 5
|
||||||
|
|
||||||
|
# SnapshotIntervalSize defines number of bytes per which a snapshot is taken
|
||||||
|
SnapshotIntervalSize: 16 MB
|
||||||
|
|
||||||
|
# Organizations lists the orgs participating on the orderer side of the
|
||||||
|
# network.
|
||||||
|
Organizations:
|
||||||
|
|
||||||
|
# Policies defines the set of policies at this level of the config tree
|
||||||
|
# For Orderer policies, their canonical path is
|
||||||
|
# /Channel/Orderer/<PolicyName>
|
||||||
|
Policies:
|
||||||
|
Readers:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "ANY Readers"
|
||||||
|
Writers:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "ANY Writers"
|
||||||
|
Admins:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "MAJORITY Admins"
|
||||||
|
# BlockValidation specifies what signatures must be included in the block
|
||||||
|
# from the orderer for the peer to validate it.
|
||||||
|
BlockValidation:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "ANY Writers"
|
||||||
|
|
||||||
|
# Capabilities describes the orderer level capabilities, see the
|
||||||
|
# dedicated Capabilities section elsewhere in this file for a full
|
||||||
|
# description
|
||||||
|
Capabilities:
|
||||||
|
<<: *OrdererCapabilities
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# CHANNEL
|
||||||
|
#
|
||||||
|
# This section defines the values to encode into a config transaction or
|
||||||
|
# genesis block for channel related parameters.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
Channel: &ChannelDefaults
|
||||||
|
# Policies defines the set of policies at this level of the config tree
|
||||||
|
# For Channel policies, their canonical path is
|
||||||
|
# /Channel/<PolicyName>
|
||||||
|
Policies:
|
||||||
|
# Who may invoke the 'Deliver' API
|
||||||
|
Readers:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "ANY Readers"
|
||||||
|
# Who may invoke the 'Broadcast' API
|
||||||
|
Writers:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "ANY Writers"
|
||||||
|
# By default, who may modify elements at this config level
|
||||||
|
Admins:
|
||||||
|
Type: ImplicitMeta
|
||||||
|
Rule: "MAJORITY Admins"
|
||||||
|
|
||||||
|
|
||||||
|
# Capabilities describes the channel level capabilities, see the
|
||||||
|
# dedicated Capabilities section elsewhere in this file for a full
|
||||||
|
# description
|
||||||
|
Capabilities:
|
||||||
|
<<: *ChannelCapabilities
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# PROFILES
|
||||||
|
#
|
||||||
|
# Different configuration profiles may be encoded here to be specified as
|
||||||
|
# parameters to the configtxgen tool. The profiles which specify consortiums
|
||||||
|
# are to be used for generating the orderer genesis block. With the correct
|
||||||
|
# consortium members defined in the orderer genesis block, channel creation
|
||||||
|
# requests may be generated with only the org member names and a consortium
|
||||||
|
# name.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
Profiles:
|
||||||
|
|
||||||
|
# SampleSingleMSPSolo defines a configuration which uses the Solo orderer,
|
||||||
|
# and contains a single MSP definition (the MSP sampleconfig).
|
||||||
|
# The Consortium SampleConsortium has only a single member, SampleOrg.
|
||||||
|
SampleSingleMSPSolo:
|
||||||
|
<<: *ChannelDefaults
|
||||||
|
Orderer:
|
||||||
|
<<: *OrdererDefaults
|
||||||
|
Organizations:
|
||||||
|
- *SampleOrg
|
||||||
|
Consortiums:
|
||||||
|
SampleConsortium:
|
||||||
|
Organizations:
|
||||||
|
- *SampleOrg
|
||||||
|
|
||||||
|
# SampleSingleMSPKafka defines a configuration that differs from the
|
||||||
|
# SampleSingleMSPSolo one only in that it uses the Kafka-based orderer.
|
||||||
|
SampleSingleMSPKafka:
|
||||||
|
<<: *ChannelDefaults
|
||||||
|
Orderer:
|
||||||
|
<<: *OrdererDefaults
|
||||||
|
OrdererType: kafka
|
||||||
|
Organizations:
|
||||||
|
- *SampleOrg
|
||||||
|
Consortiums:
|
||||||
|
SampleConsortium:
|
||||||
|
Organizations:
|
||||||
|
- *SampleOrg
|
||||||
|
|
||||||
|
# SampleInsecureSolo defines a configuration which uses the Solo orderer,
|
||||||
|
# contains no MSP definitions, and allows all transactions and channel
|
||||||
|
# creation requests for the consortium SampleConsortium.
|
||||||
|
SampleInsecureSolo:
|
||||||
|
<<: *ChannelDefaults
|
||||||
|
Orderer:
|
||||||
|
<<: *OrdererDefaults
|
||||||
|
Consortiums:
|
||||||
|
SampleConsortium:
|
||||||
|
Organizations:
|
||||||
|
|
||||||
|
# SampleInsecureKafka defines a configuration that differs from the
|
||||||
|
# SampleInsecureSolo one only in that it uses the Kafka-based orderer.
|
||||||
|
SampleInsecureKafka:
|
||||||
|
<<: *ChannelDefaults
|
||||||
|
Orderer:
|
||||||
|
OrdererType: kafka
|
||||||
|
<<: *OrdererDefaults
|
||||||
|
Consortiums:
|
||||||
|
SampleConsortium:
|
||||||
|
Organizations:
|
||||||
|
|
||||||
|
# SampleDevModeSolo defines a configuration which uses the Solo orderer,
|
||||||
|
# contains the sample MSP as both orderer and consortium member, and
|
||||||
|
# requires only basic membership for admin privileges. It also defines
|
||||||
|
# an Application on the ordering system channel, which should usually
|
||||||
|
# be avoided.
|
||||||
|
SampleDevModeSolo:
|
||||||
|
<<: *ChannelDefaults
|
||||||
|
Orderer:
|
||||||
|
<<: *OrdererDefaults
|
||||||
|
Organizations:
|
||||||
|
- <<: *SampleOrg
|
||||||
|
Policies:
|
||||||
|
<<: *SampleOrgPolicies
|
||||||
|
Admins:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
|
Application:
|
||||||
|
<<: *ApplicationDefaults
|
||||||
|
Organizations:
|
||||||
|
- <<: *SampleOrg
|
||||||
|
Policies:
|
||||||
|
<<: *SampleOrgPolicies
|
||||||
|
Admins:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
|
Consortiums:
|
||||||
|
SampleConsortium:
|
||||||
|
Organizations:
|
||||||
|
- <<: *SampleOrg
|
||||||
|
Policies:
|
||||||
|
<<: *SampleOrgPolicies
|
||||||
|
Admins:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
|
|
||||||
|
# SampleDevModeKafka defines a configuration that differs from the
|
||||||
|
# SampleDevModeSolo one only in that it uses the Kafka-based orderer.
|
||||||
|
SampleDevModeKafka:
|
||||||
|
<<: *ChannelDefaults
|
||||||
|
Orderer:
|
||||||
|
<<: *OrdererDefaults
|
||||||
|
OrdererType: kafka
|
||||||
|
Organizations:
|
||||||
|
- <<: *SampleOrg
|
||||||
|
Policies:
|
||||||
|
<<: *SampleOrgPolicies
|
||||||
|
Admins:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
|
Application:
|
||||||
|
<<: *ApplicationDefaults
|
||||||
|
Organizations:
|
||||||
|
- <<: *SampleOrg
|
||||||
|
Policies:
|
||||||
|
<<: *SampleOrgPolicies
|
||||||
|
Admins:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
|
Consortiums:
|
||||||
|
SampleConsortium:
|
||||||
|
Organizations:
|
||||||
|
- <<: *SampleOrg
|
||||||
|
Policies:
|
||||||
|
<<: *SampleOrgPolicies
|
||||||
|
Admins:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
|
|
||||||
|
# SampleSingleMSPChannel defines a channel with only the sample org as a
|
||||||
|
# member. It is designed to be used in conjunction with SampleSingleMSPSolo
|
||||||
|
# and SampleSingleMSPKafka orderer profiles. Note, for channel creation
|
||||||
|
# profiles, only the 'Application' section and consortium # name are
|
||||||
|
# considered.
|
||||||
|
SampleSingleMSPChannel:
|
||||||
|
<<: *ChannelDefaults
|
||||||
|
Consortium: SampleConsortium
|
||||||
|
Application:
|
||||||
|
<<: *ApplicationDefaults
|
||||||
|
Organizations:
|
||||||
|
- <<: *SampleOrg
|
||||||
|
|
||||||
|
# SampleDevModeEtcdRaft defines a configuration that differs from the
|
||||||
|
# SampleDevModeSolo one only in that it uses the etcd/raft-based orderer.
|
||||||
|
SampleDevModeEtcdRaft:
|
||||||
|
<<: *ChannelDefaults
|
||||||
|
Orderer:
|
||||||
|
<<: *OrdererDefaults
|
||||||
|
OrdererType: etcdraft
|
||||||
|
Organizations:
|
||||||
|
- <<: *SampleOrg
|
||||||
|
Policies:
|
||||||
|
<<: *SampleOrgPolicies
|
||||||
|
Admins:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
|
Application:
|
||||||
|
<<: *ApplicationDefaults
|
||||||
|
Organizations:
|
||||||
|
- <<: *SampleOrg
|
||||||
|
Policies:
|
||||||
|
<<: *SampleOrgPolicies
|
||||||
|
Admins:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
|
Consortiums:
|
||||||
|
SampleConsortium:
|
||||||
|
Organizations:
|
||||||
|
- <<: *SampleOrg
|
||||||
|
Policies:
|
||||||
|
<<: *SampleOrgPolicies
|
||||||
|
Admins:
|
||||||
|
Type: Signature
|
||||||
|
Rule: "OR('SampleOrg.member')"
|
||||||
710
scripts/config/core.yaml
Normal file
710
scripts/config/core.yaml
Normal file
|
|
@ -0,0 +1,710 @@
|
||||||
|
# Copyright IBM Corp. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# Peer section
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
peer:
|
||||||
|
|
||||||
|
# The peer id provides a name for this peer instance and is used when
|
||||||
|
# naming docker resources.
|
||||||
|
id: jdoe
|
||||||
|
|
||||||
|
# The networkId allows for logical separation of networks and is used when
|
||||||
|
# naming docker resources.
|
||||||
|
networkId: dev
|
||||||
|
|
||||||
|
# The Address at local network interface this Peer will listen on.
|
||||||
|
# By default, it will listen on all network interfaces
|
||||||
|
listenAddress: 0.0.0.0:7051
|
||||||
|
|
||||||
|
# The endpoint this peer uses to listen for inbound chaincode connections.
|
||||||
|
# If this is commented-out, the listen address is selected to be
|
||||||
|
# the peer's address (see below) with port 7052
|
||||||
|
# chaincodeListenAddress: 0.0.0.0:7052
|
||||||
|
|
||||||
|
# The endpoint the chaincode for this peer uses to connect to the peer.
|
||||||
|
# If this is not specified, the chaincodeListenAddress address is selected.
|
||||||
|
# And if chaincodeListenAddress is not specified, address is selected from
|
||||||
|
# peer listenAddress.
|
||||||
|
# chaincodeAddress: 0.0.0.0:7052
|
||||||
|
|
||||||
|
# When used as peer config, this represents the endpoint to other peers
|
||||||
|
# in the same organization. For peers in other organization, see
|
||||||
|
# gossip.externalEndpoint for more info.
|
||||||
|
# When used as CLI config, this means the peer's endpoint to interact with
|
||||||
|
address: 0.0.0.0:7051
|
||||||
|
|
||||||
|
# Whether the Peer should programmatically determine its address
|
||||||
|
# This case is useful for docker containers.
|
||||||
|
addressAutoDetect: false
|
||||||
|
|
||||||
|
# Keepalive settings for peer server and clients
|
||||||
|
keepalive:
|
||||||
|
# Interval is the duration after which if the server does not see
|
||||||
|
# any activity from the client it pings the client to see if it's alive
|
||||||
|
interval: 7200s
|
||||||
|
# Timeout is the duration the server waits for a response
|
||||||
|
# from the client after sending a ping before closing the connection
|
||||||
|
timeout: 20s
|
||||||
|
# MinInterval is the minimum permitted time between client pings.
|
||||||
|
# If clients send pings more frequently, the peer server will
|
||||||
|
# disconnect them
|
||||||
|
minInterval: 60s
|
||||||
|
# Client keepalive settings for communicating with other peer nodes
|
||||||
|
client:
|
||||||
|
# Interval is the time between pings to peer nodes. This must
|
||||||
|
# greater than or equal to the minInterval specified by peer
|
||||||
|
# nodes
|
||||||
|
interval: 60s
|
||||||
|
# Timeout is the duration the client waits for a response from
|
||||||
|
# peer nodes before closing the connection
|
||||||
|
timeout: 20s
|
||||||
|
# DeliveryClient keepalive settings for communication with ordering
|
||||||
|
# nodes.
|
||||||
|
deliveryClient:
|
||||||
|
# Interval is the time between pings to ordering nodes. This must
|
||||||
|
# greater than or equal to the minInterval specified by ordering
|
||||||
|
# nodes.
|
||||||
|
interval: 60s
|
||||||
|
# Timeout is the duration the client waits for a response from
|
||||||
|
# ordering nodes before closing the connection
|
||||||
|
timeout: 20s
|
||||||
|
|
||||||
|
|
||||||
|
# Gossip related configuration
|
||||||
|
gossip:
|
||||||
|
# Bootstrap set to initialize gossip with.
|
||||||
|
# This is a list of other peers that this peer reaches out to at startup.
|
||||||
|
# Important: The endpoints here have to be endpoints of peers in the same
|
||||||
|
# organization, because the peer would refuse connecting to these endpoints
|
||||||
|
# unless they are in the same organization as the peer.
|
||||||
|
bootstrap: 127.0.0.1:7051
|
||||||
|
|
||||||
|
# NOTE: orgLeader and useLeaderElection parameters are mutual exclusive.
|
||||||
|
# Setting both to true would result in the termination of the peer
|
||||||
|
# since this is undefined state. If the peers are configured with
|
||||||
|
# useLeaderElection=false, make sure there is at least 1 peer in the
|
||||||
|
# organization that its orgLeader is set to true.
|
||||||
|
|
||||||
|
# Defines whenever peer will initialize dynamic algorithm for
|
||||||
|
# "leader" selection, where leader is the peer to establish
|
||||||
|
# connection with ordering service and use delivery protocol
|
||||||
|
# to pull ledger blocks from ordering service. It is recommended to
|
||||||
|
# use leader election for large networks of peers.
|
||||||
|
useLeaderElection: true
|
||||||
|
# Statically defines peer to be an organization "leader",
|
||||||
|
# where this means that current peer will maintain connection
|
||||||
|
# with ordering service and disseminate block across peers in
|
||||||
|
# its own organization
|
||||||
|
orgLeader: false
|
||||||
|
|
||||||
|
# Interval for membershipTracker polling
|
||||||
|
membershipTrackerInterval: 5s
|
||||||
|
|
||||||
|
# Overrides the endpoint that the peer publishes to peers
|
||||||
|
# in its organization. For peers in foreign organizations
|
||||||
|
# see 'externalEndpoint'
|
||||||
|
endpoint:
|
||||||
|
# Maximum count of blocks stored in memory
|
||||||
|
maxBlockCountToStore: 100
|
||||||
|
# Max time between consecutive message pushes(unit: millisecond)
|
||||||
|
maxPropagationBurstLatency: 10ms
|
||||||
|
# Max number of messages stored until a push is triggered to remote peers
|
||||||
|
maxPropagationBurstSize: 10
|
||||||
|
# Number of times a message is pushed to remote peers
|
||||||
|
propagateIterations: 1
|
||||||
|
# Number of peers selected to push messages to
|
||||||
|
propagatePeerNum: 3
|
||||||
|
# Determines frequency of pull phases(unit: second)
|
||||||
|
# Must be greater than digestWaitTime + responseWaitTime
|
||||||
|
pullInterval: 4s
|
||||||
|
# Number of peers to pull from
|
||||||
|
pullPeerNum: 3
|
||||||
|
# Determines frequency of pulling state info messages from peers(unit: second)
|
||||||
|
requestStateInfoInterval: 4s
|
||||||
|
# Determines frequency of pushing state info messages to peers(unit: second)
|
||||||
|
publishStateInfoInterval: 4s
|
||||||
|
# Maximum time a stateInfo message is kept until expired
|
||||||
|
stateInfoRetentionInterval:
|
||||||
|
# Time from startup certificates are included in Alive messages(unit: second)
|
||||||
|
publishCertPeriod: 10s
|
||||||
|
# Should we skip verifying block messages or not (currently not in use)
|
||||||
|
skipBlockVerification: false
|
||||||
|
# Dial timeout(unit: second)
|
||||||
|
dialTimeout: 3s
|
||||||
|
# Connection timeout(unit: second)
|
||||||
|
connTimeout: 2s
|
||||||
|
# Buffer size of received messages
|
||||||
|
recvBuffSize: 20
|
||||||
|
# Buffer size of sending messages
|
||||||
|
sendBuffSize: 200
|
||||||
|
# Time to wait before pull engine processes incoming digests (unit: second)
|
||||||
|
# Should be slightly smaller than requestWaitTime
|
||||||
|
digestWaitTime: 1s
|
||||||
|
# Time to wait before pull engine removes incoming nonce (unit: milliseconds)
|
||||||
|
# Should be slightly bigger than digestWaitTime
|
||||||
|
requestWaitTime: 1500ms
|
||||||
|
# Time to wait before pull engine ends pull (unit: second)
|
||||||
|
responseWaitTime: 2s
|
||||||
|
# Alive check interval(unit: second)
|
||||||
|
aliveTimeInterval: 5s
|
||||||
|
# Alive expiration timeout(unit: second)
|
||||||
|
aliveExpirationTimeout: 25s
|
||||||
|
# Reconnect interval(unit: second)
|
||||||
|
reconnectInterval: 25s
|
||||||
|
# This is an endpoint that is published to peers outside of the organization.
|
||||||
|
# If this isn't set, the peer will not be known to other organizations.
|
||||||
|
externalEndpoint:
|
||||||
|
# Leader election service configuration
|
||||||
|
election:
|
||||||
|
# Longest time peer waits for stable membership during leader election startup (unit: second)
|
||||||
|
startupGracePeriod: 15s
|
||||||
|
# Interval gossip membership samples to check its stability (unit: second)
|
||||||
|
membershipSampleInterval: 1s
|
||||||
|
# Time passes since last declaration message before peer decides to perform leader election (unit: second)
|
||||||
|
leaderAliveThreshold: 10s
|
||||||
|
# Time between peer sends propose message and declares itself as a leader (sends declaration message) (unit: second)
|
||||||
|
leaderElectionDuration: 5s
|
||||||
|
|
||||||
|
pvtData:
|
||||||
|
# pullRetryThreshold determines the maximum duration of time private data corresponding for a given block
|
||||||
|
# would be attempted to be pulled from peers until the block would be committed without the private data
|
||||||
|
pullRetryThreshold: 60s
|
||||||
|
# As private data enters the transient store, it is associated with the peer's ledger's height at that time.
|
||||||
|
# transientstoreMaxBlockRetention defines the maximum difference between the current ledger's height upon commit,
|
||||||
|
# and the private data residing inside the transient store that is guaranteed not to be purged.
|
||||||
|
# Private data is purged from the transient store when blocks with sequences that are multiples
|
||||||
|
# of transientstoreMaxBlockRetention are committed.
|
||||||
|
transientstoreMaxBlockRetention: 1000
|
||||||
|
# pushAckTimeout is the maximum time to wait for an acknowledgement from each peer
|
||||||
|
# at private data push at endorsement time.
|
||||||
|
pushAckTimeout: 3s
|
||||||
|
# Block to live pulling margin, used as a buffer
|
||||||
|
# to prevent peer from trying to pull private data
|
||||||
|
# from peers that is soon to be purged in next N blocks.
|
||||||
|
# This helps a newly joined peer catch up to current
|
||||||
|
# blockchain height quicker.
|
||||||
|
btlPullMargin: 10
|
||||||
|
# the process of reconciliation is done in an endless loop, while in each iteration reconciler tries to
|
||||||
|
# pull from the other peers the most recent missing blocks with a maximum batch size limitation.
|
||||||
|
# reconcileBatchSize determines the maximum batch size of missing private data that will be reconciled in a
|
||||||
|
# single iteration.
|
||||||
|
reconcileBatchSize: 10
|
||||||
|
# reconcileSleepInterval determines the time reconciler sleeps from end of an iteration until the beginning
|
||||||
|
# of the next reconciliation iteration.
|
||||||
|
reconcileSleepInterval: 1m
|
||||||
|
# reconciliationEnabled is a flag that indicates whether private data reconciliation is enable or not.
|
||||||
|
reconciliationEnabled: true
|
||||||
|
# skipPullingInvalidTransactionsDuringCommit is a flag that indicates whether pulling of invalid
|
||||||
|
# transaction's private data from other peers need to be skipped during the commit time and pulled
|
||||||
|
# only through reconciler.
|
||||||
|
skipPullingInvalidTransactionsDuringCommit: false
|
||||||
|
|
||||||
|
# Gossip state transfer related configuration
|
||||||
|
state:
|
||||||
|
# indicates whenever state transfer is enabled or not
|
||||||
|
# default value is true, i.e. state transfer is active
|
||||||
|
# and takes care to sync up missing blocks allowing
|
||||||
|
# lagging peer to catch up to speed with rest network
|
||||||
|
enabled: true
|
||||||
|
# checkInterval interval to check whether peer is lagging behind enough to
|
||||||
|
# request blocks via state transfer from another peer.
|
||||||
|
checkInterval: 10s
|
||||||
|
# responseTimeout amount of time to wait for state transfer response from
|
||||||
|
# other peers
|
||||||
|
responseTimeout: 3s
|
||||||
|
# batchSize the number of blocks to request via state transfer from another peer
|
||||||
|
batchSize: 10
|
||||||
|
# blockBufferSize reflects the size of the re-ordering buffer
|
||||||
|
# which captures blocks and takes care to deliver them in order
|
||||||
|
# down to the ledger layer. The actually buffer size is bounded between
|
||||||
|
# 0 and 2*blockBufferSize, each channel maintains its own buffer
|
||||||
|
blockBufferSize: 100
|
||||||
|
# maxRetries maximum number of re-tries to ask
|
||||||
|
# for single state transfer request
|
||||||
|
maxRetries: 3
|
||||||
|
|
||||||
|
# TLS Settings
|
||||||
|
tls:
|
||||||
|
# Require server-side TLS
|
||||||
|
enabled: false
|
||||||
|
# Require client certificates / mutual TLS.
|
||||||
|
# Note that clients that are not configured to use a certificate will
|
||||||
|
# fail to connect to the peer.
|
||||||
|
clientAuthRequired: false
|
||||||
|
# X.509 certificate used for TLS server
|
||||||
|
cert:
|
||||||
|
file: tls/server.crt
|
||||||
|
# Private key used for TLS server (and client if clientAuthEnabled
|
||||||
|
# is set to true
|
||||||
|
key:
|
||||||
|
file: tls/server.key
|
||||||
|
# Trusted root certificate chain for tls.cert
|
||||||
|
rootcert:
|
||||||
|
file: tls/ca.crt
|
||||||
|
# Set of root certificate authorities used to verify client certificates
|
||||||
|
clientRootCAs:
|
||||||
|
files:
|
||||||
|
- tls/ca.crt
|
||||||
|
# Private key used for TLS when making client connections. If
|
||||||
|
# not set, peer.tls.key.file will be used instead
|
||||||
|
clientKey:
|
||||||
|
file:
|
||||||
|
# X.509 certificate used for TLS when making client connections.
|
||||||
|
# If not set, peer.tls.cert.file will be used instead
|
||||||
|
clientCert:
|
||||||
|
file:
|
||||||
|
|
||||||
|
# Authentication contains configuration parameters related to authenticating
|
||||||
|
# client messages
|
||||||
|
authentication:
|
||||||
|
# the acceptable difference between the current server time and the
|
||||||
|
# client's time as specified in a client request message
|
||||||
|
timewindow: 15m
|
||||||
|
|
||||||
|
# Path on the file system where peer will store data (eg ledger). This
|
||||||
|
# location must be access control protected to prevent unintended
|
||||||
|
# modification that might corrupt the peer operations.
|
||||||
|
fileSystemPath: /var/hyperledger/production
|
||||||
|
|
||||||
|
# BCCSP (Blockchain crypto provider): Select which crypto implementation or
|
||||||
|
# library to use
|
||||||
|
BCCSP:
|
||||||
|
Default: SW
|
||||||
|
# Settings for the SW crypto provider (i.e. when DEFAULT: SW)
|
||||||
|
SW:
|
||||||
|
# TODO: The default Hash and Security level needs refactoring to be
|
||||||
|
# fully configurable. Changing these defaults requires coordination
|
||||||
|
# SHA2 is hardcoded in several places, not only BCCSP
|
||||||
|
Hash: SHA2
|
||||||
|
Security: 256
|
||||||
|
# Location of Key Store
|
||||||
|
FileKeyStore:
|
||||||
|
# If "", defaults to 'mspConfigPath'/keystore
|
||||||
|
KeyStore:
|
||||||
|
# Settings for the PKCS#11 crypto provider (i.e. when DEFAULT: PKCS11)
|
||||||
|
PKCS11:
|
||||||
|
# Location of the PKCS11 module library
|
||||||
|
Library:
|
||||||
|
# Token Label
|
||||||
|
Label:
|
||||||
|
# User PIN
|
||||||
|
Pin:
|
||||||
|
Hash:
|
||||||
|
Security:
|
||||||
|
|
||||||
|
# Path on the file system where peer will find MSP local configurations
|
||||||
|
mspConfigPath: msp
|
||||||
|
|
||||||
|
# Identifier of the local MSP
|
||||||
|
# ----!!!!IMPORTANT!!!-!!!IMPORTANT!!!-!!!IMPORTANT!!!!----
|
||||||
|
# Deployers need to change the value of the localMspId string.
|
||||||
|
# In particular, the name of the local MSP ID of a peer needs
|
||||||
|
# to match the name of one of the MSPs in each of the channel
|
||||||
|
# that this peer is a member of. Otherwise this peer's messages
|
||||||
|
# will not be identified as valid by other nodes.
|
||||||
|
localMspId: SampleOrg
|
||||||
|
|
||||||
|
# CLI common client config options
|
||||||
|
client:
|
||||||
|
# connection timeout
|
||||||
|
connTimeout: 3s
|
||||||
|
|
||||||
|
# Delivery service related config
|
||||||
|
deliveryclient:
|
||||||
|
# It sets the total time the delivery service may spend in reconnection
|
||||||
|
# attempts until its retry logic gives up and returns an error
|
||||||
|
reconnectTotalTimeThreshold: 3600s
|
||||||
|
|
||||||
|
# It sets the delivery service <-> ordering service node connection timeout
|
||||||
|
connTimeout: 3s
|
||||||
|
|
||||||
|
# It sets the delivery service maximal delay between consecutive retries
|
||||||
|
reConnectBackoffThreshold: 3600s
|
||||||
|
|
||||||
|
# A list of orderer endpoint addresses which should be overridden
|
||||||
|
# when found in channel configurations.
|
||||||
|
addressOverrides:
|
||||||
|
# - from:
|
||||||
|
# to:
|
||||||
|
# caCertsFile:
|
||||||
|
# - from:
|
||||||
|
# to:
|
||||||
|
# caCertsFile:
|
||||||
|
|
||||||
|
# Type for the local MSP - by default it's of type bccsp
|
||||||
|
localMspType: bccsp
|
||||||
|
|
||||||
|
# Used with Go profiling tools only in none production environment. In
|
||||||
|
# production, it should be disabled (eg enabled: false)
|
||||||
|
profile:
|
||||||
|
enabled: false
|
||||||
|
listenAddress: 0.0.0.0:6060
|
||||||
|
|
||||||
|
# Handlers defines custom handlers that can filter and mutate
|
||||||
|
# objects passing within the peer, such as:
|
||||||
|
# Auth filter - reject or forward proposals from clients
|
||||||
|
# Decorators - append or mutate the chaincode input passed to the chaincode
|
||||||
|
# Endorsers - Custom signing over proposal response payload and its mutation
|
||||||
|
# Valid handler definition contains:
|
||||||
|
# - A name which is a factory method name defined in
|
||||||
|
# core/handlers/library/library.go for statically compiled handlers
|
||||||
|
# - library path to shared object binary for pluggable filters
|
||||||
|
# Auth filters and decorators are chained and executed in the order that
|
||||||
|
# they are defined. For example:
|
||||||
|
# authFilters:
|
||||||
|
# -
|
||||||
|
# name: FilterOne
|
||||||
|
# library: /opt/lib/filter.so
|
||||||
|
# -
|
||||||
|
# name: FilterTwo
|
||||||
|
# decorators:
|
||||||
|
# -
|
||||||
|
# name: DecoratorOne
|
||||||
|
# -
|
||||||
|
# name: DecoratorTwo
|
||||||
|
# library: /opt/lib/decorator.so
|
||||||
|
# Endorsers are configured as a map that its keys are the endorsement system chaincodes that are being overridden.
|
||||||
|
# Below is an example that overrides the default ESCC and uses an endorsement plugin that has the same functionality
|
||||||
|
# as the default ESCC.
|
||||||
|
# If the 'library' property is missing, the name is used as the constructor method in the builtin library similar
|
||||||
|
# to auth filters and decorators.
|
||||||
|
# endorsers:
|
||||||
|
# escc:
|
||||||
|
# name: DefaultESCC
|
||||||
|
# library: /etc/hyperledger/fabric/plugin/escc.so
|
||||||
|
handlers:
|
||||||
|
authFilters:
|
||||||
|
-
|
||||||
|
name: DefaultAuth
|
||||||
|
-
|
||||||
|
name: ExpirationCheck # This filter checks identity x509 certificate expiration
|
||||||
|
decorators:
|
||||||
|
-
|
||||||
|
name: DefaultDecorator
|
||||||
|
endorsers:
|
||||||
|
escc:
|
||||||
|
name: DefaultEndorsement
|
||||||
|
library:
|
||||||
|
validators:
|
||||||
|
vscc:
|
||||||
|
name: DefaultValidation
|
||||||
|
library:
|
||||||
|
|
||||||
|
# library: /etc/hyperledger/fabric/plugin/escc.so
|
||||||
|
# Number of goroutines that will execute transaction validation in parallel.
|
||||||
|
# By default, the peer chooses the number of CPUs on the machine. Set this
|
||||||
|
# variable to override that choice.
|
||||||
|
# NOTE: overriding this value might negatively influence the performance of
|
||||||
|
# the peer so please change this value only if you know what you're doing
|
||||||
|
validatorPoolSize:
|
||||||
|
|
||||||
|
# The discovery service is used by clients to query information about peers,
|
||||||
|
# such as - which peers have joined a certain channel, what is the latest
|
||||||
|
# channel config, and most importantly - given a chaincode and a channel,
|
||||||
|
# what possible sets of peers satisfy the endorsement policy.
|
||||||
|
discovery:
|
||||||
|
enabled: true
|
||||||
|
# Whether the authentication cache is enabled or not.
|
||||||
|
authCacheEnabled: true
|
||||||
|
# The maximum size of the cache, after which a purge takes place
|
||||||
|
authCacheMaxSize: 1000
|
||||||
|
# The proportion (0 to 1) of entries that remain in the cache after the cache is purged due to overpopulation
|
||||||
|
authCachePurgeRetentionRatio: 0.75
|
||||||
|
# Whether to allow non-admins to perform non channel scoped queries.
|
||||||
|
# When this is false, it means that only peer admins can perform non channel scoped queries.
|
||||||
|
orgMembersAllowedAccess: false
|
||||||
|
|
||||||
|
# Limits is used to configure some internal resource limits.
|
||||||
|
limits:
|
||||||
|
# Concurrency limits the number of concurrently running system chaincode requests.
|
||||||
|
# This option is only supported for qscc at this time.
|
||||||
|
concurrency:
|
||||||
|
qscc: 5000
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# VM section
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
vm:
|
||||||
|
|
||||||
|
# Endpoint of the vm management system. For docker can be one of the following in general
|
||||||
|
# unix:///var/run/docker.sock
|
||||||
|
# http://localhost:2375
|
||||||
|
# https://localhost:2376
|
||||||
|
endpoint: unix:///var/run/docker.sock
|
||||||
|
|
||||||
|
# settings for docker vms
|
||||||
|
docker:
|
||||||
|
tls:
|
||||||
|
enabled: false
|
||||||
|
ca:
|
||||||
|
file: docker/ca.crt
|
||||||
|
cert:
|
||||||
|
file: docker/tls.crt
|
||||||
|
key:
|
||||||
|
file: docker/tls.key
|
||||||
|
|
||||||
|
# Enables/disables the standard out/err from chaincode containers for
|
||||||
|
# debugging purposes
|
||||||
|
attachStdout: false
|
||||||
|
|
||||||
|
# Parameters on creating docker container.
|
||||||
|
# Container may be efficiently created using ipam & dns-server for cluster
|
||||||
|
# NetworkMode - sets the networking mode for the container. Supported
|
||||||
|
# standard values are: `host`(default),`bridge`,`ipvlan`,`none`.
|
||||||
|
# Dns - a list of DNS servers for the container to use.
|
||||||
|
# Note: `Privileged` `Binds` `Links` and `PortBindings` properties of
|
||||||
|
# Docker Host Config are not supported and will not be used if set.
|
||||||
|
# LogConfig - sets the logging driver (Type) and related options
|
||||||
|
# (Config) for Docker. For more info,
|
||||||
|
# https://docs.docker.com/engine/admin/logging/overview/
|
||||||
|
# Note: Set LogConfig using Environment Variables is not supported.
|
||||||
|
hostConfig:
|
||||||
|
NetworkMode: host
|
||||||
|
Dns:
|
||||||
|
# - 192.168.0.1
|
||||||
|
LogConfig:
|
||||||
|
Type: json-file
|
||||||
|
Config:
|
||||||
|
max-size: "50m"
|
||||||
|
max-file: "5"
|
||||||
|
Memory: 2147483648
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# Chaincode section
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
chaincode:
|
||||||
|
|
||||||
|
# The id is used by the Chaincode stub to register the executing Chaincode
|
||||||
|
# ID with the Peer and is generally supplied through ENV variables
|
||||||
|
# the `path` form of ID is provided when installing the chaincode.
|
||||||
|
# The `name` is used for all other requests and can be any string.
|
||||||
|
id:
|
||||||
|
path:
|
||||||
|
name:
|
||||||
|
|
||||||
|
# Generic builder environment, suitable for most chaincode types
|
||||||
|
builder: $(DOCKER_NS)/fabric-ccenv:$(TWO_DIGIT_VERSION)
|
||||||
|
|
||||||
|
# Enables/disables force pulling of the base docker images (listed below)
|
||||||
|
# during user chaincode instantiation.
|
||||||
|
# Useful when using moving image tags (such as :latest)
|
||||||
|
pull: false
|
||||||
|
|
||||||
|
golang:
|
||||||
|
# golang will never need more than baseos
|
||||||
|
runtime: $(DOCKER_NS)/fabric-baseos:$(TWO_DIGIT_VERSION)
|
||||||
|
|
||||||
|
# whether or not golang chaincode should be linked dynamically
|
||||||
|
dynamicLink: false
|
||||||
|
|
||||||
|
java:
|
||||||
|
# This is an image based on java:openjdk-8 with addition compiler
|
||||||
|
# tools added for java shim layer packaging.
|
||||||
|
# This image is packed with shim layer libraries that are necessary
|
||||||
|
# for Java chaincode runtime.
|
||||||
|
runtime: $(DOCKER_NS)/fabric-javaenv:$(TWO_DIGIT_VERSION)
|
||||||
|
|
||||||
|
node:
|
||||||
|
# This is an image based on node:$(NODE_VER)-alpine
|
||||||
|
runtime: $(DOCKER_NS)/fabric-nodeenv:$(TWO_DIGIT_VERSION)
|
||||||
|
|
||||||
|
# List of directories to treat as external builders and launchers for
|
||||||
|
# chaincode. The external builder detection processing will iterate over the
|
||||||
|
# builders in the order specified below.
|
||||||
|
externalBuilders: []
|
||||||
|
# - path: /path/to/directory
|
||||||
|
# name: descriptive-builder-name
|
||||||
|
# environmentWhitelist:
|
||||||
|
# - ENVVAR_NAME_TO_PROPAGATE_FROM_PEER
|
||||||
|
# - GOPROXY
|
||||||
|
|
||||||
|
# The maximum duration to wait for the chaincode build and install process
|
||||||
|
# to complete.
|
||||||
|
installTimeout: 300s
|
||||||
|
|
||||||
|
# Timeout duration for starting up a container and waiting for Register
|
||||||
|
# to come through.
|
||||||
|
startuptimeout: 300s
|
||||||
|
|
||||||
|
# Timeout duration for Invoke and Init calls to prevent runaway.
|
||||||
|
# This timeout is used by all chaincodes in all the channels, including
|
||||||
|
# system chaincodes.
|
||||||
|
# Note that during Invoke, if the image is not available (e.g. being
|
||||||
|
# cleaned up when in development environment), the peer will automatically
|
||||||
|
# build the image, which might take more time. In production environment,
|
||||||
|
# the chaincode image is unlikely to be deleted, so the timeout could be
|
||||||
|
# reduced accordingly.
|
||||||
|
executetimeout: 30s
|
||||||
|
|
||||||
|
# There are 2 modes: "dev" and "net".
|
||||||
|
# In dev mode, user runs the chaincode after starting peer from
|
||||||
|
# command line on local machine.
|
||||||
|
# In net mode, peer will run chaincode in a docker container.
|
||||||
|
mode: net
|
||||||
|
|
||||||
|
# keepalive in seconds. In situations where the communiction goes through a
|
||||||
|
# proxy that does not support keep-alive, this parameter will maintain connection
|
||||||
|
# between peer and chaincode.
|
||||||
|
# A value <= 0 turns keepalive off
|
||||||
|
keepalive: 0
|
||||||
|
|
||||||
|
# system chaincodes whitelist. To add system chaincode "myscc" to the
|
||||||
|
# whitelist, add "myscc: enable" to the list below, and register in
|
||||||
|
# chaincode/importsysccs.go
|
||||||
|
system:
|
||||||
|
_lifecycle: enable
|
||||||
|
cscc: enable
|
||||||
|
lscc: enable
|
||||||
|
escc: enable
|
||||||
|
vscc: enable
|
||||||
|
qscc: enable
|
||||||
|
|
||||||
|
# Logging section for the chaincode container
|
||||||
|
logging:
|
||||||
|
# Default level for all loggers within the chaincode container
|
||||||
|
level: info
|
||||||
|
# Override default level for the 'shim' logger
|
||||||
|
shim: warning
|
||||||
|
# Format for the chaincode container logs
|
||||||
|
format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# Ledger section - ledger configuration encompasses both the blockchain
|
||||||
|
# and the state
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
ledger:
|
||||||
|
|
||||||
|
blockchain:
|
||||||
|
|
||||||
|
state:
|
||||||
|
# stateDatabase - options are "goleveldb", "CouchDB"
|
||||||
|
# goleveldb - default state database stored in goleveldb.
|
||||||
|
# CouchDB - store state database in CouchDB
|
||||||
|
stateDatabase: goleveldb
|
||||||
|
# Limit on the number of records to return per query
|
||||||
|
totalQueryLimit: 100000
|
||||||
|
couchDBConfig:
|
||||||
|
# It is recommended to run CouchDB on the same server as the peer, and
|
||||||
|
# not map the CouchDB container port to a server port in docker-compose.
|
||||||
|
# Otherwise proper security must be provided on the connection between
|
||||||
|
# CouchDB client (on the peer) and server.
|
||||||
|
couchDBAddress: 127.0.0.1:5984
|
||||||
|
# This username must have read and write authority on CouchDB
|
||||||
|
username:
|
||||||
|
# The password is recommended to pass as an environment variable
|
||||||
|
# during start up (eg CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD).
|
||||||
|
# If it is stored here, the file must be access control protected
|
||||||
|
# to prevent unintended users from discovering the password.
|
||||||
|
password:
|
||||||
|
# Number of retries for CouchDB errors
|
||||||
|
maxRetries: 3
|
||||||
|
# Number of retries for CouchDB errors during peer startup
|
||||||
|
maxRetriesOnStartup: 12
|
||||||
|
# CouchDB request timeout (unit: duration, e.g. 20s)
|
||||||
|
requestTimeout: 35s
|
||||||
|
# Limit on the number of records per each CouchDB query
|
||||||
|
# Note that chaincode queries are only bound by totalQueryLimit.
|
||||||
|
# Internally the chaincode may execute multiple CouchDB queries,
|
||||||
|
# each of size internalQueryLimit.
|
||||||
|
internalQueryLimit: 1000
|
||||||
|
# Limit on the number of records per CouchDB bulk update batch
|
||||||
|
maxBatchUpdateSize: 1000
|
||||||
|
# Warm indexes after every N blocks.
|
||||||
|
# This option warms any indexes that have been
|
||||||
|
# deployed to CouchDB after every N blocks.
|
||||||
|
# A value of 1 will warm indexes after every block commit,
|
||||||
|
# to ensure fast selector queries.
|
||||||
|
# Increasing the value may improve write efficiency of peer and CouchDB,
|
||||||
|
# but may degrade query response time.
|
||||||
|
warmIndexesAfterNBlocks: 1
|
||||||
|
# Create the _global_changes system database
|
||||||
|
# This is optional. Creating the global changes database will require
|
||||||
|
# additional system resources to track changes and maintain the database
|
||||||
|
createGlobalChangesDB: false
|
||||||
|
# CacheSize denotes the maximum mega bytes (MB) to be allocated for the in-memory state
|
||||||
|
# cache. Note that CacheSize needs to be a multiple of 32 MB. If it is not a multiple
|
||||||
|
# of 32 MB, the peer would round the size to the next multiple of 32 MB.
|
||||||
|
# To disable the cache, 0 MB needs to be assigned to the cacheSize.
|
||||||
|
cacheSize: 64
|
||||||
|
|
||||||
|
history:
|
||||||
|
# enableHistoryDatabase - options are true or false
|
||||||
|
# Indicates if the history of key updates should be stored.
|
||||||
|
# All history 'index' will be stored in goleveldb, regardless if using
|
||||||
|
# CouchDB or alternate database for the state.
|
||||||
|
enableHistoryDatabase: true
|
||||||
|
|
||||||
|
pvtdataStore:
|
||||||
|
# the maximum db batch size for converting
|
||||||
|
# the ineligible missing data entries to eligible missing data entries
|
||||||
|
collElgProcMaxDbBatchSize: 5000
|
||||||
|
# the minimum duration (in milliseconds) between writing
|
||||||
|
# two consecutive db batches for converting the ineligible missing data entries to eligible missing data entries
|
||||||
|
collElgProcDbBatchesInterval: 1000
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# Operations section
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
operations:
|
||||||
|
# host and port for the operations server
|
||||||
|
listenAddress: 127.0.0.1:9443
|
||||||
|
|
||||||
|
# TLS configuration for the operations endpoint
|
||||||
|
tls:
|
||||||
|
# TLS enabled
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# path to PEM encoded server certificate for the operations server
|
||||||
|
cert:
|
||||||
|
file:
|
||||||
|
|
||||||
|
# path to PEM encoded server key for the operations server
|
||||||
|
key:
|
||||||
|
file:
|
||||||
|
|
||||||
|
# most operations service endpoints require client authentication when TLS
|
||||||
|
# is enabled. clientAuthRequired requires client certificate authentication
|
||||||
|
# at the TLS layer to access all resources.
|
||||||
|
clientAuthRequired: false
|
||||||
|
|
||||||
|
# paths to PEM encoded ca certificates to trust for client authentication
|
||||||
|
clientRootCAs:
|
||||||
|
files: []
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# Metrics section
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
metrics:
|
||||||
|
# metrics provider is one of statsd, prometheus, or disabled
|
||||||
|
provider: disabled
|
||||||
|
|
||||||
|
# statsd configuration
|
||||||
|
statsd:
|
||||||
|
# network type: tcp or udp
|
||||||
|
network: udp
|
||||||
|
|
||||||
|
# statsd server address
|
||||||
|
address: 127.0.0.1:8125
|
||||||
|
|
||||||
|
# the interval at which locally cached counters and gauges are pushed
|
||||||
|
# to statsd; timings are pushed immediately
|
||||||
|
writeInterval: 10s
|
||||||
|
|
||||||
|
# prefix is prepended to all emitted statsd metrics
|
||||||
|
prefix:
|
||||||
361
scripts/config/orderer.yaml
Normal file
361
scripts/config/orderer.yaml
Normal file
|
|
@ -0,0 +1,361 @@
|
||||||
|
# Copyright IBM Corp. All Rights Reserved.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
---
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Orderer Configuration
|
||||||
|
#
|
||||||
|
# - This controls the type and configuration of the orderer.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
General:
|
||||||
|
# Listen address: The IP on which to bind to listen.
|
||||||
|
ListenAddress: 127.0.0.1
|
||||||
|
|
||||||
|
# Listen port: The port on which to bind to listen.
|
||||||
|
ListenPort: 7050
|
||||||
|
|
||||||
|
# TLS: TLS settings for the GRPC server.
|
||||||
|
TLS:
|
||||||
|
Enabled: false
|
||||||
|
# PrivateKey governs the file location of the private key of the TLS certificate.
|
||||||
|
PrivateKey: tls/server.key
|
||||||
|
# Certificate governs the file location of the server TLS certificate.
|
||||||
|
Certificate: tls/server.crt
|
||||||
|
RootCAs:
|
||||||
|
- tls/ca.crt
|
||||||
|
ClientAuthRequired: false
|
||||||
|
ClientRootCAs:
|
||||||
|
# Keepalive settings for the GRPC server.
|
||||||
|
Keepalive:
|
||||||
|
# ServerMinInterval is the minimum permitted time between client pings.
|
||||||
|
# If clients send pings more frequently, the server will
|
||||||
|
# disconnect them.
|
||||||
|
ServerMinInterval: 60s
|
||||||
|
# ServerInterval is the time between pings to clients.
|
||||||
|
ServerInterval: 7200s
|
||||||
|
# ServerTimeout is the duration the server waits for a response from
|
||||||
|
# a client before closing the connection.
|
||||||
|
ServerTimeout: 20s
|
||||||
|
# Cluster settings for ordering service nodes that communicate with other ordering service nodes
|
||||||
|
# such as Raft based ordering service.
|
||||||
|
Cluster:
|
||||||
|
# SendBufferSize is the maximum number of messages in the egress buffer.
|
||||||
|
# Consensus messages are dropped if the buffer is full, and transaction
|
||||||
|
# messages are waiting for space to be freed.
|
||||||
|
SendBufferSize: 10
|
||||||
|
# ClientCertificate governs the file location of the client TLS certificate
|
||||||
|
# used to establish mutual TLS connections with other ordering service nodes.
|
||||||
|
ClientCertificate:
|
||||||
|
# ClientPrivateKey governs the file location of the private key of the client TLS certificate.
|
||||||
|
ClientPrivateKey:
|
||||||
|
# The below 4 properties should be either set together, or be unset together.
|
||||||
|
# If they are set, then the orderer node uses a separate listener for intra-cluster
|
||||||
|
# communication. If they are unset, then the general orderer listener is used.
|
||||||
|
# This is useful if you want to use a different TLS server certificates on the
|
||||||
|
# client-facing and the intra-cluster listeners.
|
||||||
|
|
||||||
|
# ListenPort defines the port on which the cluster listens to connections.
|
||||||
|
ListenPort:
|
||||||
|
# ListenAddress defines the IP on which to listen to intra-cluster communication.
|
||||||
|
ListenAddress:
|
||||||
|
# ServerCertificate defines the file location of the server TLS certificate used for intra-cluster
|
||||||
|
# communication.
|
||||||
|
ServerCertificate:
|
||||||
|
# ServerPrivateKey defines the file location of the private key of the TLS certificate.
|
||||||
|
ServerPrivateKey:
|
||||||
|
|
||||||
|
# Bootstrap method: The method by which to obtain the bootstrap block
|
||||||
|
# system channel is specified. The option can be one of:
|
||||||
|
# "file" - path to a faile containing the genesis block or config block of system channel
|
||||||
|
# "none" - allows an orderer to start without a system channel configuration
|
||||||
|
BootstrapMethod: file
|
||||||
|
|
||||||
|
# Bootstrap file: The file containing the bootstrap block to use when
|
||||||
|
# initializing the orderer system channel and BootstrapMethod is set to
|
||||||
|
# "file". The bootstrap file can be the genesis block, and it can also be
|
||||||
|
# a config block for late bootstrap of some consensus methods like Raft.
|
||||||
|
# Generate a genesis block by updating $FABRIC_CFG_PATH/configtx.yaml and
|
||||||
|
# using configtxgen command with "-outputBlock" option.
|
||||||
|
# Defaults to file "genesisblock" (in $FABRIC_CFG_PATH directory) if not specified.
|
||||||
|
BootstrapFile:
|
||||||
|
|
||||||
|
# LocalMSPDir is where to find the private crypto material needed by the
|
||||||
|
# orderer. It is set relative here as a default for dev environments but
|
||||||
|
# should be changed to the real location in production.
|
||||||
|
LocalMSPDir: msp
|
||||||
|
|
||||||
|
# LocalMSPID is the identity to register the local MSP material with the MSP
|
||||||
|
# manager. IMPORTANT: The local MSP ID of an orderer needs to match the MSP
|
||||||
|
# ID of one of the organizations defined in the orderer system channel's
|
||||||
|
# /Channel/Orderer configuration. The sample organization defined in the
|
||||||
|
# sample configuration provided has an MSP ID of "SampleOrg".
|
||||||
|
LocalMSPID: SampleOrg
|
||||||
|
|
||||||
|
# Enable an HTTP service for Go "pprof" profiling as documented at:
|
||||||
|
# https://golang.org/pkg/net/http/pprof
|
||||||
|
Profile:
|
||||||
|
Enabled: false
|
||||||
|
Address: 0.0.0.0:6060
|
||||||
|
|
||||||
|
# BCCSP configures the blockchain crypto service providers.
|
||||||
|
BCCSP:
|
||||||
|
# Default specifies the preferred blockchain crypto service provider
|
||||||
|
# to use. If the preferred provider is not available, the software
|
||||||
|
# based provider ("SW") will be used.
|
||||||
|
# Valid providers are:
|
||||||
|
# - SW: a software based crypto provider
|
||||||
|
# - PKCS11: a CA hardware security module crypto provider.
|
||||||
|
Default: SW
|
||||||
|
|
||||||
|
# SW configures the software based blockchain crypto provider.
|
||||||
|
SW:
|
||||||
|
# TODO: The default Hash and Security level needs refactoring to be
|
||||||
|
# fully configurable. Changing these defaults requires coordination
|
||||||
|
# SHA2 is hardcoded in several places, not only BCCSP
|
||||||
|
Hash: SHA2
|
||||||
|
Security: 256
|
||||||
|
# Location of key store. If this is unset, a location will be
|
||||||
|
# chosen using: 'LocalMSPDir'/keystore
|
||||||
|
FileKeyStore:
|
||||||
|
KeyStore:
|
||||||
|
|
||||||
|
# Settings for the PKCS#11 crypto provider (i.e. when DEFAULT: PKCS11)
|
||||||
|
PKCS11:
|
||||||
|
# Location of the PKCS11 module library
|
||||||
|
Library:
|
||||||
|
# Token Label
|
||||||
|
Label:
|
||||||
|
# User PIN
|
||||||
|
Pin:
|
||||||
|
Hash:
|
||||||
|
Security:
|
||||||
|
FileKeyStore:
|
||||||
|
KeyStore:
|
||||||
|
|
||||||
|
# Authentication contains configuration parameters related to authenticating
|
||||||
|
# client messages
|
||||||
|
Authentication:
|
||||||
|
# the acceptable difference between the current server time and the
|
||||||
|
# client's time as specified in a client request message
|
||||||
|
TimeWindow: 15m
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# SECTION: File Ledger
|
||||||
|
#
|
||||||
|
# - This section applies to the configuration of the file or json ledgers.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
FileLedger:
|
||||||
|
|
||||||
|
# Location: The directory to store the blocks in.
|
||||||
|
# NOTE: If this is unset, a new temporary location will be chosen every time
|
||||||
|
# the orderer is restarted, using the prefix specified by Prefix.
|
||||||
|
Location: /var/hyperledger/production/orderer
|
||||||
|
|
||||||
|
# The prefix to use when generating a ledger directory in temporary space.
|
||||||
|
# Otherwise, this value is ignored.
|
||||||
|
Prefix: hyperledger-fabric-ordererledger
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# SECTION: Kafka
|
||||||
|
#
|
||||||
|
# - This section applies to the configuration of the Kafka-based orderer, and
|
||||||
|
# its interaction with the Kafka cluster.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
Kafka:
|
||||||
|
|
||||||
|
# Retry: What do if a connection to the Kafka cluster cannot be established,
|
||||||
|
# or if a metadata request to the Kafka cluster needs to be repeated.
|
||||||
|
Retry:
|
||||||
|
# When a new channel is created, or when an existing channel is reloaded
|
||||||
|
# (in case of a just-restarted orderer), the orderer interacts with the
|
||||||
|
# Kafka cluster in the following ways:
|
||||||
|
# 1. It creates a Kafka producer (writer) for the Kafka partition that
|
||||||
|
# corresponds to the channel.
|
||||||
|
# 2. It uses that producer to post a no-op CONNECT message to that
|
||||||
|
# partition
|
||||||
|
# 3. It creates a Kafka consumer (reader) for that partition.
|
||||||
|
# If any of these steps fail, they will be re-attempted every
|
||||||
|
# <ShortInterval> for a total of <ShortTotal>, and then every
|
||||||
|
# <LongInterval> for a total of <LongTotal> until they succeed.
|
||||||
|
# Note that the orderer will be unable to write to or read from a
|
||||||
|
# channel until all of the steps above have been completed successfully.
|
||||||
|
ShortInterval: 5s
|
||||||
|
ShortTotal: 10m
|
||||||
|
LongInterval: 5m
|
||||||
|
LongTotal: 12h
|
||||||
|
# Affects the socket timeouts when waiting for an initial connection, a
|
||||||
|
# response, or a transmission. See Config.Net for more info:
|
||||||
|
# https://godoc.org/github.com/Shopify/sarama#Config
|
||||||
|
NetworkTimeouts:
|
||||||
|
DialTimeout: 10s
|
||||||
|
ReadTimeout: 10s
|
||||||
|
WriteTimeout: 10s
|
||||||
|
# Affects the metadata requests when the Kafka cluster is in the middle
|
||||||
|
# of a leader election.See Config.Metadata for more info:
|
||||||
|
# https://godoc.org/github.com/Shopify/sarama#Config
|
||||||
|
Metadata:
|
||||||
|
RetryBackoff: 250ms
|
||||||
|
RetryMax: 3
|
||||||
|
# What to do if posting a message to the Kafka cluster fails. See
|
||||||
|
# Config.Producer for more info:
|
||||||
|
# https://godoc.org/github.com/Shopify/sarama#Config
|
||||||
|
Producer:
|
||||||
|
RetryBackoff: 100ms
|
||||||
|
RetryMax: 3
|
||||||
|
# What to do if reading from the Kafka cluster fails. See
|
||||||
|
# Config.Consumer for more info:
|
||||||
|
# https://godoc.org/github.com/Shopify/sarama#Config
|
||||||
|
Consumer:
|
||||||
|
RetryBackoff: 2s
|
||||||
|
# Settings to use when creating Kafka topics. Only applies when
|
||||||
|
# Kafka.Version is v0.10.1.0 or higher
|
||||||
|
Topic:
|
||||||
|
# The number of Kafka brokers across which to replicate the topic
|
||||||
|
ReplicationFactor: 3
|
||||||
|
# Verbose: Enable logging for interactions with the Kafka cluster.
|
||||||
|
Verbose: false
|
||||||
|
|
||||||
|
# TLS: TLS settings for the orderer's connection to the Kafka cluster.
|
||||||
|
TLS:
|
||||||
|
|
||||||
|
# Enabled: Use TLS when connecting to the Kafka cluster.
|
||||||
|
Enabled: false
|
||||||
|
|
||||||
|
# PrivateKey: PEM-encoded private key the orderer will use for
|
||||||
|
# authentication.
|
||||||
|
PrivateKey:
|
||||||
|
# As an alternative to specifying the PrivateKey here, uncomment the
|
||||||
|
# following "File" key and specify the file name from which to load the
|
||||||
|
# value of PrivateKey.
|
||||||
|
#File: path/to/PrivateKey
|
||||||
|
|
||||||
|
# Certificate: PEM-encoded signed public key certificate the orderer will
|
||||||
|
# use for authentication.
|
||||||
|
Certificate:
|
||||||
|
# As an alternative to specifying the Certificate here, uncomment the
|
||||||
|
# following "File" key and specify the file name from which to load the
|
||||||
|
# value of Certificate.
|
||||||
|
#File: path/to/Certificate
|
||||||
|
|
||||||
|
# RootCAs: PEM-encoded trusted root certificates used to validate
|
||||||
|
# certificates from the Kafka cluster.
|
||||||
|
RootCAs:
|
||||||
|
# As an alternative to specifying the RootCAs here, uncomment the
|
||||||
|
# following "File" key and specify the file name from which to load the
|
||||||
|
# value of RootCAs.
|
||||||
|
#File: path/to/RootCAs
|
||||||
|
|
||||||
|
# SASLPlain: Settings for using SASL/PLAIN authentication with Kafka brokers
|
||||||
|
SASLPlain:
|
||||||
|
# Enabled: Use SASL/PLAIN to authenticate with Kafka brokers
|
||||||
|
Enabled: false
|
||||||
|
# User: Required when Enabled is set to true
|
||||||
|
User:
|
||||||
|
# Password: Required when Enabled is set to true
|
||||||
|
Password:
|
||||||
|
|
||||||
|
# Kafka protocol version used to communicate with the Kafka cluster brokers
|
||||||
|
# (defaults to 0.10.2.0 if not specified)
|
||||||
|
Version:
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Debug Configuration
|
||||||
|
#
|
||||||
|
# - This controls the debugging options for the orderer
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
Debug:
|
||||||
|
|
||||||
|
# BroadcastTraceDir when set will cause each request to the Broadcast service
|
||||||
|
# for this orderer to be written to a file in this directory
|
||||||
|
BroadcastTraceDir:
|
||||||
|
|
||||||
|
# DeliverTraceDir when set will cause each request to the Deliver service
|
||||||
|
# for this orderer to be written to a file in this directory
|
||||||
|
DeliverTraceDir:
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Operations Configuration
|
||||||
|
#
|
||||||
|
# - This configures the operations server endpoint for the orderer
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
Operations:
|
||||||
|
# host and port for the operations server
|
||||||
|
ListenAddress: 127.0.0.1:8443
|
||||||
|
|
||||||
|
# TLS configuration for the operations endpoint
|
||||||
|
TLS:
|
||||||
|
# TLS enabled
|
||||||
|
Enabled: false
|
||||||
|
|
||||||
|
# Certificate is the location of the PEM encoded TLS certificate
|
||||||
|
Certificate:
|
||||||
|
|
||||||
|
# PrivateKey points to the location of the PEM-encoded key
|
||||||
|
PrivateKey:
|
||||||
|
|
||||||
|
# Most operations service endpoints require client authentication when TLS
|
||||||
|
# is enabled. ClientAuthRequired requires client certificate authentication
|
||||||
|
# at the TLS layer to access all resources.
|
||||||
|
ClientAuthRequired: false
|
||||||
|
|
||||||
|
# Paths to PEM encoded ca certificates to trust for client authentication
|
||||||
|
ClientRootCAs: []
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Metrics Configuration
|
||||||
|
#
|
||||||
|
# - This configures metrics collection for the orderer
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
Metrics:
|
||||||
|
# The metrics provider is one of statsd, prometheus, or disabled
|
||||||
|
Provider: disabled
|
||||||
|
|
||||||
|
# The statsd configuration
|
||||||
|
Statsd:
|
||||||
|
# network type: tcp or udp
|
||||||
|
Network: udp
|
||||||
|
|
||||||
|
# the statsd server address
|
||||||
|
Address: 127.0.0.1:8125
|
||||||
|
|
||||||
|
# The interval at which locally cached counters and gauges are pushed
|
||||||
|
# to statsd; timings are pushed immediately
|
||||||
|
WriteInterval: 30s
|
||||||
|
|
||||||
|
# The prefix is prepended to all emitted statsd metrics
|
||||||
|
Prefix:
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Consensus Configuration
|
||||||
|
#
|
||||||
|
# - This section contains config options for a consensus plugin. It is opaque
|
||||||
|
# to orderer, and completely up to consensus implementation to make use of.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
Consensus:
|
||||||
|
# The allowed key-value pairs here depend on consensus plugin. For etcd/raft,
|
||||||
|
# we use following options:
|
||||||
|
|
||||||
|
# WALDir specifies the location at which Write Ahead Logs for etcd/raft are
|
||||||
|
# stored. Each channel will have its own subdir named after channel ID.
|
||||||
|
WALDir: /var/hyperledger/production/orderer/etcdraft/wal
|
||||||
|
|
||||||
|
# SnapDir specifies the location at which snapshots for etcd/raft are
|
||||||
|
# stored. Each channel will have its own subdir named after channel ID.
|
||||||
|
SnapDir: /var/hyperledger/production/orderer/etcdraft/snapshot
|
||||||
Loading…
Reference in a new issue