zerion-sign について
zerion CLI でメッセージや EIP-712 の型付きデータにオフチェーン署名を行うスキルです。トランザクションをブロードキャストせず、SIWE、permit、注文などの署名に対応します。
主な機能
- 01EVM または Solana 方式でメッセージ署名
- 02EVM の EIP-712 型付きデータに署名
- 03コマンド、ファイル、標準入力からデータを指定
- 04署名データを JSON で出力
- 05署名には agent token が必要
活用シーン
- 01SIWE ログインメッセージへの署名
- 02permit 承認や署名付き注文の作成
- 03JSON やファイルで渡された型付きデータへの署名
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ zeriontech/ zerion-ai --skill zerion-signインストール後、Claude Code で/zerion-signを入力して読み込まれたか確認します。
詳細
Zerion — オフチェーン署名
トランザクションをブロードキャストせずに署名を作成します。ログインフロー、許可、署名付き注文に使用します。出力されるのは署名です。これを検証する側(dapp、リレイヤー、取引所など)に渡します。
セットアップ
zerion コマンドが command not found で失敗する場合は、一度だけインストールしてください。
npm install -g zerion-cli
Node.js ≥ 20 が必要です。認証については zerion のアンブレラスキルを参照してください。署名にはエージェントトークン(ウォレットのパスフレーズとして使用)が必要です。セットアップについては → zerion-agent-management を参照してください。
使用する場面
- SIWE(「Sign-In with Ethereum」)ログインフロー
- EIP-2612
permit— ガス代不要の ERC-20 承認 - Permit2 承認
- Seaport / OpenSea のオフチェーン注文
- dapp から「このメッセージに署名してください」または「この型付きデータに署名してください」と求められた場合
- アイデンティティ証明、DAO の Snapshot 投票
オンチェーントランザクション(スワップ/ブリッジ/送信)については → zerion-trading を参照してください。
メッセージに署名する
# EIP-191 personal_sign (EVM)
zerion sign-message "hello" --chain ethereum
zerion sign-message "hello" --chain base --wallet <name>
zerion sign-message "gmonad" --chain monad
# Raw hex bytes (no prefix, used by some wallets)
zerion sign-message 0xdeadbeef --encoding hex --chain ethereum
# Raw ed25519 (Solana)
zerion sign-message "hello" --chain solana
# Explicit flags
zerion sign-message --message "text" --wallet <name> --chain <chain>
<chain> によって署名方式が決まります。EVM チェーンでは EIP-191 personal_sign を使用し、Solana では raw ed25519 を使用します。
型付きデータに署名する(EIP-712、EVM のみ)
EIP-712 の型付きデータには、{ domain, types, primaryType, message } を含む JSON オブジェクトが必要です。検証側が要求する場合は、types に EIP712Domain を含めてください。
# Inline JSON
zerion sign-typed-data --data '{"domain":{...},"types":{...},"primaryType":"Permit","message":{...}}' --chain base
# From file
zerion sign-typed-data --file permit.json --chain ethereum
# From stdin
cat permit.json | zerion sign-typed-data --chain ethereum
出力は、署名(EVM の場合は r、s、v)を含む JSON オブジェクトとして標準出力に表示されます。
セットアップのセーフティネット
エージェントトークンが設定されておらず、stderr が TTY の場合、CLI は次のように案内します。
Want to setup an agent token for "<wallet>"? [Y/n]
…その後、agent create-token をインラインで実行します。完了すると、元の sign-* コマンドは新しいトークンを使って続行します。TTY 以外のコンテキスト(CI、パイプ経由)では、コマンドは no_agent_token で即座に失敗します。あらかじめ agent create-token --passphrase-file <0600-path> でトークンを作成してください(zerion-agent-management を参照)。
セキュリティ
任意のメッセージや型付きデータに署名すると、無制限のトークン使用許可(悪意のある permit など)を与える可能性があります。署名する前に、次の点を確認してください。
- ドメイン(チェーン ID、コントラクトアドレス、名前、バージョン)が、利用しようとしている dapp のものと一致することを確認します。
- primaryType が、想定したアクション(
Permit、OrderComponentsなど)と一致することを確認します。 permit形式のペイロードでは、spender、value、deadline を明示的に確認します。
CLI は意味的なチェックを行いません。渡された内容にそのまま署名します。必要に応じて、ポリシー(zerion-agent-management)を適用し、署名を許可するコントラクトを制限してください。
よくあるエラー
| コード | 原因 | 対処方法 |
|---|---|---|
no_agent_token | エージェントトークンがありません | zerion-agent-management スキル |
invalid_typed_data | domain/types/primaryType/message がありません | JSON の形式を検証する |
unsupported_chain | --chain が無効です | zerion chains |
wallet_not_found | ウォレットがボールトにありません | zerion wallet list |