mcpField
Z
zerion-sign

zerion-sign

github.com/zeriontechセキュリティ6842 回インストール3 週間前に更新
リポジトリ

zerion-sign について

zerion CLI でメッセージや EIP-712 の型付きデータにオフチェーン署名を行うスキルです。トランザクションをブロードキャストせず、SIWE、permit、注文などの署名に対応します。

主な機能

  1. 01EVM または Solana 方式でメッセージ署名
  2. 02EVM の EIP-712 型付きデータに署名
  3. 03コマンド、ファイル、標準入力からデータを指定
  4. 04署名データを JSON で出力
  5. 05署名には agent token が必要

活用シーン

  1. 01SIWE ログインメッセージへの署名
  2. 02permit 承認や署名付き注文の作成
  3. 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 など)を与える可能性があります。署名する前に、次の点を確認してください。

  1. ドメイン(チェーン ID、コントラクトアドレス、名前、バージョン)が、利用しようとしている dapp のものと一致することを確認します。
  2. primaryType が、想定したアクション(Permit、OrderComponents など)と一致することを確認します。
  3. permit 形式のペイロードでは、spender、value、deadline を明示的に確認します。

CLI は意味的なチェックを行いません。渡された内容にそのまま署名します。必要に応じて、ポリシー(zerion-agent-management)を適用し、署名を許可するコントラクトを制限してください。

よくあるエラー

コード原因対処方法
no_agent_tokenエージェントトークンがありませんzerion-agent-management スキル
invalid_typed_datadomain/types/primaryType/message がありませんJSON の形式を検証する
unsupported_chain--chain が無効ですzerion chains
wallet_not_foundウォレットがボールトにありませんzerion wallet list

コメント