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

Paliは次のバリデーター方式に対応しています。
- **パスキー:**ブラウザーまたはオペレーティングシステムがWebAuthn承認を要求します。
- **ECDSA:**設定済みのEVM所有者アドレスがアカウントの操作を承認します。
- **SLH-DSA:**Paliのローカル耐量子署名器が、暗号化された署名器の状態を使って操作を承認します。バックアップと署名カウンターの制約については、耐量子署名器をご覧ください。
- **複合:**パスキーやECDSAなどの子バリデーターを、閾値に基づいて組み合わせます。
バリデーターは「このアカウントの操作を誰が承認できるか」への答えと考えられます。便利なのは、アカウントを変えずにその答えを変更できることです。
- 1つの承認(1-of-N):設定された子バリデーターのうち1つが承認する必要があります。
- 閾値分の承認(t-of-N):設定された数以上の子バリデーターが承認する必要があります。
- すべての承認(N-of-N):設定されたすべての子バリデーターが承認する必要があります。
Paliは、ローカルで利用できる組み込みの子バリデーターの承認を、ポリシーに設定された順序で閾値に達するまで収集します。承認を拒否すると、そのリクエストは停止します。拒否後にPaliが別の署名器へ無断で切り替えることはありません。ポリシーには、閾値を満たすために必要な数の、ローカルで署名できる組み込みの子バリデーターを残す必要があります。互換性のあるカスタムバリデーターを任意の子として含めることはできますが、Paliはそのための外部・カスタム署名やデバイス間の承認を収集しません。このバージョンは、入れ子になった複合ポリシーには対応していません。
複合ポリシービルダーには、少なくとも2つのインストール済みバリデーターが必要です。案内付きの承認方式変更フローは、以前のバリデーターを置き換えます。現在の高度なカスタムバリデータフローでは、互換性のあるバリデーターを追加で残せますが、正しいモジュール初期化データが必要です。これは、デバイス間承認を簡単に設定するためのフローではありません。
バリデーターを変更しても、スマートアカウントのアドレス、残高、履歴は変わりません。ローカル署名器へのアクセスには、引き続き鍵またはパスキーが利用できる必要があります。ポリシーを変更しても、失われた署名器の状態は復元されず、復元した複数のデバイス間でSLH-DSAの使用履歴が共有・調整されることもありません。
ガーディアンは日常の承認方法とは別の、遅延付きの権限です。必要数のガーディアン承認によってアカウントの制御が変わり得るため、慎重に選び保護してください。待機時間があっても、信頼できないガーディアンが安全になるわけではありません。
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のガーディアン画面では、ローカルの鍵ベースのガーディアン(ウォレット、インポート、ハードウェアアカウント)と、Paliが署名できるローカルのスマートアカウントガーディアンから承認を収集できます。SLH-DSAスマートアカウントも含まれます。スマートアカウントのガーディアンが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:パスキーによる承認。
ガーディアン復旧の手順
ウォレットのローカル記録の復元と、アカウントの制御権の変更は別の操作です。シードを復元しても、インストール済みのバリデーターを迂回できません。ガーディアン復旧は、待機時間後に同じスマートアカウントの承認方法を変更します。
- 設定: 現在の承認方法をまだ使える間に、復旧設定を開きます。アカウントが未デプロイなら先に登録します。別に管理するガーディアンと待機時間を選び、オンチェーン設定を承認します。ガス支払元に必要な残高を用意してください。
- 開始: アクセスを失った場合、自分が制御できる新しい承認方法を選び、その制御を証明します。設定済みガーディアンが正確な復旧内容に署名します。送信にはガスが必要ですが、この時点では制御権は変わりません。
- 待機と完了: 復旧が正常に完了するまで、以前の承認方法は有効です。待機時間後、同じアカウントとネットワークに戻ります。待機時間後は、ガーディアンがすでに承認した正確な復旧を、有効期限前であれば誰でも完了させるために送信できます。その後は新しい方法が同じアカウントを制御し、アドレス、資金、履歴は維持されます。
完了後、置き換えられた承認方法はそのアカウントを承認できません。以前の鍵やパスキーは、他のアカウントやネットワークで不要になったことを確認するまで削除しないでください。完了前に期限切れになった場合は、新しい復旧を開始する必要があります。
新しいPaliポリシーの待機時間は3日または7日です。10分は既知のテストネット専用です。これはPaliの設定選択肢であり、コントラクト全体で強制される最小値ではありません。既存のオンチェーン設定が優先されます。待機時間と、その後に完了できる期間は別です。
予期しない復旧を止める
現在の承認方法をまだ制御できる場合、復旧設定で Disable guardian recovery(ガーディアン復旧を無効化)を選びます。アカウントとネットワークを確認し、承認してガスを支払います。削除が確定すると、ウォレット外で開始されたものを含む保留中の復旧が無効になり、この復旧経路が削除されます。引き続き利用する場合は、信頼できるガーディアンを再設定してください。
不要な復旧の完了より前に、削除を確定させる必要があります。完了済みの復旧は取り消せません。結果が不明な場合は、まずオンチェーンの状態を確認します。エラー、タイムアウト、ウィンドウを閉じる操作は、送信済みの取引をキャンセルしません。確認せずに再送しないでください。
任意のメール通知
設定のリンクから Sysnode Account → Recovery alerts を開きます。確認済みメールを使用し、対応ネットワーク上のデプロイ済みスマートアカウントを接続して、現在の承認方法で登録メッセージに署名します。これは任意で、ガーディアン設定とは別です。Sysnodeに秘密鍵は渡らず、資金移動や復旧のキャンセルはできません。
Paliを閉じても監視は続きますが、サービス、RPC、メール配信に依存します。通知が遅れたり届かなかったりする場合があり、最近のチェーン観測が再編成される場合もあります。メールがないことは復旧がない証明にはなりません。通知は信頼するウォレットで、正確なアカウントとネットワークについて確認してください。