Giter Site home page Giter Site logo

hyperledger-labs / microfab Goto Github PK

View Code? Open in Web Editor NEW
73.0 73.0 22.0 7.62 MB

Microfab is a containerized Hyperledger Fabric runtime for use in development environments

License: Apache License 2.0

Go 91.96% Dockerfile 1.48% Shell 6.44% Makefile 0.12%

microfab's Introduction

Hyperledger Labs

Hyperledger Labs provides a space (i.e., GitHub repos) where work can easily be started without the creation of a project. Please refer to the Hyperledger Labs wiki page for additional information.

Process to propose a new lab

  1. Fork the hyperledger-labs.github.io repository.

  2. Fill out the Proposal Template and save it into the labs subdirectory under the name of your lab, such as labs/mynewlab.md. It is expected that your lab repository will have the same name so keep that in mind.

  3. In the Proposal Template, there is an entry for sponsor(s). Although not required, proposers are encouraged to seek a sponsor who can help them create ties with the rest of the Hyperledger community and ensure that the proposal is cogent and novel (in conception, proposed execution, or interested community).

    To find sponsors:

    1. use your connections to existing projects and ask maintainers,
    2. find working groups or projects with affinities to the proposed lab and pitch the project (good to have the template already filled out) in associated channels and/or mailing lists. The WG chairs emails, the maintainers contacts etc can be found on the wiki or github. Make personal appeals if you can. Every repository contains a MAINTAINERS file that lists the current maintainers with their contact information and you can reach them all by posting to the Maintainers list.
  4. Commit your changes with proper sign-off. This means that your commit log message must contain a line that looks like the following one, with your actual name and email address:

     Signed-off-by: John Doe <[email protected]>
    

    Adding the -s flag to your git commit command will add that line automatically. You can also add it manually as part of your commit log message or add it afterwards with git commit --amend -s.

  5. Submit a Pull Request.

The labs stewards will then review your proposal. Like sponsors, stewards do not have a responsibility beyond this; ongoing work like contributing code or reviews is not tied to their role as stewards. In reviewing the proposal, the stewards make sure that the proposal is cogent and novel (in conception, proposed execution, or interested community).

IMPORTANT: It is up to the proposer to ensure that any comments or requested changes by the lab stewards are addressed. Failure to do so may delay the approval of your proposal.

Bringing in an existing repository

By default the Lab stewards will create a new repository for you to start from but if you have an existing github repo you would like to bring to your proposed lab you have the option to request for that repo to be reused instead. This is however only possible if every commit in your existing repo is signed-off so there is no DCO related issues. If that is not the case, you have two options:

  1. bring your code by squashing all of your commits into a single first commit made against your new lab repo with your sign-off.

  2. amend the commit history to include DCO sign-off for each of the commits. The Hyperledger Indy community has documented steps to fix DCO on previous commits. Also, the Fix DCO Guide from src-d contains some different steps you can take.

IMPORTANT: Regardless of which option you use, please be sure that the past committers to your project agree to the DCO.

Archiving

Stewards are responsible for curating the set of labs, archiving (see below) those that become dormant or unresponsive for an extended period (3+ months), or are explicitly deemed by the committers to be deprecated/obsoleted.

Deprecated, obsoleted, or dormant labs (as defined above) will be marked as "archived" in GitHub; that signifies that the lab is no longer maintained. Archived labs are read-only, and they can be moved back out of the archives, if there is interest in reviving them.

License requirement

All Hyperledger software must be made available under an Apache 2.0 license. This applies to Labs. Please, make sure to license all incoming code and new code accordingly, and ensure that all commits are made with proper sign-off so that no DCO related issue is introduced.

Code of Conduct

All Hyperledger community members must adhere to the Code of Conduct.

microfab's People

Contributors

dependabot[bot] avatar jt-nti avatar lquintai avatar mbwhite avatar ryjones avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

microfab's Issues

Service discovery hostname is wrong

The hostnames returned by service discovery are all localhost:2xxx instead of the external *.nip.io hostnames, which means that you cannot use service discovery to interact with the created network.

2023-03-10T09:55:39.398Z - error: [ServiceEndpoint]: waitForReady - Failed to connect to remote gRPC server localhost:2002 url:grpc://localhost:2002 timeout:3000 trace_id=6057422945510226298, span_id=6057422945510226298, service=xxxxxxxxxx, version=3.8.0

Errors when Event Listening using Fabric SDKs

Found initially as part of hyperledger/caliper#1465

When using the 1.4.20 node sdk transactions would fail intermittently with

2022-10-26T18:56:34.416Z - error: [AbstractStrategy]: constructor: No event hubs for strategy
2022.10.26-18:56:34.417 +0000 error [connectors/v1/FabricGateway] Failed to perform submit transaction [queryMarblesByOwner] using arguments [Alice],  with error: Error: No event hubs for strategy
    at new AbstractEventStrategy (/tmp/sut/cached/v1.4.20/node_modules/fabric-network/lib/impl/event/abstracteventstrategy.js:30:10)
    at new AnyForTxStrategy (/tmp/sut/cached/v1.4.20/node_modules/fabric-network/lib/impl/event/anyfortxstrategy.js:23:1)
    at Transaction.MSPID_SCOPE_ANYFORTX [as _createTxEventHandler] (/tmp/sut/cached/v1.4.20/node_modules/fabric-network/lib/impl/event/defaulteventhandlerstrategies.js:37:24)
    at Transaction.submit (/tmp/sut/cached/v1.4.20/node_modules/fabric-network/lib/transaction.js:164:29)
    at V1FabricGateway._submitOrEvaluateTransaction (/home/runner/work/caliper/caliper/packages/caliper-fabric/lib/connector-versions/v1/FabricGateway.js:375:44)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async V1FabricGateway._sendSingleRequest (/home/runner/work/caliper/caliper/packages/caliper-fabric/lib/connector-versions/v1/FabricGateway.js:170:16)
    at async V1FabricGateway.sendRequests (/home/runner/work/caliper/caliper/packages/caliper-core/lib/common/core/connector-base.js:83:26)
    at async MarblesQueryWorkload.submitTransaction (/home/runner/work/caliper/caliper/packages/caliper-tests-integration/fabric_tests/query.js:48:9)

for the node 2.2 sdk the problem was similar with

2022-10-26T18:57:24.873Z - error: [TransactionEventStrategy]: constructor: No peers for strategy
2022.10.26-18:57:24.873 +0000 error [connectors/v2/FabricGateway] Failed to perform submit transaction [initMarble] using arguments [marbles_phase_4_0_1_10,black,10,Claire],  with error: Error: No peers for strategy
    at new TransactionEventStrategy (/tmp/sut/cached/v2.2.14/node_modules/fabric-network/lib/impl/event/transactioneventstrategy.js:49:19)
    at new AnyForTxStrategy (/tmp/sut/cached/v2.2.14/node_modules/fabric-network/lib/impl/event/anyfortxstrategy.js:41:1)
    at Transaction.MSPID_SCOPE_ANYFORTX [as eventHandlerStrategyFactory] (/tmp/sut/cached/v2.2.14/node_modules/fabric-network/lib/impl/event/defaulteventhandlerstrategies.js:60:27)
    at Transaction.submit (/tmp/sut/cached/v2.2.14/node_modules/fabric-network/lib/transaction.js:257:39)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async V2FabricGateway._submitOrEvaluateTransaction (/home/runner/work/caliper/caliper/packages/caliper-fabric/lib/connector-versions/v2/FabricGateway.js:375:26)
    at async V2FabricGateway._sendSingleRequest (/home/runner/work/caliper/caliper/packages/caliper-fabric/lib/connector-versions/v2/FabricGateway.js:168:16)
    at async V2FabricGateway.sendRequests (/home/runner/work/caliper/caliper/packages/caliper-core/lib/common/core/connector-base.js:83:26)
    at async MarblesInitWorkload.submitTransaction (/home/runner/work/caliper/caliper/packages/caliper-tests-integration/fabric_tests/init.js:72:9)

No problems like this occur when using test network or the fabric-gateway

Expose CouchDB and Fauxton UI

Expose CouchDB outside of the Microfab container so that it can be accessed by users and applications. This will also permit users to use the Faxuton UI for investigating what is being stored.

Problem with Enabling TLS Certificates

When I enable TLS (as per the example):

export MICROFAB_CONFIG='{
"port": 8443,
"tls": {
"enabled": true
}
}'

docker run -p 8443:8443 -e MICROFAB_CONFIG ibmcom/ibp-microfab

I get the following startup error(s):

[ org1peer] 2022-08-18 17:48:22.030 UTC 0032 ERRO [comm.tls] ClientHandshake -> Client TLS handshake failed after 2.06779ms with error: x509: certificate relies on legacy Common Name field, use SANs instead remoteaddress=127.0.0.1:8443
2022/08/18 17:48:22 http: TLS handshake error from 127.0.0.1:39176: remote error: tls: bad certificate
2022/08/18 17:48:23 http: TLS handshake error from 127.0.0.1:39178: remote error: tls: bad certificate
[ org1peer] 2022-08-18 17:48:23.055 UTC 0033 ERRO [comm.tls] ClientHandshake -> Client TLS handshake failed after 4.131417ms with error: x509: certificate relies on legacy Common Name field, use SANs instead remoteaddress=127.0.0.1:8443

Any ideas?

Allow user to switch between Fabric v1.4 and v2.0 capabilities

Currently the channel capabilities are hardcoded to V1_4_2. We should expose this so that users can choose between V1_4_2 and V2_0 channel capabilities. This will allow microfab to work with both the Fabric v1.4.x and v2.x versions of our Visual Studio Code extension.

Points re moving microfab to hyperledger-labs

Prime motivation to move to Labs is that it can then be freely referenced in Hyperledger Fabric documentation; whereas with an IBM OS project it's not so appropriate to refer to it.

  • Adding to the Fabric ecosystem in Hyperledger Labs...
  • Would it ever graduate? Maybe - but I think we're happy with it's place.
  • Relation to minifab - needs to be acknowledged? Yes started comments to position it in the readme
  • Should all the samples be deployable to microfab?
  • Build for ARM64 and AMD64 with publishing to the ghcr.io repos.. DONE

how to save and run custom script for microfab

How to save and run custom script for microfab is it as .JSON ? But I got error in export.
I am unable to understand this.
How or where to find a good tutorial to use microfab ?
I want to add custom fabric network in local , before it was easy with ansible but now IBM-blockchain-platform-vs code extension is not providing option to add such ansible environment .
How microfab is better than ansible .
In IBP-vscode extension change log it is mention that microfab is easy to add network.
Unfortunately I couldn't find a good tutorial to understand this microfab , how or where to get in depth documentation or tutorial for microfab

Environment:
IBM Blockchain Platform Extension Version:2.0.2
Visual Studio Code version:1.55.1
Environment name and version (e.g. Node.js v10.24.0, npm v6.14.11):
Operating System and version:Linux x64 5.8.0-48-generic snap Ubuntu 20.04 lts

Macbook M1 Support

Can you help clarify if microfab supports Macbook M1.

I downloaded microfab-arm64 and microfab-amd64, both show errors as follows.

Execution error

nickxie@Nings-MacBook-Pro microfab % ./microfab-amd64
zsh: exec format error: ./microfab-amd64

nickxie@Nings-MacBook-Pro microfab % ./microfab
zsh: exec format error: ./microfab

Download

nickxie@Nings-MacBook-Pro microfab % curl -sSL https://github.com/hyperledger-labs/microfab/releases/download/v0.0.19/microfab-amd64 -o microfab-amd64

nickxie@Nings-MacBook-Pro microfab % curl -sSL https://github.com/hyperledger-labs/microfab/releases/download/v0.0.19/microfab-arm64 -o microfab

Directory items

