autorenew
Solanaアプリケーションアーキテクチャ:Memeトークンアプリ構築に関するHeliumのエンジニアNoahの主要な知見

Solanaアプリケーションアーキテクチャ:Memeトークンアプリ構築に関するHeliumのエンジニアNoahの主要な知見

Solanaでmemeトークンの世界に飛び込むなら、効率的なアプリをどう作るかを理解することが重要です。Solanaの高速ブロックチェーンはmemeコインのローンチのホットスポットになっていますが、アーキテクチャを間違えるとプロジェクトが台無しになります。最近、HeliumのNoahが過去数年での様々なSolanaアプリアーキテクチャの経験をXで詳しく共有しました。これを分かりやすく整理して、memeトークン制作者にどう当てはまるか見ていきましょう。

まずNoahは基本から。Reactフロントエンドが直接SolanaのRPC(Remote Procedure Call)に接続するシンプルな構成です。RPCはブロックチェーンへのゲートウェイのようなもので、アプリがSolanaのデータに直接アクセスする回線のようなものです。このモードでは別途APIサーバーを用意する必要はなく、RPCがすべてを処理します。getAccountInfoのようなコマンドでデータを取得し、後でgetMultipleAccountsでキャッシュやバッチ処理を追加してパフォーマンスを改善することもできます。WebsocketsやポーリングでUIをリアルタイムに更新します。

このアプローチは、memeトークンのダッシュボードやトレーディングインターフェースを素早くプロトタイプするのに最適です。DevOpsの手間はゼロに近くコストも低め—Vercelのような環境にデプロイするだけで済みます。しかし、memeトークンが注目を集めユーザー数が急増すると、問題が出てきます。

直接RPC接続を持つシンプルなSolanaアプリアーキテクチャの図

まずは複雑なクエリです。SolanaのRPCはブロックチェーンをちょっと変わったNoSQLデータベースのように扱います。単純なポイントクエリは問題ありませんし、PDAs(Program Derived Addresses)をうまく使えばグラフのようにデータをたどることもできます。しかし、getProgramAccounts(gPA)を使った広範な検索になると厄介です—遅くて、ユーザーフレンドリーではなく、可変長データには向きません。従来のウェブアプリと比べてアプリがもたつくことがあり、memeトークンの盛り上がり時には即時性が求められるため理想的ではありません。

次に、トランザクション構築の移植性です。全てのロジックがフロントエンドや散在するライブラリにあると、ボットや他の統合で再利用するのが面倒になります。アップデートがあるたびにライブラリを再公開しUIをリフレッシュしなければならず、スマートコントラクトの反復が遅れます。

それから、トランザクション送信の問題:UIはリトライに向いていません。ユーザーがページを離れるとトランザクションは失敗しがちです。特にバイラルなmemeトークンの急騰時には、リモートの問題をデバッグするのは難しく、信頼性が重要になります。

最後に、公開されたRPC URLの悪用です。他者があなたのクレジットを吸い取ってコストを跳ね上げる可能性があります—まるで望まれないボットがmemeトークンの流動性プールを枯渇させるようなものです。

シンプルな構成を捨てずにリストクエリに対処するため、Noahはハイブリッドモデルを提案します。ほとんどは直接RPCで賄い、厄介なクエリだけAPIサーバーにオフロードする。例えば、タグ("Economic"や"Technical"のような)でガバナンス提案をフィルターするのはgPAだけでは不可能なので、APIがそれを処理します。

複雑なクエリのためにAPIを使うハイブリッドなSolanaアプリアーキテクチャの図

これによりプロトタイピングは高速なままで、スケール時の遅いgPA問題を解決できます。ただし、ここでインデクサーが登場します—ブロックチェーンを走査してデータを格納するサービスです。後でその痛みについて説明します。トランザクションの移植性やRPCの不正利用は解決しませんが、上位保有者の絞り込みや取引履歴の検索など、複雑な検索機能が必要なmemeトークンアプリには有効な一手です。

エンタープライズ向けのフルスタックでは、Solanaをデータベースではなくイベントバスとして扱います。フロントエンドはSolanaの内部には無関心で構いません。サーバーがトランザクションを構築し、署名のためにUIに渡し、送信し、インデクサーがデータを更新するのを待ちます。これはWeb2に似ており、SSRのようなサーバーサイドレンダリングでレスポンスの良いUIを実現し、クリーンなAPIパラメータでトランザクション共有が容易になり、RPCを隠すことで漏洩も防げます。

インデクサーとイベントバスを使ったエンタープライズ向けSolanaアプリアーキテクチャの図

メリットはmemeトークンプラットフォームにとって大きい:高速でモダン、関心の分離ができたアプリです。しかしデメリットもあります。インデクサーの問題—メッセージを見逃すとUIに不具合が出ます。例えばNFT移転後に所有権が古いまま表示されるなど。デバッグは時間泥棒です。問題が自分たちのコードなのかプロバイダなのか判別が難しい。

タイミングの問題も発生します。インデクサーが遅延すると、古いデータに基づいて構築されたトランザクションが失敗します。Heliusのような高速ストリームは助けになりますが、失敗トランザクション時にインデックスを巻き戻す(reorg)処理が発生し、memeトークンの統計を正確に保つのは悪夢になります。

トランザクション構築にRPCを使い、UIにインデクサーを使う混合運用もできますが、不整合がユーザーを苛立たせます。コストも高くなります。中央集権的なインフラを運用することは、Web3の分散化精神に反するように感じられます。みんながあなたのAPIに頼っていたら、本当にそのmemeトークンはどれだけ「分散化」されているのでしょうか?

Noahの見解:ユーザーを最優先にすべきです。エンタープライズ構成は素晴らしいUXを提供しますが、運用負荷も増えます。meme分野のスタートアップなら、スピードや複雑なクエリが初期に必要でない限り、直接RPCのシンプル構成から始めるのが良いでしょう。市場に早く出て、あとでスケールすればいい。

このスレッドはSolana上で構築する全ての人、特にmemeトークン開発者にとっての金鉱です。Xの全文はこちらで確認してください: https://x.com/redacted_noah/status/1993450514156277880。これらのアーキテクチャを試しているなら、あなたの調整や工夫をコメントで共有してください!

おすすめ記事