Dokumentasi SolanaInfrastruktur sebagai KodeSVM Addon

Aksi SVM

Aksi-aksi ini tersedia saat menggunakan addon SVM untuk pembangunan transaksi, penandatanganan, dan penyiaran.

deploy_program

svm::deploy_program menggunakan program Solana ke jaringan yang kompatibel dengan SVM yang ditentukan.

Input

NamaWajibTipeDeskripsi
descriptionopsionalstringDeskripsi dari aksi deployment
programwajibobjectArtefak program Solana yang akan di-deploy
payeropsionalstringReferensi ke penanda tangan untuk membayar biaya deployment
authoritywajibstringReferensi ke penanda tangan untuk otoritas program
commitment_levelopsionalstringTingkat komitmen ('processed', 'confirmed', 'finalized')
auto_extendopsionalboolApakah akan memperluas program account secara otomatis (default: true)

Output

NamaTipeDeskripsi
signaturesobjectTanda tangan transaksi yang telah dihitung
program_idstringID program dari program yang telah di-deploy
program_idlstringIDL program
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

Aksi svm::process_instructions mengodekan instruksi, menambahkannya ke dalam transaksi, serta menandatangani & menyiarkan transaksi tersebut.

Input

NamaWajibTipeDeskripsi
descriptionopsionalstringDeskripsi dari transaksi
instructionwajibmapInstruksi yang akan ditambahkan ke transaksi
signerswajibarray[string]Referensi ke konstruk penanda tangan
commitment_levelopsionalstringTingkat komitmen
rpc_api_urlwajibstringURL untuk permintaan API

Output

NameTypeDescription
signaturestringTanda tangan yang dihitung dari transaksi
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

Aksi svm::send_sol mengenkode transaksi yang mengirim SOL, menandatanganinya, dan menyiarkannya ke jaringan.

Input

NameRequiredTypeDescription
descriptionoptionalstringDeskripsi transaksi
amountrequiredintegerJumlah yang dikirim, dalam lamport
recipientrequiredstringAlamat SVM penerima
signerrequiredstringReferensi ke konstruk penanda tangan
commitment_leveloptionalstringTingkat komitmen
rpc_api_urlrequiredstringURL untuk permintaan API

Output

NameTypeDescription
signaturestringTanda tangan yang dihitung dari transaksi
action "send_sol" "svm::send_sol" {
description = "Send some SOL"
amount = svm::sol_to_lamports(1)
signer = signer.caller
recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
}

send_token

Aksi svm::send_token mengenkode transaksi yang mengirim token yang ditentukan, menandatanganinya, dan menyiarkannya ke jaringan.

Input

NameRequiredTypeDescription
descriptionoptionalstringDeskripsi transaksi
amountrequiredintegerJumlah token yang dikirim, dalam satuan dasar
tokenrequiredstringAlamat mint account token
recipientrequiredstringAlamat SVM penerima
authorityoptionalstringpubkey dari akun otoritas
fund_recipientoptionalboolBuat dan danai token account penerima jika diperlukan
signersrequiredarray[string]Referensi ke konstruk penanda tangan

Output

NamaTipeDeskripsi
signaturestringTanda tangan yang dihitung dari transaksi
recipient_token_addresspubkeyAlamat token account penerima
source_token_addresspubkeyAlamat token account sumber
token_mint_addresspubkeyAlamat mint token
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 dapat digunakan untuk mengonfigurasi surfnet.

Operasi berikut didukung:

  • set_account - Mengatur lamport, pemilik, data, dan kolom executability dari suatu akun
  • set_token_account - Mengatur jumlah, delegasi, jumlah yang didelegasikan, dan otoritas penutupan untuk suatu token account
  • clone_program_account - Mengkloning program account dari ID program sumber ke ID program tujuan
  • set_program_authority - Mengatur otoritas suatu program
  • deploy_program - Men-deploy program langsung ke surfnet (melalui penulisan akun langsung, bukan transaksi)
  • reset_account - Mereset suatu akun, menghapusnya dari cache lokal untuk diambil ulang dari upstream
  • stream_account - Melakukan streaming data akun dari mainnet agar data lokal selalu sesuai dengan mainnet

