Factory API
deploy
_mainModule
.
No initialize code is executed.
Parameters:
Name | Type | Description |
---|---|---|
_mainModule | address | Initial implementation for the new proxy contract, expected to point to a valid Sequence wallet implementation with support for counter-factual initialization. |
_salt | bytes32 | Arbitrary value to be used as create2 salt. Sequence’s mainModule uses the salt to obtain a hash with the initial configuration for the wallet (See ImageHash). |
Return Values:
Name | Type | Description |
---|---|---|
_contract | address | Address of the created proxy contract. |
Unsanitized input
The Factory contract does not check if the provided
The Factory contract does not check if the provided
_mainModule
is a valid Sequence wallet implementation, or if _salt
is a valid Sequence configuration.Using invalid parameters will result on a proxy contract that may not be usable, and could result in loss of funds.Counter factual addresses
Sequence wallets are counter-factual by design, this means that the wallet’s address can be known before the wallet is deployed; any two combinations of themainModule
and salt
values will result in the same wallet address.
This property alongside the use of NanoUniversalDeployer or UniversalDeployer is the reason why Sequence wallets can obtain the same address on multiple chains.
Gas-free wallet creation
Sequence wallets are 100% counterfactual, meaning that funds can be safely transferred to the wallet’s address without the need for calling the
Sequence wallets are 100% counterfactual, meaning that funds can be safely transferred to the wallet’s address without the need for calling the
deploy
function. Deploying the wallet is only
required before the first transaction is sent from the wallet.