SolanaドキュメントInfrastructure as CodeSVM アドオン

SVMアクション

これらのアクションは、トランザクションの構築、署名、およびブロードキャストに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任意boolprogram accountを自動拡張するかどうか(デフォルト: true)

出力

名前説明
signaturesobject計算されたトランザクション署名
program_idstringデプロイされたプログラムのプログラムID
program_idlstringプログラムIDL
action "deploy" "svm::deploy_program" {
description = "Deploy hello world program"
program = svm::get_program_from_anchor_project("hello_world")
authority = signer.authority
payer = 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必須stringAPIリクエスト用URL

出力

名前説明
signaturestringトランザクションの計算済み署名
action "program_call" "svm::process_instructions" {
description = "Invoke instructions"
instruction {
program_idl = variable.program.idl
instruction_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必須stringAPI リクエスト用 URL

出力

名前説明
signaturestringトランザクションの計算済み署名
action "send_sol" "svm::send_sol" {
description = "Send some SOL"
amount = svm::sol_to_lamports(1)
signer = signer.caller
recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
}

send_token

svm::send_token アクションは、指定されたトークンを送信するトランザクションをエンコードし、署名してネットワークにブロードキャストします。

入力

名前必須説明
description任意stringトランザクションの説明
amount必須integer送信するトークンの量(基本単位)
token必須stringtoken mint account のアドレス
recipient必須string受信者の SVM アドレス
authority任意stringオーソリティアカウントの pubkey
fund_recipient任意bool必要に応じて受信者の token account を作成・資金供給する
signers必須array[string]署名者コンストラクトへの参照

出力

名前説明
signaturestringトランザクションの計算済み署名
recipient_token_addresspubkey受信先token accountアドレス
source_token_addresspubkey送信元token accountアドレス
token_mint_addresspubkeyトークンミントアドレス
action "send_sol" "svm::send_token" {
description = "Send some tokens"
amount = 1000000
signers = [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必須stringAPIリクエスト用のURL

set_account

surfnet上でアカウントデータを直接設定します。

名前必須説明
public_key必須string設定するアカウントの公開鍵
account_path任意string設定するアカウントデータを含むJSONファイルへのパス。指定した場合、他のフィールドは無視されます
lamports任意integerアカウントに設定するlamportの量
data任意bytesアカウントに設定するデータ
owner任意stringアカウントに設定するオーナー
executable任意boolアカウントに設定する実行可能状態
rent_epoch任意integerアカウントがレント免除となるepoch

lamportsdataownerexecutable、または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。有効な値はtoken2020token2022、または公開鍵です(デフォルト:token2020
amount任意integer設定するトークンの数量
delegate任意string設定するデリゲートの公開鍵、またはクリアする場合はnull
state任意stringtoken accountの状態。有効な値はinitializedfrozen、またはuninitializedです
delegated_amount任意integer委任するトークンの数量
close_authority任意string設定するクローズ権限の公開鍵、またはクリアする場合はnull

amountdelegatestatedelegated_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 balance
set_account {
public_key = signer.caller.public_key
lamports = 999999999
}
// Set token balance
set_token_account {
public_key = signer.caller.public_key
token = "usdc"
amount = 1000000
}
// Clone a program
clone_program_account {
source_program_id = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
destination_program_id = variable.my_program_id
}
// Set program authority
set_program_authority {
program_id = variable.my_program_id
authority = signer.caller.public_key
}
// Deploy a program directly
deploy_program {
program_id = variable.my_program_id
binary_path = "./target/deploy/my_program.so"
idl_path = "./target/idl/my_program.json"
}
// Reset an account to re-fetch from upstream
reset_account {
public_key = variable.some_pubkey
}
// Stream account data from mainnet
stream_account {
public_key = variable.some_pubkey
include_owned_accounts = true
}
}

Is this page helpful?

目次

ページを編集
© 2026 Solana Foundation. 無断転載を禁じます。