Solana documentatieInfrastructure als CodeSVM-add-on

SVM-acties

Deze acties zijn beschikbaar bij gebruik van de SVM-addon voor het bouwen, ondertekenen en uitzenden van transacties.

deploy_program

svm::deploy_program implementeert een Solana-programma op het opgegeven SVM-compatibele netwerk.

Invoer

NameRequiredTypeDescription
descriptionoptionalstringEen beschrijving van de implementatieactie
programrequiredobjectDe Solana-programma-artefacten om te implementeren
payeroptionalstringEen verwijzing naar een ondertekenaar voor het betalen van implementatiekosten
authorityrequiredstringEen verwijzing naar een ondertekenaar voor de programma-autoriteit
commitment_leveloptionalstringHet bevestigingsniveau ('processed', 'confirmed', 'finalized')
auto_extendoptionalboolOf het program account automatisch uitgebreid moet worden (standaard: true)

Uitvoer

NameTypeDescription
signaturesobjectDe berekende transactiehandtekeningen
program_idstringDe programma-ID van het geïmplementeerde programma
program_idlstringDe programma-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

De svm::process_instructions-actie codeert instructies, voegt ze toe aan een transactie, en ondertekent en zendt de transactie uit.

Invoer

NameRequiredTypeDescription
descriptionoptionalstringEen beschrijving van de transactie
instructionrequiredmapDe instructies om aan de transactie toe te voegen
signersrequiredarray[string]Verwijzingen naar ondertekenaarconstructies
commitment_leveloptionalstringHet bevestigingsniveau
rpc_api_urlrequiredstringDe URL voor API-verzoeken

Uitvoer

NaamTypeBeschrijving
signaturestringDe berekende handtekening van de transactie
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

De actie svm::send_sol codeert een transactie die SOL verzendt, ondertekent deze en zendt deze uit naar het netwerk.

Invoer

NaamVereistTypeBeschrijving
descriptionoptioneelstringEen beschrijving van de transactie
amountvereistintegerHet te verzenden bedrag, in lamports
recipientvereiststringHet SVM-adres van de ontvanger
signervereiststringEen verwijzing naar een ondertekenaarconstruct
commitment_leveloptioneelstringHet bevestigingsniveau
rpc_api_urlvereiststringDe URL voor API-verzoeken

Uitvoer

NaamTypeBeschrijving
signaturestringDe berekende handtekening van de transactie
action "send_sol" "svm::send_sol" {
description = "Send some SOL"
amount = svm::sol_to_lamports(1)
signer = signer.caller
recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
}

send_token

De actie svm::send_token codeert een transactie die het opgegeven token verzendt, ondertekent deze en zendt deze uit naar het netwerk.

Invoer

NaamVereistTypeBeschrijving
descriptionoptioneelstringEen beschrijving van de transactie
amountvereistintegerHet te verzenden aantal tokens, in basiseenheid
tokenvereiststringHet adres van de token mint account
recipientvereiststringHet SVM-adres van de ontvanger
authorityoptioneelstringDe pubkey van het gezagsaccount
fund_recipientoptioneelboolMaak en financier recipient token account aan indien nodig
signersvereistarray[string]Verwijzingen naar ondertekenaarconstructs

Uitvoer

NaamTypeBeschrijving
signaturestringDe berekende handtekening van de transactie
recipient_token_addresspubkeyHet adres van het ontvangende token account
source_token_addresspubkeyHet adres van het bron token account
token_mint_addresspubkeyHet adres van de 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 kan worden gebruikt om een surfnet te configureren.

De volgende bewerkingen worden ondersteund:

  • set_account - Stel de lamports, eigenaar, gegevens en uitvoerbare velden van een account in
  • set_token_account - Stel het bedrag, de gedelegeerde, het gedelegeerde bedrag en de sluitingsautoriteit in voor een token account
  • clone_program_account - Kloon een program account van een bron-programma-ID naar een doel-programma-ID
  • set_program_authority - Stel de autoriteit van een programma in
  • deploy_program - Implementeer een programma rechtstreeks op het surfnet (via directe accountschrijving, niet via transacties)
  • reset_account - Reset een account door het uit de lokale cache te verwijderen zodat het opnieuw wordt opgehaald van upstream
  • stream_account - Stream accountgegevens van mainnet zodat lokale gegevens altijd overeenkomen met mainnet

Invoer

