I am not using BaaS and under the setup I have the networks are setup using

configtxgen* cryptogen*

If I setup say (extract), then how would the voting process take place to accept new members into the network (ie new MSPs) -


    # SampleOrg defines an MSP using the sampleconfig.  It should never be used
    # in production but may be used as a template for other definitions
    - &OrdererOrg
        # DefaultOrg defines the organization which is used in the sampleconfig
        # of the fabric.git development environment
        Name: OrdererOrg

        # ID to load the MSP definition as
        ID: OrdererMSP

        # MSPDir is the filesystem path which contains the MSP configuration
        MSPDir: crypto-config/ordererOrganizations/example.com/msp

        # Policies defines the set of policies at this level of the config tree
        # For organization policies, their canonical path is usually
        #   /Channel/<Application|Orderer>/<OrgName>/<PolicyName>
                Type: Signature
                Rule: "OR('OrdererMSP.member')"
                Type: Signature
                Rule: "OR('OrdererMSP.member')"
                Type: Signature
                Rule: "OR('OrdererMSP.admin')"

I will break this into two scenarios:

  1. Adding a member to a consortium
  2. Adding a member to an existing channel

Adding a new member to a consortium In order for a member to be able to create channels, they need to be added to a consortium. Consortiums are actually defined in the system channel. Adding a new member to a consortium requires a channel update transaction. The default policy allows the ordering service admin(s) to add members to a consortium. If there is only a single ordering organization, then just that org needs to create, sign and submit a config update transaction to the system channel in order to add the member. If there are a multiple ordering organizations and the consortium update policy requires multiple of them to agree, then multiple signatures need to be obtained for the config update transaction.

Adding a new member to an existing channel: The process of adding a member to an existing channel is similar. If the channel update policy requires multiple members to agree, then multiple signatures again need to be obtained before submitting the config update transaction.

In order to obtain multiple signatures in either case, one organization will need to create the initial config update transaction and then pass it out of band to the other organizations who will each also need to sign it. Once enough signatures have been obtained, one of them will need to assemble and submit the config update with all of the signatures. Note: you can also send it to each organization serially - send to one, get back, send to next, etc.

Each member can use the CLI to sign the config update with the peer channel signconfigtx command.

See http://hyperledger-fabric.readthedocs.io/en/release-1.4/channel_update_tutorial.html#adding-an-org-to-a-channel for a tutorial on this.

  • Thanks for your comment. This is based on a channel policy but what happens when the member is being added without a channel? Is that viable? Perhaps they want to create channels later? Is this all based around channels, and can we manage this totally at a channel level? – Trevor Oakley Sep 20 at 15:52
  • I edited my answer above to include details on adding a member to a consortium as well. – Gari Singh Sep 21 at 10:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.