KintoWalletFactory

Deployment Address

Basics

  • Creates KintoWallet instances using a beacon proxy pattern.
  • Method to fund a KintoWallet account with ETH.
  • Ensures KYC compliance of wallet owners through integration with KintoID.
  • Supports deployment of custom contracts using CREATE2.

Constructor

Constructor Parameters:
Parameter
Type
Explanation
_implAddressP
IKintoWallet
Address of the KintoWallet implementation

Initialize

Initialize Function:
function initialize(IKintoID _kintoID) external initializer;
Parameter
Type
Explanation
_kintoID
IKintoID
KintoID contract instance for KYC verification.

State Functions

function upgradeAllWalletImplementations(IKintoWallet newImplementationWallet) external override onlyOwner;
function createAccount(address owner, address recoverer, bytes32 salt) external override returns (IKintoWallet ret);
function startWalletRecovery(address payable wallet) external override;
function completeWalletRecovery(address payable wallet, address[] calldata newSigners) external override;
function changeWalletRecoverer(address payable wallet, address _newRecoverer) external override;
function deployContract(address contractOwner, uint amount, bytes calldata bytecode, bytes32 salt) payable external override returns (address);
function fundWallet(address payable wallet) payable external override;
function claimFromFaucet(address _faucet, IFaucet.SignatureData calldata _signatureData) external override;
function sendMoneyToAccount(address target) external payable override;

1. upgradeAllWalletImplementations (Admin only)

Upgrades all wallet implementations to the specified new implementation.
function upgradeAllWalletImplementations(IKintoWallet newImplementationWallet) external override onlyOwner;
Parameter
Type
Explanation
newImplementationWallet
IKintoWallet
New wallet implementation address.

2. createAccount

Creates an account and returns its address, using bytes32 for salt.
function createAccount(address owner, address recoverer, bytes32 salt) external override returns (IKintoWallet ret);
Parameter
Type
Explanation
owner
address
The owner address.
recoverer
address
The recoverer address.
salt
bytes32
The salt to use for the calculation.

3. startWalletRecovery (Only callable by recoverer)

Initiates the wallet recovery process.
function startWalletRecovery(address payable wallet) external override;
Parameter
Type
Explanation
wallet
address
The wallet address

4. completeWalletRecovery (Only callable by recoverer)

Completes the wallet recovery process.
function completeWalletRecovery(address payable wallet, address[] calldata newSigners) external override;
Parameter
Type
Explanation
wallet
address
The wallet address
newSigners
address[]
New signers array

5. changeWalletRecoverer (Only callable by recoverer)

Changes the wallet's recoverer.
function changeWalletRecoverer(address payable wallet, address _newRecoverer) external override;
Parameter
Type
Explanation
wallet
address
The wallet address
_newRecoverer
address
New recoverer address

6. deployContract

Deploys a contract using CREATE2, with additional KYC verification for the sender.
function deployContract(address contractOwner, uint amount, bytes calldata bytecode, bytes32 salt) payable external override returns (address);
Parameter
Type
Explanation
contractOwner
address
The address to be set as the owner of the contract.
amount
uint
The amount of wei to send with the contract creation.
bytecode
bytes
The bytecode of the contract to deploy.
salt
bytes32
The salt to use for the calculation, ensuring the uniqueness of the address.

7. fundWallet

Funds a KintoWallet through the factory.
function fundWallet(address payable wallet) payable external override;
Parameter
Type
Explanation
wallet
address
The wallet address to fund.

8. claimFromFaucet

Claims from a faucet on behalf of a user.
function claimFromFaucet(address _faucet, IFaucet.SignatureData calldata _signatureData) external override;
Parameter
Type
Explanation
_faucet
address
The faucet address to claim from.
_signatureData
IFaucet.SignatureData
The signature data for the claim.

9. sendMoneyToAccount

Allows sending money to an account from privileged accounts or KYC accounts.
function sendMoneyToAccount(address target) external payable override;
Parameter
Type
Explanation
target
address
The target account address to send money to.

View Functions

1. getWalletTimestamp

Returns the creation timestamp of a wallet.
function getWalletTimestamp(address wallet) external view override returns (uint256);
Parameter
Type
Explanation
wallet
address
The wallet address to query.

2. getAddress

Calculates the counterfactual address of an account.
function getAddress(address owner, address recoverer, bytes32 salt) public view override returns (address);
Parameter
Type
Explanation
owner
address
The owner address of the account.
recoverer
address
The address that can recover the account.
salt
bytes32
The salt used for the address calculation.

3. getContractAddress

Calculates the counterfactual address of a contract to be deployed.
function getContractAddress(bytes32 salt, bytes32 byteCodeHash) external view override returns (address);
Parameter
Type
Explanation
salt
bytes32
The salt used by CREATE2.
byteCodeHash
bytes32
The hash of the bytecode of the contract to deploy.

Events

  • KintoWalletFactoryCreation: Emitted when a new wallet is created.
  • KintoWalletFactoryUpgraded: Emitted when the wallet implementation is upgraded.