![見出し画像](https://assets.st-note.com/production/uploads/images/145699059/rectangle_large_type_2_ead1c689b2b630fe1c0d84c918d40fc0.png?width=1200)
【完全保存版】Solana Actionsの実行とライフサイクルについて
当記事は、こちらを翻訳・編集したものです。
1 実行とライフサイクル
これまでにURLスキームおよびGETおよびPOST APIについて説明しました。
次に、典型的なHTTP REST APIライフサイクルに従う、アクション実行フローの全体像を説明します。
1 GETリクエストの送信
クライアントがアクションURLにGETリクエストを送信する。
![](https://assets.st-note.com/img/1719728854850-tGRWf4ZcxZ.png?width=1200)
2 GETリスポンスの受信
アクションAPIが、このURLでのアクションを説明する人間が読めるメタデータを含むGETレスポンスボディを、上記の仕様に従って返す。
![](https://assets.st-note.com/img/1719728910569-TUEQDY7MJZ.png?width=1200)
3 POSTリクエストの送信
エンドユーザーが利用可能なオプションから実行するアクションを選択します。
そして、クライアントが指定されたURL(GET URLと同じか、異なる場合もある)にPOSTリクエストを送信する。
![](https://assets.st-note.com/img/1719729001547-sdJj77sQGW.png?width=1200)
4 POSTリスポンスの受信
アクションプロバイダーがこのリクエストを受信します。
そして、エンドユーザーが実行するアクションを構成するトランザクション(またはメッセージ)を作成し、このトランザクションを含むPOSTレスポンスボディを返す。
![](https://assets.st-note.com/img/1719729109820-XAgGu2IIHm.png?width=1200)
5 クライアントサイドのウォレットへの送信
クライアントがこのトランザクションを受け取ります。
クライアントサイドのウォレット(例えばChrome拡張機能や埋め込みウォレット)に送信してエンドユーザーが署名できるように準備する。
![](https://assets.st-note.com/img/1719729212293-7t24C1xRuf.png?width=1200)
6 トランザクションの送信
ユーザーがトランザクション(またはメッセージ)に署名し、クライアントがこのトランザクションをブロックチェーンに送信する。
![](https://assets.st-note.com/img/1719729371727-7oA2K6UY1j.png?width=1200)
2 バリデーション
アクションプロバイダーはバリデーションをサポートしています。
GETおよびPOSTリクエストはまず、アクションが実行可能かどうかを検証し、レスポンスのメタデータをカスタマイズし、バリデーションが失敗した場合に無効化(disabled)を使用することができます。
![](https://assets.st-note.com/img/1719729518966-8pgureGC9t.png?width=1200)
例えば、オークション中のNFTに対するGETリクエストが、「このオークションは終了しました」というエラーメッセージを返し、「入札」ボタンを無効(disabled)として表示することがあります。
また、投票期間が終了したDAOガバナンス提案に対する投票のGETリクエストが、「この提案にはもう投票できません」というエラーメッセージを返し、「賛成」および「反対」ボタンを無効(disabled)として表示することがあります。
3 実行
一度署名された後、トランザクションはブロックチェーンに送信され、クライアントが実行ライフサイクルの追跡を担当します。
![](https://assets.st-note.com/img/1719729623629-K8vuhha59l.png?width=1200)
4 永続性
アクションは、単一のセッションを超えてその実行状態を永続化しません。
ユーザーがクライアントをリフレッシュしたり、後で戻ってきたりした場合、過去または現在のアクションとの相互作用はクライアントに反映されません。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