x402の技術的な観点の調査
先日Coinbaseからx402というプロトコルが発表されました。
We are excited to introduce x402–a new open source payments protocol built on HTTP rails.
— Coinbase Developer Platform🛡️ (@CoinbaseDev) May 6, 2025
Let’s break it down: pic.twitter.com/9PNI49NK7A
- landing page
https://www.x402.org/ - whitepaper
https://www.x402.org/x402-whitepaper.pdf - demo
https://www.x402.org/protected
発表された後、クリプト界隈でセンスのよい人々に言及されて話題になった印象です。
402について
HTTPの標準ステータスコードには402があります。 wikipedia が抜粋
402 Payment Required
支払いが必要である。 現在は使われておらず、将来のために予約されているとされる。
Web Payments HTTP APIで利用が検討されていたものの[5]、Web Payments HTTP APIそのものの開発が中止されたため、採用には至っていない。
https://www.w3.org/TR/2017/NOTE-webpayments-http-api-20171212/
話題になったのも今回Coinbaseはこれを使ったことだからではないかと思います。
余談ですが、昔遊びで社内向けにシステム開発作った時、「このロール持ってないユーザーがアクセスしてきたらhttp status codeを何にしようか?」「402にして課金してもらおうw」みたいな冗談を言ったことがあります。 使ってはいけないではなく、殆ど使ってないということですね。
コードを読んで図を描く
コードと実際動いてるもの見ないと自信持ってものことを言えない体質なのでコードを読むことにしました。 https://github.com/coinbase/x402 ライブラリ系のものでもないので、ディレクトリ構成をぱっと見よくわかりませんでした。 各ディレクトリを深堀って見るとなんとか理解できた感じです。
https://github.com/coinbase/x402/blob/main/typescript/packages/x402/src/shared/paywall.ts この辺のコードとかあんまりキレイじゃないなと思いながら読みましたw
Facilitatorはガス代を肩代わりする役割もあって、Coinbaseのサーバーを使ってもいいし、自前で開発しても良さそうです。
使われてる技術
感想
- プロトコルの定義によりますが、これを新しいプロトコルと言っていいのか?
- サーバーが返すhttp status codeは402ではなく403でも401でも実現できる。
- 新しい技術ではなく既存の技術を組み合わせているだけだった。
- 今はEIP-7758を実装したトークンしかできない制約がある。
- ロードマップにはEIP-7758(Transfer With Authorization) ではなくpermitを採用するかもと書いてあるので、制約がなくなるかも。
- Solana (SVM)をサポートすると書いてあるので今後に期待。