Skip to Content
ReferenceCLIコマンドcall

call コマンド

callコマンドは、任意のスマートコントラクト関数を呼び出す汎用コマンドです。ERC-20 transfer、NFT mint、DeFi プロトコル操作など、send で対応できないあらゆるコントラクト操作に使用できます。

重要: dry-run デフォルト

--broadcast を指定しない場合、callシミュレーションeth_call + estimateGas)のみ実行し、トランザクションを送信しません。実際に送信するには --broadcast を明示してください。

構文

kova call --name <wallet> --to <contract> --chain <chain> [--function <sig> | --data <hex>] [options]

オプション

オプション必須/任意説明デフォルト
--name <name>必須ウォレット名または ID-
--to <address>必須呼び出し先コントラクトアドレス-
--chain <chain>必須チェーン名(例: base, polygon-amoy-
--function <sig>条件付き関数シグネチャ(例: "transfer(address,uint256)")。--data と排他-
--args <json>任意関数引数の JSON 配列(例: '["0x...", "100"]'[]
--data <hex>条件付き生 calldata(0x プレフィックス)。--function と排他-
--value <eth>任意送信するネイティブトークン量(ETH 単位parseEther 通過)0
--broadcast任意実際にトランザクションを送信false
--gasless任意ERC-7702 経由のガスレス実行(delegation 必須)false
--owner任意ローカル passphrase で署名false

注意(単位の違い): call --valueETH 単位(小数 OK)です。sign transaction --valuewei 単位 とは異なります。

制約事項

  • --function--data--value のいずれか 1 つ以上が必須(builder check
  • --function--data は同時指定不可

使用例

1. ERC-20 transfer(dry-run)

kova call \ --name my-wallet \ --to 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \ --function "transfer(address,uint256)" \ --args '["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "1000000"]' \ --chain base

出力例:

{ "ok": true, "data": { "dryRun": true, "from": "0xB8EC761bf83B4374877e903d217222F2cd5512De", "to": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "calldata": "0xa9059cbb000000000000000000000000742d35cc6634c0532925a3b844bc9e7595f0beb00000000000000000000000000000000000000000000000000000000000f4240", "value": "0", "chain": "base" } }

2. ERC-20 transfer(broadcast)

kova call \ --name my-wallet \ --to 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \ --function "transfer(address,uint256)" \ --args '["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "1000000"]' \ --chain base \ --broadcast

出力例:

{ "ok": true, "data": { "dryRun": false, "txHash": "0x1234567890abcdef...", "from": "0xB8EC761bf83B4374877e903d217222F2cd5512De", "to": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "gasSponsored": false, "explorerUrl": "https://basescan.org/tx/0x1234567890abcdef..." } }

3. NFT mint(value 付き)

kova call \ --name my-wallet \ --to 0x1234567890abcdef1234567890abcdef12345678 \ --function "mint(uint256)" \ --args '["1"]' \ --value "0.08" \ --chain ethereum \ --broadcast

--value "0.08" で 0.08 ETH をコントラクトに同時送信します(ETH 単位)。

4. 生 calldata で呼び出し

kova call \ --name my-wallet \ --to 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \ --data "0xa9059cbb000000000000000000000000742d35cc6634c0532925a3b844bc9e7595f0beb00000000000000000000000000000000000000000000000000000000000f4240" \ --chain base \ --broadcast

--function の代わりに --data で事前エンコード済み calldata を渡します。

5. ネイティブトークンのみ送信(calldata なし)

kova call \ --name my-wallet \ --to 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb \ --value "0.1" \ --chain base \ --broadcast

--function--data も指定しない場合、calldata は 0x で純粋な value transfer になります。

6. ERC-7702 gasless 呼び出し

# 事前に delegation 設定が必要 kova delegate --name my-wallet --chain polygon-amoy --broadcast # gasless 呼び出し kova call \ --name my-wallet \ --to 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \ --function "transfer(address,uint256)" \ --args '["0x...", "1000000"]' \ --chain polygon-amoy \ --gasless \ --broadcast

--gasless を使うと OWS server がガス代を代理で支払います。allowlist にあるコントラクトのみ実行可能で、対象外の場合は CONTRACT_NOT_ALLOWED で失敗します。

関数シグネチャの書き方

transfer(address,uint256) function transfer(address,uint256) # function プレフィックス付きでも OK

主要な型:

Solidity 型
addresstransfer(address,uint256)
uint256approve(address,uint256)
boolsetApprovalForAll(address,bool)
stringsetName(string)
bytes32submitHash(bytes32)
address[]batchTransfer(address[],uint256[])

引数のアドレスは getAddress で自動的にチェックサム形式に正規化されます。

ポリシー評価(spending_limit)

call は実行前に署名前 enforce を呼び出します。spending_limit ポリシーが設定されている場合は fail-closed で動作します。--function / --data で渡された calldata が ERC-20 transfer(address,uint256) または transferFrom(address,address,uint256) の場合は decode して amount を policy に渡します。それ以外の calldata は decode できないため評価対象外(ポリシー設定があれば拒否される)です。

--broadcast 成功時の累積記録:

  • --value > 0 のネイティブトークン送金分は記録されます。
  • ERC-20 transfer / transferFrom の amount も calldata から decode して記録されます。
  • それ以外の任意 calldata は decode できないため累積記録の対象外です。

よくあるエラーと対処法

CHAIN_NOT_SUPPORTED

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

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

WALLET_NOT_FOUND

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

対処法: kova wallet info でウォレット名を確認。

CALLDATA_INVALID

エラーケース 1: --args の JSON が不正

{ "ok": false, "error": { "code": "CALLDATA_INVALID", "message": "Failed to parse --args as JSON: ..." } }

対処法:

# WRONG(クォート不足で shell が解釈してしまう) --args ["0xTO", "100"] # CORRECT --args '["0xTO", "100"]'

エラーケース 2: 関数シグネチャと引数の不一致

{ "ok": false, "error": { "code": "CALLDATA_INVALID", "message": "Failed to encode function data: ..." } }

対処法:

  • 関数シグネチャの型と引数数を確認
  • 配列型は JSON 配列で [[...], [...]] のように渡す

CONTRACT_NOT_ALLOWED

{ "ok": false, "error": { "code": "CONTRACT_NOT_ALLOWED", "message": "Contract 0x... is not allowed for gasless calls on base.\n..." } }

対処法: --gasless allowlist にないコントラクトを指定したケース。--gasless を外して通常実行するか、allowlist 対象のコントラクトを使用してください。pure value transfer(calldata なし)は allowlist 対象外でも実行可能です。

POLICY_DENIED

spending_limit 等のポリシーで拒否された場合に発生します。kova policy list で内容を確認し、必要なら kova policy update で調整してください。

Either —function, —data, or —value must be specified

# WRONG(オプションが空) kova call --name my-wallet --to 0x... --chain base # CORRECT(最低 1 つ指定) kova call --name my-wallet --to 0x... --chain base --value "0.01"

注意点

1. value の単位

--valueETH 単位parseEther 通過)です。sign transaction --value の wei 単位と異なるので混同しないでください。

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

2. dry-run で必ず確認

approvesetApprovalForAll は資産盗難リスクがあります。dry-run で calldata / to を必ず確認してから broadcast してください。

3. アドレスのチェックサム

--args の引数アドレスは小文字でも大文字でも、Kova が getAddress で自動的にチェックサム形式に変換します。

4. spending_limit の累積記録範囲

--broadcast 成功時、次の amount が累積上限に記録されます:

  • --value > 0 のネイティブトークン送金量
  • ERC-20 transfer(address,uint256) / transferFrom(address,address,uint256) の amount(calldata から decode)

decode 対象外の calldata(その他の関数呼び出し、proxy 経由など)は累積記録に載りません。事前 enforce は fail-closed なので、policy が設定されているのに amount を評価できない calldata は拒否されます。

5. Owner-only ではなく policy-gated

call は policy-gated 操作です。agent モードでは OWS server policy で gate され、terminal モードでは passphrase で local 署名します。

関連コマンド

  • send — トークン送金特化版(call の薄いラッパ)
  • delegate--gasless の前提となる ERC-7702 delegation 管理
  • sign — トランザクション署名のみ(送信はしない)
  • policycall を gate する policy の管理

関連項目

Last updated on