Solana 支払いQRとBlink Actionを生成
1. はじめに
昨今、DeFiと呼ばれる分散型の金融が話題になっています。この手段としてETHやSOLの活用があげられます。一方で、こういったDeFiがどういったものか?どういったアイディアがありえるのか?といったところが難しいところです。つまるところ、決済
証跡
制御
が核となる考え方です。多くのDeFiやWeb3関連のアプリが増えていますが、アプリ全体でDeFiを使っているというよりは要所要所でこういった核となる考え方が組み込まれているイメージです。
この記事では、決済
に焦点を当てて、もっとも簡単なユースケースのアプリを紹介します。
ぜひ、DeFiやWeb3のアイディアのきっかけにして頂けると幸いです。
2. 作ったもの
Solanaの支払いQR/リンクとBlink Actionを生成し、送金トランザクションを返すAPIを備えたミニWebアプリを作りました。具体的なソースコードはGitHubで公開しています。
実際に使用しているのは下記Gif動画で、自身のSOLのWalletのアドレス(公開鍵)を入力して、QRコードを生成しています。PayPayで飲み会の精算をするときの要領でQRコードを生成するイメージです。
Walletのアドレスはセキュリティ観点でXXXとしています
この後、送金を依頼された人はQRコードを読み込み、PhantomなどのWalletから指定されたSOLを送金する流れとなります。
方法としては従来からある Solana Pay
と近年登場した Blink(Blockchain Link)
の2つの手段があります。細かい挙動が異なるのですが、指定されたWalletと金額を送金する点においては大きな違いがありません。BlinkについてはSolana公式 Actions and Blinksをご覧ください。
3. システム構成図
システム構成図はこちらになります。なお、Deno DeployはGitHubと連携していてmainブランチに新しい資源がMergeされたら自動的にデプロイされる仕組みになっています。
システム構成図
4. コードの内容
各コードの役割を見ていきましょう。もし詳細をご覧になりたい場合は 2. 作ったもの
に記載したGitHubのリンクからリポジトリをご確認ください。SWE(Software Engneering) Agent、例えばCursor、Roo Code、Claude Code、Gemini CLI、Codex CLI等で解析して解説してもらうのも良いでしょう。
/
ファイル | ユースケース | 役割/補足 |
---|---|---|
deno.json |
両方(共通) | Deno設定・タスク定義 |
main.ts |
両方(共通) | サーバ起動・リクエスト委譲 |
/src
ファイル | ユースケース | 役割/補足 |
---|---|---|
src/router.ts |
両方(共通) | ルート分岐・CORS対応 |
/src/handlers
ファイル | ユースケース | 役割/補足 |
---|---|---|
src/handlers/actions_json.ts |
Blink | actions.json配布(ルール) |
src/handlers/blinks.ts |
Blink | Blinkメタデータ配信(GET) |
src/handlers/home.ts |
QR生成 | ホーム画面HTMLを返却 |
src/handlers/static.ts |
QR生成 | 静的資産配信(JS/CSS) |
src/handlers/transaction.ts |
Blink | Tx生成返却(POST) 旧APIも対応 |
/src/templates
ファイル | ユースケース | 役割/補足 |
---|---|---|
src/templates/home.html |
QR生成 | 入力フォーム/QR表示UI |
src/templates/index.ts |
QR生成 | テンプレート読込関数 |
/src/types
ファイル | ユースケース | 役割/補足 |
---|---|---|
src/types/index.ts |
Blink | Blink/Txレスポンス型 |
/src/utils
ファイル | ユースケース | 役割/補足 |
---|---|---|
src/utils/solana.ts |
Blink | 未署名Tx作成(Base64) |
/static
ファイル | ユースケース | 役割/補足 |
---|---|---|
static/app.js |
QR生成 | 支払いURL生成とQR描画 |
static/styles.css |
QR生成 | 画面スタイル |
5. どのように実装した?
GPT-5
とClaude-Opus-4.1
でアイディア出しをしました。その後、Claude Opus 4.1
でシステム要件定義とソースコードの初版を作ってもらいました。その後、リバイスを Jules
Claude Code
Codex
Cursor
で行いました。リバイスですが、今回は Jules
の使い心地が良かったです。GitHubと繋げているケースだと良いなと。きちんとブランチを切ってくれてブランチに対してPRしてくれました。Denoでの動作確認はブランチを切り替えるだけで確認ができました。ただ、細かい指示の改修は Cursor
が良かったです。Cusor
は GPT-5-High
と Claude-Opus-4.1
を使いました。半日で実装しましたが、SWE Agentを活用できて良かったです。これがなかったらたぶん実装できていなかったでしょう。
Julesの様子
6. おわりに
日本ではJPYCといったステーブルコインが秋から盛り上がりそうです。ステーブルコインの盛り上がりの理由の1つがDeFiだと考えています。ぜひ、こういった知見とアイディアを今のうちから持っておきましょう。もちろん私含めてです!
Discussion