I am a newbie to Hyperledger Fabric. I came across a very confusing part of fabric.
Cryptogen is used to generate certs and keys for users and admin in an organisation.
Talking specifically about fabcar, A very similar thing is the done by:
So what exactly is happening? What is the flow? What is the difference between these admins created again and again?
I see, CA server container has a volume mounted, pointing back to the crypto-config folder which already have certs and keys generated by cryptogen.
Similar existing answers is not what I am looking for. I want an in-depth insight. Thanks.
Okay, so after digging around for continuous 1 week I found exact answer to the question. First, I would like to lay down exact flow and structure of fabric samples applications.
peer chaincode install
and peer chaincode instantiate
the contract becomes available to all the components of the respective channels.The Hyperledger Fabric SDK provides a gateway abstraction so that applications can focus on application logic while delegating network interaction to the gateway. Gateways and wallets make it straightforward to write Hyperledger Fabric applications. Find here in the docs
Diving into a different concept here, fabric provides two kind of certification architectures (architecture might not be the correct word),
admin
to allow generating certificates.
While bringing up the server itself, this bootstrap identity is created using fabric-ca-server start
with a -b
option with username:password
parameter. Coming back to fabric, before starting any network (basic-network or first-network) fabric asks us to generate cryto-config.
crypto-config
by cryptogen to generate identities for the application.The private and public key are first generated locally and the public key is then sent to the CA which returns an encoded certificate for use by the application. These three credentials are then stored in the wallet, allowing us to act as an administrator for the CA. Find here in the docs
So it's not by design of fabric why Fabcar used CA
and why Commercial-Paper used cryptogen
, it's simply by choice.
I'll end my answer, quoting exact statement from the fabric documentation.
When we created the network, an admin user literally called admin was created as the registrar for the certificate authority (CA). Our first step is to generate the private key, public key, and X.509 certificate for admin using the enroll.js program. This process uses a Certificate Signing Request (CSR) — the private and public key are first generated locally and the public key is then sent to the CA which returns an encoded certificate for use by the application. These three credentials are then stored in the wallet, allowing us to act as an administrator for the CA. We will subsequently register and enroll a new application user which will be used by our application to interact with the blockchain. Find here in the docs
addToWallet.js is the program that Isabella is going to use to load her identity into her wallet, and issue.js will use this identity to create commercial paper 00001 on behalf of MagnetoCorp by invoking papercontract. Find here in the docs
Any corrections from experts are very welcome. These are my deductions from code observation.