ZeppelinOS with Quorum/Private Contracts

Does zOS work with Quorum and private contracts?


Hey! I’ll be trying this soon, all I know for now is that OpenZeppelin and Truffle work… will let you know when I try it. Are you trying to run Quorum on Azure or locally?


Hi @aparm23 Welcome to the community. :wave:

I haven’t played with Quorum or private contracts, though hopefully someone in the community has and can provide an answer.

Otherwise please try it out and let the community know how it went. :smile:

Assuming in your use of ZeppelinOS you are using EVM packages such as openzeppelin-eth then you would need to deploy the EVM packages once for the network you are using:

There is one caveat here with the --deploy-dependencies flag. We mentioned that this feature is about reusing packages that were already deployed, and we do have already deployed versions of openzeppelin-eth and many other packages to mainnet, ropsten, rinkeby and kovan. However, on this guide we are not using any of those networks, instead we started a local development network with Truffle that is empty. So, --deploy-dependencies tells ZeppelinOS to deploy to the network the EVM packages we depend on. This has to be done only once, so if you are using one of the real networks mentioned above, or you are running the command again on the local network, this flag won’t be needed.

It would be awesome if you could share what you are working on.

Running Quorum-maker on some VM’s I spun up. Currently deploying via truffle and was wondering if I could swap zOS into the build/deploy workflow and how the proxy pattern would handle private contracts


Great thanks! Running a messaging app on top of a quorum-maker blockchain network across a few distributed vm’s. Using Quorum’s private contracts and transactions to protect messages if desired. Wanted to use zOS as a way to upgrade private contracts going forward


update on what I found: contracts deploy to the network but can’t seem to access the contract instance in the truffle console. the myContract = await MyContract.at(’’) hangs where as with ethereum it passes through no issue @ianbrtt @abcoathup


Thanks for keeping us updated @aparm23

Was this a private upgradeable contract or a public upgradeable contract?
Have you tried deploying and interacting the same contract as a standard public contract (not a ZeppelinOS upgradeable contract). (Apologies if I haven’t got the terminology right).

What version of ZeppelinOS and Truffle are you using?
(Regards Truffle, was thinking of this issue: Upgrade truffle 5.0.13+ to 5.0.20)

Was a truffle version issue, thanks for the suggestion! Got the template contracts to work, currently troubleshooting my own contracts. “Contract code could not be deployed, please check the gas limit”. I don’t think it’s actually a gas issue as i’ve deployed without zOS on quorum with these @abcoathup


Glad you are making progress on this, I still haven’t tried it, but if it works for you, in a near future I would love to know how you did it :slight_smile:

1 Like

Hi @aparm23 it might be worth creating a new topic for the deployment issue (if you haven’t already resolved).

Ideally with a sample contract and the versions of truffle, node, zos you are using.

A good way to track down the problem is to deploy a non-upgradeable version of the contract, to determine if it is a general issue or if it is specific to ZeppelinOS.

Hey guys - finally got to the bottom of this. Basically, I had to downgrade truffle to 5.0.4 in order to get the contracts to deploy without the gas error (5.0.20 failed with quorum and ethereum). Once I did that, I had to upgrade truffle to 5.0.12 in order to interact with my contracts (5.0.4 hangs with quorum). I then got to the conclusion that zOS abstracts the migrations file where you can specify privacy, so unable to specify a private contract. I also tried conducting a private transaction through a .js file and it gives this error, since it’s not expecting the “privateFor” argument