Expand description

Multisig Solana wallet with Timelock capabilities.

This program can be used to allow a smart wallet to govern anything a regular [Pubkey] can govern. One can use the smart wallet as a BPF program upgrade authority, a mint authority, etc.

To use, one must first create a SmartWallet account, specifying two important parameters:

  1. Owners - the set of addresses that sign transactions for the smart wallet.
  2. Threshold - the number of signers required to execute a transaction.
  3. Minimum Delay - the minimum amount of time that must pass before a Transaction can be executed. If 0, this is ignored.

Once the SmartWallet account is created, one can create a Transaction account, specifying the parameters for a normal Solana instruction.

To sign, owners should invoke the smart_wallet::approve instruction, and finally, smart_wallet::execute_transaction, once enough (i.e. SmartWallet::threshold) of the owners have signed.

Modules

An Anchor generated module, providing a set of structs mirroring the structs deriving Accounts, where each field is a Pubkey. This is useful for specifying accounts for a client.

Instruction handler for smart_wallet::approve.

An Anchor generated module containing the program’s set of instructions, where each method handler in the #[program] mod is associated with a struct defining the input arguments to the method. These should be used directly, when one wants to serialize Anchor instruction data, for example, when speciying instructions on a client.

Module representing the program.

Goki smart wallet program.

Instruction handler for smart_wallet::unapprove.

Structs

A SmartWallet is a multisig wallet with Timelock capabilities.

Mapping of a Subaccount to its SmartWallet.

Account metadata used to define TXInstructions

Instruction.

A Transaction is a series of instructions that may be executed by a SmartWallet.

Emitted when a Transaction is approved.

Emitted when a Transaction is proposed.

Emitted when a Transaction is executed.

Emitted when a Transaction is unapproved.

Emitted when the threshold of a SmartWallet is changed.

Emitted when a SmartWallet is created.

Emitted when the owners of a SmartWallet are changed.

Enums

Program errors.

Type of Subaccount.

Constants

Default number of seconds until a transaction expires.

Maximum timelock delay.

Constant declaring that there is no ETA of the transaction.

Number of seconds in a day.

Statics

The static program ID

Functions

Confirms that a given pubkey is equivalent to the program ID

The Anchor codegen exposes a programming model where a user defines a set of methods inside of a #[program] module in a way similar to writing RPC request handlers. The macro then generates a bunch of code wrapping these user defined methods into something that can be executed on Solana.

Instruction handler for smart_wallet::approve.

Instruction handler for smart_wallet::unapprove.

Returns the program ID