nickxie@Nings-MacBook-Pro microfab % ll
total 51360
-rw-r--r--@  1 nickxie  staff     33250 May 15 20:28 asset-transfer-basic-typescript.tgz
drwxr-xr-x@ 12 nickxie  staff       384 May 15 20:20 bin
drwxr-xr-x@  3 nickxie  staff        96 Apr  2 00:47 builders
drwxr-xr-x@  5 nickxie  staff       160 Apr  2 00:48 config
-rwxr--r--@  1 nickxie  staff  12206714 May 15 20:36 microfab
-rwxr--r--@  1 nickxie  staff  12744608 May 15 20:40 microfab-amd64

Request Operational example

Hello,
Could you guys please provide the operational example. I am following https://fabcar-samples.github.io/docs/networks/microfab/
but when peer lifecycle chaincode install fabcarcc.tgz

Error: failed to retrieve endorser client for install: endorser client failed to connect to sampleorgpeer-api.127-0-0-1.nip.io:8080: failed to create new connection: context deadline exceeded

Please help so I can continue learning about this great tool. Thank you.

regards,

Johan

Problem with hosts

I can't deploy microfab with default settings. It seems that there is a host that is not reachable.

WARN 04c Could not connect to ordering service: could not dial endpoint 'orderer-api.127-0-0-1.nip.io:8080': failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp: lookup orderer-api.127-0-0-1.nip.io on 192.168.65.5:53: no such host" channel=mychannel

The problem occurs when creating the network from the IBM Blockchain Platform VS Code Extension, but what the extension actually does is instantiate Microfab.

Thanks for the project, it looks promising.

Unable to connect using CLI when TLS is enabled

Configuration:

{
    "tls": {
        "enabled": false
    },
    "ordering_organizations": {
        "name": "Orderer"
    },
    "endorsing_organizations":[
        {
            "name": "Org1"
        },
        {
            "name": "Org2"
        }
    ],
    "channels":[
        {
            "name": "mychannel",
            "endorsing_organizations":[
                "Org1",
                "Org2"
            ]
        },
        {
            "name": "yourchannel",
            "endorsing_organizations":[
                "Org1",
                "Org2"
            ]
        }
    ]
}

Logs:

% ./microfab connect                                                               
2023/02/14 15:23:08 Connecting to URL 'http://console.127-0-0-1.nip.io:8080'
2023/02/14 15:23:08 Identity and Configuration '_mfcfg'
2023/02/14 15:23:08 Unable to get Organizations: Microfab returned HTTP 400 Bad Request

single Instance for CouchDB

Hi,
I can see that only one couchdb instance is created for all the organisations. But, in traditional Hyperledger Fabric, there will be respective couchdb container for each organization. Is there any way where we can create multiple couchdb instances in MicroFab?

CouchDB Index Deployment

Hello,

I am having trouble deploying CouchDB indexes alongside chaincode with microfab version 0.0.11. Is this something I should be able to do with this verison? Do you see anything missing in my setup or approach? Thank you for taking a look.

Investigation with IBP VSCode extension

I originally ran into this when using the IBP VSCode extension to deploy a local Fabric 2 network, with a chaincode tar.gz that includes a CouchDB index .json file.

My setup:

  • VSCode 1.55.0
  • IBP extension 2.0.2
  • go 1.14
  • Index .json file in the /META-INF/statedb/couchdb/indexes directory
  • Packaged the chaincode with peer lifecycle chaincode package
  • Deployed to a local Fabric 2 network

My chaincode with VSCode local Fabric network

I saw no Created CouchDB index log in the docker container and a log like the following when executing my query transaction:

[    org1peer] 2021-04-14 22:20:18.056 UTC [couchdb] queryDocuments -> WARN 148 The query <QUERY STRING> caused the following warning: [_design/<INDEX DDOC>, <INDEX NAME> was not used because it is not a valid index for this query.
[    org1peer] No matching index found, create an index to optimize query time.]

Tutorial chaincode with tutorial deploy script

To determine whether the issue was with either how I created my index or packaged my chaincode, I tried the Fabric 2.2 CouchDB tutorial. After running the fabric-samples test-network deployCC.sh script, I saw the expected index creation log in the container:

[couchdb] createIndex -> INFO 072 Created CouchDB index [indexOwner] in state database [mychannel_ledger] using design document [_design/indexOwnerDoc]

Tutorial chaincode with VSCode local Fabric network:

Then tried deploying the same .tar.gz (packaged during the tutorial) on the VSCode local Fabric network and saw no Created CouchDB index log and the same not a valid index log that I saw with my chaincode during a query.

Investigation with Microfab

Tutorial chaincode with microfab network:

Since the VSCode extension creates a microfab network, I tried separately standing one up using these instructions. Deployed the tar.gz file from the HL tutorial. No Created CouchDB index log in the microfab container and the below logs when executing my query transaction.

[   sampleorgpeer] 2021-04-15 21:52:30.149 UTC [couchdb] createDatabaseIfNotExist -> INFO 0b0 Created state database mychannel_ledger
[   sampleorgpeer] 2021-04-15 21:52:30.364 UTC [couchdb] queryDocuments -> WARN 0b1 The query [{"limit":1000,"selector":{"docType":"asset","owner":"tom"},"use_index":["_design/indexOwnerDoc","indexOwner"]}] caused the following warning: [_design/indexOwnerDoc, indexOwner was not used because it is not a valid index for this query.
[   sampleorgpeer] No matching index found, create an index to optimize query time.]

As a developer, I want to debug my chaincode

Hello,

I was trying to debug my chaincode but I'm no able to do it with the default VSCode configuration and latest plugin extension (2.0.0):

"version": "0.2.0", "configurations": [ { "type": "fabric:node", "request": "launch", "name": "Debug Smart Contract", "preLaunchTask": "tsc: build - tsconfig.json", "outFiles": [ "${workspaceFolder}/dist/**/*.js" ] } ] }

peer complains with following message:

[ org1peer] 2021-01-25 08:02:05.741 UTC [chaincode] notifyRegistry -> ERRO 17d failed to start bkchain-contract:0.0.4 -- peer will not accept external chaincode connection bkchain-contract:0.0.4 (except in dev mode)

How do I configure the blockchain in dev mode?

Thanks

Remove full gradle from final docker image

There is a security issue with the full version of Gradle. Therefore in the Fabric JavaEnv docker images, Gradle has been removed in favour of the Gradle wrapper. Downloading Gradle at runtime is better.

command not found: peer

Currently, I'm trying to use microfab to test chaincode But it's not going to up cli container.

peer lifecycle chaincode install $(pwd)/asset-transfer-basic-typescript.tgz

Got error: command not found: peer

How can I solve it?

Support for external chaincode builders

Add support to be able to run external builders.
This is following the model of https://github.com/hyperledgendary/fabric-builders/blob/master/builders/external/README.md

To run in this manner:

Start microfab as normal, but ensure that it is attached to a known docker network
Create a connection.json file and package in a tgz as per normal chaincodes (see the notes above)
Install the tgz

Start the docker container with the chaincode as per the connection.json (on the same network)
Approve and Commit the chaincode as normal.

mychannel failed because of validation of configuration block

Hi, I just did the 2 steps of the video.

export MICROFAB_CONFIG=$(cat microfab.json)                                                                     
docker run -it -p 8443:8443 -e MICROFAB_CONFIG ibmcom/ibp-microfab

It deploys microfabric in docker but i receive this error message:

[       microfabd] 2023/03/25 00:02:06 Failed to start application: Bad proposal response: status 500, mesage "JoinChain" for channelID = mychannel failed because of validation of configuration block, because of Failed capabilities check: [Application capability V2_5 is required but not supported]

I can see the peers are version 2.4.6 and the HF version is 2.5, but i don't know if it is be the problem or not.

The microfab.json file:

{
    "endorsing_organizations": [
        {
            "name": "org1"
        },
        {
            "name": "org2"
        }
    ],
    "channels": [
        {
            "name": "mychannel",
            "endorsing_organizations": [
                "org1"
            ]
        },
        {
            "name": "appchannel",
            "endorsing_organizations": [
                "org1",
                "org2"
            ]
        }
    ],
    "capability_level": "V2_5"
}

The logs:

