runes について
runes は、Bitcoin Runes の残高や UTXO の確認、送金を行うスキルです。Unisat でインデックスを取得し、mempool.space で手数料を見積もって取引をブロードキャストします。明示的な変更先ポインターで残りの Runes を保護します。
主な機能
- 01アドレス別の Rune 残高確認
- 02Rune ID 別の UTXO 一覧
- 03宛先への Runes 送金
- 04明示的な Runestone 変更先ポインター
- 05メインネットとテストネット対応
活用シーン
- 01アドレスが保有する Runes の確認
- 02特定 Rune の UTXO 検索
- 03残りの Runes を保って送金
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aibtcdev/ skills --skill runesインストール後、Claude Code で/runesを入力して読み込まれたか確認します。
同梱ファイルAGENT.mdrunes.ts
詳細
Runes Skill
ルーンのインデックス作成に Unisat API、手数料の見積もりとブロードキャストに mempool.space を使用して、ビットコインのルーン操作を行います。ルーンの送金では、誤ってルーンをバーンしないよう、変更先を明示的に指定した Runestone OP_RETURN エンコードを使用します。
UNISAT_API_KEY 環境変数が必要です。メインネットとテストネットの両方で動作します。
使用方法
bun run runes/runes.ts <subcommand> [options]
サブコマンド
balance
ビットコインアドレスのルーン残高を取得します。アドレスが保有するすべてのルーントークン残高を返します。
bun run runes/runes.ts balance [--address <addr>]
オプション:
--address(省略可)— 確認するビットコインアドレス(省略した場合は、アクティブなウォレットの Taproot アドレスを使用します)
出力:
{
"address": "bc1p...",
"network": "mainnet",
"balances": [
{
"rune": "UNCOMMONGOODS",
"runeId": "1:0",
"spacedRune": "UNCOMMON•GOODS",
"amount": "1000000",
"formatted": "1000000 ⧫",
"symbol": "⧫",
"divisibility": 0
}
],
"summary": { "runeCount": 1 },
"explorerUrl": "https://mempool.space/address/bc1p..."
}
utxos
ビットコインアドレスにある、指定したルーンを含む UTXO を一覧表示します。
bun run runes/runes.ts utxos --rune-id <id> [--address <addr>]
オプション:
--rune-id(必須)— ルーン ID(例:840000:1)--address(省略可)— 確認するビットコインアドレス(省略した場合は、アクティブなウォレットの Taproot アドレスを使用します)
出力:
{
"address": "bc1p...",
"network": "mainnet",
"runeId": "840000:1",
"utxos": [
{
"txid": "abc123...",
"vout": 0,
"satoshis": 546,
"runes": [
{
"runeId": "840000:1",
"spacedRune": "UNCOMMON•GOODS",
"amount": "1000000",
"formatted": "1000000 ⧫",
"symbol": "⧫"
}
]
}
],
"summary": { "utxoCount": 1, "totalSatoshis": 546 }
}
transfer
ルーンを受取人のアドレスに送金します。ルーンを受取人に送り、残りのルーンを変更先ポインターで送信者に戻す Runestone OP_RETURN を含むトランザクションを構築します。
bun run runes/runes.ts transfer --rune-id <id> --amount <amount> --recipient <addr> [--fee-rate fast|medium|slow|<number>]
オプション:
--rune-id(必須)— ルーン ID(例:840000:1)--amount(必須)— 送金するルーンの量(最小単位)--recipient(必須)— 受取人のアドレス--fee-rate(省略可)— 手数料率(デフォルト:medium)
出力:
{
"success": true,
"txid": "def456...",
"explorerUrl": "https://mempool.space/tx/def456...",
"rune": { "runeId": "840000:1", "amount": "500000" },
"recipient": "bc1p...",
"fee": { "satoshis": 1800, "rateUsed": "10 sat/vB" },
"btcChange": { "satoshis": 5000 },
"network": "mainnet"
}
安全性
- ルーンの残高がバーンされないよう、ルーンの送金では常に Runestone に変更先ポインターを明示的に指定します
- 手数料は SegWit アドレスの Cardinal UTXO から支払われます。ルーンを含む UTXO が手数料の支払いに使われることはありません
- transfer コマンドは、トランザクションの構築前にルーン残高を検証します
備考
- ルーンは通常、Taproot(bc1p)アドレスに保管されます
- 手数料は SegWit(bc1q)アドレスから支払われます
- ウォレットのロックを解除する必要があります(先に
bun run wallet/wallet.ts unlockを実行してください) - Unisat API にアクセスするには、
UNISAT_API_KEY環境変数を設定してください
コメント
Markdown 対応