Multisig Ops
Multisig Ops are the basis for any change to the state of the Strike wallet. They are the core pattern for the operation of the wallet.
Here is a state diagram of a single multisig op:
Multisig Op State Diagram
Each Multisig op has a required init instruction and a required finalize instruction. Some ops additionally have supply instructions.
These instructions are used as follows:
Any wallet signer may initiate any of the ops listed below by sending a signed request to the wallet program.
If the op supports a supply instruction, then those must be sent to supply the program with additional data that is needed for that op. Currently the only op to use supply is DAppTransaction.
After initiation (and supply if needed), and before the expiration of the op, the approvers from the policy governing the op may send either a signed approval or denial.
When either a threshold of approvals or denials is achieved or a request times out, anyone may make the unsigned request to finalize the operation. Note that the finalize may fail if the underlying op fails (for example a transfer with insufficient balance). If a finalize fails it may be successively retried which will ultimately result in either a successful invocation of the op or expiration of the op.
Multisig ops have a mechanism for collecting and paying their transaction fees. This is described in more detail in Fees / Rent.
The table below contains the multisig ops supported by (or planned for) the Strike wallet. For details on the instructions see https://github.com/StrikeProtocols/strike-solana-wallet/blob/master/src/instruction.rs in the program code.
Name | Description |
---|---|
WalletConfigPolicyUpdate | Set wallet configuration policy. |
UpdateSigner | add or remove a signer |
AddressBookUpdate | add or remove addresses and optionally add/remove from transfer whitelists |
DAppBookUpdate | add or remove dApp entries |
| |
BalanceAccountCreation | create new balance since everything is a balance account, staking is just an attribute at creation |
BalanceAccountNameUpdate | change the name of a balance account |
BalanceAccountPolicyUpdate | set entire transfer policy for an account. Note that there are separate thresholds for regular transfers vs. dApp transfers. |
BalanceAccountAddressWhitelistUpdate | set the transfer whitelist for a balance account. |
AccountSettingsUpdate | account name,
transfer whitelisting
dapps enabled
dapp whitelisting
staking validator
|
Transfer | transfer out of a balance account |
WrapUnwrap | wrap or unwrap SOL inside a balance account |
DelegateStake | delegate the undelegated amount in a staking account |
DeactivateStake | deactivate total balance in a staking account |
DAppTransaction | Execute a dApp transaction. |
SetCloseAuthority | Allows a user to pay the rent for their wallet and refunds the rent paid by Strike when the account was opened |
SignData | Allows for multisig approval of arbitrary data |
| |
| |
Last modified 9mo ago