Input

NamaDiperlukanTipeDeskripsi
descriptionopsionalstringDeskripsi pengaturan
rpc_api_urldiperlukanstringURL untuk permintaan API

set_account

Mengatur data akun secara langsung pada surfnet.

NamaDiperlukanTipeDeskripsi
public_keydiperlukanstringKunci publik dari akun yang akan diatur
account_pathopsionalstringJalur ke file JSON yang berisi data akun yang akan diatur. Jika disediakan, kolom lainnya diabaikan
lamportsopsionalintegerJumlah lamport yang harus dimiliki akun
dataopsionalbytesData yang akan diatur dalam akun
owneropsionalstringPemilik yang akan diatur untuk akun
executableopsionalboolStatus executability yang akan diatur untuk akun
rent_epochopsionalintegerEpoch saat akun akan bebas sewa

Setidaknya salah satu dari lamports, data, owner, executable, atau rent_epoch harus disediakan (kecuali menggunakan account_path).

set_token_account

Mengatur data token account pada surfnet. associated token account secara otomatis diturunkan dari kunci publik pemilik dan token mint.

NameRequiredTypeDescription
public_keyrequiredstringKunci publik dari akun pemilik token yang akan diperbarui
tokenrequiredstringSimbol token (mis., "usdc", "bonk") atau kunci publik untuk token mint
token_programoptionalstringID Token Program. Nilai yang valid adalah token2020, token2022, atau kunci publik (default: token2020)
amountoptionalintegerJumlah token yang akan diatur
delegateoptionalstringKunci publik dari delegasi yang akan diatur, atau null untuk menghapus
stateoptionalstringStatus token account. Nilai yang valid adalah initialized, frozen, atau uninitialized
delegated_amountoptionalintegerJumlah token yang akan didelegasikan
close_authorityoptionalstringKunci publik dari otoritas penutupan yang akan diatur, atau null untuk menghapus

Setidaknya salah satu dari amount, delegate, state, delegated_amount, atau close_authority harus disediakan.

clone_program_account

Mengkloning program account dari satu ID program ke ID program lain pada surfnet.

NameRequiredTypeDescription
source_program_idrequiredstringKunci publik dari program yang akan dikloning
destination_program_idrequiredstringKunci publik tujuan dari program

set_program_authority

Mengatur atau menghapus otoritas peningkatan program di surfnet.

NameRequiredTypeDescription
program_idrequiredstringpubkey dari program yang akan ditetapkan otoritasnya
authorityoptionalstringOtoritas baru untuk program. Jika tidak disediakan, otoritas program akan diatur ke None (menjadikannya tidak dapat diubah)

deploy_program

Men-deploy program langsung ke surfnet melalui penulisan data akun (bukan melalui transaksi).

NameRequiredTypeDescription
program_idrequiredstringpubkey dari program yang sedang di-deploy
binary_pathrequiredstringLokasi file .so program (mis., ./target/deploy/my_program.so)
authorityoptionalstringpubkey dari otoritas atas program setelah di-deploy. Jika tidak disediakan, program tidak akan memiliki otoritas
idl_pathoptionalstringLokasi file IDL program (mis., ./target/idl/my_program.json)

reset_account

Mereset akun di surfnet, menghapusnya dari cache lokal sehingga akan diambil ulang dari jaringan upstream.

NameRequiredTypeDescription
public_keyrequiredstringpubkey dari akun yang akan direset
include_owned_accountsoptionalboolApakah akan menghapus secara rekursif semua akun yang dimiliki oleh akun ini. Default-nya adalah false

stream_account

Melakukan streaming data akun dari URL RPC mainnet ke surfnet, menjaga data akun lokal tetap sinkron dengan mainnet.

NameRequiredTypeDescription
public_keyrequiredstringKunci publik dari akun yang akan di-stream
include_owned_accountsoptionalboolApakah akan melakukan streaming secara rekursif semua akun yang dimiliki oleh akun ini. Default-nya adalah 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?

Daftar Isi

Edit Halaman
© 2026 Yayasan Solana. Semua hak dilindungi.