スマートアカウントとバリデーター
Paliスマートアカウントは、モジュールで制御できるEVMコントラクトアカウントです。パスキーはスマートアカウントを制御するための対応方式の1つです。通常のEOA秘密鍵で毎回署名する代わりに、ブラウザーやオペレーティングシステムのパスキー画面で操作を承認できます。
WebAuthnパスキーは内部でP-256署名を使用します。Paliのパスキーバリデーターは、スマートアカウントがそのP-256証明を検証できるように設計されています。そのため、パスキーの秘密鍵をPaliやdappに公開することなく、生体認証やプラットフォームのパスキー承認でオンチェーン操作を許可できます。
スマートアカウントを使う理由
- 日常利用に適したモジュール式の承認方法。
- 通常のウォレット鍵でアカウントを所有したい場合の、ウォレット管理のECDSA制御。
- 複合バリデーターによる共同管理ポリシー。
- 1回のユーザー承認による一括実行。
- タイムロック後のガーディアン復旧。
- Paliがアカウント記録を再構築できる決定的なアカウント作成。
パスキー、ECDSA、共同管理アカウント

Paliは3種類のバリデーターに対応しています。
- **パスキー:**ブラウザーまたはオペレーティングシステムがWebAuthn承認を要求します。
- **ECDSA:**設定済みのEVM所有者アドレスがアカウントの操作を承認します。
- **複合:**パスキーやECDSAなどの子バリデーターを、閾値に基づいて組み合わせます。
バリデーターは「このアカウントの操作を誰が承認できるか」への答えと考えられます。便利なのは、アカウントを変えずにその答えを変更できることです。
- 自分の認証手段のどれか1つ(1-of-N):手元にあるパスキーや鍵のいずれかで承認します。
- 複数人で共同承認(t-of-N):必要数の人やデバイスの同意が必要で、共有資金に適しています。
- 全員で共同承認(N-of-N):設定されたすべての認証手段の承認が必要で、特に機密性の高いアカウントに適しています。
ポリシーには別のポリシーも含められるため、チームは「責任者の鍵と、デスクのパスキーのうち任意の2つ」といった条件を表現できます。ポリシーを変更しても、アドレス、残高、履歴はそのまま維持されます。また、署名がモジュール式なので、将来の署名方式(耐量子方式を含む)も同じアカウントに導入できます。
ガーディアンは意図的にこの一覧に含めていません。ガーディアンはトランザクションを承認できず、アクセスを失った場合に、時間をかけた可視的な復旧を開始する権限だけを持ちます。この分離によって、日常の制御を他者に渡さずに、アクセス喪失への備えができます。
Paliは、ウォレットで共有するパスキープロファイルを使うことも、アカウント専用のパスキー認証情報を作成することもできます。共有パスキーは、ウォレットが管理する1つのパスキーを使いたいユーザーに便利です。個別のパスキーは、サービスやポリシーごとに認証情報を分離するのに役立ちます。
デプロイ
Paliが作成の準備をしている間、スマートアカウントはカウンターファクチュアルアドレスとして存在する場合があります。Paliは決定的なファクトリー入力からアドレスを導出し、Paliファクトリーを通じてデプロイして、永続的なアカウントメタデータをローカルに保存します。
決定的なデプロイのため、アカウントはウォレットが管理する初期バリデーターから開始します。ユーザーやdappがパスキーまたは別のバリデーターを選んだ場合、Paliはスマートアカウントの実行を通じて、そのバリデーターをインストールし、初期バリデーターを削除します。
対応ネットワーク
スマートアカウントには、アクティブなチェーンでPaliが使用するアドレスに、Paliファクトリーとモジュールコントラクトが存在する必要があります。このPaliビルドでは、zkTanenbaumテストネットでスマートアカウント作成が設定済みです。zkSYSの本番環境でも、本番用のファクトリーとモジュールのアドレスが設定されると、同じモデルを使用します。
他の互換EVMチェーンでも同じコントラクトを利用できます。アクティブなネットワークが正規のCREATE2デプロイに対応していれば、Paliは不足しているスマートアカウント基盤をウォレット内からデプロイできます。「設定」から「詳細設定」を開き、スマートアカウント設定のデプロイボタンを使用してください。パスキーバリデーターにはP-256 WebAuthnの検証機能が必要です。多くの新しいEVM環境では、P-256・パスキー用プリコンパイルを通じてその機能を提供しています。
保留中のセットアップ
セットアップが遅い場合は状態を確認操作が表示されます。画面を離れたりネットワークを切り替えたりしても、送信済みのトランザクションはキャンセルされません。再デプロイを試す前に、元のネットワークに戻ってセットアップ状態を確認してください。タイムアウトや応答の欠落は、何もデプロイされていないことを意味しません。
復旧

