Modification of the contract deployment mechanism to support production deploys
Issue Type
[ ] bug report
[X] feature request
Current Behaviour
When the contracts are deployed the private key address of the authority and maintainer accounts are required. https://github.com/omisego/plasma-contracts/blob/master/plasma_framework/truffle-config.js#L31-L32
Desired Behaviour
We're building a secure enclave that provides access to the authority address material but never exposes it. This means that we require the contract deployment mechanism to be changed to support these production deploys so that the private key material never leaves the secure enclave. The process would look like this:
- The contracts are deployed via Truffle
- The authority address is created inside the secure enclave
- The secure enclave provides access to
activateChildchain()and it is called, incrementing the nonce to 1. - The contracts are ready for
submitBlock()from the authority address only
Motivation for Change
This means the private key of the authority address is never viewed by a human.
Cc @thec00n
do we have example or document of how to use/call the Secure Enclave?
I would like to add here that this will be the same for maintainer in that the key material will not be available at deployment. The maintainer should be able to trigger all contract interactions as part of a separate deployment stage. Support for multi tx signing needs to be added as well.
@thec00n can you elaborate what you mean? I'm not exactly sure I understand what you mean.
Are you saying that you want to access all 'maintainer operations' through the vault? Are you saying that you want to create the 'maintainer' through the vault?
Can you describe the process and needed changes in full, this needs to be additional requirement for the immutability vault.