[       microfabd] 2023/03/24 23:57:28 Starting Microfab ...
[       microfabd] 2023/03/24 23:57:28 MBW
[       microfabd] 2023/03/24 23:57:28 Creating endorsing organization org2 ...
[       microfabd] 2023/03/24 23:57:28 Creating ordering organization Orderer ...
[       microfabd] 2023/03/24 23:57:28 Creating endorsing organization org1 ...
[       microfabd] 2023/03/24 23:57:28 Created endorsing organization org2
[       microfabd] 2023/03/24 23:57:28 Created ordering organization Orderer
[       microfabd] 2023/03/24 23:57:28 Created endorsing organization org1
[       microfabd] 2023/03/24 23:57:28 Waiting for CouchDB to start ...
[       microfabd] 2023/03/24 23:57:29 CouchDB has started
[       microfabd] 2023/03/24 23:57:29 Creating and starting CA for endorsing organization org2 ...
[       microfabd] 2023/03/24 23:57:29 Creating and starting peer for endorsing organization org1 ...
[       microfabd] 2023/03/24 23:57:29 Creating and starting CA for endorsing organization org1 ...
[       microfabd] 2023/03/24 23:57:29 Creating and starting peer for endorsing organization org2 ...
[       microfabd] 2023/03/24 23:57:29 Creating and starting CouchDB proxy for endorsing organization org2 ...
[start --boot admin:adminpw --ca.certfile /opt/microfab/data/ca-org1/ca-cert.pem --ca.keyfile /opt/microfab/data/ca-org1/ca-key.pem --port 2008 --operations.listenaddress 0.0.0.0:2009 --ca.name org1ca][       microfabd] 2023/03/24 23:57:29 Creating and starting orderer for ordering organization Orderer ...
[       microfabd] 2023/03/24 23:57:29 Creating and starting CouchDB proxy for endorsing organization org1 ...
[start --boot admin:adminpw --ca.certfile /opt/microfab/data/ca-org2/ca-cert.pem --ca.keyfile /opt/microfab/data/ca-org2/ca-key.pem --port 2000 --operations.listenaddress 0.0.0.0:2001 --ca.name org2ca][          org2ca] 2023/03/24 23:57:29 [INFO] Created default configuration file at /opt/microfab/data/ca-org2/fabric-ca-server-config.yaml
[          org1ca] 2023/03/24 23:57:29 [INFO] Created default configuration file at /opt/microfab/data/ca-org1/fabric-ca-server-config.yaml
[        org2peer] 2023-03-24 23:57:29.611 UTC 0001 INFO [nodeCmd] serve -> Starting peer:
[        org2peer]  Version: 2.4.6
[        org2peer]  Commit SHA: 83596078d
[        org2peer]  Go version: go1.18.2
[        org2peer]  OS/Arch: linux/amd64
[        org2peer]  Chaincode:
[        org2peer]   Base Docker Label: org.hyperledger.fabric
[        org2peer]   Docker Namespace: hyperledger
[        org2peer] 2023-03-24 23:57:29.612 UTC 0002 INFO [peer] getLocalAddress -> Auto-detected peer address: 172.17.0.2:2010
[        org2peer] 2023-03-24 23:57:29.612 UTC 0003 INFO [peer] getLocalAddress -> Host is 0.0.0.0 , falling back to auto-detected address: 172.17.0.2:2010
[        org2peer] 2023-03-24 23:57:29.614 UTC 0004 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for endorser service is 2500
[        org2peer] 2023-03-24 23:57:29.614 UTC 0005 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for deliver service is 2500
[        org2peer] 2023-03-24 23:57:29.614 UTC 0006 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for gateway service is 500
[        org2peer] 2023-03-24 23:57:29.625 UTC 0007 INFO [certmonitor] trackCertExpiration -> The enrollment certificate will expire on 2033-03-21 23:52:29 +0000 UTC
[         orderer] 2023-03-24 23:57:29.626 UTC 0001 INFO [localconfig] completeInitialization -> Kafka.Version unset, setting to 0.10.2.0
[         orderer] 2023-03-24 23:57:29.627 UTC 0002 INFO [orderer.common.server] prettyPrintStruct -> Orderer config values:
[         orderer] General.ListenAddress = "0.0.0.0"
[         orderer] General.ListenPort = 2006
[         orderer] General.TLS.Enabled = false
[         orderer] General.TLS.PrivateKey = "/opt/fabric/config/tls/server.key"
[         orderer] General.TLS.Certificate = "/opt/fabric/config/tls/server.crt"
[         orderer] General.TLS.RootCAs = [/opt/fabric/config/tls/ca.crt]
[         orderer] General.TLS.ClientAuthRequired = false
[         orderer] General.TLS.ClientRootCAs = []
[         orderer] General.TLS.TLSHandshakeTimeShift = 0s
[         orderer] General.Cluster.ListenAddress = ""
[         orderer] General.Cluster.ListenPort = 0
[         orderer] General.Cluster.ServerCertificate = ""
[         orderer] General.Cluster.ServerPrivateKey = ""
[         orderer] General.Cluster.ClientCertificate = ""
[         orderer] General.Cluster.ClientPrivateKey = ""
[         orderer] General.Cluster.RootCAs = []
[         orderer] General.Cluster.DialTimeout = 5s
[         orderer] General.Cluster.RPCTimeout = 7s
[         orderer] General.Cluster.ReplicationBufferSize = 20971520
[         orderer] General.Cluster.ReplicationPullTimeout = 5s
[         orderer] General.Cluster.ReplicationRetryTimeout = 5s
[         orderer] General.Cluster.ReplicationBackgroundRefreshInterval = 5m0s
[         orderer] General.Cluster.ReplicationMaxRetries = 12
[         orderer] General.Cluster.SendBufferSize = 10
[         orderer] General.Cluster.CertExpirationWarningThreshold = 168h0m0s
[         orderer] General.Cluster.TLSHandshakeTimeShift = 0s
[         orderer] General.Keepalive.ServerMinInterval = 1m0s
[         orderer] General.Keepalive.ServerInterval = 2h0m0s
[         orderer] General.Keepalive.ServerTimeout = 20s
[         orderer] General.ConnectionTimeout = 0s
[         orderer] General.GenesisMethod = ""
[         orderer] General.GenesisFile = ""
[         orderer] General.BootstrapMethod = "file"
[         orderer] General.BootstrapFile = "/opt/microfab/data/orderer/config/genesisblock"
[         orderer] General.Profile.Enabled = false
[         orderer] General.Profile.Address = "0.0.0.0:6060"
[         orderer] General.LocalMSPDir = "/opt/microfab/data/orderer/msp"
[         orderer] General.LocalMSPID = "OrdererMSP"
[         orderer] General.BCCSP.Default = "SW"
[         orderer] General.BCCSP.SW.Security = 256
[         orderer] General.BCCSP.SW.Hash = "SHA2"
[         orderer] General.BCCSP.SW.FileKeystore.KeyStorePath = ""
[         orderer] General.Authentication.TimeWindow = 15m0s
[         orderer] General.Authentication.NoExpirationChecks = false
[         orderer] General.MaxRecvMsgSize = 104857600
[         orderer] General.MaxSendMsgSize = 104857600
[         orderer] FileLedger.Location = "/opt/microfab/data/orderer/data"
[         orderer] FileLedger.Prefix = ""
[         orderer] Kafka.Retry.ShortInterval = 5s
[         orderer] Kafka.Retry.ShortTotal = 10m0s
[         orderer] Kafka.Retry.LongInterval = 5m0s
[         orderer] Kafka.Retry.LongTotal = 12h0m0s
[         orderer] Kafka.Retry.NetworkTimeouts.DialTimeout = 10s
[         orderer] Kafka.Retry.NetworkTimeouts.ReadTimeout = 10s
[         orderer] Kafka.Retry.NetworkTimeouts.WriteTimeout = 10s
[         orderer] Kafka.Retry.Metadata.RetryMax = 3
[         orderer] Kafka.Retry.Metadata.RetryBackoff = 250ms
[         orderer] Kafka.Retry.Producer.RetryMax = 3
[         orderer] Kafka.Retry.Producer.RetryBackoff = 100ms
[         orderer] Kafka.Retry.Consumer.RetryBackoff = 2s
[         orderer] Kafka.Verbose = false
[         orderer] Kafka.Version = 0.10.2.0
[         orderer] Kafka.TLS.Enabled = false
[         orderer] Kafka.TLS.PrivateKey = ""
[         orderer] Kafka.TLS.Certificate = ""
[         orderer] Kafka.TLS.RootCAs = []
[         orderer] Kafka.TLS.ClientAuthRequired = false
[         orderer] Kafka.TLS.ClientRootCAs = []
[         orderer] Kafka.TLS.TLSHandshakeTimeShift = 0s
[         orderer] Kafka.SASLPlain.Enabled = false
[         orderer] Kafka.SASLPlain.User = ""
[         orderer] Kafka.SASLPlain.Password = ""
[         orderer] Kafka.Topic.ReplicationFactor = 3
[         orderer] Debug.BroadcastTraceDir = ""
[         orderer] Debug.DeliverTraceDir = ""
[         orderer] Consensus = map[SnapDir:/opt/microfab/data/orderer/data/etcdraft/snapshot WALDir:/opt/microfab/data/orderer/data/etcdraft/wal]
[         orderer] Operations.ListenAddress = "0.0.0.0:2007"
[         orderer] Operations.TLS.Enabled = false
[         orderer] Operations.TLS.PrivateKey = ""
[         orderer] Operations.TLS.Certificate = ""
[         orderer] Operations.TLS.RootCAs = []
[         orderer] Operations.TLS.ClientAuthRequired = false
[         orderer] Operations.TLS.ClientRootCAs = []
[         orderer] Operations.TLS.TLSHandshakeTimeShift = 0s
[         orderer] Metrics.Provider = "prometheus"
[         orderer] Metrics.Statsd.Network = "udp"
[         orderer] Metrics.Statsd.Address = "127.0.0.1:8125"
[         orderer] Metrics.Statsd.WriteInterval = 30s
[         orderer] Metrics.Statsd.Prefix = ""
[         orderer] ChannelParticipation.Enabled = false
[         orderer] ChannelParticipation.MaxRequestBodySize = 1048576
[         orderer] Admin.ListenAddress = "127.0.0.1:9443"
[         orderer] Admin.TLS.Enabled = false
[         orderer] Admin.TLS.PrivateKey = ""
[         orderer] Admin.TLS.Certificate = ""
[         orderer] Admin.TLS.RootCAs = []
[         orderer] Admin.TLS.ClientAuthRequired = true
[         orderer] Admin.TLS.ClientRootCAs = []
[         orderer] Admin.TLS.TLSHandshakeTimeShift = 0s
[        org2peer] 2023-03-24 23:57:29.627 UTC 0008 INFO [ledgermgmt] NewLedgerMgr -> Initializing LedgerMgr
[          org1ca] 2023/03/24 23:57:29 [INFO] Starting server in home directory: /opt/microfab/data/ca-org1
[          org1ca] 2023/03/24 23:57:29 [INFO] Server Version: 1.5.2
[          org1ca] 2023/03/24 23:57:29 [INFO] Server Levels: &{Identity:2 Affiliation:1 Certificate:1 Credential:1 RAInfo:1 Nonce:1}
[          org1ca] 2023/03/24 23:57:29 [INFO] The CA key and certificate files already exist
[          org1ca] 2023/03/24 23:57:29 [INFO] Key file location: /opt/microfab/data/ca-org1/ca-key.pem
[          org1ca] 2023/03/24 23:57:29 [INFO] Certificate file location: /opt/microfab/data/ca-org1/ca-cert.pem
[        org1peer] 2023-03-24 23:57:29.632 UTC 0001 INFO [nodeCmd] serve -> Starting peer:
[        org1peer]  Version: 2.4.6
[        org1peer]  Commit SHA: 83596078d
[        org1peer]  Go version: go1.18.2
[        org1peer]  OS/Arch: linux/amd64
[        org1peer]  Chaincode:
[        org1peer]   Base Docker Label: org.hyperledger.fabric
[        org1peer]   Docker Namespace: hyperledger
[        org1peer] 2023-03-24 23:57:29.633 UTC 0002 INFO [peer] getLocalAddress -> Auto-detected peer address: 172.17.0.2:2002
[        org1peer] 2023-03-24 23:57:29.633 UTC 0003 INFO [peer] getLocalAddress -> Host is 0.0.0.0 , falling back to auto-detected address: 172.17.0.2:2002
[        org1peer] 2023-03-24 23:57:29.635 UTC 0004 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for endorser service is 2500
[        org1peer] 2023-03-24 23:57:29.635 UTC 0005 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for deliver service is 2500
[        org1peer] 2023-03-24 23:57:29.635 UTC 0006 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for gateway service is 500
[         orderer] 2023-03-24 23:57:29.641 UTC 0003 INFO [blkstorage] NewProvider -> Creating new file ledger directory at /opt/microfab/data/orderer/data/chains
[         orderer] 2023-03-24 23:57:29.646 UTC 0004 INFO [orderer.common.server] Main -> Bootstrapping the system channel
[         orderer] 2023-03-24 23:57:29.648 UTC 0005 INFO [blkstorage] newBlockfileMgr -> Getting block information from block storage
[          org2ca] 2023/03/24 23:57:29 [INFO] Starting server in home directory: /opt/microfab/data/ca-org2
[          org2ca] 2023/03/24 23:57:29 [INFO] Server Version: 1.5.2
[          org2ca] 2023/03/24 23:57:29 [INFO] Server Levels: &{Identity:2 Affiliation:1 Certificate:1 Credential:1 RAInfo:1 Nonce:1}
[          org2ca] 2023/03/24 23:57:29 [INFO] The CA key and certificate files already exist
[          org2ca] 2023/03/24 23:57:29 [INFO] Key file location: /opt/microfab/data/ca-org2/ca-key.pem
[          org2ca] 2023/03/24 23:57:29 [INFO] Certificate file location: /opt/microfab/data/ca-org2/ca-cert.pem
[         orderer] 2023-03-24 23:57:29.655 UTC 0006 INFO [orderer.common.server] initializeBootstrapChannel -> Initialized the system channel 'testchainid' from bootstrap block
[        org1peer] 2023-03-24 23:57:29.656 UTC 0007 INFO [certmonitor] trackCertExpiration -> The enrollment certificate will expire on 2033-03-21 23:52:29 +0000 UTC
[        org1peer] 2023-03-24 23:57:29.657 UTC 0008 INFO [ledgermgmt] NewLedgerMgr -> Initializing LedgerMgr
[         orderer] 2023-03-24 23:57:29.657 UTC 0007 INFO [orderer.common.server] extractSystemChannel -> Found system channel config block, number: 0
[         orderer] 2023-03-24 23:57:29.657 UTC 0008 INFO [orderer.common.server] selectClusterBootBlock -> Cluster boot block is bootstrap (genesis) block; Blocks Header.Number system-channel=0, bootstrap=0
[         orderer] 2023-03-24 23:57:29.660 UTC 0009 INFO [orderer.common.server] Main -> Starting with system channel: testchainid, consensus type: solo
[         orderer] 2023-03-24 23:57:29.660 UTC 000a INFO [certmonitor] trackCertExpiration -> The enrollment certificate will expire on 2033-03-21 23:52:29 +0000 UTC
[         orderer] 2023-03-24 23:57:29.664 UTC 000b WARN [orderer.consensus.solo] HandleChain -> Use of the Solo orderer is deprecated and remains only for use in test environments but may be removed in the future.
[         orderer] 2023-03-24 23:57:29.664 UTC 000c INFO [orderer.commmon.multichannel] initSystemChannel -> Starting system channel 'testchainid' with genesis block hash a8ac54659e19a02b76f2f7376f78f58afc12f8132cb535023247d9f06a72701b and orderer type solo
[         orderer] 2023-03-24 23:57:29.665 UTC 000d INFO [orderer.common.server] Main -> Starting orderer:
[         orderer]  Version: 2.4.6
[         orderer]  Commit SHA: 83596078d
[         orderer]  Go version: go1.18.2
[         orderer]  OS/Arch: linux/amd64
[         orderer] 2023-03-24 23:57:29.665 UTC 000e INFO [orderer.common.server] Main -> Beginning to serve requests
[        org2peer] 2023-03-24 23:57:29.667 UTC 0009 INFO [leveldbhelper] openDBAndCheckFormat -> DB is empty Setting db format as 2.0
[        org2peer] 2023-03-24 23:57:29.668 UTC 000a INFO [blkstorage] NewProvider -> Creating new file ledger directory at /opt/microfab/data/peer-org2/data/ledgersData/chains/chains
[        org1peer] 2023-03-24 23:57:29.680 UTC 0009 INFO [leveldbhelper] openDBAndCheckFormat -> DB is empty Setting db format as 2.0
[        org1peer] 2023-03-24 23:57:29.681 UTC 000a INFO [blkstorage] NewProvider -> Creating new file ledger directory at /opt/microfab/data/peer-org1/data/ledgersData/chains/chains
[        org2peer] 2023-03-24 23:57:29.682 UTC 000b INFO [leveldbhelper] openDBAndCheckFormat -> DB is empty Setting db format as 2.0
[        org1peer] 2023-03-24 23:57:29.692 UTC 000b INFO [leveldbhelper] openDBAndCheckFormat -> DB is empty Setting db format as 2.0
[          org1ca] 2023/03/24 23:57:29 [INFO] Initialized sqlite3 database at /opt/microfab/data/ca-org1/fabric-ca-server.db
[          org2ca] 2023/03/24 23:57:29 [INFO] Initialized sqlite3 database at /opt/microfab/data/ca-org2/fabric-ca-server.db
[          org1ca] 2023/03/24 23:57:29 [INFO] The issuer key was successfully stored. The public key is at: /opt/microfab/data/ca-org1/IssuerPublicKey, secret key is at: /opt/microfab/data/ca-org1/msp/keystore/IssuerSecretKey
[        org2peer] 2023-03-24 23:57:29.795 UTC 000c INFO [couchdb] createDatabaseIfNotExist -> Created state database fabric__internal
[          org1ca] 2023/03/24 23:57:29 [INFO] Idemix issuer revocation public and secret keys were generated for CA 'org1ca'
[          org1ca] 2023/03/24 23:57:29 [INFO] The revocation key was successfully stored. The public key is at: /opt/microfab/data/ca-org1/IssuerRevocationPublicKey, private key is at: /opt/microfab/data/ca-org1/msp/keystore/IssuerRevocationPrivateKey
[          org1ca] 2023/03/24 23:57:29 [INFO] Home directory for default CA: /opt/microfab/data/ca-org1
[          org1ca] 2023/03/24 23:57:29 [INFO] Operation Server Listening on [::]:2009
[          org1ca] 2023/03/24 23:57:29 [INFO] Listening on http://0.0.0.0:2008
[        org1peer] 2023-03-24 23:57:29.813 UTC 000c INFO [couchdb] createDatabaseIfNotExist -> Created state database fabric__internal
2023/03/24 23:57:29 error waiting for CA: Get "http://localhost:2001/healthz": dial tcp 127.0.0.1:2001: connect: connection refused
[       microfabd] 2023/03/24 23:57:29 Created and started orderer for ordering organization Orderer
[          org2ca] 2023/03/24 23:57:29 [INFO] The issuer key was successfully stored. The public key is at: /opt/microfab/data/ca-org2/IssuerPublicKey, secret key is at: /opt/microfab/data/ca-org2/msp/keystore/IssuerSecretKey
[          org2ca] 2023/03/24 23:57:29 [INFO] Idemix issuer revocation public and secret keys were generated for CA 'org2ca'
[          org2ca] 2023/03/24 23:57:29 [INFO] The revocation key was successfully stored. The public key is at: /opt/microfab/data/ca-org2/IssuerRevocationPublicKey, private key is at: /opt/microfab/data/ca-org2/msp/keystore/IssuerRevocationPrivateKey
[          org2ca] 2023/03/24 23:57:29 [INFO] Home directory for default CA: /opt/microfab/data/ca-org2
[          org2ca] 2023/03/24 23:57:29 [INFO] Operation Server Listening on [::]:2001
[          org2ca] 2023/03/24 23:57:29 [INFO] Listening on http://0.0.0.0:2000
[        org1peer] 2023-03-24 23:57:29.848 UTC 000d INFO [ledgermgmt] NewLedgerMgr -> Initialized LedgerMgr
[        org1peer] 2023-03-24 23:57:29.848 UTC 000e INFO [gossip.service] New -> Initialize gossip with endpoint org1peer-api.127-0-0-1.nip.io:8080
[        org1peer] 2023-03-24 23:57:29.850 UTC 000f INFO [gossip.gossip] New -> Creating gossip service with self membership of Endpoint: org1peer-api.127-0-0-1.nip.io:8080, InternalEndpoint: org1peer-api.127-0-0-1.nip.io:8080, PKI-ID: abd5731068457fd18882734975f5a4f1d9ea8a01c2825246f7a7bf76032de1d2, Metadata: 
[        org1peer] 2023-03-24 23:57:29.850 UTC 0010 INFO [gossip.gossip] start -> Gossip instance org1peer-api.127-0-0-1.nip.io:8080 started
[        org1peer] 2023-03-24 23:57:29.850 UTC 0011 INFO [lifecycle] InitializeLocalChaincodes -> Initialized lifecycle cache with 0 already installed chaincodes
[        org1peer] 2023-03-24 23:57:29.851 UTC 0012 INFO [nodeCmd] computeChaincodeEndpoint -> Entering computeChaincodeEndpoint with peerHostname: 172.17.0.2
[        org1peer] 2023-03-24 23:57:29.851 UTC 0013 INFO [nodeCmd] computeChaincodeEndpoint -> Exit with ccEndpoint: 172.17.0.2:2003
[        org1peer] 2023-03-24 23:57:29.852 UTC 0014 INFO [sccapi] DeploySysCC -> deploying system chaincode 'lscc'
[        org1peer] 2023-03-24 23:57:29.852 UTC 0015 INFO [sccapi] DeploySysCC -> deploying system chaincode 'cscc'
[        org1peer] 2023-03-24 23:57:29.852 UTC 0016 INFO [sccapi] DeploySysCC -> deploying system chaincode 'qscc'
[        org1peer] 2023-03-24 23:57:29.852 UTC 0017 INFO [sccapi] DeploySysCC -> deploying system chaincode '_lifecycle'
[        org1peer] 2023-03-24 23:57:29.852 UTC 0018 INFO [nodeCmd] serve -> Deployed system chaincodes
[        org1peer] 2023-03-24 23:57:29.853 UTC 0019 INFO [discovery] NewService -> Created with config TLS: false, authCacheMaxSize: 1000, authCachePurgeRatio: 0.750000
[        org1peer] 2023-03-24 23:57:29.853 UTC 001a INFO [nodeCmd] serve -> Discovery service activated
[        org1peer] 2023-03-24 23:57:29.853 UTC 001b INFO [nodeCmd] serve -> Starting peer with Gateway enabled
[        org1peer] 2023-03-24 23:57:29.853 UTC 001c INFO [nodeCmd] serve -> Starting peer with ID=[org1peer], network ID=[dev], address=[172.17.0.2:2002]
[        org1peer] 2023-03-24 23:57:29.854 UTC 001d INFO [nodeCmd] serve -> Started peer with ID=[org1peer], network ID=[dev], address=[172.17.0.2:2002]
[        org1peer] 2023-03-24 23:57:29.854 UTC 001e INFO [kvledger] LoadPreResetHeight -> Loading prereset height from path [/opt/microfab/data/peer-org1/data/ledgersData/chains]
[        org1peer] 2023-03-24 23:57:29.854 UTC 001f INFO [blkstorage] preResetHtFiles -> No active channels passed
[        org2peer] 2023-03-24 23:57:29.855 UTC 000d INFO [ledgermgmt] NewLedgerMgr -> Initialized LedgerMgr
[        org2peer] 2023-03-24 23:57:29.856 UTC 000e INFO [gossip.service] New -> Initialize gossip with endpoint org2peer-api.127-0-0-1.nip.io:8080
[        org2peer] 2023-03-24 23:57:29.857 UTC 000f INFO [gossip.gossip] New -> Creating gossip service with self membership of Endpoint: org2peer-api.127-0-0-1.nip.io:8080, InternalEndpoint: org2peer-api.127-0-0-1.nip.io:8080, PKI-ID: 8970a1058406c79adeb8bb4634f16898cd065c8f9386821386e27951f012cec5, Metadata: 
[        org2peer] 2023-03-24 23:57:29.857 UTC 0010 INFO [lifecycle] InitializeLocalChaincodes -> Initialized lifecycle cache with 0 already installed chaincodes
[        org2peer] 2023-03-24 23:57:29.857 UTC 0011 INFO [gossip.gossip] start -> Gossip instance org2peer-api.127-0-0-1.nip.io:8080 started
[        org2peer] 2023-03-24 23:57:29.858 UTC 0012 INFO [nodeCmd] computeChaincodeEndpoint -> Entering computeChaincodeEndpoint with peerHostname: 172.17.0.2
[        org2peer] 2023-03-24 23:57:29.858 UTC 0013 INFO [nodeCmd] computeChaincodeEndpoint -> Exit with ccEndpoint: 172.17.0.2:2011
[        org2peer] 2023-03-24 23:57:29.859 UTC 0014 INFO [sccapi] DeploySysCC -> deploying system chaincode 'lscc'
[        org2peer] 2023-03-24 23:57:29.859 UTC 0015 INFO [sccapi] DeploySysCC -> deploying system chaincode 'cscc'
[        org2peer] 2023-03-24 23:57:29.859 UTC 0016 INFO [sccapi] DeploySysCC -> deploying system chaincode 'qscc'
[        org2peer] 2023-03-24 23:57:29.859 UTC 0017 INFO [sccapi] DeploySysCC -> deploying system chaincode '_lifecycle'
[        org2peer] 2023-03-24 23:57:29.860 UTC 0018 INFO [nodeCmd] serve -> Deployed system chaincodes
[        org2peer] 2023-03-24 23:57:29.860 UTC 0019 INFO [discovery] NewService -> Created with config TLS: false, authCacheMaxSize: 1000, authCachePurgeRatio: 0.750000
[        org2peer] 2023-03-24 23:57:29.860 UTC 001a INFO [nodeCmd] serve -> Discovery service activated
[        org2peer] 2023-03-24 23:57:29.860 UTC 001b INFO [nodeCmd] serve -> Starting peer with Gateway enabled
[        org2peer] 2023-03-24 23:57:29.860 UTC 001c INFO [nodeCmd] serve -> Starting peer with ID=[org2peer], network ID=[dev], address=[172.17.0.2:2010]
[        org2peer] 2023-03-24 23:57:29.861 UTC 001d INFO [nodeCmd] serve -> Started peer with ID=[org2peer], network ID=[dev], address=[172.17.0.2:2010]
[        org2peer] 2023-03-24 23:57:29.861 UTC 001e INFO [kvledger] LoadPreResetHeight -> Loading prereset height from path [/opt/microfab/data/peer-org2/data/ledgersData/chains]
[        org2peer] 2023-03-24 23:57:29.861 UTC 001f INFO [blkstorage] preResetHtFiles -> No active channels passed
[          org1ca] 2023/03/24 23:57:29 [INFO] signed certificate with serial number 592641090355986515017697760212623208023948844711
[          org1ca] 2023/03/24 23:57:29 [INFO] 127.0.0.1:36168 POST /enroll 201 0 "OK"
[       microfabd] 2023/03/24 23:57:29 Created and started CA for endorsing organization org1
[        org1peer] 2023-03-24 23:57:30.056 UTC 0020 INFO [endorser] callChaincode -> finished chaincode: cscc duration: 0ms channel= txID=b9e4324f
[        org1peer] 2023-03-24 23:57:30.056 UTC 0021 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.request_deadline=2023-03-24T23:58:00.054Z grpc.peer_address=127.0.0.1:35072 grpc.code=OK grpc.call_duration=1.041091ms
[       microfabd] 2023/03/24 23:57:30 Created and started peer for endorsing organization org1
[        org2peer] 2023-03-24 23:57:30.060 UTC 0020 INFO [endorser] callChaincode -> finished chaincode: cscc duration: 0ms channel= txID=62debcb1
[        org2peer] 2023-03-24 23:57:30.060 UTC 0021 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.request_deadline=2023-03-24T23:58:00.058Z grpc.peer_address=127.0.0.1:40956 grpc.code=OK grpc.call_duration=998.981µs
[       microfabd] 2023/03/24 23:57:30 Created and started peer for endorsing organization org2
[          org2ca] 2023/03/24 23:57:30 [INFO] signed certificate with serial number 432806349708801448306522366253249120396438221185
[          org2ca] 2023/03/24 23:57:30 [INFO] 127.0.0.1:47344 POST /enroll 201 0 "OK"
[       microfabd] 2023/03/24 23:57:30 Created and started CA for endorsing organization org2
[       microfabd] 2023/03/24 23:57:30 Creating and starting console ...
[         console] 2023/03/24 23:57:30 Created new console...
[         console] 2023/03/24 23:57:30 [mbw] RegisterOrganization &{Orderer 0xc000195980 0xc0005ccf60 <nil> OrdererMSP}
[         console] 2023/03/24 23:57:30 [mbw] RegisterOrganization &{org1 0xc000609200 0xc00014a510 0xc0000437a0 org1MSP}
[         console] 2023/03/24 23:57:30 [mbw] RegisterOrganization &{org2 0xc000043aa0 0xc0000d2db0 0xc000330810 org2MSP}
[       microfabd] 2023/03/24 23:57:30 Created and started console
[       microfabd] 2023/03/24 23:57:30 Creating and starting proxy ...
[       microfabd] 2023/03/24 23:57:30 Created and started proxy
[       microfabd] 2023/03/24 23:57:30 Creating and joining channel appchannel ...
[       microfabd] 2023/03/24 23:57:30 Creating channel appchannel ...
[       microfabd] 2023/03/24 23:57:30 Creating and joining channel mychannel ...
[       microfabd] 2023/03/24 23:57:30 Creating channel mychannel ...
[         orderer] 2023-03-24 23:57:30.139 UTC 000f INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.request_deadline=2023-03-24T23:58:00.128Z grpc.peer_address=127.0.0.1:50966 grpc.code=OK grpc.call_duration=9.430271ms
[         orderer] 2023-03-24 23:57:30.141 UTC 0010 INFO [blkstorage] newBlockfileMgr -> Getting block information from block storage
[         orderer] 2023-03-24 23:57:30.144 UTC 0011 WARN [orderer.consensus.solo] HandleChain -> Use of the Solo orderer is deprecated and remains only for use in test environments but may be removed in the future.
[         orderer] 2023-03-24 23:57:30.144 UTC 0012 INFO [orderer.commmon.multichannel] newChain -> Created and started new channel appchannel
[         orderer] 2023-03-24 23:57:30.147 UTC 0013 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-24T23:58:00.139Z grpc.peer_address=127.0.0.1:50966 grpc.code=OK grpc.call_duration=7.339773ms
[         orderer] 2023-03-24 23:57:30.147 UTC 0014 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.request_deadline=2023-03-24T23:58:00.132Z grpc.peer_address=127.0.0.1:50968 grpc.code=OK grpc.call_duration=14.46761ms
[         orderer] 2023-03-24 23:57:30.150 UTC 0015 INFO [blkstorage] newBlockfileMgr -> Getting block information from block storage
[         orderer] 2023-03-24 23:57:30.153 UTC 0016 WARN [orderer.consensus.solo] HandleChain -> Use of the Solo orderer is deprecated and remains only for use in test environments but may be removed in the future.
[         orderer] 2023-03-24 23:57:30.153 UTC 0017 INFO [orderer.commmon.multichannel] newChain -> Created and started new channel mychannel
[         orderer] 2023-03-24 23:57:30.155 UTC 0018 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-24T23:58:00.148Z grpc.peer_address=127.0.0.1:50968 grpc.code=OK grpc.call_duration=6.172855ms
[         orderer] 2023-03-24 23:57:30.154 UTC 0019 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-24T23:58:00.148Z grpc.peer_address=127.0.0.1:50966 grpc.code=OK grpc.call_duration=5.881974ms
[         orderer] 2023-03-24 23:57:30.157 UTC 001a INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-24T23:58:00.156Z grpc.peer_address=127.0.0.1:50968 grpc.code=OK grpc.call_duration=463.633µs
[         orderer] 2023-03-24 23:57:30.157 UTC 001b INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-24T23:58:00.155Z grpc.peer_address=127.0.0.1:50966 grpc.code=OK grpc.call_duration=1.095815ms
[         orderer] 2023-03-24 23:57:30.159 UTC 001c INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-24T23:58:00.158Z grpc.peer_address=127.0.0.1:50968 grpc.code=OK grpc.call_duration=388.713µs
[         orderer] 2023-03-24 23:57:30.165 UTC 001d INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.request_deadline=2023-03-24T23:58:00.158Z grpc.peer_address=127.0.0.1:50966 grpc.code=OK grpc.call_duration=7.310914ms
[       microfabd] 2023/03/24 23:57:30 Created channel appchannel
[       microfabd] 2023/03/24 23:57:30 Joining channel appchannel on peer for endorsing organization org2 ...
[       microfabd] 2023/03/24 23:57:30 Joining channel appchannel on peer for endorsing organization org1 ...
[         orderer] 2023-03-24 23:57:30.168 UTC 001e INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.request_deadline=2023-03-24T23:58:00.16Z grpc.peer_address=127.0.0.1:50968 grpc.code=OK grpc.call_duration=8.303099ms
[        org2peer] 2023-03-24 23:57:30.169 UTC 0022 INFO [endorser] callChaincode -> finished chaincode: cscc duration: 1ms channel= txID=3477ac1b
[        org2peer] 2023-03-24 23:57:30.169 UTC 0023 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.request_deadline=2023-03-24T23:58:00.167Z grpc.peer_address=127.0.0.1:40958 grpc.code=OK grpc.call_duration=2.503196ms
[        org1peer] 2023-03-24 23:57:30.170 UTC 0022 INFO [endorser] callChaincode -> finished chaincode: cscc duration: 2ms channel= txID=3402c141
[        org1peer] 2023-03-24 23:57:30.170 UTC 0023 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.request_deadline=2023-03-24T23:58:00.167Z grpc.peer_address=127.0.0.1:35074 grpc.code=OK grpc.call_duration=2.77791ms
[       microfabd] 2023/03/24 23:57:30 Created channel mychannel
[       microfabd] 2023/03/24 23:57:30 Joining channel mychannel on peer for endorsing organization org1 ...
[        org1peer] 2023-03-24 23:57:30.174 UTC 0024 INFO [endorser] callChaincode -> finished chaincode: cscc duration: 2ms channel= txID=2e5ecfc0
[        org1peer] 2023-03-24 23:57:30.174 UTC 0025 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.request_deadline=2023-03-24T23:58:00.171Z grpc.peer_address=127.0.0.1:35074 grpc.code=OK grpc.call_duration=2.707119ms
[       microfabd] 2023/03/24 23:57:30 Failed to start application: Bad proposal response: status 500, mesage "JoinChain" for channelID = appchannel failed because of validation of configuration block, because of Failed capabilities check: [Application capability V2_5 is required but not supported]
[       microfabd] 2023/03/25 00:02:04 Starting Microfab ...
[       microfabd] 2023/03/25 00:02:04 MBW
[       microfabd] 2023/03/25 00:02:04 Creating endorsing organization org2 ...
[       microfabd] 2023/03/25 00:02:04 Creating ordering organization Orderer ...
[       microfabd] 2023/03/25 00:02:04 Creating endorsing organization org1 ...
[       microfabd] 2023/03/25 00:02:05 Created endorsing organization org2
[       microfabd] 2023/03/25 00:02:05 Created ordering organization Orderer
[       microfabd] 2023/03/25 00:02:05 Created endorsing organization org1
[       microfabd] 2023/03/25 00:02:05 Waiting for CouchDB to start ...
[       microfabd] 2023/03/25 00:02:05 CouchDB has started
[       microfabd] 2023/03/25 00:02:05 Creating and starting CA for endorsing organization org2 ...
[start --boot admin:adminpw --ca.certfile /opt/microfab/data/ca-org2/ca-cert.pem --ca.keyfile /opt/microfab/data/ca-org2/ca-key.pem --port 2000 --operations.listenaddress 0.0.0.0:2001 --ca.name org2ca][       microfabd] 2023/03/25 00:02:05 Creating and starting orderer for ordering organization Orderer ...
[       microfabd] 2023/03/25 00:02:05 Creating and starting peer for endorsing organization org2 ...
[       microfabd] 2023/03/25 00:02:05 Creating and starting CA for endorsing organization org1 ...
[       microfabd] 2023/03/25 00:02:05 Creating and starting peer for endorsing organization org1 ...
[start --boot admin:adminpw --ca.certfile /opt/microfab/data/ca-org1/ca-cert.pem --ca.keyfile /opt/microfab/data/ca-org1/ca-key.pem --port 2008 --operations.listenaddress 0.0.0.0:2009 --ca.name org1ca][       microfabd] 2023/03/25 00:02:05 Creating and starting CouchDB proxy for endorsing organization org1 ...
[       microfabd] 2023/03/25 00:02:05 Creating and starting CouchDB proxy for endorsing organization org2 ...
[          org2ca] 2023/03/25 00:02:05 [INFO] Created default configuration file at /opt/microfab/data/ca-org2/fabric-ca-server-config.yaml
[          org1ca] 2023/03/25 00:02:05 [INFO] Created default configuration file at /opt/microfab/data/ca-org1/fabric-ca-server-config.yaml
[          org2ca] 2023/03/25 00:02:05 [INFO] Starting server in home directory: /opt/microfab/data/ca-org2
[          org2ca] 2023/03/25 00:02:05 [INFO] Server Version: 1.5.2
[          org2ca] 2023/03/25 00:02:05 [INFO] Server Levels: &{Identity:2 Affiliation:1 Certificate:1 Credential:1 RAInfo:1 Nonce:1}
[          org2ca] 2023/03/25 00:02:05 [INFO] The CA key and certificate files already exist
[          org2ca] 2023/03/25 00:02:05 [INFO] Key file location: /opt/microfab/data/ca-org2/ca-key.pem
[          org2ca] 2023/03/25 00:02:05 [INFO] Certificate file location: /opt/microfab/data/ca-org2/ca-cert.pem
[         orderer] 2023-03-25 00:02:05.609 UTC 0001 INFO [localconfig] completeInitialization -> Kafka.Version unset, setting to 0.10.2.0
[         orderer] 2023-03-25 00:02:05.610 UTC 0002 INFO [orderer.common.server] prettyPrintStruct -> Orderer config values:
[         orderer] General.ListenAddress = "0.0.0.0"
[         orderer] General.ListenPort = 2002
[         orderer] General.TLS.Enabled = false
[         orderer] General.TLS.PrivateKey = "/opt/fabric/config/tls/server.key"
[         orderer] General.TLS.Certificate = "/opt/fabric/config/tls/server.crt"
[         orderer] General.TLS.RootCAs = [/opt/fabric/config/tls/ca.crt]
[         orderer] General.TLS.ClientAuthRequired = false
[         orderer] General.TLS.ClientRootCAs = []
[         orderer] General.TLS.TLSHandshakeTimeShift = 0s
[         orderer] General.Cluster.ListenAddress = ""
[         orderer] General.Cluster.ListenPort = 0
[         orderer] General.Cluster.ServerCertificate = ""
[         orderer] General.Cluster.ServerPrivateKey = ""
[         orderer] General.Cluster.ClientCertificate = ""
[         orderer] General.Cluster.ClientPrivateKey = ""
[         orderer] General.Cluster.RootCAs = []
[         orderer] General.Cluster.DialTimeout = 5s
[         orderer] General.Cluster.RPCTimeout = 7s
[         orderer] General.Cluster.ReplicationBufferSize = 20971520
[         orderer] General.Cluster.ReplicationPullTimeout = 5s
[         orderer] General.Cluster.ReplicationRetryTimeout = 5s
[         orderer] General.Cluster.ReplicationBackgroundRefreshInterval = 5m0s
[         orderer] General.Cluster.ReplicationMaxRetries = 12
[         orderer] General.Cluster.SendBufferSize = 10
[         orderer] General.Cluster.CertExpirationWarningThreshold = 168h0m0s
[         orderer] General.Cluster.TLSHandshakeTimeShift = 0s
[         orderer] General.Keepalive.ServerMinInterval = 1m0s
[         orderer] General.Keepalive.ServerInterval = 2h0m0s
[         orderer] General.Keepalive.ServerTimeout = 20s
[         orderer] General.ConnectionTimeout = 0s
[         orderer] General.GenesisMethod = ""
[         orderer] General.GenesisFile = ""
[         orderer] General.BootstrapMethod = "file"
[         orderer] General.BootstrapFile = "/opt/microfab/data/orderer/config/genesisblock"
[         orderer] General.Profile.Enabled = false
[         orderer] General.Profile.Address = "0.0.0.0:6060"
[         orderer] General.LocalMSPDir = "/opt/microfab/data/orderer/msp"
[         orderer] General.LocalMSPID = "OrdererMSP"
[         orderer] General.BCCSP.Default = "SW"
[         orderer] General.BCCSP.SW.Security = 256
[         orderer] General.BCCSP.SW.Hash = "SHA2"
[         orderer] General.BCCSP.SW.FileKeystore.KeyStorePath = ""
[         orderer] General.Authentication.TimeWindow = 15m0s
[         orderer] General.Authentication.NoExpirationChecks = false
[         orderer] General.MaxRecvMsgSize = 104857600
[         orderer] General.MaxSendMsgSize = 104857600
[         orderer] FileLedger.Location = "/opt/microfab/data/orderer/data"
[         orderer] FileLedger.Prefix = ""
[         orderer] Kafka.Retry.ShortInterval = 5s
[         orderer] Kafka.Retry.ShortTotal = 10m0s
[         orderer] Kafka.Retry.LongInterval = 5m0s
[         orderer] Kafka.Retry.LongTotal = 12h0m0s
[         orderer] Kafka.Retry.NetworkTimeouts.DialTimeout = 10s
[         orderer] Kafka.Retry.NetworkTimeouts.ReadTimeout = 10s
[         orderer] Kafka.Retry.NetworkTimeouts.WriteTimeout = 10s
[         orderer] Kafka.Retry.Metadata.RetryMax = 3
[         orderer] Kafka.Retry.Metadata.RetryBackoff = 250ms
[         orderer] Kafka.Retry.Producer.RetryMax = 3
[         orderer] Kafka.Retry.Producer.RetryBackoff = 100ms
[         orderer] Kafka.Retry.Consumer.RetryBackoff = 2s
[         orderer] Kafka.Verbose = false
[         orderer] Kafka.Version = 0.10.2.0
[         orderer] Kafka.TLS.Enabled = false
[         orderer] Kafka.TLS.PrivateKey = ""
[         orderer] Kafka.TLS.Certificate = ""
[         orderer] Kafka.TLS.RootCAs = []
[         orderer] Kafka.TLS.ClientAuthRequired = false
[         orderer] Kafka.TLS.ClientRootCAs = []
[         orderer] Kafka.TLS.TLSHandshakeTimeShift = 0s
[         orderer] Kafka.SASLPlain.Enabled = false
[         orderer] Kafka.SASLPlain.User = ""
[         orderer] Kafka.SASLPlain.Password = ""
[         orderer] Kafka.Topic.ReplicationFactor = 3
[         orderer] Debug.BroadcastTraceDir = ""
[         orderer] Debug.DeliverTraceDir = ""
[         orderer] Consensus = map[SnapDir:/opt/microfab/data/orderer/data/etcdraft/snapshot WALDir:/opt/microfab/data/orderer/data/etcdraft/wal]
[         orderer] Operations.ListenAddress = "0.0.0.0:2003"
[         orderer] Operations.TLS.Enabled = false
[         orderer] Operations.TLS.PrivateKey = ""
[         orderer] Operations.TLS.Certificate = ""
[         orderer] Operations.TLS.RootCAs = []
[         orderer] Operations.TLS.ClientAuthRequired = false
[         orderer] Operations.TLS.ClientRootCAs = []
[         orderer] Operations.TLS.TLSHandshakeTimeShift = 0s
[         orderer] Metrics.Provider = "prometheus"
[         orderer] Metrics.Statsd.Network = "udp"
[         orderer] Metrics.Statsd.Address = "127.0.0.1:8125"
[         orderer] Metrics.Statsd.WriteInterval = 30s
[         orderer] Metrics.Statsd.Prefix = ""
[         orderer] ChannelParticipation.Enabled = false
[         orderer] ChannelParticipation.MaxRequestBodySize = 1048576
[         orderer] Admin.ListenAddress = "127.0.0.1:9443"
[         orderer] Admin.TLS.Enabled = false
[         orderer] Admin.TLS.PrivateKey = ""
[         orderer] Admin.TLS.Certificate = ""
[         orderer] Admin.TLS.RootCAs = []
[         orderer] Admin.TLS.ClientAuthRequired = true
[         orderer] Admin.TLS.ClientRootCAs = []
[         orderer] Admin.TLS.TLSHandshakeTimeShift = 0s
[          org1ca] 2023/03/25 00:02:05 [INFO] Starting server in home directory: /opt/microfab/data/ca-org1
[          org1ca] 2023/03/25 00:02:05 [INFO] Server Version: 1.5.2
[          org1ca] 2023/03/25 00:02:05 [INFO] Server Levels: &{Identity:2 Affiliation:1 Certificate:1 Credential:1 RAInfo:1 Nonce:1}
[        org2peer] 2023-03-25 00:02:05.618 UTC 0001 INFO [nodeCmd] serve -> Starting peer:
[        org2peer]  Version: 2.4.6
[        org2peer]  Commit SHA: 83596078d
[        org2peer]  Go version: go1.18.2
[        org2peer]  OS/Arch: linux/amd64
[        org2peer]  Chaincode:
[        org2peer]   Base Docker Label: org.hyperledger.fabric
[        org2peer]   Docker Namespace: hyperledger
[        org2peer] 2023-03-25 00:02:05.618 UTC 0002 INFO [peer] getLocalAddress -> Auto-detected peer address: 172.17.0.2:2004
[        org2peer] 2023-03-25 00:02:05.618 UTC 0003 INFO [peer] getLocalAddress -> Host is 0.0.0.0 , falling back to auto-detected address: 172.17.0.2:2004
[        org2peer] 2023-03-25 00:02:05.619 UTC 0004 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for endorser service is 2500
[        org2peer] 2023-03-25 00:02:05.619 UTC 0005 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for deliver service is 2500
[        org2peer] 2023-03-25 00:02:05.620 UTC 0006 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for gateway service is 500
[         orderer] 2023-03-25 00:02:05.620 UTC 0003 INFO [blkstorage] NewProvider -> Creating new file ledger directory at /opt/microfab/data/orderer/data/chains
[          org1ca] 2023/03/25 00:02:05 [INFO] The CA key and certificate files already exist
[          org1ca] 2023/03/25 00:02:05 [INFO] Key file location: /opt/microfab/data/ca-org1/ca-key.pem
[          org1ca] 2023/03/25 00:02:05 [INFO] Certificate file location: /opt/microfab/data/ca-org1/ca-cert.pem
[         orderer] 2023-03-25 00:02:05.625 UTC 0004 INFO [orderer.common.server] Main -> Bootstrapping the system channel
[         orderer] 2023-03-25 00:02:05.626 UTC 0005 INFO [blkstorage] newBlockfileMgr -> Getting block information from block storage
[         orderer] 2023-03-25 00:02:05.630 UTC 0006 INFO [orderer.common.server] initializeBootstrapChannel -> Initialized the system channel 'testchainid' from bootstrap block
[         orderer] 2023-03-25 00:02:05.633 UTC 0007 INFO [orderer.common.server] extractSystemChannel -> Found system channel config block, number: 0
[         orderer] 2023-03-25 00:02:05.633 UTC 0008 INFO [orderer.common.server] selectClusterBootBlock -> Cluster boot block is bootstrap (genesis) block; Blocks Header.Number system-channel=0, bootstrap=0
[        org2peer] 2023-03-25 00:02:05.635 UTC 0007 INFO [certmonitor] trackCertExpiration -> The enrollment certificate will expire on 2033-03-21 23:57:05 +0000 UTC
[         orderer] 2023-03-25 00:02:05.635 UTC 0009 INFO [orderer.common.server] Main -> Starting with system channel: testchainid, consensus type: solo
[         orderer] 2023-03-25 00:02:05.635 UTC 000a INFO [certmonitor] trackCertExpiration -> The enrollment certificate will expire on 2033-03-21 23:57:05 +0000 UTC
[        org2peer] 2023-03-25 00:02:05.636 UTC 0008 INFO [ledgermgmt] NewLedgerMgr -> Initializing LedgerMgr
[         orderer] 2023-03-25 00:02:05.641 UTC 000b WARN [orderer.consensus.solo] HandleChain -> Use of the Solo orderer is deprecated and remains only for use in test environments but may be removed in the future.
[         orderer] 2023-03-25 00:02:05.641 UTC 000c INFO [orderer.commmon.multichannel] initSystemChannel -> Starting system channel 'testchainid' with genesis block hash 2e2c5bf8b2c9a25c64e022f8dcabed2afe1f44a689753acee82f2c3e84693408 and orderer type solo
[        org1peer] 2023-03-25 00:02:05.641 UTC 0001 INFO [nodeCmd] serve -> Starting peer:
[        org1peer]  Version: 2.4.6
[        org1peer]  Commit SHA: 83596078d
[        org1peer]  Go version: go1.18.2
[        org1peer]  OS/Arch: linux/amd64
[        org1peer]  Chaincode:
[        org1peer]   Base Docker Label: org.hyperledger.fabric
[        org1peer]   Docker Namespace: hyperledger
[        org1peer] 2023-03-25 00:02:05.641 UTC 0002 INFO [peer] getLocalAddress -> Auto-detected peer address: 172.17.0.2:2010
[        org1peer] 2023-03-25 00:02:05.641 UTC 0003 INFO [peer] getLocalAddress -> Host is 0.0.0.0 , falling back to auto-detected address: 172.17.0.2:2010
[         orderer] 2023-03-25 00:02:05.641 UTC 000d INFO [orderer.common.server] Main -> Starting orderer:
[         orderer]  Version: 2.4.6
[         orderer]  Commit SHA: 83596078d
[         orderer]  Go version: go1.18.2
[         orderer]  OS/Arch: linux/amd64
[         orderer] 2023-03-25 00:02:05.642 UTC 000e INFO [orderer.common.server] Main -> Beginning to serve requests
[        org1peer] 2023-03-25 00:02:05.642 UTC 0004 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for endorser service is 2500
[        org1peer] 2023-03-25 00:02:05.642 UTC 0005 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for deliver service is 2500
[        org1peer] 2023-03-25 00:02:05.642 UTC 0006 INFO [nodeCmd] initGrpcSemaphores -> concurrency limit for gateway service is 500
[        org2peer] 2023-03-25 00:02:05.657 UTC 0009 INFO [leveldbhelper] openDBAndCheckFormat -> DB is empty Setting db format as 2.0
[        org2peer] 2023-03-25 00:02:05.659 UTC 000a INFO [blkstorage] NewProvider -> Creating new file ledger directory at /opt/microfab/data/peer-org2/data/ledgersData/chains/chains
[        org1peer] 2023-03-25 00:02:05.665 UTC 0007 INFO [certmonitor] trackCertExpiration -> The enrollment certificate will expire on 2033-03-21 23:57:05 +0000 UTC
[        org1peer] 2023-03-25 00:02:05.666 UTC 0008 INFO [ledgermgmt] NewLedgerMgr -> Initializing LedgerMgr
[        org2peer] 2023-03-25 00:02:05.673 UTC 000b INFO [leveldbhelper] openDBAndCheckFormat -> DB is empty Setting db format as 2.0
[        org1peer] 2023-03-25 00:02:05.687 UTC 0009 INFO [leveldbhelper] openDBAndCheckFormat -> DB is empty Setting db format as 2.0
[        org1peer] 2023-03-25 00:02:05.688 UTC 000a INFO [blkstorage] NewProvider -> Creating new file ledger directory at /opt/microfab/data/peer-org1/data/ledgersData/chains/chains
[        org1peer] 2023-03-25 00:02:05.696 UTC 000b INFO [leveldbhelper] openDBAndCheckFormat -> DB is empty Setting db format as 2.0
[          org2ca] 2023/03/25 00:02:05 [INFO] Initialized sqlite3 database at /opt/microfab/data/ca-org2/fabric-ca-server.db
[        org2peer] 2023-03-25 00:02:05.743 UTC 000c INFO [couchdb] createDatabaseIfNotExist -> Created state database fabric__internal
[        org1peer] 2023-03-25 00:02:05.748 UTC 000c INFO [couchdb] createDatabaseIfNotExist -> Created state database fabric__internal
[          org1ca] 2023/03/25 00:02:05 [INFO] Initialized sqlite3 database at /opt/microfab/data/ca-org1/fabric-ca-server.db
[        org1peer] 2023-03-25 00:02:05.778 UTC 000d INFO [ledgermgmt] NewLedgerMgr -> Initialized LedgerMgr
[        org1peer] 2023-03-25 00:02:05.779 UTC 000e INFO [gossip.service] New -> Initialize gossip with endpoint org1peer-api.127-0-0-1.nip.io:8080
[        org1peer] 2023-03-25 00:02:05.780 UTC 000f INFO [gossip.gossip] New -> Creating gossip service with self membership of Endpoint: org1peer-api.127-0-0-1.nip.io:8080, InternalEndpoint: org1peer-api.127-0-0-1.nip.io:8080, PKI-ID: 864d0582f0c09942f9bbd64d95a932e5c6bdaee984a3821c261cc086e39795a3, Metadata: 
[        org1peer] 2023-03-25 00:02:05.780 UTC 0010 INFO [lifecycle] InitializeLocalChaincodes -> Initialized lifecycle cache with 0 already installed chaincodes
[        org1peer] 2023-03-25 00:02:05.780 UTC 0011 INFO [gossip.gossip] start -> Gossip instance org1peer-api.127-0-0-1.nip.io:8080 started
[        org2peer] 2023-03-25 00:02:05.779 UTC 000d INFO [ledgermgmt] NewLedgerMgr -> Initialized LedgerMgr
[        org2peer] 2023-03-25 00:02:05.779 UTC 000e INFO [gossip.service] New -> Initialize gossip with endpoint org2peer-api.127-0-0-1.nip.io:8080
[        org2peer] 2023-03-25 00:02:05.780 UTC 000f INFO [gossip.gossip] New -> Creating gossip service with self membership of Endpoint: org2peer-api.127-0-0-1.nip.io:8080, InternalEndpoint: org2peer-api.127-0-0-1.nip.io:8080, PKI-ID: 424401d9a5e8d80e372931f7c30170dd421f39d5529eca188525b7b7cc696607, Metadata: 
[        org2peer] 2023-03-25 00:02:05.781 UTC 0010 INFO [gossip.gossip] start -> Gossip instance org2peer-api.127-0-0-1.nip.io:8080 started
[        org2peer] 2023-03-25 00:02:05.781 UTC 0011 INFO [lifecycle] InitializeLocalChaincodes -> Initialized lifecycle cache with 0 already installed chaincodes
[        org1peer] 2023-03-25 00:02:05.781 UTC 0012 INFO [nodeCmd] computeChaincodeEndpoint -> Entering computeChaincodeEndpoint with peerHostname: 172.17.0.2
[        org1peer] 2023-03-25 00:02:05.781 UTC 0013 INFO [nodeCmd] computeChaincodeEndpoint -> Exit with ccEndpoint: 172.17.0.2:2011
[        org1peer] 2023-03-25 00:02:05.781 UTC 0014 INFO [sccapi] DeploySysCC -> deploying system chaincode 'lscc'
[        org1peer] 2023-03-25 00:02:05.781 UTC 0015 INFO [sccapi] DeploySysCC -> deploying system chaincode 'cscc'
[        org1peer] 2023-03-25 00:02:05.782 UTC 0016 INFO [sccapi] DeploySysCC -> deploying system chaincode 'qscc'
[        org1peer] 2023-03-25 00:02:05.782 UTC 0017 INFO [sccapi] DeploySysCC -> deploying system chaincode '_lifecycle'
[        org1peer] 2023-03-25 00:02:05.782 UTC 0018 INFO [nodeCmd] serve -> Deployed system chaincodes
[        org1peer] 2023-03-25 00:02:05.782 UTC 0019 INFO [discovery] NewService -> Created with config TLS: false, authCacheMaxSize: 1000, authCachePurgeRatio: 0.750000
[        org1peer] 2023-03-25 00:02:05.782 UTC 001a INFO [nodeCmd] serve -> Discovery service activated
[        org1peer] 2023-03-25 00:02:05.782 UTC 001b INFO [nodeCmd] serve -> Starting peer with Gateway enabled
[        org1peer] 2023-03-25 00:02:05.782 UTC 001c INFO [nodeCmd] serve -> Starting peer with ID=[org1peer], network ID=[dev], address=[172.17.0.2:2010]
[        org2peer] 2023-03-25 00:02:05.782 UTC 0012 INFO [nodeCmd] computeChaincodeEndpoint -> Entering computeChaincodeEndpoint with peerHostname: 172.17.0.2
[        org2peer] 2023-03-25 00:02:05.782 UTC 0013 INFO [nodeCmd] computeChaincodeEndpoint -> Exit with ccEndpoint: 172.17.0.2:2005
[        org1peer] 2023-03-25 00:02:05.782 UTC 001d INFO [nodeCmd] serve -> Started peer with ID=[org1peer], network ID=[dev], address=[172.17.0.2:2010]
[        org1peer] 2023-03-25 00:02:05.782 UTC 001e INFO [kvledger] LoadPreResetHeight -> Loading prereset height from path [/opt/microfab/data/peer-org1/data/ledgersData/chains]
[        org1peer] 2023-03-25 00:02:05.782 UTC 001f INFO [blkstorage] preResetHtFiles -> No active channels passed
[        org2peer] 2023-03-25 00:02:05.783 UTC 0014 INFO [sccapi] DeploySysCC -> deploying system chaincode 'lscc'
[        org2peer] 2023-03-25 00:02:05.783 UTC 0015 INFO [sccapi] DeploySysCC -> deploying system chaincode 'cscc'
[        org2peer] 2023-03-25 00:02:05.783 UTC 0016 INFO [sccapi] DeploySysCC -> deploying system chaincode 'qscc'
[        org2peer] 2023-03-25 00:02:05.783 UTC 0017 INFO [sccapi] DeploySysCC -> deploying system chaincode '_lifecycle'
[        org2peer] 2023-03-25 00:02:05.783 UTC 0018 INFO [nodeCmd] serve -> Deployed system chaincodes
[        org2peer] 2023-03-25 00:02:05.784 UTC 0019 INFO [discovery] NewService -> Created with config TLS: false, authCacheMaxSize: 1000, authCachePurgeRatio: 0.750000
[        org2peer] 2023-03-25 00:02:05.784 UTC 001a INFO [nodeCmd] serve -> Discovery service activated
[        org2peer] 2023-03-25 00:02:05.784 UTC 001b INFO [nodeCmd] serve -> Starting peer with Gateway enabled
[        org2peer] 2023-03-25 00:02:05.784 UTC 001c INFO [nodeCmd] serve -> Starting peer with ID=[org2peer], network ID=[dev], address=[172.17.0.2:2004]
[        org2peer] 2023-03-25 00:02:05.784 UTC 001d INFO [nodeCmd] serve -> Started peer with ID=[org2peer], network ID=[dev], address=[172.17.0.2:2004]
[          org2ca] 2023/03/25 00:02:05 [INFO] The issuer key was successfully stored. The public key is at: /opt/microfab/data/ca-org2/IssuerPublicKey, secret key is at: /opt/microfab/data/ca-org2/msp/keystore/IssuerSecretKey
[        org2peer] 2023-03-25 00:02:05.784 UTC 001e INFO [kvledger] LoadPreResetHeight -> Loading prereset height from path [/opt/microfab/data/peer-org2/data/ledgersData/chains]
[        org2peer] 2023-03-25 00:02:05.784 UTC 001f INFO [blkstorage] preResetHtFiles -> No active channels passed
2023/03/25 00:02:05 error waiting for CA: Get "http://localhost:2001/healthz": dial tcp 127.0.0.1:2001: connect: connection refused
[          org2ca] 2023/03/25 00:02:05 [INFO] Idemix issuer revocation public and secret keys were generated for CA 'org2ca'
[          org2ca] 2023/03/25 00:02:05 [INFO] The revocation key was successfully stored. The public key is at: /opt/microfab/data/ca-org2/IssuerRevocationPublicKey, private key is at: /opt/microfab/data/ca-org2/msp/keystore/IssuerRevocationPrivateKey
2023/03/25 00:02:05 error waiting for CA: Get "http://localhost:2009/healthz": dial tcp 127.0.0.1:2009: connect: connection refused
[       microfabd] 2023/03/25 00:02:05 Created and started orderer for ordering organization Orderer
[          org2ca] 2023/03/25 00:02:05 [INFO] Home directory for default CA: /opt/microfab/data/ca-org2
[          org2ca] 2023/03/25 00:02:05 [INFO] Operation Server Listening on [::]:2001
[          org2ca] 2023/03/25 00:02:05 [INFO] Listening on http://0.0.0.0:2000
[        org1peer] 2023-03-25 00:02:05.801 UTC 0020 INFO [endorser] callChaincode -> finished chaincode: cscc duration: 0ms channel= txID=3d7d5f96
[        org1peer] 2023-03-25 00:02:05.801 UTC 0021 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.request_deadline=2023-03-25T00:02:35.8Z grpc.peer_address=127.0.0.1:53316 grpc.code=OK grpc.call_duration=1.173467ms
[        org2peer] 2023-03-25 00:02:05.801 UTC 0020 INFO [endorser] callChaincode -> finished chaincode: cscc duration: 0ms channel= txID=58b86746
[        org2peer] 2023-03-25 00:02:05.801 UTC 0021 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.request_deadline=2023-03-25T00:02:35.8Z grpc.peer_address=127.0.0.1:51786 grpc.code=OK grpc.call_duration=1.089612ms
[       microfabd] 2023/03/25 00:02:05 Created and started peer for endorsing organization org1
[       microfabd] 2023/03/25 00:02:05 Created and started peer for endorsing organization org2
[          org1ca] 2023/03/25 00:02:05 [INFO] The issuer key was successfully stored. The public key is at: /opt/microfab/data/ca-org1/IssuerPublicKey, secret key is at: /opt/microfab/data/ca-org1/msp/keystore/IssuerSecretKey
[          org1ca] 2023/03/25 00:02:05 [INFO] Idemix issuer revocation public and secret keys were generated for CA 'org1ca'
[          org1ca] 2023/03/25 00:02:05 [INFO] The revocation key was successfully stored. The public key is at: /opt/microfab/data/ca-org1/IssuerRevocationPublicKey, private key is at: /opt/microfab/data/ca-org1/msp/keystore/IssuerRevocationPrivateKey
[          org1ca] 2023/03/25 00:02:05 [INFO] Home directory for default CA: /opt/microfab/data/ca-org1
[          org1ca] 2023/03/25 00:02:05 [INFO] Operation Server Listening on [::]:2009
[          org1ca] 2023/03/25 00:02:05 [INFO] Listening on http://0.0.0.0:2008
[          org2ca] 2023/03/25 00:02:06 [INFO] signed certificate with serial number 426495923214093375495805575309407605353711857753
[          org1ca] 2023/03/25 00:02:06 [INFO] signed certificate with serial number 92826695453850460356883544741186595114594871197
[          org2ca] 2023/03/25 00:02:06 [INFO] 127.0.0.1:48524 POST /enroll 201 0 "OK"
[       microfabd] 2023/03/25 00:02:06 Created and started CA for endorsing organization org2
[          org1ca] 2023/03/25 00:02:06 [INFO] 127.0.0.1:37966 POST /enroll 201 0 "OK"
[       microfabd] 2023/03/25 00:02:06 Created and started CA for endorsing organization org1
[       microfabd] 2023/03/25 00:02:06 Creating and starting console ...
[         console] 2023/03/25 00:02:06 Created new console...
[         console] 2023/03/25 00:02:06 [mbw] RegisterOrganization &{Orderer 0xc000664a20 0xc000665d10 <nil> OrdererMSP}
[         console] 2023/03/25 00:02:06 [mbw] RegisterOrganization &{org1 0xc0005c2420 0xc0005c3710 0xc0002e5d40 org1MSP}
[         console] 2023/03/25 00:02:06 [mbw] RegisterOrganization &{org2 0xc000043c80 0xc0000ccf90 0xc0002e5230 org2MSP}
[       microfabd] 2023/03/25 00:02:06 Created and started console
[       microfabd] 2023/03/25 00:02:06 Creating and starting proxy ...
[       microfabd] 2023/03/25 00:02:06 Created and started proxy
[       microfabd] 2023/03/25 00:02:06 Creating and joining channel appchannel ...
[       microfabd] 2023/03/25 00:02:06 Creating channel appchannel ...
[       microfabd] 2023/03/25 00:02:06 Creating and joining channel mychannel ...
[       microfabd] 2023/03/25 00:02:06 Creating channel mychannel ...
[         orderer] 2023-03-25 00:02:06.125 UTC 000f INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.request_deadline=2023-03-25T00:02:36.117Z grpc.peer_address=127.0.0.1:42788 grpc.code=OK grpc.call_duration=7.395491ms
[         orderer] 2023-03-25 00:02:06.128 UTC 0010 INFO [blkstorage] newBlockfileMgr -> Getting block information from block storage
[         orderer] 2023-03-25 00:02:06.131 UTC 0011 WARN [orderer.consensus.solo] HandleChain -> Use of the Solo orderer is deprecated and remains only for use in test environments but may be removed in the future.
[         orderer] 2023-03-25 00:02:06.131 UTC 0012 INFO [orderer.commmon.multichannel] newChain -> Created and started new channel mychannel
[         orderer] 2023-03-25 00:02:06.132 UTC 0013 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-25T00:02:36.126Z grpc.peer_address=127.0.0.1:42788 grpc.code=OK grpc.call_duration=5.568904ms
[         orderer] 2023-03-25 00:02:06.133 UTC 0014 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.request_deadline=2023-03-25T00:02:36.117Z grpc.peer_address=127.0.0.1:42786 grpc.code=OK grpc.call_duration=15.504491ms
[         orderer] 2023-03-25 00:02:06.135 UTC 0015 INFO [blkstorage] newBlockfileMgr -> Getting block information from block storage
[         orderer] 2023-03-25 00:02:06.139 UTC 0016 WARN [orderer.consensus.solo] HandleChain -> Use of the Solo orderer is deprecated and remains only for use in test environments but may be removed in the future.
[         orderer] 2023-03-25 00:02:06.139 UTC 0017 INFO [orderer.commmon.multichannel] newChain -> Created and started new channel appchannel
[         orderer] 2023-03-25 00:02:06.139 UTC 0018 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-25T00:02:36.133Z grpc.peer_address=127.0.0.1:42788 grpc.code=OK grpc.call_duration=6.108346ms
[         orderer] 2023-03-25 00:02:06.140 UTC 0019 INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-25T00:02:36.134Z grpc.peer_address=127.0.0.1:42786 grpc.code=OK grpc.call_duration=6.303889ms
[         orderer] 2023-03-25 00:02:06.141 UTC 001a INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-25T00:02:36.14Z grpc.peer_address=127.0.0.1:42788 grpc.code=OK grpc.call_duration=583.391µs
[         orderer] 2023-03-25 00:02:06.142 UTC 001b INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-25T00:02:36.141Z grpc.peer_address=127.0.0.1:42786 grpc.code=OK grpc.call_duration=573.048µs
[         orderer] 2023-03-25 00:02:06.143 UTC 001c INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.request_deadline=2023-03-25T00:02:36.142Z grpc.peer_address=127.0.0.1:42786 grpc.code=OK grpc.call_duration=872.503µs
[         orderer] 2023-03-25 00:02:06.146 UTC 001d INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.request_deadline=2023-03-25T00:02:36.143Z grpc.peer_address=127.0.0.1:42788 grpc.code=OK grpc.call_duration=3.345928ms
[       microfabd] 2023/03/25 00:02:06 Created channel mychannel
[       microfabd] 2023/03/25 00:02:06 Joining channel mychannel on peer for endorsing organization org1 ...
[        org1peer] 2023-03-25 00:02:06.149 UTC 0022 INFO [endorser] callChaincode -> finished chaincode: cscc duration: 1ms channel= txID=6e68fdf3
[        org1peer] 2023-03-25 00:02:06.149 UTC 0023 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.request_deadline=2023-03-25T00:02:36.147Z grpc.peer_address=127.0.0.1:53318 grpc.code=OK grpc.call_duration=1.806705ms
[         orderer] 2023-03-25 00:02:06.152 UTC 001e INFO [comm.grpc.server] 1 -> streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.request_deadline=2023-03-25T00:02:36.144Z grpc.peer_address=127.0.0.1:42786 grpc.code=OK grpc.call_duration=7.222894ms
[       microfabd] 2023/03/25 00:02:06 Created channel appchannel
[       microfabd] 2023/03/25 00:02:06 Joining channel appchannel on peer for endorsing organization org2 ...
[       microfabd] 2023/03/25 00:02:06 Joining channel appchannel on peer for endorsing organization org1 ...
[        org2peer] 2023-03-25 00:02:06.154 UTC 0022 INFO [endorser] callChaincode -> finished chaincode: cscc duration: 1ms channel= txID=7c38de0d
[        org2peer] 2023-03-25 00:02:06.155 UTC 0023 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.request_deadline=2023-03-25T00:02:36.152Z grpc.peer_address=127.0.0.1:51788 grpc.code=OK grpc.call_duration=2.13344ms
[        org1peer] 2023-03-25 00:02:06.157 UTC 0024 INFO [endorser] callChaincode -> finished chaincode: cscc duration: 1ms channel= txID=978fb338
[        org1peer] 2023-03-25 00:02:06.157 UTC 0025 INFO [comm.grpc.server] 1 -> unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.request_deadline=2023-03-25T00:02:36.155Z grpc.peer_address=127.0.0.1:53318 grpc.code=OK grpc.call_duration=1.782798ms
[       microfabd] 2023/03/25 00:02:06 Failed to start application: Bad proposal response: status 500, mesage "JoinChain" for channelID = mychannel failed because of validation of configuration block, because of Failed capabilities check: [Application capability V2_5 is required but not supported]

