Τεκμηρίωση SolanaΥποδομή ως ΚώδικαςSVM Addon

Ενέργειες SVM

Αυτές οι ενέργειες είναι διαθέσιμες κατά τη χρήση του πρόσθετου SVM για δημιουργία συναλλαγών, υπογραφή και μετάδοση.

deploy_program

svm::deploy_program αναπτύσσει ένα πρόγραμμα Solana στο καθορισμένο δίκτυο συμβατό με SVM.

Εισόδοι

NameRequiredTypeDescription
descriptionoptionalstringΜια περιγραφή της ενέργειας ανάπτυξης
programrequiredobjectΤα αρχεία προγράμματος Solana προς ανάπτυξη
payeroptionalstringΑναφορά σε υπογράφοντα για την κάλυψη κόστους ανάπτυξης
authorityrequiredstringΑναφορά σε υπογράφοντα για την εξουσιοδότηση προγράμματος
commitment_leveloptionalstringΤο επίπεδο δέσμευσης ('processed', 'confirmed', 'finalized')
auto_extendoptionalboolΕάν θα επεκταθεί αυτόματα το program account (προεπιλογή: true)

Έξοδοι

NameTypeDescription
signaturesobjectΟι υπολογισμένες υπογραφές συναλλαγής
program_idstringΤο αναγνωριστικό του αναπτυγμένου προγράμματος
program_idlstringΤο 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

Η ενέργεια svm::process_instructions κωδικοποιεί οδηγίες, τις προσθέτει σε μια συναλλαγή και υπογράφει και μεταδίδει τη συναλλαγή.

Εισόδοι

NameRequiredTypeDescription
descriptionoptionalstringΜια περιγραφή της συναλλαγής
instructionrequiredmapΟι οδηγίες προς προσθήκη στη συναλλαγή
signersrequiredarray[string]Αναφορές σε κατασκευές υπογραφόντων
commitment_leveloptionalstringΤο επίπεδο δέσμευσης
rpc_api_urlrequiredstringΗ URL για αιτήματα API

Έξοδοι

ΌνομαΤύποςΠεριγραφή
signaturestringΗ υπολογισμένη υπογραφή της συναλλαγής
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

Η ενέργεια svm::send_sol κωδικοποιεί μια συναλλαγή που αποστέλλει SOL, την υπογράφει και την μεταδίδει στο δίκτυο.

Είσοδοι

ΌνομαΑπαιτείταιΤύποςΠεριγραφή
descriptionπροαιρετικόstringΜια περιγραφή της συναλλαγής
amountαπαιτείταιintegerΤο ποσό προς αποστολή, σε lamports
recipientαπαιτείταιstringΗ διεύθυνση SVM του παραλήπτη
signerαπαιτείταιstringΑναφορά σε ένα κατασκεύασμα υπογράφοντα
commitment_levelπροαιρετικόstringΤο επίπεδο δέσμευσης
rpc_api_urlαπαιτείταιstringΤο URL για αιτήματα API

Έξοδοι

ΌνομαΤύποςΠεριγραφή
signaturestringΗ υπολογισμένη υπογραφή της συναλλαγής
action "send_sol" "svm::send_sol" {
description = "Send some SOL"
amount = svm::sol_to_lamports(1)
signer = signer.caller
recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
}

send_token

Η ενέργεια svm::send_token κωδικοποιεί μια συναλλαγή που αποστέλλει το καθορισμένο token, το υπογράφει και το μεταδίδει στο δίκτυο.

Είσοδοι

ΌνομαΑπαιτείταιΤύποςΠεριγραφή
descriptionπροαιρετικόstringΜια περιγραφή της συναλλαγής
amountαπαιτείταιintegerΤο ποσό των tokens προς αποστολή, σε βασική μονάδα
tokenαπαιτείταιstringΗ διεύθυνση του token mint account
recipientαπαιτείταιstringΗ διεύθυνση SVM του παραλήπτη
authorityπροαιρετικόstringΤο pubkey του λογαριασμού εξουσιοδότησης
fund_recipientπροαιρετικόboolΔημιουργία και χρηματοδότηση του token account παραλήπτη αν χρειάζεται
signersαπαιτείταιarray[string]Αναφορές σε κατασκευάσματα υπογραφόντων

