comprabtc について
CompraBTCは、Celoを利用するユーザーやエージェント向けの非カストディ型ビットコイン積立サービスです。定期的なUSDT購入を設定でき、実行額と間隔はオンチェーンで制限され、購入したWBTCは自身のウォレットに送られます。
主な機能
- 01USDTからWBTCへの定期購入
- 02オンチェーンの支出額・間隔制限
- 03オンチェーンでのプラン取消
- 04購入時のTelegram通知
- 05Agent APIとkeeperによる実行
活用シーン
- 01定期的なビットコイン積立の設定
- 02トレジャリーウォレットでのWBTC定期購入
- 03購入状況の確認とプラン取消
- 04API経由での実行トリガー
MCP 対応
MCPサーバーは、状態確認、プランの作成・更新・取消、ポートフォリオ追跡のツールを提供します。トレジャリー自身のウォレットで署名します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y comprabtc-mcpCOMPRABTC_WALLET_PRIVATE_KEYシークレットTreasury/agent wallet that owns the plan (holds USDT, signs setup txs, receives WBTC). Required only for create/renew/cancel; reads work without it.COMPRABTC_MAX_PER_RUN_USDTSafety cap per installment in USDT (default 50, pool-depth guard).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
5掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| address | string | いいえ | 確認するウォレット(デフォルトは設定済みのトレジャリーウォレット) |
詳細
CompraBTC
Celo 上的非托管式比特币定投エージェント。 プランを一度設定すれば、1 時間/1 日ごとに X ドル分の BTC をオンチェーンエージェントが購入し、あなた自身のウォレットに直接送ります。購入の合間に資金がウォレットから移動することはありません。
- ライブアプリ: https://comprabtc.vercel.app(MiniPay と、インジェクションされた任意のウォレットで動作します)
- エージェント API: https://comprabtc-api.vercel.app(`GET /
サービス情報 ·GET /api/stats` 公開メトリクス) - Celo Agentic Payments & DeFAI Hackathon 向けに開発 — リーダーボード
デプロイ済みコントラクト(Celo メインネット、チェーン 42220)
| コントラクト | アドレス |
|---|---|
| DCAExecutor(検証済み) | 0xd03ffeBBCaaA8aA21053eEB0EeAde39EFC504189 |
| USDT(入力トークン) | 0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e |
| WBTC — ネイティブブリッジ(出力トークン) | 0x8aC2901Dd8A1F17a1A4768A6bA4C3751e3995B2D |
| Uniswap V3 SwapRouter02 | 0x5615CDAb10dc425a742d643d949a7F474C01abc4 |
スワップは USDT/WBTC の Uniswap V3 0.3% プールを経由します。プロトコル手数料は実行ごとに1% + 0.005 ドルの固定額で、オンチェーンで上限(≤1%、≤0.05 ドルの固定額)が強制され、手数料が積立額を超える場合はリバートします。
エージェント ID:Celo メインネット上の ERC-8004 #9665(8004scan)。すべてのトランザクションに ERC-8021 のアトリビューションタグが付与されます。
仕組み
flowchart TB
USER["👤 User wallet<br/>(MiniPay / MetaMask / Valora)"]
FE["Frontend — Next.js PWA<br/>(Vercel)"]
subgraph onchain["⛓️ Celo mainnet"]
USDT["USDT (ERC-20)"]
EXEC["DCAExecutor<br/>0xd03f…4189<br/>non-custodial, on-chain limits"]
ROUTER["Uniswap V3 SwapRouter02<br/>USDT/WBTC 0.3% pool"]
TREASURY["Treasury"]
end
subgraph backend["🤖 Agent backend — Vercel"]
KEEPER["Keeper (Vercel Cron, 5 min)<br/>scans PlanCreated events,<br/>checks due plans"]
API["Express API<br/>POST /api/execute<br/>(x402-gated, permissionless)"]
DB[("Supabase<br/>plans · executions")]
TG["Telegram bot<br/>purchase alerts + ops"]
end
FACIL["x402 facilitator<br/>api.x402.celo.org"]
USER -- "① approve(budget) — once" --> USDT
USER -- "② createPlan(amount, interval) — once" --> EXEC
FE -.-> USER
KEEPER -- "discovers plans<br/>(PlanCreated events)" --> EXEC
KEEPER -- "③ pays 0.02 USDT via x402<br/>(EIP-3009 signature)" --> API
API -- "verify + settle" --> FACIL
API -- "④ execute(user, minOut)<br/>+ ERC-8021 attribution tags" --> EXEC
EXEC -- "⑤ transferFrom<br/>(one installment)" --> USDT
EXEC -- "fee 1% + $0.005" --> TREASURY
EXEC -- "⑥ swap USDT→WBTC" --> ROUTER
ROUTER -- "⑦ WBTC straight<br/>to the user's wallet" --> USER
API -- "records execution" --> DB
API -- "🔔 purchase alert" --> TG
- ユーザーは USDT を
DCAExecutorに承認し(上限 = プランの総予算)、オンチェーンの制限(1 回あたりの金額、最小間隔)を設定してプランを作成します。キャンセルはワンクリックで行えます(cancelPlanまたはapprove(0))。 - キーパーは
PlanCreatedイベントからプランを検出します。各サイクルでexecute()を呼び出す前に、実行 API に x402 マイクロペイメントを支払います。つまり、購入のたびにエージェント間決済も行われます。 - オンチェーンの制限により、キーパーが侵害されても過剰請求はできません。
amountPerRunを超える金額を引き出したり、minIntervalが経過する前に実行したりすることはできません。 - 購入のたびに Telegram アラートを受け取れます(アプリの設定からリンクします)。
リポジトリ構成
| ディレクトリ | 内容 |
|---|---|
contracts/ | DCAExecutor.sol(Foundry)— メインネットのフォークテストを含む 21 件のテスト、デプロイスクリプト |
backend/ | Express API + キーパーループ(viem)+ x402 ミドルウェア + Supabase + Telegram ボット |
frontend/ | Next.js PWA(wagmi/viem)— MiniPay 自動接続、プラン作成、BTC ポートフォリオ |
docs/ | ユニットエコノミクス、コピーのレビュー |
PLAN.md | アーキテクチャの全体計画と、各要素の実現可能性の検証 |
ローカルでの実行
フロントエンド(frontend/.env.local に NEXT_PUBLIC_EXECUTOR_ADDRESS、NEXT_PUBLIC_API_URL、NEXT_PUBLIC_ATTRIBUTION_CODE、NEXT_PUBLIC_TELEGRAM_BOT が必要です):
cd frontend && pnpm install && pnpm dev # http://localhost:3000
バックエンド + キーパー(Node 22。必要な環境変数(executor アドレス、キーパーキー、Supabase 認証情報、x402 API キー)については backend/src/config.ts を参照してください。DB スキーマは backend/supabase/schema.sql、マイグレーションは同じフォルダーにあります):
cd backend && pnpm install && pnpm dev # API on :8080, keeper ticks every 60s
ローカルでは、キーパーはプロセス内ループ(setInterval)として動作します。Vercel にデプロイすると、Express アプリ全体が単一の関数となり、Vercel Cron が GET /api/cron/keeper を呼び出してキーパーを起動します(CRON_SECRET で保護、スケジュールは backend/vercel.json に定義)。サーバーレスインスタンスは凍結されて再利用されるため、そこでインターバルを使うと、重複した予定外のティックが発生します。キーパーがティック間で記憶する必要のある情報(アラートのクールダウン、ダイジェストの間隔、最後にスキャンしたブロック)は、メモリではなく agent_keeper_state に保存されます。
コントラクト:
cd contracts && forge test # unit + Celo mainnet fork tests
forge script script/Deploy.s.sol --rpc-url celo --broadcast --verify --interactives 1
AI エージェント向け
資金を入れた独自のウォレットを持つエージェントは、2 回のトランザクションでビットコインの積立プランを設定できます。人間を支援するエージェントも同様です(署名はウェブアプリが処理します)。
- MCP サーバー(トレジャリー DCA):
claude mcp add comprabtc -- npx -y comprabtc-mcp— ステータスの確認、プランの作成・更新・キャンセル、ポートフォリオの追跡を行うツールです。署名にはトレジャリー独自のウォレットを使用します。詳しくはmcp/README.mdをご覧ください。 - エージェントスキル:
npx skills add csacanam/comprabtc— プランの作成(viem)、監視、予算計算、キャンセル、パーミッションレスな x402 実行トリガーを扱います。 - サービス記述子(機械可読な使い方ガイド):
GET https://comprabtc-api.vercel.app/· LLM インデックス:comprabtc.vercel.app/llms.txt - エージェント ID:Celo 上の ERC-8004 #9665 — メタデータ · 8004scan
透明性
オペレーターのウォレット(申告済み):
| 役割 | アドレス |
|---|---|
| Keeper(プランを実行) | 0x2F6a8283546d28506B312013F77aA38e60AF99B0 |
| Treasury / payTo(手数料を受け取り) | 0x6Bd5c303b2ed7E264C1Ce9D3592457292a1F1c43 |
オンチェーンの取引量は、実際のユーザー資金です。 各プランは、ユーザー自身による approve から始まります。Keeper は実行のたびに transferFrom で分割払い分を 1 回分引き出し、購入した WBTC はそのままユーザーのウォレットに送られ、そこに保持されます。資産の預かりも、資金の往復もありません。取引量は、実際の経済的意図に基づく実際の BTC 購入額です。
x402 は、オープンな利用を可能にする内部メータリングです。 Keeper は実行のたびに x402 の支払いを行うため、各 x402 の支払いは、実際に実行された 1 回の購入に対応します。単独の少額取引ではありません。/api/execute はパーミッションレスで、オンチェーンイベントからプランを自動登録します。そのため、外部のエージェントや人間は誰でも呼び出して、独自の x402 決済を行えます。閉じた仕組みではありません。
ハッカソントラック
- トラック 1 — オンチェーン収益:
execute()内でプロトコル手数料を徴収し、すべてのトランザクションに ERC-8021 のアトリビューションを付与します。 - トラック 2 — x402 決済: Keeper は Celo x402 ファシリテーターを介し、実行のたびに
/api/executeへの支払いを行います。このエンドポイントはパーミッションレスで、どのエージェントも支払って実行をトリガーできます。 - トラック 4 — Aigora: Aigora マーケットプレイスにエージェントを登録済み(#395)+trionlabs/aigora-skills へのフィードバック PR。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。