見出し画像

SolanaのActionsとBlinksについて学ぼう!

この記事は、公式のこちらのBlinksまでの章翻訳・編集したものです。

1 Actions とBlinks

1 Actionsとは

Solana Actionsは、APIに準拠した仕様を使用してトランザクションを返します。

それにより、QRコードボタン+ウィジェットインターネット上のウェブサイトなど、さまざまなコンテキストでブロックチェーントランザクションをプレビュー、署名、送信できます。

Actionsを使用すると、開発者はSolanaエコシステム全体で行える操作を簡単に統合でき、別のアプリやウェブページにナビゲートすることなくブロックチェーントランザクションを実行できます。

2 Blinksとは

Blockchain links(Blinks)は、任意のSolana Actionを共有可能でメタデータ豊富なリンクに変換します。

ブリンクは、Action対応クライアント(ブラウザ拡張ウォレット、ボット)がユーザーに追加機能を表示できるようにします。

ウェブサイト上では、ブリンクはウォレットでのトランザクションプレビューを即座にトリガーするかもしれません。

Discordでは、ボットがブリンクを対話型のボタンのセットに展開するかもしれません。

補足
翻訳者の理解としては、例えば、ウェブサイト上で何かの投票に対して、「賛成」「反対」というボタンがあり、それを押すと実行されるようなイメージを持っています。

これにより、URLを表示できる任意のウェブサーフェスでオンチェーンでの対話が可能になります。

2 Actions

Solana Actions仕様は、アプリケーションからユーザーへ直接署名可能なトランザクション(将来的には署名可能なメッセージ)を提供する標準APIのセットを使用します。

これらは公開URLでホストされ、任意のクライアントがこのURLを介して対話できます。

INFO
Actionsは、メタデータとユーザーのブロックチェーンウォレットで署名する何か(トランザクションまたは認証メッセージ)を返すAPIエンドポイントと考えることができます。

Actions APIは、ActionのURLエンドポイントに対してGETおよびPOSTリクエストを行い、Actionsインタフェースに準拠するレスポンスを処理することで構成されます。

  • GETリクエストは、このURLで利用可能なアクションについてクライアントに人間が読める情報を提供するメタデータを返します。

  • POSTリクエストは、クライアントがユーザーのウォレットに署名と実行を促す署名可能なトランザクションまたはメッセージを返します。

2 Action Execution and Lifecycle

実際には、Actionsとの対話は典型的なREST APIとの対話に非常に似ています。

2ー1 GETリクエスト

クライアントは、利用可能なActionsに関するメタデータを取得するためにAction URLへの初期GETリクエストを行います。

2ー2 リスポンスの返し

エンドポイントは、エンドポイントに関するメタデータ(アプリケーションのタイトルやアイコンなど)とこのエンドポイントで利用可能なアクションのリストを含むレスポンスを返します。

2ー3 UIの表示

クライアントアプリケーション(モバイルウォレット、チャットボット、ウェブサイトなど)は、ユーザーがアクションの1つを実行するためのUIを表示します。

2ー4 POSTリクエスト

ユーザーがアクションを選択すると(ボタンをクリックするなど)、クライアントはエンドポイントにPOSTリクエストを行い、ユーザーが署名するトランザクションを取得します。

2ー5 ブロックチェーンへの送信

ウォレットはユーザーのトランザクション署名を促進し、最終的にはトランザクションをブロックチェーンに送信して確認します。

Solana Actionsの実行とライフサイクルでは、Actions URLからトランザクションを受け取る際、クライアントはこれらのトランザクションをブロックチェーンに送信し、その状態ライフサイクルを管理する必要があります。

Actionsは実行前に無効化の一定レベルをサポートしています。GETおよびPOSTリクエストは、アクションが実行可能かどうかを示すメタデータを返すことがあります(たとえば「disabled」フィールドを使用して)。

例えば、DAOガバナンス提案に投票するためのActionエンドポイントがあり、投票ウィンドウが閉じていた場合、初期のGETリクエストは「この提案はもはや投票の対象ではありません」というエラーメッセージを返し、「賛成投票」と「反対投票」のボタンを「無効」にします。

3 Blinks

ブリンク(ブロックチェーンリンク)は、Action APIを内省し、Actionsの対話および実行を周囲のユーザーインターフェイスで構築するクライアントアプリケーションです。

ブリンクに対応するクライアントアプリケーションは単にAction互換のURLを検出し、それを解析し、標準化されたユーザーインターフェースでユーザーがそれらと対話できるようにします。

INFO
完全にAction APIを内省して完全なインターフェースを構築するクライアントアプリケーションはブリンクです。したがって、Action APIを利用するすべてのクライアントがブリンクであるわけではありません。

2 Blink URL Specification

ブリンクURLは、ユーザーがActionを完全に実行するためのライフサイクルを含む、ウォレットでの署名を可能にするクライアントアプリケーションを記述します。

https://example.domain/?action=<action_url>

クライアントアプリケーションがブリンクになるためには

