-
Notifications
You must be signed in to change notification settings - Fork 3
Description
The first stage of implementation of updatable governance was to implement it under the hood in a way that is invisible to the user. This was done in input-output-hk/trustless-sidechain#832.
In order to have this feature fully functional we need to implement a proper user interface for it. In the current implementation, when a command is invoked via a CLI we have transactions constructed, balanced, signed and submitted in one go. With multi-sig governance this will have to change for transactions that require governance approval. Since multiple signatures are now required on certain transactions, we can no longer sign and submit the immediately. Instead, we should print such transactions in serialized form as a response from our endpoints. The user is then responsible for distributing this serialized transaction to governance members. Governance members are then expected to sign the transactions and send the signatures back to the creator of the transaction. Once sufficient number of signatures has been received, they need to be accumulated into one transaction, which must then be submitted.
We need to explore how to perform distributed signing of transactions and then accumulate signatures. This should be possible with cardano-cli transaction witness and cardano-cli transaction sign commands.See input-output-hk/trustless-sidechain#840 for a prototype.
Important points:
- It should be possible to store multi-signature governance options in the configuration file. However, this needs to be entirely optional so that users who don't use governance-related actions are not required to specify governance details.
- Order of governance members in
MultiSigGovParamsmatters. This is very fragile, in particular when governance are being passed on the command line. It probably makes sense to sort the governance keys in alphabetic order when constructing theEnvenvironment. This should stabilize the user interface. - When a transaction that requires governance signature is to be constructed, we need to know up front which governance members are going to sign it. This is required so that we can generated
mustBeSignedByconstraints only for selected governance members, not for all of them. Note that the current implementation requires signatures from all governance members, so is technically m-of-m, not n-of-m.
IOG Jira: https://input-output.atlassian.net/browse/ETCM-7875