Sequence ウォレットは Factory コントラクトを使って作成されます。呼び出すと、子 MinimalUpgradeableProxy コントラクトが作成され、これがすべての Sequence ウォレットの「ブート」コードとなります。

Factory API

deploy

  function deploy(

    address _mainModule,

    bytes32 _salt

  ) public payable returns (address _contract)

CREATE2 を使って子 MinimalUpgradeableProxy を作成します。プロキシは最初に指定された _mainModule を指します。 初期化コードは実行されません。

パラメータ:

名前説明
_mainModuleaddress新しいプロキシコントラクトの初期実装。カウンターファクチュアル初期化に対応した有効な Sequence ウォレット実装を指すことが期待されます。
_saltbytes32create2 の salt として使われる任意の値。Sequence の mainModule はこの salt を使ってウォレットの初期設定からハッシュを取得します(ImageHash を参照)。

戻り値:

名前説明
_contractaddress作成されたプロキシコントラクトのアドレス。

未検証の入力
Factory コントラクトは、指定された _mainModule が有効な Sequence ウォレット実装か、また _salt が有効な Sequence 設定かを確認しません

無効なパラメータを使うと、プロキシコントラクトが利用できない場合があり、資金損失につながる可能性があります。

カウンターファクチュアルアドレス

mainModulesaltの値の組み合わせが同じであれば、同じウォレットアドレスになります。

この特性とNanoUniversalDeployerUniversalDeployerの利用により、Sequenceウォレットは複数のチェーンで同じアドレスを取得できます。

ガス不要のウォレット作成
Sequence ウォレットは100%カウンターファクチュアルです。\r\nしたがって、deploy関数を呼び出すことなく、安全に資金をウォレットアドレスに送付できます。ウォレットのデプロイは、ウォレットから最初のトランザクションを送信する前にのみ必要です。