Fix support for running in Red Hat OpenShift

By default, Red Hat OpenShift runs containers under a random UID for "security reasons". Their recommendation is that since the container user is always a member of the root group, make all directories writeable by the root group. They also state that you should use numeric user IDs with the USER declaration.

Extra files needed in extracted data

To permit external applications to connect some additional resources are needed.

  1. The cacerts\ca.pem file
  2. For the peer command the config.yaml file is needed with the NodeOU settings.

Bad status returned by ordering service BAD_REQUEST

When I run microfab with the following:

export MICROFAB_CONFIG='{
    "endorsing_organizations":[
        {
            "name": "SampleOrg1"
        },
        {
            "name": "SampleOrg2"
        },
        {
            "name": "SampleOrg3"
        }
    ],
    "channels":[
        {
            "name": "channel1",
            "endorsing_organizations":[
                "SampleOrg1",
                "SampleOrg2"
            ]
        },
        {
            "name": "channel2",
            "endorsing_organizations":[
                "SampleOrg2",
                "SampleOrg3"
            ],
            "capability_level": "V1_4_2"
        }
    ]
}'

My network doesn't start with some of the following errors:

[         orderer] 2020-11-26 13:45:59.092 UTC [policies] SignatureSetToValidIdentities -> WARN 00d invalid identity: certificate subject=CN=SampleOrg1 Admin,OU=admin serialnumber=69772086134801950664789114212393013597 error="MSP SampleOrg1MSP is not defined on channel"
[         orderer] 2020-11-26 13:45:59.093 UTC [policies] SignatureSetToValidIdentities -> WARN 00e invalid identity: certificate subject=CN=SampleOrg1 Admin,OU=admin serialnumber=69772086134801950664789114212393013597 error="MSP SampleOrg1MSP is not defined on channel"
[         orderer] 2020-11-26 13:45:59.093 UTC [orderer.common.broadcast] ProcessMessage -> WARN 00f [channel: channel2] Rejecting broadcast of config message from 127.0.0.1:57870 because of error: error validating channel creation transaction for new channel 'channel2', could not successfully apply update to template configuration: error authorizing update: error validating DeltaSet: policy for [Group]  /Channel/Application not satisfied: implicit policy evaluation failed - 0 sub-policies were satisfied, but this policy requires 1 of the 'Admins' sub-policies to be satisfied

