実際に稼働中のx402サービスの内部構造を紹介します。実運用で発覚した2つのバグと、初日に修正した価格設定ミスについても触れます。
免責事項:本サービスは、筆者が監督する自律型Claudeベースエージェント「Conway」によって設計・実装・デプロイされました。私は非開発者であり、エージェントがすべてのコードを記述し、元に戻せない操作は私が承認します。これは実験の一環です。
課題
すべてのトランザクションは「誰に支払っているのか?」という質問から始まりますが、この質問に予算は割かれていません。Baseアドレスに送信するには通常、16進数を貼り付けて祈るしかありません。チェーンは、そのアドレスがコントラクトかウォレットか、使用されたことがあるか、何を保有しているかを知っています。しかし、この回答をリクエストごとにパッケージ化し、APIキーの登録なしにマシンで支払えるようにすることは、x402登場まで実現されていませんでした。
そこでConway Address Intelを構築しました。GET /report/{address} は $0.02 USDC でインライン決済(HTTP 402)を行い、構造化されたデューデリジェンスレポートを返します。無料の /overview/{address} は、ウォレット不要でプレビュー(コントラクト/ウォレット判別、保有資産の有無、アクティビティ分類)を返します。
決済レイヤーは約10行
x402-express を用いると、ミドルウェアは署名付きの利用規約を402で返し、ファシリテーター経由で購入者のUSDC認可を検証し、ハンドラーの応答後に決済を行います:
import { paymentMiddleware } from "x402-express";
import { facilitator } from "@coinbase/x402"; // mainnet, auth via CDP keys
app.use(paymentMiddleware(
PAY_TO_WALLET,
{ "GET /report/*": { price: "$0.02", network: "base" } },
facilitator,
));
Enter fullscreen mode Exit fullscreen mode
購入者側も x402-fetch で同様に短く記述できます:
import { wrapFetchWithPayment } from "x402-fetch";
import { privateKeyToAccount } from "viem/accounts";
const payFetch = wrapFetchWithPayment(fetch, privateKeyToAccount(KEY));
const res = await payFetch("https://.../report/0x4200...0006");
// 402 → sign EIP-3009 USDC auth → retry → 200. Buyer needs zero ETH; facilitator pays gas.
Enter fullscreen mode Exit fullscreen mode
実運用で発覚した3つの問題
1. 決済はハンドラーの応答「後」に実行される。 ハンドラー内でレシートを記録したところ、すべての実決済が「SIMULATED」と記録されました。決済ヘッダーがまだ存在していなかったためです。修正: res.on("finish") で X-PAYMENT-RESPONSE を読み取るようにしました。最初のテストネット決済は台帳に誤ったラベルが永遠に残り、その後に追記修正エントリが追加されました。台帳は編集されません。
2. 決済レイヤーの前にバリデーションを行う。さもなくば購入者はゴミに支払うことになる。 ミドルウェアの順序が重要です。アドレスバリデーションは paymentMiddleware の「前」に実行されるため、GET /report/0xNOTANADDRESS は「課金されていません」という400を返します。これは構造上正しく、利用規約すら提示されません。
3. 失敗パスを本物の金でテストする。 サービスを停止中のRPCに向け、本物の(テストネット)決済を試みました。ハンドラーは503を返し、2xx応答のみを決済するミドルウェアは購入者に課金しませんでした。「失敗したリクエストは課金されない」という主張は、推測ではなく実際に観測された事実になりました。
価格設定の教訓
当初は1レポート $0.50 で開始しました。しかし x402 サービスは $0.02–0.03/コール に集中していることがわかりました。中央値の20倍では、誰も衝動的にテストしてくれません。購入者が他者のエージェントである場合、衝動テストがファネルの最上部全体を占めます。価格を $0.02 に引き下げ、プレビューを無料にしました。限界費用はほぼゼロ(純粋なRPC読み取り)であるため、どの価格でも1コールごとに利益が出ます。賭けはボリュームと統合であり、マークアップではありません。
発見の鶏と卵の問題
面白いことに、主要なx402ディスカバリーインデックス(Bazaar)は、最初の「決済」時に自動的に登録されます。投稿フォームはありません。つまり、新規サービスは最初の有料顧客が必要で、その顧客が有料顧客に見つけられるようになるのです。解決策は、資金不要で誰でも統合できる無料エンドポイント、/.well-known/x402 のマシンリーダブルマニフェスト、正直な /status ページ(各デプロイでカウンターがリセットされることを明記)、および x402 ビルダーが実際に議論する場所への露出です。
今すぐ無料で試す
curl https://conway-address-intel-production.up.railway.app/overview/0x420000im0000000000000000000000000000000006
Enter fullscreen mode Exit fullscreen mode
完全レポートは任意のx402クライアントで2¢です。マニフェスト:/.well-known/x402 · ステータス:/status · FAQ:/faq
正直なスコープを明記:公開オンチェーンデータのみ。セキュリティ監査、スキャム検知、金融アドバイスではありません。x402クライアントが402フローで問題が発生した場合はお知らせください。エージェントが迅速に修正します。
公開時点で、本サービスはメインネットで0ドルの決済実績です。最初の購入者の2¢が文字通り私たちを地図上に載せます(Bazaarは初回決済でインデックスします)。AIエージェントの追記専用台帳に永続的な行を残したい方は、ぜひご利用ください。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.