Quorum : Ethereum-based distributed ledger protocol

In Simple words Quorum is an Ethereum-based distributed ledger protocol that supports transaction and contract privacy.

The primary features of Quorum.

  • Transaction and contract privacy
  • Voting-based consensus mechanism
  • Network/Peer permissions management
  • Higher performance

Apart from these feature Quorum includes one of the powerful feature that is support of  Private and Public Transactions.

  • Private Transaction :- are those Transactions whose payload is only visible to the network participants whose public keys are specified in the privateFor parameter of the Transaction . privatefor can take multiple addresses in a comma separated list.
  • Public Transaction :- These are those Transactions whose payload is visible to all participants of the same Quorum network. These are created as standard Ethereum Transactions in the usual way.

The treatment of both type of transaction is different for Public Transaction it is sent to an Account that holds Contract code, each participant will execute the same code and their underlying StateDBs will be updated accordingly. But For Private Transaction  it replaces the original Transaction Payload with a hash of the encrypted Payload that it receives from Constellation. Participants that are party to the Transaction will be able to replace the hash with the actual payload via their Constellation instance, whilst those Participants that are not party will only see the hash.

Now let see how Quorum works Internally.


The process of a Transaction in Quorum is describe in the image.including Private Transaction Happening between A and B and there are 3 member in the network [A, B and C]  :-

  1. In First step the  request of Transaction is send to corresponding Quorum Node  i.e. A -> Quorum Node A. [Including Transaction A to B]
  2. A’s Quorum Node passes the Transaction on to its paired Transaction Manager, [Transaction Manager A] requesting for it to store the Transaction payload.
  3. A’s Transaction Manager makes a call to its associated Enclave to validate the sender and encrypt the payload.
  4. A’s Enclave checks the private key for Party A and, once validated, performs the Transaction conversion.
  5. Party A’s Transaction manager then stores the encrypted payload  and encrypted symmetric key and then securely transfers (via HTTPS) the hash, encrypted payload, and encrypted symmetric key that has been encrypted with Party B’s public key to Party B’s Transaction Manager. Party B’s Transaction Manager responds with an Ack/Nack response.
  6. A’s Transaction Manager returns the hash to the Quorum Node which then replaces the Transaction’s original payload with that hash.
  7. In Seventh Step Transaction is propagated to the rest of the network using the standard Ethereum P2P Protocol.
  8. A block containing Transaction AB is created and distributed to each Party on the network.
  9. In this step all Parties will attempt to process the Transaction.
  10. In this step A and B make a call to its Enclave, passing in the Encrypted Payload, Encrypted symmetric key and Signature. But C will receive NotARecipient message.
  11. The Enclave validates the signature and then decrypts the symmetric key using the Party’s private key that is held in The Enclave, decrypts the Transaction Payload using the now-revealed symmetric key and returns the decrypted payload to the Transaction Manager
  12. The Transaction Managers for Parties A and B then send the decrypted payload to the EVM for contract code execution. This execution will update the state in the Quorum Node’s Private StateDB only.

REFERENCES :-  Quorum Github Wiki

Blockchain + Digital Signature

A distributed register to store static records and/or dynamic transaction data without central coordination by using a consensus-based mechanism to check the validity of transactions. A blockchain is a distributed database that maintains a continuously growing list of data records that cannot be tampered.
Blockchain is a public ledger of all transaction made with Bitcoin. Blockchain’s intent is to replace an external, trusted third party certificate authorities, and also prevent anyone from being able to go backward and cover their tracks if they corrupted an entry.

The technology works on the following properties:

1) Log replication – To create resiliency, log-based replication is increasingly used for distributed systems to replicate logs to all peers in the network.

2) Provable Value Chain – The values stored in the blockchain can be digital currency (such as the widely known Bitcoin), data, documents, and other assets. Hash chains are kept for each block providing a history of changes, which helps protect data integrity of the block asset.

3) Public-key Cryptography – Blockchain uses different types of cryptography including ECDSA and elliptic curve to authenticate transactions.

4) Decentralized transaction ledger – The ledger is blockchain and is maintained without a central authority, and acts as a decentralized reconciliation system.

Blockchain with Digital signatures have become a key control in many organizations security strategy, relying on the use of certificates and complex mathematical algorithms to provide authenticity of the data and protection against forgery.

But, suppose a company wants to accept Bitcoins for its trades. Now, because of security reasons, the company would not want that only a single employee will have access to the company’s Bitcoin wallet’s password. Any transaction should need approval from more than one employees of the company. A multisignature address is created for that purpose.

A multisignature address is an address associated with more than one ECDSA private keys. So, in an m-of-n address, when a Bitcoin address is generated, it is associated with n private keys. And, at least m private keys will be required to make a transaction possible.


And this concept can be used in making digital signatures. One can create a multisignature m-of-n address using n private keys and use that to record digital signature of documents in a blockchain. Anyone can verify the digital signature using public keys, but to make the digital signature one would need at least m private keys, out of n private keys associated with the multisignature address. By using private keys between the signer and the recipient, data transactions can be maintained by only approved parties.

Image Source : Slideshare.net


Quick example of a block in a blockchain

Further to our earlier post, which describes the data structure of a block in the blockchain, here is a quick example of what does the block look like



Relating it back to the post, it contains the

  1. Size, Version, Bits and Height in the chain as to where it belongs
  2. Number of transactions
  3. Merkle root
  4. Timestamp
  5. Link to the previous block
  6. Mining Difficulty
  7. Nonce
  8. And a list of all the transactions in the block.

Again, each transaction has the following format

Screenshot from 2016-11-28 18-16-28.png

Again as per the details in the earlier post, amongst the technical information, it contains the size, mine time and the block that it is a part of , along with the details of the coinbase in input and output.