NaamVereistTypeBeschrijving
descriptionoptioneelstringEen beschrijving van de instelling
rpc_api_urlvereiststringDe URL voor API-verzoeken

set_account

Stelt accountgegevens rechtstreeks in op het surfnet.

NaamVereistTypeBeschrijving
public_keyvereiststringDe publieke sleutel van het in te stellen account
account_pathoptioneelstringHet pad naar een JSON-bestand met de in te stellen accountgegevens. Indien opgegeven, worden andere velden genegeerd
lamportsoptioneelintegerHet aantal lamports dat het account moet hebben
dataoptioneelbytesDe gegevens die in het account moeten worden ingesteld
owneroptioneelstringDe eigenaar die voor het account moet worden ingesteld
executableoptioneelboolDe uitvoerbaarheidsinstelling voor het account
rent_epochoptioneelintegerDe epoch waarop het account vrijgesteld is van huur

Ten minste één van lamports, data, owner, executable, of rent_epoch moet worden opgegeven (tenzij account_path wordt gebruikt).

set_token_account

Stelt token account-gegevens in op het surfnet. Het associated token account wordt automatisch afgeleid van de publieke sleutel van de eigenaar en de token mint.

NameRequiredTypeDescription
public_keyrequiredstringDe publieke sleutel van het token owner account dat bijgewerkt moet worden
tokenrequiredstringHet tokensymbool (bijv. "usdc", "bonk") of de publieke sleutel voor de token mint
token_programoptionalstringHet token program-ID. Geldige waarden zijn token2020, token2022, of een publieke sleutel (standaard: token2020)
amountoptionalintegerDe hoeveelheid tokens die ingesteld moet worden
delegateoptionalstringDe publieke sleutel van de gedelegeerde die ingesteld moet worden, of null om te wissen
stateoptionalstringDe status van het token account. Geldige waarden zijn initialized, frozen, of uninitialized
delegated_amountoptionalintegerDe hoeveelheid tokens om te delegeren
close_authorityoptionalstringDe publieke sleutel van de sluitingsautoriteit die ingesteld moet worden, of null om te wissen

Ten minste één van amount, delegate, state, delegated_amount, of close_authority moet worden opgegeven.

clone_program_account

Kloont een program account van het ene program-ID naar het andere op het surfnet.

NameRequiredTypeDescription
source_program_idrequiredstringDe publieke sleutel van het te klonen programma
destination_program_idrequiredstringDe bestemmings-publieke sleutel van het programma

set_program_authority

Stelt de upgrade-autoriteit van een programma op het surfnet in of verwijdert deze.

NaamVereistTypeBeschrijving
program_idvereiststringDe pubkey van het programma waarvoor de autoriteit wordt ingesteld
authorityoptioneelstringDe nieuwe autoriteit voor het programma. Indien niet opgegeven, wordt de autoriteit van het programma ingesteld op None (waardoor het onveranderlijk wordt)

deploy_program

Implementeert een programma rechtstreeks op het surfnet via het schrijven van accountgegevens (niet via transacties).

NaamVereistTypeBeschrijving
program_idvereiststringDe pubkey van het programma dat wordt geïmplementeerd
binary_pathvereiststringDe locatie van het .so-bestand van het programma (bijv. ./target/deploy/my_program.so)
authorityoptioneelstringDe pubkey van de autoriteit over het programma nadat het is geïmplementeerd. Indien niet opgegeven, heeft het programma geen autoriteit
idl_pathoptioneelstringDe locatie van het IDL-bestand van het programma (bijv. ./target/idl/my_program.json)

reset_account

Reset een account op het surfnet en verwijdert het uit de lokale cache zodat het opnieuw opgehaald wordt van het bovenliggende netwerk.

NaamVereistTypeBeschrijving
public_keyvereiststringDe pubkey van het account dat gereset moet worden
include_owned_accountsoptioneelboolOf alle accounts die eigendom zijn van dit account recursief verwijderd moeten worden. Standaard is false

stream_account

Streamt accountgegevens van de mainnet RPC URL naar het surfnet, waardoor de lokale accountgegevens gesynchroniseerd blijven met mainnet.

NaamVereistTypeBeschrijving
public_keyvereiststringDe pubkey van het account dat gestreamd moet worden
include_owned_accountsoptioneelboolOf alle accounts die eigendom zijn van dit account recursief gestreamd moeten worden. Standaard is 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?

Inhoudsopgave

Pagina Bewerken
© 2026 Solana Foundation. Alle rechten voorbehouden.