and

ine=2020-11-26T13:44:58.052Z grpc.peer_address=127.0.0.1:48176 grpc.code=OK grpc.call_duration=132.614519ms
[       microfabd] 2020/11/26 13:44:28 Joined channel channel1 on peer for endorsing organization SampleOrg1
[       microfabd] 2020/11/26 13:44:28 Created and joined channel channel1
[       microfabd] 2020/11/26 13:44:28 Failed to start application: Bad status returned by ordering service BAD_REQUEST
2020/11/26 13:44:28 http: proxy error: context canceled
2020/11/26 13:44:28 http: proxy error: context canceled


Logging

Pump all logs to standard output, so they can be easily consumed by Docker or Kubernetes clients, and log collector systems like LogDNA.

Add support for overriding configuration

Introduce a FABLET_CONFIG environment variable where you can customize the network:

export FABLET_CONFIG='{
    "endorsing_organizations":[
        {
            "name": "DigiBank"
        },
        {
            "name": "MagnetoCorp"
        }
    ],
    "channels":[
        {
            "name": "ourchannel",
            "endorsing_organizations":[
                "DigiBank",
                "MagnetoCorp"
            ]
        }
    ]
}'

Created CAs are not named.

from mailing list report

I'm testing using IBM Microfab to develop some administration interfaces as well as some smart contracts and apps.

I'm having a problem getting to list all the users that the "registrar" user has access to because the CA is started without a name. I'm having the following error:

Error: Error: fabric-ca request identities?ca=undefined failed with errors [[ { code: 19, message: "CA 'undefined' does not exist" } ]]

Microfab log:

[ org1ca] 2021/10/23 02:02:31 [INFO] 127.0.0.1:49878 GET /api/v1/identities?ca=undefined 404 19 "CA 'undefined' does not exist"

@davidfdr fyi...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.