delegate コマンド
delegateコマンドは、ERC-7702 delegation を管理するコマンドです。EOA(Externally Owned Account)に一時的にコントラクトコードを委任することで、gasless transaction(ガス代不要の送金)や batch operation(複数操作の一括実行)が可能になります。
概要
ERC-7702 delegation を設定すると、kova send --gasless や kova call --gasless の経路で OWS server が代理でガス代を支払うトランザクションを送信できます。
構文
# delegation 設定(dry-run / broadcast)
kova delegate [delegate] --name <wallet> --chain <chain> [--broadcast] [--owner]
# delegation 状態確認
kova delegate status --name <wallet> --chain <chain>
# delegation 取消(dry-run / broadcast)
kova delegate revoke --name <wallet> --chain <chain> [--broadcast] [--owner]action を省略した場合は delegate(設定)として扱われます。
オプション
| オプション | 必須/任意 | 説明 | デフォルト |
|---|---|---|---|
[action] | 任意 | delegate / status / revoke のいずれか | delegate |
--name <name> | 必須 | ウォレット名または ID | - |
--chain <chain> | 必須 | チェーン名(例: base, polygon-amoy) | - |
--broadcast | 任意 | 実際にトランザクションを送信 | false(dry-run) |
--owner | 任意 | passphrase 署名を強制する(credential が設定されていても OWS API key を使わず、ローカル passphrase で署名する) | false |
OperationKind 分類
| action | OperationKind | gate 戦略 |
|---|---|---|
status | DELEGATE_STATUS(read-only) | agent / terminal どちらでも実行可能 |
delegate(設定) | DELEGATE_SET(owner-only がデフォルト、policy 側で delegate_allowlist rule を有効にすると agent からも policy-gated で許可) | デフォルトでは TTY での passphrase 必須。policy で許可された場合のみ agent から OWS API key 経由で実行可能 |
revoke | DELEGATE_REVOKE(policy-gated) | agent では OWS server policy で gate、terminal では passphrase。復旧操作のためデフォルトで agent 経路を許可。 |
参考: OperationKind 分類
使用例
1. delegation 設定(dry-run)
kova delegate --name my-wallet --chain base--broadcast 未指定なので simulateDelegation が呼ばれ、実際のトランザクションは送信されません。
出力例:
{
"ok": true,
"data": {
"dryRun": true,
"from": "0xB8EC761bf83B4374877e903d217222F2cd5512De",
"chain": "base",
"delegationTo": "0x0000000071727De22E5E9d8BAf0edAc6f37da032"
}
}2. delegation 設定(broadcast)
kova delegate --name my-wallet --chain base --broadcast出力例:
{
"ok": true,
"data": {
"dryRun": false,
"txHash": "0x1234567890abcdef...",
"explorerUrl": "https://basescan.org/tx/0x1234567890abcdef...",
"delegationTo": "0x0000000071727De22E5E9d8BAf0edAc6f37da032"
}
}3. delegation 状態確認
kova delegate status --name my-wallet --chain base出力例(設定済み):
{
"ok": true,
"data": {
"address": "0xB8EC761bf83B4374877e903d217222F2cd5512De",
"chain": "base",
"isDelegated": true,
"delegatedTo": "0x0000000071727De22E5E9d8BAf0edAc6f37da032"
}
}出力例(未設定):
{
"ok": true,
"data": {
"address": "0xB8EC761bf83B4374877e903d217222F2cd5512De",
"chain": "base",
"isDelegated": false
}
}4. delegation 取消(broadcast)
kova delegate revoke --name my-wallet --chain polygon-amoy --broadcast出力例:
{
"ok": true,
"data": {
"dryRun": false,
"txHash": "0xabcdef...",
"explorerUrl": "https://amoy.polygonscan.com/tx/0xabcdef...",
"action": "revoke"
}
}5. owner モードで delegation 設定
kova delegate --name my-wallet --chain base --owner --broadcast--owner を付けると OWS API key を使わず、ローカル passphrase で署名します(PassphraseSigner 経路)。
ワークフロー
初回セットアップ
# 1. 状態確認
kova delegate status --name my-wallet --chain polygon-amoy
# 2. dry-run で挙動確認
kova delegate --name my-wallet --chain polygon-amoy
# 3. 実際に設定
kova delegate --name my-wallet --chain polygon-amoy --broadcast
# 4. 設定されたか再確認
kova delegate status --name my-wallet --chain polygon-amoygasless 送金との連携
delegation 設定後は send / call で --gasless を利用できます。
# gasless 送金
kova send --name my-wallet --to 0x... --amount 0.01 --token USDC --chain polygon-amoy --gasless --broadcast
# gasless コントラクト呼び出し
kova call --name my-wallet --to 0x... --function "transfer(address,uint256)" --args '["0x...", "1000000"]' --chain polygon-amoy --gasless --broadcastよくあるエラーと対処法
CHAIN_NOT_SUPPORTED
エラーメッセージ:
{
"ok": false,
"error": {
"code": "CHAIN_NOT_SUPPORTED",
"message": "Chain unknown-chain is not supported"
}
}対処法: サポートチェーン一覧 で、ERC-7702 をサポートしているチェーン名を確認してください。
WALLET_NOT_FOUND
{
"ok": false,
"error": {
"code": "WALLET_NOT_FOUND",
"message": "Wallet my-wallet not found"
}
}対処法: kova wallet info で正しいウォレット名を確認してください。
POLICY_DENIED(agent モード)
agent モードで delegate / revoke を実行し、ポリシー(allowed_chains 等)で拒否された場合に発生します。
対処法: kova policy list でポリシー設定を確認し、必要なら kova policy update で allowed_chains を調整してください。
INSUFFICIENT_BALANCE(ガス代不足)
{
"ok": false,
"error": {
"code": "INSUFFICIENT_BALANCE",
"message": "Insufficient ETH for gas..."
}
}対処法: delegation 設定にはトランザクション送信が必要なので、ネイティブトークン(ETH / POL)の残高が必要です。kova balance で確認し、faucet 等で入金してください。
注意点
1. delegation は永続的
一度設定すると明示的に revoke するまで有効です。不要になったら必ず取り消してください。
kova delegate revoke --name my-wallet --chain base --broadcast2. delegation 先アドレス
Kova は ERC-4337 EntryPoint v0.7(0x0000000071727De22E5E9d8BAf0edAc6f37da032、create2 で全チェーン共通)に delegation を設定します。
3. テストネットで先に検証
本番チェーン(base / polygon 等)での delegation はガス代が発生します。base-sepolia / polygon-amoy で挙動確認してから本番に適用してください。
4. value の単位
delegate コマンド自体は value transfer を伴わないため --value は受け付けません。gasless 送金で value を送る場合は kova call --value <ETH 単位> を使ってください。
関連コマンド
- send —
--gaslessでガスレス送金(delegation が前提) - call —
--gaslessでガスレスコントラクト呼び出し - sign — トランザクション署名のみ
- status — 全体の認証経路と policy enforcement を確認