これらのアクションは、トランザクションの構築、署名、およびブロードキャストにSVMアドオンを使用する際に利用できます。
deploy_program
svm::deploy_program
は、指定されたSVM互換ネットワークにSolanaプログラムをデプロイします。
入力
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
description | 任意 | string | デプロイアクションの説明 |
program | 必須 | object | デプロイするSolanaプログラムのアーティファクト |
payer | 任意 | string | デプロイコストを支払う署名者への参照 |
authority | 必須 | string | プログラムオーソリティの署名者への参照 |
commitment_level | 任意 | string | コミットメントレベル('processed'、'confirmed'、'finalized') |
auto_extend | 任意 | bool | program accountを自動拡張するかどうか(デフォルト: true) |
出力
| 名前 | 型 | 説明 |
|---|---|---|
signatures | object | 計算されたトランザクション署名 |
program_id | string | デプロイされたプログラムのプログラムID |
program_idl | string | プログラムIDL |
action "deploy" "svm::deploy_program" {description = "Deploy hello world program"program = svm::get_program_from_anchor_project("hello_world")authority = signer.authoritypayer = signer.payer # Optional, defaults to authority}
process_instructions
svm::process_instructions
アクションは、instructionsをエンコードし、トランザクションに追加して、トランザクションに署名してブロードキャストします。
入力
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
description | 任意 | string | トランザクションの説明 |
instruction | 必須 | map | トランザクションに追加するinstructions |
signers | 必須 | array[string] | 署名者コンストラクトへの参照 |
commitment_level | 任意 | string | コミットメントレベル |
rpc_api_url | 必須 | string | APIリクエスト用URL |
出力
| 名前 | 型 | 説明 |
|---|---|---|
signature | string | トランザクションの計算済み署名 |
action "program_call" "svm::process_instructions" {description = "Invoke instructions"instruction {program_idl = variable.program.idlinstruction_name = "initialize"instruction_args = [1]payer {public_key = signer.payer.public_key}}signers = [signer.caller]}
send_sol
svm::send_sol
アクションは、SOL を送信するトランザクションをエンコードし、署名してネットワークにブロードキャストします。
入力
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
description | 任意 | string | トランザクションの説明 |
amount | 必須 | integer | 送信する金額(lamport 単位) |
recipient | 必須 | string | 受信者の SVM アドレス |
signer | 必須 | string | 署名者コンストラクトへの参照 |
commitment_level | 任意 | string | コミットメントレベル |
rpc_api_url | 必須 | string | API リクエスト用 URL |
出力
| 名前 | 型 | 説明 |
|---|---|---|
signature | string | トランザクションの計算済み署名 |
action "send_sol" "svm::send_sol" {description = "Send some SOL"amount = svm::sol_to_lamports(1)signer = signer.callerrecipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"}
send_token
svm::send_token
アクションは、指定されたトークンを送信するトランザクションをエンコードし、署名してネットワークにブロードキャストします。
入力
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
description | 任意 | string | トランザクションの説明 |
amount | 必須 | integer | 送信するトークンの量(基本単位) |
token | 必須 | string | token mint account のアドレス |
recipient | 必須 | string | 受信者の SVM アドレス |
authority | 任意 | string | オーソリティアカウントの pubkey |
fund_recipient | 任意 | bool | 必要に応じて受信者の token account を作成・資金供給する |
signers | 必須 | array[string] | 署名者コンストラクトへの参照 |
出力
| 名前 | 型 | 説明 |
|---|---|---|
signature | string | トランザクションの計算済み署名 |
recipient_token_address | pubkey | 受信先token accountアドレス |
source_token_address | pubkey | 送信元token accountアドレス |
token_mint_address | pubkey | トークンミントアドレス |
action "send_sol" "svm::send_token" {description = "Send some tokens"amount = 1000000signers = [signer.caller]recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"token = "3bv3j4GvMPjvvBX9QdoX27pVoWhDSXpwKZipFF1QiVr6"fund_recipient = true}
setup_surfnet
svm::setup_surfnet はsurfnetの設定に使用できます。
以下の操作がサポートされています:
set_account- アカウントのlamport、オーナー、データ、および実行可能フィールドを設定するset_token_account- token accountの残高、デリゲート、デリゲート残高、およびクローズ権限を設定するclone_program_account- program accountをソースプログラムIDから宛先プログラムIDへクローンするset_program_authority- プログラムの権限を設定するdeploy_program- surfnetにプログラムを直接デプロイする(トランザクションではなく、アカウントへの直接書き込みにより)reset_account- アカウントをリセットし、ローカルキャッシュから削除してアップストリームから再取得するstream_account- メインネットからアカウントデータをストリーミングし、ローカルデータが常にメインネットと一致するようにする
入力
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
description | 任意 | string | セットアップの説明 |
rpc_api_url | 必須 | string | APIリクエスト用のURL |
set_account
surfnet上でアカウントデータを直接設定します。
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
public_key | 必須 | string | 設定するアカウントの公開鍵 |
account_path | 任意 | string | 設定するアカウントデータを含むJSONファイルへのパス。指定した場合、他のフィールドは無視されます |
lamports | 任意 | integer | アカウントに設定するlamportの量 |
data | 任意 | bytes | アカウントに設定するデータ |
owner | 任意 | string | アカウントに設定するオーナー |
executable | 任意 | bool | アカウントに設定する実行可能状態 |
rent_epoch | 任意 | integer | アカウントがレント免除となるepoch |
lamports、data、owner、executable、またはrent_epochのうち少なくとも1つを指定する必要があります(account_pathを使用する場合を除く)。
set_token_account
surfnet上のtoken accountデータを設定します。associated token accountは、オーナーの公開鍵とトークンミントから自動的に導出されます。
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
public_key | 必須 | string | 更新するトークンオーナーアカウントの公開鍵 |
token | 必須 | string | トークンシンボル(例:"usdc"、"bonk")またはトークンミントの公開鍵 |
token_program | 任意 | string | トークンプログラムID。有効な値はtoken2020、token2022、または公開鍵です(デフォルト:token2020) |
amount | 任意 | integer | 設定するトークンの数量 |
delegate | 任意 | string | 設定するデリゲートの公開鍵、またはクリアする場合はnull |
state | 任意 | string | token accountの状態。有効な値はinitialized、frozen、またはuninitializedです |
delegated_amount | 任意 | integer | 委任するトークンの数量 |
close_authority | 任意 | string | 設定するクローズ権限の公開鍵、またはクリアする場合はnull |
amount、delegate、state、delegated_amount、またはclose_authorityのうち少なくとも1つを指定する必要があります。
clone_program_account
surfnet上で、あるプログラムIDから別のプログラムIDへprogram accountをクローンします。
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
source_program_id | 必須 | string | クローンするプログラムの公開鍵 |
destination_program_id | 必須 | string | プログラムの宛先公開鍵 |
set_program_authority
surfnet上のプログラムのアップグレード権限を設定または削除します。
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
program_id | 必須 | string | 権限を設定するプログラムのpubkey |
authority | 任意 | string | プログラムの新しい権限。指定しない場合、プログラムの権限はNone(イミュータブル)に設定されます |
deploy_program
アカウントデータの書き込みを通じて(トランザクション経由ではなく)、プログラムをsurfnetに直接デプロイします。
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
program_id | 必須 | string | デプロイされるプログラムのpubkey |
binary_path | 必須 | string | プログラムの.soファイルの場所(例:./target/deploy/my_program.so) |
authority | 任意 | string | デプロイ後のプログラムに対する権限のpubkey。指定しない場合、プログラムには権限が設定されません |
idl_path | 任意 | string | プログラムのIDLファイルの場所(例:./target/idl/my_program.json) |
reset_account
surfnet上のアカウントをリセットし、ローカルキャッシュから削除することで、アップストリームネットワークから再取得されるようにします。
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
public_key | 必須 | string | リセットするアカウントのpubkey |
include_owned_accounts | 任意 | bool | このアカウントが所有するすべてのアカウントを再帰的に削除するかどうか。デフォルトはfalse |
stream_account
メインネットのRPC URLからsurfnetにアカウントデータをストリーミングし、ローカルアカウントデータをメインネットと同期し続けます。
| 名前 | 必須 | 型 | 説明 |
|---|---|---|---|
public_key | 必須 | string | ストリーミングするアカウントのpubkey |
include_owned_accounts | 任意 | bool | このアカウントが所有するすべてのアカウントを再帰的にストリーミングするかどうか。デフォルトはfalse |
action "setup" "svm::setup_surfnet" {// Set account balanceset_account {public_key = signer.caller.public_keylamports = 999999999}// Set token balanceset_token_account {public_key = signer.caller.public_keytoken = "usdc"amount = 1000000}// Clone a programclone_program_account {source_program_id = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"destination_program_id = variable.my_program_id}// Set program authorityset_program_authority {program_id = variable.my_program_idauthority = signer.caller.public_key}// Deploy a program directlydeploy_program {program_id = variable.my_program_idbinary_path = "./target/deploy/my_program.so"idl_path = "./target/idl/my_program.json"}// Reset an account to re-fetch from upstreamreset_account {public_key = variable.some_pubkey}// Stream account data from mainnetstream_account {public_key = variable.some_pubkeyinclude_owned_accounts = true}}
Is this page helpful?