Έξοδοι

ΌνομαΤύποςΠεριγραφή
signaturestringΗ υπολογισμένη υπογραφή της συναλλαγής
recipient_token_addresspubkeyΗ διεύθυνση του token account του παραλήπτη
source_token_addresspubkeyΗ διεύθυνση του token account πηγής
token_mint_addresspubkeyΗ διεύθυνση του 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 μπορεί να χρησιμοποιηθεί για τη ρύθμιση ενός surfnet.

Υποστηρίζονται οι ακόλουθες λειτουργίες:

  • set_account - Ορισμός των πεδίων lamports, owner, data και executable ενός λογαριασμού
  • set_token_account - Ορισμός του ποσού, του delegate, του delegated amount και της close authority για ένα token account
  • clone_program_account - Κλωνοποίηση ενός program account από ένα ID προγράμματος πηγής σε ένα ID προγράμματος προορισμού
  • set_program_authority - Ορισμός της authority ενός προγράμματος
  • deploy_program - Ανάπτυξη ενός προγράμματος απευθείας στο surfnet (μέσω άμεσης εγγραφής λογαριασμού, όχι συναλλαγών)
  • reset_account - Επαναφορά ενός λογαριασμού, αφαιρώντας τον από την τοπική cache για εκ νέου ανάκτηση από upstream
  • stream_account - Μεταφορά δεδομένων λογαριασμού από το mainnet σε πραγματικό χρόνο, ώστε τα τοπικά δεδομένα να συμφωνούν πάντα με το mainnet

Είσοδοι

ΌνομαΑπαιτείταιΤύποςΠεριγραφή
descriptionπροαιρετικόstringΜια περιγραφή της ρύθμισης
rpc_api_urlαπαιτούμενοstringΤο URL για αιτήματα API

set_account

Ορίζει δεδομένα λογαριασμού απευθείας στο surfnet.

ΌνομαΑπαιτείταιΤύποςΠεριγραφή
public_keyαπαιτούμενοstringΤο δημόσιο κλειδί του λογαριασμού προς ορισμό
account_pathπροαιρετικόstringΗ διαδρομή προς ένα αρχείο JSON που περιέχει τα δεδομένα λογαριασμού προς ορισμό. Εάν παρέχεται, τα υπόλοιπα πεδία αγνοούνται
lamportsπροαιρετικόintegerΤο ποσό σε lamports που πρέπει να οριστεί για τον λογαριασμό
dataπροαιρετικόbytesΤα δεδομένα προς ορισμό στον λογαριασμό
ownerπροαιρετικόstringΟ owner που θα οριστεί για τον λογαριασμό
executableπροαιρετικόboolΗ κατάσταση εκτελεσιμότητας που θα οριστεί για τον λογαριασμό
rent_epochπροαιρετικόintegerΤο epoch κατά το οποίο ο λογαριασμός θα είναι απαλλαγμένος από ενοίκιο

Τουλάχιστον ένα από τα lamports, data, owner, executable ή rent_epoch πρέπει να παρέχεται (εκτός αν χρησιμοποιείτε account_path).

set_token_account

Ορίζει δεδομένα token account στο surfnet. Το associated token account παράγεται αυτόματα από το δημόσιο κλειδί του ιδιοκτήτη και το token mint.

