Implementation
In the following sections, we detail how to implement your own smart account type as well as your own intents and actions using our macros.
Smart accounts can power virtually any kind of application. We have implemented Multisig and DAO versions, but the possibilities are endless! Consider AI agents, shops, gaming accounts—account.tech provides predefined building primitives that you can leverage in your own Move packages.
In addition to making our new Account standard modular (use the Config you want), we have also made it easily extensible (add any functionality). We demonstrate how this is accomplished in the following sections.
If you want to use or fork one of the existing implementations, you can find them in our move-registry.

Intent Flow
User must authenticate by getting an
Authinstance in the account config module.Then an empty
Outcomecan be initialized for the intent.A new
Paramsstruct must be instantiated with the common intent arguments.An intent can then be created via
request_intentname()functions within intent modules.The intent must be resolved by validating the
Outcomeas defined in the account config module. (e.g. approving the intent to reach a threshold for a multisig)Once the conditions are met, the intent is executed by calling the
execute_intent()function defined in the config module. AnExecutablehot potato ensuring proper execution is returned.Actions are executed sequentially by passing the
Executablehot potato toexecute_intentname().The
Executablehot potato must be destroyed viaaccount::confirm_execution().Optionally, if there is no "execution_times" left, the intent can be removed with
account::destroy_empty_intent()that returns anExpiredhot potato.This hot potato must be passed to all the delete functions of the matching actions in order to empty the action bag.
Finally,
intents::destroy_empty_expired()can be called.
Last updated