2ー1 URLエンコードの要求

ブリンクURLは、URLエンコードされたAction URLの値であるactionというクエリパラメータを含む必要があります。

この値は他のプロトコルパラメータとの衝突を避けるためにURLエンコードされている必要があります。

2ー2 URLデコードと内省

クライアントアプリケーションは、actionクエリパラメータをURLデコードし、提供されたAction APIリンクを内省します。

これにより、正しいアクションが処理されることを確認します。

補足
内省(introspection)とは、プログラムが自身の構造や、他のプログラムの構造(この場合はAPIのエンドポイント)を調べることを意味します。

2ー3 リッチUIのレンダリング

クライアントは、ユーザーがActionの完全なライフサイクルを実行するための豊かなユーザーインターフェースをレンダリングする必要があります。

INFO
すべてのブリンククライアントアプリケーション(例えば、ウェブサイトやdApps)がすべてのActionsをサポートするわけではありません。
アプリケーション開発者は、自身のブリンクインターフェイスでサポートするActionsを選択することができます。

以下の例は、アクション値が

solana-action:https://actions.alice.com/donate

であり、URLエンコードされている有効なブリンクURLを示しています。

https://example.domain/?action=solana-action%3Ahttps%3A%2F%2Factions.alice.com%2Fdonate

補足
一見何だか難しそうですが、「:(コロン)」は「%3A」に、「/(スラッシュ)」 は「%2F」にURLエンコードしているだけです。

3 Blinksを通じてActionsを検出する

ブリンクは少なくとも3つの方法でActionsにリンクすることができます:

3ー1 明示的なAction URLを共有する

solana-action:https://actions.alice.com/donate 

この場合、サポートされているクライアントのみがブリンクをレンダリングできます。

サポートされていないクライアントではフォールバックリンクプレビューは表示されず、訪問できるサイトも存在しません。

3ー2 JSONファイルを介した共有

ウェブサイトのドメインルートにあるactions.jsonファイルを介してActions APIにリンクされたウェブサイトへのリンクを共有する。

例えば、https://alice.com/actions.jsonは、ユーザーがAliceに寄付できるウェブサイトURL https://alice.com/donateをAPI URL https://actions.alice.com/donateにマッピングします。

3 Action URLの埋め込み

Actionsを解析する方法を理解している「中間」サイトURLにAction URLを埋め込む。

https://example.domain/?action=<action_url>

ブリンクをサポートするクライアントは、上記のいずれかの形式を取り、クライアントでアクションを直接実行するためのインターフェースを正しくレンダリングすることができるはずです。

サポートされていないクライアントの場合、基礎となるウェブサイトがあるべきであり(ブラウザが普遍的なフォールバックになる)、ユーザーがアクションボタンやテキスト入力フィールド以外のどこかをタップすると、基礎となるサイトに連れて行かれるべきです。

補足
つまり、ユーザーがどのデバイスやアプリケーションを使用していても、関連するアクションにアクセスしやすくなるようにするための措置ですね。

4 Blinkのテストと検証

SolanaのActionsBlinksパーミッションレス(事前の許可なしで利用できる)プロトコルです。

しかし、最終的にはクライアントアプリケーションやウォレットがユーザーがトランザクションを署名するための手続きを容易にする必要があります。

各クライアントアプリケーションやウォレットは、どのActionエンドポイントを自動的に展開(unfurl)し、ソーシャルメディアプラットフォーム上で即座にユーザーに表示するかについて異なる要件を持っている可能性があります。

例えば、いくつかのクライアントは、「許可リスト」アプローチを採用し、クライアントがユーザーのためにActionを自動的に展開(unfurl)する前に検証を要求する場合があります(以下で詳述するDialectのActions Registryを参照)。

すべてのブリンクは、Dialectdial.to blinks Interstitialサイト上でレンダリングされ、署名が可能になります。

このサイトでは、各ブリンクのレジストリステータスが表示されるため、ユーザーはそのブリンクが信頼できるものかどうかを一目で確認することができます。

5 DialectのActions Registry

Solanaエコシステムのための公共財として、DialectはSolana Foundationや他のコミュニティメンバーの協力を得て、既知のソースから事前に検証されたブロックチェーンリンクの公共レジストリを維持しています。

ローンチ時点で、Dialectレジストリに登録されているActionsのみがTwitterフィードに投稿された際に自動的に展開されます。

クライアントアプリケーションやウォレットは、この公共レジストリを自由に使用するか、ユーザーの安全とセキュリティを確保するために他のソリューションを選択することができます。

Dialectレジストリを通じて検証されていない場合、ブロックチェーンリンクはブリンククライアントに触れられず、一般的なURLとしてレンダリングされます。

開発者はこちらで検証を申請することができます。 dial.to/register

これにより、ブリンクとActionsの全体的な概要と動作メカニズムが完了します。

これらの概念は、ブロックチェーンアクションの統合と実行を簡素化し、開発者やユーザーがSolanaプラットフォームをより広範囲にわたって利用できるように設計されています。


サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