Advanced Configuration
Kova は、設定ファイルを通じて動作をカスタマイズできます。デフォルトウォレットの設定、カスタムRPCエンドポイント、ポリシーによる送金制限、API鍵管理など、本番環境での運用に必要な設定をこのガイドで解説します。
設定ファイルの概要
Kova の設定は ~/.kova/config.json に保存されます。
# 設定ファイルの場所
~/.kova/config.json
# 設定を一覧表示(個別キー確認もこちら。i18n 対応の整形表示 + JSON)
kova config list設定は kova config set コマンドで変更するか、直接ファイルを編集して適用できます。
デフォルト設定
よく使うウォレットをデフォルトに設定しておくと、コマンドが簡潔になります。
# デフォルトウォレットを設定
kova config set defaultWallet my-walletconfig.json の例:
{
"defaultWallet": "my-wallet",
"rpcUrls": {},
"policies": {}
}デフォルト設定後は、send などのコマンドで --chain や --name オプションを省略できます:
# 残高確認(引数なし)
kova balance
# 送金(デフォルトウォレット使用)
kova send --name my-wallet --to 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb --amount 10 --token USDCカスタムRPC URL設定
デフォルトでは、Kova はパブリックRPCエンドポイントを使用します。本番環境では、専用のRPCプロバイダーを利用することで信頼性とパフォーマンスが向上します。
推奨プロバイダー
| プロバイダー | 特徴 | URL |
|---|---|---|
| Alchemy | 高い信頼性・充実したAPI | https://www.alchemy.com |
| Infura | 老舗・Consensys提供 | https://www.infura.io |
| QuickNode | 高速・多チェーン対応 | https://www.quicknode.com |
| Ankr | コスト効率が高い | https://www.ankr.com |
RPC URLの設定方法
# EthereumのカスタムRPCを設定
kova config set rpcUrls.ethereum "https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY"
# BaseのカスタムRPCを設定
kova config set rpcUrls.base "https://base-mainnet.g.alchemy.com/v2/YOUR_API_KEY"または、config.json を直接編集します:
{
"defaultWallet": "my-wallet",
"rpcUrls": {
"ethereum": "https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY",
"base": "https://base-mainnet.g.alchemy.com/v2/YOUR_API_KEY",
"polygon": "https://polygon-mainnet.g.alchemy.com/v2/YOUR_API_KEY"
}
}ポリシーによる送金制限
ポリシーを設定することで、ウォレットの操作に制約を設けられます。AIエージェントに使わせる場合は、必ずポリシーを設定してください。
ポリシー制約フィールド一覧
| フィールド | 型 | 説明 |
|---|---|---|
maxAmount | string | 1回の送金上限額(例: "100") |
allowedChains | string[] | 使用を許可するチェーンID(例: ["eip155:8453"]) |
allowedTokens | string[] | 使用を許可するトークンシンボル(例: ["USDC"]) |
requireApproval | boolean | true の場合、送金前に人間の承認を必要とする |
ポリシーの作成
policy.json を作成:
{
"name": "AIエージェント用ポリシー",
"maxAmount": "100",
"allowedChains": ["eip155:8453"],
"allowedTokens": ["USDC"],
"requireApproval": true
}# ポリシーを作成
kova policy create --file policy.json
# 作成されたポリシーIDを確認
kova policy list出力例:
{
"ok": true,
"data": {
"policy": {
"id": "pol_abc123",
"name": "AIエージェント用ポリシー",
"maxAmount": "100",
"allowedChains": ["eip155:8453"],
"allowedTokens": ["USDC"],
"requireApproval": true
}
}
}ポリシー違反の送金はエラーになります:
{
"ok": false,
"error": {
"code": "POLICY_DENIED",
"message": "Transaction exceeds policy maxAmount: 100 USDC"
}
}API鍵管理
API鍵を使うと、ポリシー付きでウォレットへのアクセスを安全に委譲できます。AIエージェントやバックエンドサービスに使わせる際に活用してください。
API鍵の作成・管理
# API鍵のローテーション(初回は kova init で自動発行される)
kova key rotate --name agent-key
# API鍵の一覧表示
kova key list作成時の出力例:
{
"ok": true,
"data": {
"key": {
"id": "key_xyz789",
"name": "agent-key",
"apiKey": "kova_xxxxxxxxxxxxxxxxxxxxxxxx",
"wallet": "my-wallet",
"policyId": "pol_abc123"
}
}
}重要:
apiKeyの値はこのタイミングのみ表示されます。必ず安全な場所に保存してください。
AIエージェントへの組み込み例(TypeScript)
import { execSync } from 'child_process';
// 環境変数からAPI鍵を読み込む
const apiKey = process.env.KOVA_API_KEY;
if (!apiKey) {
throw new Error('KOVA_API_KEY environment variable is required');
}
interface SendResult {
ok: boolean;
data?: {
dryRun: boolean;
txHash?: string;
explorerUrl?: string;
};
error?: {
code: string;
message: string;
};
}
async function sendWithPolicy(
to: string,
amount: string,
token: string
): Promise<SendResult> {
const env = { ...process.env, KOVA_API_KEY: apiKey };
const result = execSync(
`kova send --name my-wallet --to ${to} --amount ${amount} --token ${token} --broadcast`,
{ encoding: 'utf-8', env }
);
return JSON.parse(result);
}
// 使用例
async function main() {
const result = await sendWithPolicy(
'0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
'10',
'USDC'
);
if (result.ok) {
console.log(`送金成功: ${result.data.explorerUrl}`);
} else {
console.error(`エラー: ${result.error.code} - ${result.error.message}`);
}
}
main();KOVA_API_KEY 環境変数が設定されている場合、CLIは自動的にポリシー評価を行います。
設定のバックアップと復元
設定ファイルとウォレットデータは定期的にバックアップしてください。
# 設定ファイルのバックアップ
cp ~/.kova/config.json ~/backup/kova-config-$(date +%Y%m%d).json
# ウォレットデータのバックアップ(暗号化ファイルとして保存)
cp -r ~/.kova/wallets/ ~/backup/kova-wallets-$(date +%Y%m%d)/
# バックアップからの復元
cp ~/backup/kova-config-20240101.json ~/.kova/config.json注意: ウォレットデータには秘密鍵が含まれます。バックアップファイルは暗号化ストレージやパスワードマネージャーで保護してください。
本番環境のベストプラクティス
-
API鍵を環境変数で管理する - APIキーをコードやファイルにハードコードしないでください。
.envファイルや環境変数管理サービス(AWS Secrets Manager、HashiCorp Vaultなど)を活用しましょう。 -
最小権限のポリシーを設定する - AIエージェントや自動化スクリプトに与えるポリシーは、必要最小限の権限に絞ってください。
maxAmountを低く設定し、allowedChainsとallowedTokensを明示的に指定することを推奨します。 -
専用のRPCエンドポイントを使用する - 本番環境ではパブリックRPCではなく、Alchemy・Infura・QuickNodeなどの専用プロバイダーを利用して信頼性を確保しましょう。
-
設定ファイルをバージョン管理から除外する -
~/.kova/ディレクトリはリポジトリにコミットしないでください。APIキーや秘密鍵が含まれる場合があります。 -
定期的にAPI鍵をローテーションする - 定期的に
kova key rotate --name <key-name>で鍵を更新することでセキュリティリスクを低減できます。
関連項目
- Multi-Chain Operations - マルチチェーン運用ガイド
- AI Agent Integration - AIエージェント統合とポリシー設定
- Core Concepts: Security - セキュリティのベストプラクティス
- CLI Commands: config - configコマンドの詳細