Documentazione SolanaInfrastruttura come codiceSVM Addon

Azioni SVM

Queste azioni sono disponibili quando si utilizza il componente aggiuntivo SVM per la creazione, la firma e la trasmissione delle transazioni.

deploy_program

svm::deploy_program distribuisce un programma Solana sulla rete compatibile con SVM specificata.

Input

NomeObbligatorioTipoDescrizione
descriptionopzionalestringUna descrizione dell'azione di distribuzione
programobbligatorioobjectGli artefatti del programma Solana da distribuire
payeropzionalestringUn riferimento a un firmatario per il pagamento dei costi di distribuzione
authorityobbligatoriostringUn riferimento a un firmatario per l'autorità del programma
commitment_levelopzionalestringIl livello di conferma ('processed', 'confirmed', 'finalized')
auto_extendopzionaleboolSe estendere automaticamente il program account (predefinito: true)

Output

NomeTipoDescrizione
signaturesobjectLe firme della transazione calcolate
program_idstringL'ID del programma distribuito
program_idlstringL'IDL del programma
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

L'azione svm::process_instructions codifica le istruzioni, le aggiunge a una transazione e firma e trasmette la transazione.

Input

NomeObbligatorioTipoDescrizione
descriptionopzionalestringUna descrizione della transazione
instructionobbligatoriomapLe istruzioni da aggiungere alla transazione
signersobbligatorioarray[string]Riferimenti ai costrutti firmatari
commitment_levelopzionalestringIl livello di conferma
rpc_api_urlobbligatoriostringL'URL per le richieste API

Output

NomeTipoDescrizione
signaturestringLa firma calcolata della transazione
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

L'azione svm::send_sol codifica una transazione che invia SOL, la firma e la trasmette alla rete.

Input

NomeObbligatorioTipoDescrizione
descriptionopzionalestringUna descrizione della transazione
amountobbligatoriointegerL'importo da inviare, in lamport
recipientobbligatoriostringL'indirizzo SVM del destinatario
signerobbligatoriostringUn riferimento a un costrutto signer
commitment_levelopzionalestringIl livello di commitment
rpc_api_urlobbligatoriostringL'URL per le richieste API

Output

NomeTipoDescrizione
signaturestringLa firma calcolata della transazione
action "send_sol" "svm::send_sol" {
description = "Send some SOL"
amount = svm::sol_to_lamports(1)
signer = signer.caller
recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
}

send_token

L'azione svm::send_token codifica una transazione che invia il token specificato, la firma e la trasmette alla rete.

Input

NomeObbligatorioTipoDescrizione
descriptionopzionalestringUna descrizione della transazione
amountobbligatoriointegerLa quantità di token da inviare, nell'unità base
tokenobbligatoriostringL'indirizzo del mint account del token
recipientobbligatoriostringL'indirizzo SVM del destinatario
authorityopzionalestringIl pubkey dell'account autorità
fund_recipientopzionaleboolCrea e finanzia il token account del destinatario se necessario
signersobbligatorioarray[string]Riferimenti a costrutti signer

Output

NomeTipoDescrizione
signaturestringLa firma calcolata della transazione
recipient_token_addresspubkeyL'indirizzo del token account destinatario
source_token_addresspubkeyL'indirizzo del token account sorgente
token_mint_addresspubkeyL'indirizzo del token mint
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 può essere utilizzato per configurare una surfnet.