NameRequiredTypeDescription
public_keyrequiredstringΤο δημόσιο κλειδί του λογαριασμού ιδιοκτήτη token προς ενημέρωση
tokenrequiredstringΤο σύμβολο token (π.χ., "usdc", "bonk") ή το δημόσιο κλειδί για το token mint
token_programoptionalstringΤο αναγνωριστικό Token Program. Έγκυρες τιμές είναι token2020, token2022 ή ένα δημόσιο κλειδί (προεπιλογή: token2020)
amountoptionalintegerΤο ποσό των tokens προς ορισμό
delegateoptionalstringΤο δημόσιο κλειδί του εκπροσώπου (delegate) προς ορισμό, ή null για εκκαθάριση
stateoptionalstringΗ κατάσταση του token account. Έγκυρες τιμές είναι initialized, frozen ή uninitialized
delegated_amountoptionalintegerΤο ποσό των tokens προς ανάθεση
close_authorityoptionalstringΤο δημόσιο κλειδί της αρχής κλεισίματος (close authority) προς ορισμό, ή null για εκκαθάριση

Τουλάχιστον ένα από τα amount, delegate, state, delegated_amount ή close_authority πρέπει να παρέχεται.

clone_program_account

Κλωνοποιεί ένα program account από ένα αναγνωριστικό προγράμματος σε άλλο στο surfnet.

NameRequiredTypeDescription
source_program_idrequiredstringΤο δημόσιο κλειδί του προγράμματος προς κλωνοποίηση
destination_program_idrequiredstringΤο δημόσιο κλειδί προορισμού του προγράμματος

set_program_authority

Ορίζει ή αφαιρεί την αρχή αναβάθμισης ενός προγράμματος στο surfnet.

ΌνομαΑπαιτείταιΤύποςΠεριγραφή
program_idαπαιτείταιstringΤο pubkey του προγράμματος για το οποίο ορίζεται η αρχή
authorityπροαιρετικόstringΗ νέα αρχή για το πρόγραμμα. Εάν δεν παρασχεθεί, η αρχή του προγράμματος θα οριστεί σε None (καθιστώντας το αμετάβλητο)

deploy_program

Αναπτύσσει ένα πρόγραμμα απευθείας στο surfnet μέσω εγγραφής δεδομένων λογαριασμού (όχι μέσω συναλλαγών).

ΌνομαΑπαιτείταιΤύποςΠεριγραφή
program_idαπαιτείταιstringΤο pubkey του προγράμματος που αναπτύσσεται
binary_pathαπαιτείταιstringΗ τοποθεσία του αρχείου .so του προγράμματος (π.χ., ./target/deploy/my_program.so)
authorityπροαιρετικόstringΤο pubkey της αρχής του προγράμματος μετά την ανάπτυξή του. Εάν δεν παρασχεθεί, το πρόγραμμα δεν θα έχει αρχή
idl_pathπροαιρετικόstringΗ τοποθεσία του αρχείου IDL του προγράμματος (π.χ., ./target/idl/my_program.json)

reset_account

Επαναφέρει έναν λογαριασμό στο surfnet, αφαιρώντας τον από την τοπική κρυφή μνήμη ώστε να επαναληφθεί η ανάκτησή του από το upstream δίκτυο.

ΌνομαΑπαιτείταιΤύποςΠεριγραφή
public_keyαπαιτείταιstringΤο pubkey του λογαριασμού προς επαναφορά
include_owned_accountsπροαιρετικόboolΕάν θα διαγραφούν αναδρομικά όλοι οι λογαριασμοί που ανήκουν σε αυτόν τον λογαριασμό. Η προεπιλογή είναι false

stream_account

Μεταδίδει δεδομένα λογαριασμού από το mainnet RPC URL στο surfnet, διατηρώντας τα τοπικά δεδομένα λογαριασμού συγχρονισμένα με το mainnet.

ΌνομαΑπαιτείταιΤύποςΠεριγραφή
public_keyαπαιτείταιstringΤο pubkey του λογαριασμού προς μετάδοση
include_owned_accountsπροαιρετικόboolΕάν θα γίνεται αναδρομική μετάδοση όλων των λογαριασμών που ανήκουν σε αυτόν τον λογαριασμό. Η προεπιλογή είναι 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?

© 2026 Ίδρυμα Solana. Με επιφύλαξη παντός δικαιώματος.