Solana-DokumentationInfrastructure as CodeSVM Addon

SVM-Aktionen

Diese Aktionen sind verfügbar, wenn das SVM-Addon für die Erstellung, das Signieren und das Übertragen von Transaktionen verwendet wird.

deploy_program

svm::deploy_program stellt ein Solana-Programm im angegebenen SVM-kompatiblen Netzwerk bereit.

Eingaben

NameErforderlichTypBeschreibung
descriptionoptionalstringEine Beschreibung der Deployment-Aktion
programerforderlichobjectDie Solana-Programmartefakte für das Deployment
payeroptionalstringEin Verweis auf einen Signer zur Deckung der Deployment-Kosten
authorityerforderlichstringEin Verweis auf einen Signer für die Programmautorität
commitment_leveloptionalstringDie Commitment-Stufe ('processed', 'confirmed', 'finalized')
auto_extendoptionalboolOb das program account automatisch erweitert werden soll (Standard: true)

Ausgaben

NameTypBeschreibung
signaturesobjectDie berechneten Transaktionssignaturen
program_idstringDie Programm-ID des bereitgestellten Programms
program_idlstringDie Programm-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

Die Aktion svm::process_instructions kodiert Anweisungen, fügt sie einer Transaktion hinzu und signiert & überträgt die Transaktion.

Eingaben

NameErforderlichTypBeschreibung
descriptionoptionalstringEine Beschreibung der Transaktion
instructionerforderlichmapDie Anweisungen, die der Transaktion hinzugefügt werden
signerserforderlicharray[string]Verweise auf Signer-Konstrukte
commitment_leveloptionalstringDie Commitment-Stufe
rpc_api_urlerforderlichstringDie URL für API-Anfragen

Ausgaben

NameTypBeschreibung
signaturestringDie berechnete Signatur der Transaktion
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

Die Aktion svm::send_sol kodiert eine Transaktion, die SOL sendet, signiert sie und überträgt sie an das Netzwerk.

Eingaben

NameErforderlichTypBeschreibung
descriptionoptionalstringEine Beschreibung der Transaktion
amounterforderlichintegerDer zu sendende Betrag in lamports
recipienterforderlichstringDie SVM-Adresse des Empfängers
signererforderlichstringEin Verweis auf ein Signer-Konstrukt
commitment_leveloptionalstringDas Commitment-Level
rpc_api_urlerforderlichstringDie URL für API-Anfragen

Ausgaben

NameTypBeschreibung
signaturestringDie berechnete Signatur der Transaktion
action "send_sol" "svm::send_sol" {
description = "Send some SOL"
amount = svm::sol_to_lamports(1)
signer = signer.caller
recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
}

send_token

Die Aktion svm::send_token kodiert eine Transaktion, die den angegebenen Token sendet, signiert sie und überträgt sie an das Netzwerk.

Eingaben

NameErforderlichTypBeschreibung
descriptionoptionalstringEine Beschreibung der Transaktion
amounterforderlichintegerDie zu sendende Token-Menge in der Basiseinheit
tokenerforderlichstringDie Adresse des token mint account
recipienterforderlichstringDie SVM-Adresse des Empfängers
authorityoptionalstringDer pubkey des Autoritäts-Konten
fund_recipientoptionalboolEmpfänger-token account erstellen und finanzieren, falls nötig
signerserforderlicharray[string]Verweise auf Signer-Konstrukte

Ausgaben

NameTypeBeschreibung
signaturestringDie berechnete Signatur der Transaktion
recipient_token_addresspubkeyDie Adresse des Empfänger-token account
source_token_addresspubkeyDie Adresse des Quell-token account
token_mint_addresspubkeyDie Token-Mint-Adresse
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 kann verwendet werden, um ein Surfnet zu konfigurieren.

Die folgenden Operationen werden unterstützt:

  • set_account - Setzt die lamport-, Eigentümer-, Daten- und ausführbaren Felder eines Konten
  • set_token_account - Setzt den Betrag, den Delegierten, den delegierten Betrag und die Schließberechtigung für ein token account
  • clone_program_account - Klont ein program account von einer Quell-Programm-ID zu einer Ziel-Programm-ID
  • set_program_authority - Setzt die Berechtigung eines Programms
  • deploy_program - Deployt ein Programm direkt auf das Surfnet (via direktem Konten-Schreibzugriff, nicht über Transaktionen)
  • reset_account - Setzt ein Konten zurück und entfernt es aus dem lokalen Cache, damit es erneut vom Upstream abgerufen werden kann
  • stream_account - Streamt Konten-Daten vom Mainnet, sodass lokale Daten immer mit dem Mainnet übereinstimmen

Eingaben

