MultiChain is a platform that enables us to create and deploy private Blockchains that can be used within or between organizations. Multichain provides a simple API and command-line interface that makes it easy to maintain and deploy.

The main aim of Multichain is:

To ensure that visibility of Blockchain‘s activity must be kept within the chosen participants.

To control over which transaction are permitted.

To enable more secure mining with proof of work and its associated cost.

The Blockchain system only stores transactions related to participants.

The Hand-Shaking Process

The hand-shaking process in Multichain takes place when two Blockchain nodes connect.

Each node presents its identity as a public address on the permitted list.

Each node verifies that the other’s address is on its own permitted list.

Each node sends a challenge message to the other party.

Each node sends back a signature of the challenge message providing their ownership of the private key corresponding to the public address they presented.

If any of the nodes do not have satisfying results, then they abort the peer-to-peer connection.

Mining in Multichain

MultiChain restricts miners to a set of identifiable entities. Multichain introduces a parameter called mining diversity that constrains with 0 <= mining diversity <= 1.

The validity of block is verified by doing the following:

Apply the permissions changes defined by transactions n the block in order.

Count the total permitted miners who are defined after these changes in the block.

Multiply no of miners by mining diversity and round up to get left spacing.

This enforces the round-robin schedule in which miner create blocks in rotation in order to generate a valid BlockChain. The mining diversity parameter defines the strictness of the schema. The "one" value defines that every permitted miner is included in rotation. Zero defines no restrictions at all.

In Multichain the transaction fees and the Block reward is Zero by default but you can set these value in params.dat file. the params.dat file contains the whole configuration like :-