Private transaction, contract extension, multi tenancy in Quorum blockchain

Victor Yeo
2 min readMay 26, 2021

--

1. To support private transaction in Quorum, we have to enable privacy enhancement before starting Quorum network.

a. modify the istanbul-genesis.json (or genesis.json) file

“eip155Block”: 0,“eip158Block”: 0,“isQuorum”: true,+ “privacyEnhancementsBlock”: 0,“maxCodeSizeConfig” : [{“block” : 0,

b. modify tessera-config.json (or tessera-config-9.0.json) file

},- “alwaysSendTo”: []+ “alwaysSendTo”: [],+ “features”: {+ “enablePrivacyEnhancements”: true+ }}

c. add the arguments to send API method

To send private transaction in Quorum blockchain, we add parameters to the send API method.

privateFor: [“…”, “…”] — a list of public key of parties included in the private transaction

PrivacyFlag: 3 -for private state validation

PrivacyFlag: 1 -for counterparty protection

.send({from: accounts1[0],gas: 1500000,gasPrice: ‘0’,privateFor: [“ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc=”],// this is public key from tm7 of 7node Quorum samplesPrivacyFlag: 3})

Reference:

https://docs.goquorum.consensys.net/en/stable/Concepts/Privacy/PrivacyEnhancements/

2. To support contract extension, pass additional parameter to geth when starting quorum:

--rpcapi quorumExtension

To extend quorum contract in javascript, add the code that extends web3 manually

const methods = [{name: ‘approveExtension’,call: ‘quorumExtension_approveExtension’,params: 3,inputFormatter: [web3.extend.formatters.inputAddressFormatter, null, web3.extend.formatters.inputTransactionFormatter]},{name: ‘extendContract’,call: ‘quorumExtension_extendContract’,params: 4,inputFormatter: [web3.extend.formatters.inputAddressFormatter, null, web3.extend.formatters.inputAddressFormatter, web3.extend.formatters.inputTransactionFormatter]},{name: ‘cancelExtension’,call: ‘quorumExtension_cancelExtension’,params: 2,inputFormatter: [web3.extend.formatters.inputAddressFormatter, web3.extend.formatters.inputTransactionFormatter]},{name: ‘getExtensionStatus’,call: ‘quorumExtension_getExtensionStatus’,params: 1,inputFormatter: [web3.extend.formatters.inputAddressFormatter]},{name: ‘activeExtensionContracts’,call: ‘quorumExtension_activeExtensionContracts’,params: 0}];web3.extend({property: ‘quorumExtension’,methods});

Then use the normal way to call the quorum contract extension APIs.

For example:

web3.quorumExtension.activeExtensionContracts()

3. Multi-tenancy support

From the release:

https://github.com/ConsenSys/quorum/releases/tag/v21.1.0, it is possible to have multiple tenants in the same node. This feature is in alpha release as of May 2021. OAuth2 server is required when multi-tenancy is used.

This pull request enables multi tenants from a single node.

https://github.com/ConsenSys/quorum/pull/1105

Reference:

https://docs.goquorum.consensys.net/en/latest/HowTo/Use/Multitenancy/

https://docs.goquorum.consensys.net/en/latest/Concepts/Multitenancy/Overview/

--

--

No responses yet