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
| Nome | Obbligatorio | Tipo | Descrizione |
|---|---|---|---|
description | opzionale | string | Una descrizione dell'azione di distribuzione |
program | obbligatorio | object | Gli artefatti del programma Solana da distribuire |
payer | opzionale | string | Un riferimento a un firmatario per il pagamento dei costi di distribuzione |
authority | obbligatorio | string | Un riferimento a un firmatario per l'autorità del programma |
commitment_level | opzionale | string | Il livello di conferma ('processed', 'confirmed', 'finalized') |
auto_extend | opzionale | bool | Se estendere automaticamente il program account (predefinito: true) |
Output
| Nome | Tipo | Descrizione |
|---|---|---|
signatures | object | Le firme della transazione calcolate |
program_id | string | L'ID del programma distribuito |
program_idl | string | L'IDL del programma |
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
L'azione svm::process_instructions codifica le istruzioni, le aggiunge a una
transazione e firma e trasmette la transazione.
Input
| Nome | Obbligatorio | Tipo | Descrizione |
|---|---|---|---|
description | opzionale | string | Una descrizione della transazione |
instruction | obbligatorio | map | Le istruzioni da aggiungere alla transazione |
signers | obbligatorio | array[string] | Riferimenti ai costrutti firmatari |
commitment_level | opzionale | string | Il livello di conferma |
rpc_api_url | obbligatorio | string | L'URL per le richieste API |
Output
| Nome | Tipo | Descrizione |
|---|---|---|
signature | string | La firma calcolata della transazione |
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
L'azione svm::send_sol codifica una transazione che invia SOL, la firma e la
trasmette alla rete.
Input
| Nome | Obbligatorio | Tipo | Descrizione |
|---|---|---|---|
description | opzionale | string | Una descrizione della transazione |
amount | obbligatorio | integer | L'importo da inviare, in lamport |
recipient | obbligatorio | string | L'indirizzo SVM del destinatario |
signer | obbligatorio | string | Un riferimento a un costrutto signer |
commitment_level | opzionale | string | Il livello di commitment |
rpc_api_url | obbligatorio | string | L'URL per le richieste API |
Output
| Nome | Tipo | Descrizione |
|---|---|---|
signature | string | La firma calcolata della transazione |
action "send_sol" "svm::send_sol" {description = "Send some SOL"amount = svm::sol_to_lamports(1)signer = signer.callerrecipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"}
send_token
L'azione svm::send_token codifica una transazione che invia il token
specificato, la firma e la trasmette alla rete.
Input
| Nome | Obbligatorio | Tipo | Descrizione |
|---|---|---|---|
description | opzionale | string | Una descrizione della transazione |
amount | obbligatorio | integer | La quantità di token da inviare, nell'unità base |
token | obbligatorio | string | L'indirizzo del mint account del token |
recipient | obbligatorio | string | L'indirizzo SVM del destinatario |
authority | opzionale | string | Il pubkey dell'account autorità |
fund_recipient | opzionale | bool | Crea e finanzia il token account del destinatario se necessario |
signers | obbligatorio | array[string] | Riferimenti a costrutti signer |
Output
| Nome | Tipo | Descrizione |
|---|---|---|
signature | string | La firma calcolata della transazione |
recipient_token_address | pubkey | L'indirizzo del token account destinatario |
source_token_address | pubkey | L'indirizzo del token account sorgente |
token_mint_address | pubkey | L'indirizzo del token mint |
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 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 accountset_token_account- Imposta l'importo, il delegato, l'importo delegato e l'autorità di chiusura per un token accountclone_program_account- Clona un program account da un ID programma sorgente a un ID programma destinazioneset_program_authority- Imposta l'autorità di un programmadeploy_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'upstreamstream_account- Trasmette i dati dell'account dalla mainnet in modo che i dati locali corrispondano sempre alla mainnet
Input
| Nome | Obbligatorio | Tipo | Descrizione |
|---|---|---|---|
description | facoltativo | string | Una descrizione della configurazione |
rpc_api_url | obbligatorio | string | L'URL per le richieste API |
set_account
Imposta i dati dell'account direttamente sulla surfnet.
| Nome | Obbligatorio | Tipo | Descrizione |
|---|---|---|---|
public_key | obbligatorio | string | La chiave pubblica dell'account da impostare |
account_path | facoltativo | string | Il percorso di un file JSON contenente i dati dell'account da impostare. Se fornito, gli altri campi vengono ignorati |
lamports | facoltativo | integer | La quantità di lamport che l'account deve avere |
data | facoltativo | bytes | I dati da impostare nell'account |
owner | facoltativo | string | Il proprietario da impostare per l'account |
executable | facoltativo | bool | Lo stato di eseguibilità da impostare per l'account |
rent_epoch | facoltativo | integer | L'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.
| Name | Required | Type | Description |
|---|---|---|---|
public_key | required | string | La chiave pubblica dell'account proprietario del token da aggiornare |
token | required | string | Il simbolo del token (es. "usdc", "bonk") o la chiave pubblica per il token mint |
token_program | optional | string | L'ID del Token Program. I valori validi sono token2020, token2022 o una chiave pubblica (predefinito: token2020) |
amount | optional | integer | La quantità di token da impostare |
delegate | optional | string | La chiave pubblica del delegato da impostare, o null per rimuoverlo |
state | optional | string | Lo stato del token account. I valori validi sono initialized, frozen o uninitialized |
delegated_amount | optional | integer | La quantità di token da delegare |
close_authority | optional | string | La 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.
| Name | Required | Type | Description |
|---|---|---|---|
source_program_id | required | string | La chiave pubblica del programma da clonare |
destination_program_id | required | string | La chiave pubblica di destinazione del programma |
set_program_authority
Imposta o rimuove l'autorità di aggiornamento di un programma sulla surfnet.
| Nome | Obbligatorio | Tipo | Descrizione |
|---|---|---|---|
program_id | obbligatorio | string | La pubkey del programma per cui impostare l'autorità |
authority | facoltativo | string | La 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).
| Nome | Obbligatorio | Tipo | Descrizione |
|---|---|---|---|
program_id | obbligatorio | string | La pubkey del programma in fase di distribuzione |
binary_path | obbligatorio | string | Il percorso del file .so del programma (es., ./target/deploy/my_program.so) |
authority | facoltativo | string | La pubkey dell'autorità sul programma dopo la distribuzione. Se non fornita, il programma non avrà alcuna autorità |
idl_path | facoltativo | string | Il 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.
| Nome | Obbligatorio | Tipo | Descrizione |
|---|---|---|---|
public_key | obbligatorio | string | La pubkey dell'account da reimpostare |
include_owned_accounts | facoltativo | bool | Se 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.
| Nome | Obbligatorio | Tipo | Descrizione |
|---|---|---|---|
public_key | obbligatorio | string | La chiave pubblica dell'account da trasmettere |
include_owned_accounts | opzionale | bool | Se trasmettere ricorsivamente tutti gli account di proprietà di questo account. Il valore predefinito è 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?