NameErforderlichTypeBeschreibung
descriptionoptionalstringEine Beschreibung des Setups
rpc_api_urlerforderlichstringDie URL für API-Anfragen

set_account

Setzt Konten-Daten direkt auf dem Surfnet.

NameErforderlichTypeBeschreibung
public_keyerforderlichstringDer öffentliche Schlüssel des zu setzenden Konten
account_pathoptionalstringDer Pfad zu einer JSON-Datei mit den zu setzenden Konten-Daten. Falls angegeben, werden andere Felder ignoriert
lamportsoptionalintegerDie Anzahl der lamports, auf die das Konten gesetzt werden soll
dataoptionalbytesDie im Konten zu setzenden Daten
owneroptionalstringDer für das Konten zu setzende Eigentümer
executableoptionalboolDer für das Konten zu setzende Ausführbarkeitsstatus
rent_epochoptionalintegerDie epoch, bei der das Konten mietfrei ist

Mindestens eines von lamports, data, owner, executable oder rent_epoch muss angegeben werden (außer bei Verwendung von account_path).

set_token_account

Setzt token account-Daten im Surfnet. Der associated token account wird automatisch aus dem öffentlichen Schlüssel des Eigentümers und dem Token-Mint abgeleitet.

NameErforderlichTypBeschreibung
public_keyerforderlichstringDer öffentliche Schlüssel des Token-Eigentümer-Konten, das aktualisiert werden soll
tokenerforderlichstringDas Token-Symbol (z. B. "usdc", "bonk") oder der öffentliche Schlüssel für den Token-Mint
token_programoptionalstringDie Token Program-ID. Gültige Werte sind token2020, token2022 oder ein öffentlicher Schlüssel (Standard: token2020)
amountoptionalintegerDie Anzahl der zu setzenden Token
delegateoptionalstringDer öffentliche Schlüssel des zu setzenden Delegierten oder null zum Löschen
stateoptionalstringDer Status des token account. Gültige Werte sind initialized, frozen oder uninitialized
delegated_amountoptionalintegerDie Anzahl der zu delegierenden Token
close_authorityoptionalstringDer öffentliche Schlüssel der zu setzenden Abschluss-Autorität oder null zum Löschen

Mindestens eines von amount, delegate, state, delegated_amount oder close_authority muss angegeben werden.

clone_program_account

Klont ein program account von einer Programm-ID zu einer anderen im Surfnet.

NameErforderlichTypBeschreibung
source_program_iderforderlichstringDer öffentliche Schlüssel des zu klonenden Programms
destination_program_iderforderlichstringDer Ziel-öffentliche Schlüssel des Programms

set_program_authority

Legt die Upgrade-Authority eines Programms im Surfnet fest oder entfernt sie.

NameErforderlichTypBeschreibung
program_iderforderlichstringDer pubkey des Programms, für das die Upgrade-Authority festgelegt werden soll
authorityoptionalstringDie neue Upgrade-Authority für das Programm. Wenn nicht angegeben, wird die Upgrade-Authority des Programms auf None gesetzt (macht es unveränderlich)

deploy_program

Stellt ein Programm direkt im Surfnet über das Schreiben von Kontendaten bereit (nicht über Transaktionen).

NameErforderlichTypBeschreibung
program_iderforderlichstringDer pubkey des bereitzustellenden Programms
binary_patherforderlichstringDer Speicherort der .so-Datei des Programms (z. B. ./target/deploy/my_program.so)
authorityoptionalstringDer pubkey der Upgrade-Authority über das Programm nach der Bereitstellung. Wenn nicht angegeben, hat das Programm keine Upgrade-Authority
idl_pathoptionalstringDer Speicherort der IDL-Datei des Programms (z. B. ./target/idl/my_program.json)

reset_account

Setzt ein Konten im Surfnet zurück und entfernt es aus dem lokalen Cache, sodass es erneut vom Upstream-Netzwerk abgerufen wird.

NameErforderlichTypBeschreibung
public_keyerforderlichstringDer pubkey des zurückzusetzenden Konten
include_owned_accountsoptionalboolOb alle Konten, die diesem Konten gehören, rekursiv gelöscht werden sollen. Standardwert ist false

stream_account

Streamt Kontodaten von der Mainnet-RPC-URL zum Surfnet und hält die lokalen Konten-Daten mit dem Mainnet synchron.

NameErforderlichTypBeschreibung
public_keyerforderlichstringDer öffentliche Schlüssel (pubkey) des zu streamenden Konten
include_owned_accountsoptionalboolOb alle Konten, die diesem Konten gehören, rekursiv gestreamt werden sollen. Standard ist 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?

Inhaltsverzeichnis

Seite bearbeiten
© 2026 Solana Foundation. Alle Rechte vorbehalten.