Sono supportate le seguenti operazioni:

  • set_account - Imposta i lamport, il proprietario, i dati e i campi eseguibili di un account
  • set_token_account - Imposta l'importo, il delegato, l'importo delegato e l'autorità di chiusura per un token account
  • clone_program_account - Clona un program account da un ID programma sorgente a un ID programma destinazione
  • set_program_authority - Imposta l'autorità di un programma
  • deploy_program - Distribuisce un programma direttamente sulla surfnet (tramite scrittura diretta dell'account, non tramite transazioni)
  • reset_account - Reimposta un account, rimuovendolo dalla cache locale per essere recuperato nuovamente dall'upstream
  • stream_account - Trasmette i dati dell'account dalla mainnet in modo che i dati locali corrispondano sempre alla mainnet

Input

NomeObbligatorioTipoDescrizione
descriptionfacoltativostringUna descrizione della configurazione
rpc_api_urlobbligatoriostringL'URL per le richieste API

set_account

Imposta i dati dell'account direttamente sulla surfnet.

NomeObbligatorioTipoDescrizione
public_keyobbligatoriostringLa chiave pubblica dell'account da impostare
account_pathfacoltativostringIl percorso di un file JSON contenente i dati dell'account da impostare. Se fornito, gli altri campi vengono ignorati
lamportsfacoltativointegerLa quantità di lamport che l'account deve avere
datafacoltativobytesI dati da impostare nell'account
ownerfacoltativostringIl proprietario da impostare per l'account
executablefacoltativoboolLo stato di eseguibilità da impostare per l'account
rent_epochfacoltativointegerL'epoch in cui l'account sarà esente dall'affitto

Almeno uno tra lamports, data, owner, executable o rent_epoch deve essere fornito (a meno che non si utilizzi account_path).

set_token_account

Imposta i dati del token account sul surfnet. L'associated token account viene derivato automaticamente dalla chiave pubblica del proprietario e dal token mint.

NameRequiredTypeDescription
public_keyrequiredstringLa chiave pubblica dell'account proprietario del token da aggiornare
tokenrequiredstringIl simbolo del token (es. "usdc", "bonk") o la chiave pubblica per il token mint
token_programoptionalstringL'ID del Token Program. I valori validi sono token2020, token2022 o una chiave pubblica (predefinito: token2020)
amountoptionalintegerLa quantità di token da impostare
delegateoptionalstringLa chiave pubblica del delegato da impostare, o null per rimuoverlo
stateoptionalstringLo stato del token account. I valori validi sono initialized, frozen o uninitialized
delegated_amountoptionalintegerLa quantità di token da delegare
close_authorityoptionalstringLa chiave pubblica dell'autorità di chiusura da impostare, o null per rimuoverla

Almeno uno tra amount, delegate, state, delegated_amount o close_authority deve essere fornito.

clone_program_account

Clona un program account da un ID programma a un altro sul surfnet.

NameRequiredTypeDescription
source_program_idrequiredstringLa chiave pubblica del programma da clonare
destination_program_idrequiredstringLa chiave pubblica di destinazione del programma

set_program_authority

Imposta o rimuove l'autorità di aggiornamento di un programma sulla surfnet.

NomeObbligatorioTipoDescrizione
program_idobbligatoriostringLa pubkey del programma per cui impostare l'autorità
authorityfacoltativostringLa nuova autorità per il programma. Se non fornita, l'autorità del programma verrà impostata su None (rendendolo immutabile)

deploy_program

Distribuisce un programma direttamente sulla surfnet tramite scrittura dei dati dell'account (non tramite transazioni).

NomeObbligatorioTipoDescrizione
program_idobbligatoriostringLa pubkey del programma in fase di distribuzione
binary_pathobbligatoriostringIl percorso del file .so del programma (es., ./target/deploy/my_program.so)
authorityfacoltativostringLa pubkey dell'autorità sul programma dopo la distribuzione. Se non fornita, il programma non avrà alcuna autorità
idl_pathfacoltativostringIl percorso del file IDL del programma (es., ./target/idl/my_program.json)

reset_account

Reimposta un account sulla surfnet, rimuovendolo dalla cache locale in modo che venga recuperato nuovamente dalla rete upstream.

NomeObbligatorioTipoDescrizione
public_keyobbligatoriostringLa pubkey dell'account da reimpostare
include_owned_accountsfacoltativoboolSe eliminare ricorsivamente tutti gli account di proprietà di questo account. Il valore predefinito è false

stream_account

Trasmette i dati dell'account dall'URL RPC della mainnet alla surfnet, mantenendo i dati dell'account locale sincronizzati con la mainnet.

NomeObbligatorioTipoDescrizione
public_keyobbligatoriostringLa chiave pubblica dell'account da trasmettere
include_owned_accountsopzionaleboolSe trasmettere ricorsivamente tutti gli account di proprietà di questo account. Il valore predefinito è 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?

Indice dei contenuti

Modifica pagina
© 2026 Solana Foundation. Tutti i diritti riservati.