Skip to Content
ReferenceCLIコマンドsign

sign コマンド

signコマンドは、メッセージ・トランザクション・EIP-712 typed data・任意 hash を署名するためのコマンドです。EIP-191 / 通常トランザクション / EIP-712 / raw hash の 4 種類に対応し、署名は常に 0x プレフィックス付きに正規化されます。

構文

kova sign <subcommand> --name <wallet> --chain <chain> [options]

サブコマンド一覧

サブコマンド説明
messageEIP-191 メッセージ署名
transactionトランザクション署名(--broadcast で送信も可能)
typed-dataEIP-712 typed data 署名
hash任意 32-byte hash の raw ECDSA 署名(EIP-191 prefix なし)

共通オプション

オプション必須/任意説明
--name <name>必須ウォレット名または ID
--chain <chain>必須チェーン名(例: base, polygon-amoy
--owner任意ローカル passphrase で署名(OWS API key を使わない、PassphraseSigner 経路)

--owner を指定せず、かつ credential が config に保存されている場合は ApiKeySigner 経路で署名します。


sign message

EIP-191 形式のメッセージ署名を生成します。

構文

kova sign message --name <wallet> --chain <chain> --message <text> [--owner]

オプション

オプション必須/任意説明
--message <text>必須署名対象のメッセージ

使用例

kova sign message \ --name my-wallet \ --chain base \ --message "Hello, kova"

出力例:

{ "ok": true, "data": { "signature": "0x1234567890abcdef...1c", "recoveryId": 28, "wallet": "my-wallet", "chain": "base" } }

sign transaction

トランザクションの署名(--broadcast 未指定)または署名 + ブロードキャスト(--broadcast 指定)を行います。デフォルトは 署名のみ で、ブロードキャストは行われません。

構文

kova sign transaction \ --name <wallet> \ --chain <chain> \ --to <address> \ [--value <wei>] \ [--data <hex>] \ [--broadcast] \ [--owner]

オプション

オプション必須/任意説明デフォルト
--to <address>必須送信先アドレス-
--value <wei>任意wei 単位の送金量(10進文字列)0
--data <hex>任意calldata(0x... 16進文字列)なし
--broadcast任意署名後にネットワークへ送信false

注意(単位の違い): sign transaction--valuewei 単位 です。call / send--value / --amount は ETH 単位(parseEther 経由)であり、単位が異なります。スクリプト化する際は混同しないでください。

使用例

署名のみ(dry-run 相当)

kova sign transaction \ --name my-wallet \ --chain base \ --to 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb \ --value 1000000000000000000

出力例:

{ "ok": true, "data": { "broadcast": false, "signature": "0xf86c8085...80", "wallet": "my-wallet", "chain": "base" } }

署名 + ブロードキャスト

kova sign transaction \ --name my-wallet \ --chain base \ --to 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb \ --value 1000000000000000000 \ --broadcast

出力例:

{ "ok": true, "data": { "broadcast": true, "txHash": "0xabcdef...", "explorerUrl": "https://basescan.org/tx/0xabcdef...", "wallet": "my-wallet", "chain": "base" } }

calldata 付きで署名

kova sign transaction \ --name my-wallet \ --chain base \ --to 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \ --data 0xa9059cbb000000000000000000000000742d35cc6634c0532925a3b844bc9e7595f0beb00000000000000000000000000000000000000000000000000000000000f4240 \ --broadcast

calldata と引数の組み立てには call コマンドの方が簡単です。


sign typed-data

EIP-712 形式の typed data を署名します。

構文

kova sign typed-data --name <wallet> --chain <chain> --data <json> [--owner]

オプション

オプション必須/任意説明
--data <json>必須EIP-712 typed data の JSON 文字列

使用例

kova sign typed-data \ --name my-wallet \ --chain base \ --data '{ "domain": { "name": "MyDApp", "version": "1", "chainId": 8453, "verifyingContract": "0x..." }, "types": { "Message": [ { "name": "from", "type": "address" }, { "name": "to", "type": "address" }, { "name": "amount", "type": "uint256" } ] }, "primaryType": "Message", "message": { "from": "0x...", "to": "0x...", "amount": "1000000" } }'

出力例:

{ "ok": true, "data": { "signature": "0xabcdef...1b", "recoveryId": 27, "wallet": "my-wallet", "chain": "base" } }

sign hash

任意の 32-byte hash に対して raw ECDSA 署名を生成します(EIP-191 prefix なし)。signMessage / signTypedData を経由しない署名で、ZeroDev / Kernel v0.3.3 等の smart account 経路や、独自プロトコルが事前計算した hash に署名する場合に利用します。

強権操作の注意: sign hash は EIP-191 prefix を付けないため、攻撃者が keccak256(rlp(tx)) を計算した hash を渡せば任意 tx を後追い再生できる可能性があります。agent モード(ApiKeySigner)では sign_allowlisthashes / hashPattern ルールが必要で、ルール無しでは default-deny で POLICY_DENIED になります。

構文

kova sign hash --name <wallet> --chain <chain> --hash <0xhex> [--owner]

オプション

オプション必須/任意説明
--hash <0xhex>必須0x プレフィックス + 64 hex 文字(32-byte)の hash

入力 validation:

  • 0x プレフィックス必須
  • 64 hex 文字(大文字小文字混在可)以外は INVALID_PARAMS

使用例

kova sign hash \ --name my-wallet \ --chain base \ --hash 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

出力例:

{ "ok": true, "data": { "signature": "0xabcdef...1c", "recoveryId": 1, "wallet": "my-wallet", "chain": "base", "hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" } }

sign_allowlist の例

agent モードで sign hash を許可するには、sign_allowlist ルールに hashes(完全一致)または hashPattern(正規表現)を含めます:

{ "type": "sign_allowlist", "hashes": ["0x1234..."] }

よくあるエラーと対処法

CHAIN_NOT_SUPPORTED

エラーメッセージ:

{ "ok": false, "error": { "code": "CHAIN_NOT_SUPPORTED", "message": "Chain unknown-chain is not supported" } }

対処法: サポートチェーン一覧 で正しいチェーン名を確認してください。

WALLET_NOT_FOUND

エラーメッセージ:

{ "ok": false, "error": { "code": "WALLET_NOT_FOUND", "message": "Wallet my-wallet not found" } }

対処法:

kova wallet info # → 正しいウォレット名で再実行

TX_FAILED

エラーメッセージ:

{ "ok": false, "error": { "code": "TX_FAILED", "message": "Transaction failed: <reason>" } }

対処法:

  • sign transaction --broadcast で署名済みトランザクションが reject された場合に発生
  • gas / nonce / chainId の整合性を確認
  • ネットワーク混雑時はしばらく待って再試行

POLICY_DENIED(agent モード)

agent モード(credential あり)で sign transaction / sign typed-data 等の policy-gated 操作を実行し、ポリシー評価で拒否された場合に発生します。kova policy list でポリシーを確認し、必要なら kova policy update で調整してください。

注意点

1. value の単位は wei

sign transaction --valuewei 単位です。call / send の値(ETH 単位)と混同しないでください。

# 1 ETH 送金(wei = 10^18) kova sign transaction --name my-wallet --chain base --to 0x... --value 1000000000000000000 --broadcast # 同じことを call で(ETH 単位) kova call --name my-wallet --chain base --to 0x... --value 1.0 --broadcast

2. 署名は正規化される

返却される signature は常に 0x プレフィックス付きです。recoveryId は EIP-191 / EIP-712 で 27 / 28、トランザクション署名には含まれません。

3. policy-gated 操作

sign message / sign transaction / sign typed-data / sign hash はすべて policy-gated 操作(OperationKind 分類)。agent モードでは OWS server 側のポリシーで gate されます。

sign hash は raw ECDSA で任意 hash に署名する強権操作のため、agent モードでは sign_allowlisthashes / hashPattern ルールが必須です(default-deny)。

4. 操作履歴の記録

すべての sign 操作(broadcast を伴わない sign message / sign typed-data / sign hash も含む)は ~/.kova/audit.jsonl に追記されます。エントリにはウォレット ID・チェーン ID・hash の要約のみが記録され、message 本文や typed-data payload は記録されません(誤って機密情報が残らないよう redact)。記録に失敗した場合は安全側に倒し、AUDIT_LOG_FAILED で操作自体も拒否します。

5. ApiKeySigner / PassphraseSigner の自動選択

credential あり → ApiKeySigner(OWS API key 経由)、credential なし or --ownerPassphraseSigner(ローカル passphrase)の経路選択が自動で行われます。

関連コマンド

  • send — トークン送金(内部で sign + broadcast を統合)
  • call — 任意のコントラクト呼び出し(calldata を組み立てる場合に便利)
  • delegate — ERC-7702 delegation の作成・取消
  • wallet — ウォレットの作成・管理

関連項目

Last updated on