ローカルのウォレット状態を削除した場合や、新しいデバイスにPaliをインストールした場合、決定的なPaliスマートアカウントはウォレットのメタデータとチェーン設定から再構築できます。パスキーバリデーターを持つアカウントでは、操作の承認に対応するパスキー認証情報へのアクセスが引き続き必要です。
1つのパスキー認証情報で、複数のスマートアカウントを制御できます。Paliは、パスキー認証情報のプロファイルと、デプロイされた各アカウントのスマートアカウントメタデータを分けて管理します。
ガーディアン復旧
Paliは、スマートアカウントの復旧に自己管理型の復旧ガーディアンを使用します。ガーディアンは、有効なバリデーターとは別にユーザーが制御するEVMアドレスです。一般的には予備のEVMウォレット、インポートしたアカウント、ハードウェアウォレットですが、オンチェーンではコントラクトアカウントを含む署名を証明できる任意のアカウントをガーディアンにできます。通常どおりアカウントを利用できる間は、ポリシー画面からガーディアンの追加・削除や復旧待機期間の変更ができます。
復旧モジュールは標準の署名検証でガーディアンの承認を確認します。通常のアドレスにはECDSA署名を使い、ガーディアン自体がコントラクトの場合はERC-1271コントラクト署名検証を使います。つまり、複合ポリシー、カスタムバリデーター、将来の耐量子バリデーターで署名を管理する別のスマートアカウントも、ガーディアンにできます。復旧処理はガーディアンアカウントが要求する署名方式を引き継ぐため、復旧の安全性は従来のECDSA鍵だけに限定されません。
現時点の制約として、Paliのガーディアン画面が収集するのは、ウォレット、インポート、ハードウェアアカウントなど、鍵に基づくガーディアンの承認です。デプロイ済みの復旧モジュールはコントラクトアカウントのガーディアンに完全対応していますが、そのERC-1271承認の作成は、まだPaliの案内付き操作には含まれていません。また、署名検証に応答するには、コントラクトガーディアンがすでにオンチェーンにデプロイされている必要があります。この柔軟性は現在のアカウントモデルに備わっているため、今後ウォレットがこれらのガーディアン方式に対応しても、アカウントの再デプロイや変更は不要です。
ガーディアン復旧は即時ではありません。復旧を開始すると、置き換え先の復旧対象を作成し、設定済みのガーディアンに復旧の意図への署名を求め、タイムロック付き復旧リクエストを送信します。待機期間後は誰でも復旧トランザクションを完了できます。その後、ユーザーは新しいバリデーターでアカウントを操作できます。
ガーディアン署名は、チェーン、アカウントアドレス、復旧モジュール、復旧用ソルト、実行モード、復旧のcalldataを結び付けます。Paliは復旧を試すたびに新しいソルトを使用し、モジュールはアカウントごとに有効な復旧を1件だけ許可します。
技術補足:ガーディアン復旧エグゼキューターは、アカウントごとのガーディアン集合、閾値、遅延、期限、保留中の復旧を保存します。Paliは分かりやすさのために簡潔なガーディアン操作を提供していますが、モジュールは1-of-NやM-of-Nなどの閾値ポリシーに対応しています。
dappが作成するアカウント
dappはwallet_prepareSmartAccountでスマートアカウントを要求できます。
{
"label": "Trading desk",
"authenticator": {
"id": "p256-webauthn"
}
}
dappはECDSAバリデーターも要求できます。
{
"label": "Trading desk",
"authenticator": {
"id": "ecdsa",
"config": {
"owners": ["0x..."],
"threshold": 1
}
}
}
要求されたECDSA所有者がローカルのPaliアカウントでない場合、Paliは警告を表示し、明示的な確認を得てから続行します。
標準の参照資料
Paliスマートアカウントは、公開されている次の標準を基に構築されています。
- ERC-4337アカウント抽象化:UserOperation形式のアカウント実行。
- ERC-7579モジュール式スマートアカウント:バリデーターとエグゼキューターモジュール。
- ERC-1271コントラクト署名検証:コントラクトアカウントからの署名。
- WebAuthn Level 3:パスキーによる承認。