Multisignature (multisig) wallets are smart contracts that allow multiple signers to review and agree on an action on the blockchain before the action is executed. For example, a multisig wallet could be used to control ETH, or a smart contract, requiring signatures from at least M of N total signers to execute the action. More generally, it is a type of decentralized governance.
On-chain multisig wallets are made possible by the fact that smart contracts can call other smart contracts. To execute a multisig transaction, one would:
Steps 2 and 5 are extremely complex and not widely supported. MultiBaas makes this far easier by automatically recognizing when a transaction is a multisig transaction, and seamlessly wrapping the unsigned transaction in the appropriate multisig transaction (submitTransaction(), approveTransaction(), etc.).
The following example request, a call to mint(), illustrates the concept of wrapped transactions.
Note that in the request, the “from” and “signer” fields are different. The “from” field relates to the unsigned transaction, to eventually be executed, and should be the address of the multisig wallet, whereas the signer field should be the submitter.
In the response, the “data” field includes the wrapped transaction. The key parts of the “data” field can be dissected as follows:
The go-ethereum transaction ABI encoder library used within MultiBaas may add additional parameters as required.
The built-in Multisig wallet functionality can also be accessed via Multisig from the main menu.
To deploy a new Multisig wallet:
Note: Both the owners and number of confirmations can be changed after deploying the wallet, but the changes must be approved according to the existing combination of owners and required confirmations.
To link a Multisig wallet that already exists on the blockchain for use within MultiBaas:
Deployed or linked Multisig wallets are available from the Signer Selector for signing transactions throughout the application.
From the Multisig wallet page you can confirm or revoke pending transactions submitted by one of the owners. The transactions table shows the transaction id, the status, and the details of the transaction.
Select the address you wish to interact with using the Signer Selector.
When the required number of owners have all confirmed the transaction, the status column will show Executed and the transaction cannot be withdrawn.
MultiBaas comes with a number of sample smart contracts pre-installed. They may be linked to deployed contracts on the blockchain or just...
MultiBaas provides users with the ability to, on a per-method per-input/output parameter basis, adjust how the value is interpreted on its..