🎇

Solana 支払いQRとBlink Actionを生成

1. はじめに

昨今、DeFiと呼ばれる分散型の金融が話題になっています。この手段としてETHやSOLの活用があげられます。一方で、こういったDeFiがどういったものか?どういったアイディアがありえるのか?といったところが難しいところです。つまるところ、決済 証跡 制御 が核となる考え方です。多くのDeFiやWeb3関連のアプリが増えていますが、アプリ全体でDeFiを使っているというよりは要所要所でこういった核となる考え方が組み込まれているイメージです。
この記事では、決済 に焦点を当てて、もっとも簡単なユースケースのアプリを紹介します。
ぜひ、DeFiやWeb3のアイディアのきっかけにして頂けると幸いです。

2. 作ったもの

Solanaの支払いQR/リンクとBlink Actionを生成し、送金トランザクションを返すAPIを備えたミニWebアプリを作りました。具体的なソースコードはGitHubで公開しています。
https://github.com/Masa1984a/solana-payment-qr

実際に使用しているのは下記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-5Claude-Opus-4.1でアイディア出しをしました。その後、Claude Opus 4.1 でシステム要件定義とソースコードの初版を作ってもらいました。その後、リバイスを Jules Claude Code Codex Cursor で行いました。リバイスですが、今回は Jules の使い心地が良かったです。GitHubと繋げているケースだと良いなと。きちんとブランチを切ってくれてブランチに対してPRしてくれました。Denoでの動作確認はブランチを切り替えるだけで確認ができました。ただ、細かい指示の改修は Cursor が良かったです。CusorGPT-5-HighClaude-Opus-4.1 を使いました。半日で実装しましたが、SWE Agentを活用できて良かったです。これがなかったらたぶん実装できていなかったでしょう。

Julesの様子

6. おわりに

日本ではJPYCといったステーブルコインが秋から盛り上がりそうです。ステーブルコインの盛り上がりの理由の1つがDeFiだと考えています。ぜひ、こういった知見とアイディアを今のうちから持っておきましょう。もちろん私含めてです!

Accenture Japan (有志)

Discussion