Privacy Mechanisms of Permissioned Blockchains: A Deep Dive into Quorum

On April 16, 2019, the MIT Bitcoin Club hosted BlockTEST and Quorum as guest speakers at their weekly meeting. Many thanks to all who came out to chat with us!

Here are some Q&A from the meetup:

Q: How does Truffle interact with private transactions?

A: Truffle has added support for sending private transactions but sending private transactions in Quorum is almost the exact API as using private transactions in Ethereum, but with the “PrivateFor” field.

Q: What is the reason that Quorum chose their specific encryption mechanisms?

A: No answer, but the project is open source so you can change this if you want. The consensus is implemented to be plug and play, meaning you could switch out some component or create your own!

Q: Could you explain the role of the transaction manager?

A: Blockchains are typically designed to specifically transfer transactions and blocks — nothing else. Quorum needed another layer built on top of this for transferring private payloads from point to point. This layer was designed P2P, so the transaction manager was intended to be direct. You must know the recipient, and private payload sequencing is only transferred between the participants, so this never is written on the public blockchain. For this we need a separate ‘shadow networking layer’ specifically for privacy — this is the Transaction Manager. This is a server than handles this sort of connectivity between nodes for private transactions.

Q: Do private transactions stay between nodes or are they viewable in blocks? 
A: All transactions are passed along to all the nodes. Having said that, private transactions stay between the participating nodes only as only they have the keys to decrypt the message. The other nodes, can just access a hash of the transaction without even knowing who were involved and what the data is.

Q: How can nodes outside of private transactions validate the hash associated with private payloads?

A: They do not, Quorum allows all private transactions to be written by all members of the blockchain. If required, a node not privy to the transaction can be called on as an arbitrator to verify any aspects of the transaction(s). This can be done by providing them keys to decrypt the message.

Q: Is there some kind of remote access station for other nodes to confirm private transactions?

A: A node outside of private transactions will not know the private transaction participants. If the node receives a block with a private transaction it will be able to view the hash and recognize that the transaction is private. The transaction manager is queried to see if the node was involved in the private transaction. If so, the payload is received, if not the node will skip this.

Q: What is the value of having an unvalidated, opaque hash on the blockchain?

A: The idea is that there is a private signature that proves that a transaction happened for auditing and other purposes.

Q: If two nodes participate in a private transaction and are destroyed after, what happens to the transaction?

A: There are specific node keys required for disaster recovery. Users can create a new node with the keys of a destroyed node which can then sync the blocks and query the other transaction managers to recover lost transactions. The new node will be exactly same in function to the older (destroyed) one.

Q: Are Private transactions free?

A: Yes, the gas price is always set at zero. Private transactions are specifically free because if nodes could see gas for transactions is would not be fully private.

Q: Can anyone send a private transaction on the network that other nodes will always propagate because they have no mechanisms for validation?

A: Yes, but in a typical scenario you would know the other members and could kick off anyone flooding the network with transactions.

Q: How did you guys edit the Geth code?

A: Essentially a permissioned whitelist feature was implemented on top of Geth.

Q: Is Quorum being used in production for actual private value transfer?

A: Yes, many banks use InterBank Information Network, and a variety of other use cases. Being an open sourced but enterprise blockchain solution, not all the projects are public knowledge.

Q: Can you compare Quorum, Hyperledger, and R3 Corda?

A: They work completely differently but they all provide privacy and permissioned features. Hyperledger Fabric is more open ended, Corda has a financial focus, and Quorum is use case agnostic.

Q: Are you transferring the encrypted payload key in the process?

A: No, asymmetric encryption is used while storing the private payload key to the transaction manager and public keys are displayed on the blockchain.

Q: Can the transaction manager be used to send private transaction on Ethereum?

A: No, but this could be made possible.

Q: Is there a concept of private smart contracts?

A: Yes, smart contract and transactions could be made private in Quorum depending on the requirement.

Q: Do you have any idea how big of network you have run Quorum on?

A: With Raft consensus, Quorum has tested between 500 and 1000 nodes but there are no restrictions. They have heard of use cases with thousands of nodes.

Q: What are the criteria for adding a new node?

A: In Raft, any node can become a leader, the node that will mint blocks (the fastest node typically becomes the leader). In Istanbul there are two types of nodes: nodes that just participate in the blockchain, and validator nodes which are responsible for creating new blocks. When you set up your blockchain you need to figure out what your tolerance for faulty nodes is. There is a formula that they provide, 3n-1, which is how you figure out how many nodes you need in a network. A minimum production level for Istanbul is 5 or 7 nodes in order to tolerate one node failure. In Raft it should be 3 and up.

Q: In Istanbul can any node that joins the network become a validator?

A: No, that is configurable. There is a voting mechanism between the current validators when a majority must confirm a new validator node.

Q: Are all configurations done between members or does the initiator of the blockchain have control?

A: Yes, they are done between members; the idea is that you can remove and add nodes in a live environment just like on Ethereum.

Q: Is there any option for data pruning?

A: Quorum has a piece of software that you can use to help prune your state.

Q: If all that you’re saving on the chain are hashes of private transactions, could you also put the hashes of transactions from different protocols on the chain?

A: Yes, but you would need to write new code and modify the Geth client to support it.

Q: Do you know anything about the MediLedger project on Quorum?

A: They are trying to create a secure data exchange system for healthcare providers, but we do not have much information on it.

Q: Are there any APIs to the Transaction Manager and the enclave? 
A: Yes

Q: Is there a ready to use Dapp for cross border payments? 
A: No, just PoCs at this point.