Dokumentacja SolanaInfrastruktura jako kodDodatek SVM

Akcje SVM

Te akcje są dostępne podczas korzystania z dodatku SVM do budowania, podpisywania i rozgłaszania transakcji.

deploy_program

svm::deploy_program wdraża program Solana do wskazanej sieci kompatybilnej z SVM.

Dane wejściowe

NameRequiredTypeDescription
descriptionoptionalstringOpis akcji wdrożenia
programrequiredobjectArtefakty programu Solana do wdrożenia
payeroptionalstringOdniesienie do sygnatariusza pokrywającego koszty wdrożenia
authorityrequiredstringOdniesienie do sygnatariusza będącego właścicielem programu
commitment_leveloptionalstringPoziom potwierdzenia ('processed', 'confirmed', 'finalized')
auto_extendoptionalboolCzy automatycznie rozszerzyć program account (domyślnie: true)

Dane wyjściowe

NameTypeDescription
signaturesobjectObliczone sygnatury transakcji
program_idstringID programu wdrożonego programu
program_idlstringIDL programu
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

Akcja svm::process_instructions koduje instrukcje, dodaje je do transakcji, a następnie podpisuje i rozgłasza transakcję.

Dane wejściowe

NameRequiredTypeDescription
descriptionoptionalstringOpis transakcji
instructionrequiredmapInstrukcje do dodania do transakcji
signersrequiredarray[string]Odniesienia do konstrukcji sygnatariuszy
commitment_leveloptionalstringPoziom potwierdzenia
rpc_api_urlrequiredstringAdres URL dla żądań API

Dane wyjściowe

NazwaTypOpis
signaturestringObliczony podpis transakcji
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

Akcja svm::send_sol koduje transakcję, która wysyła SOL, podpisuje ją i rozgłasza do sieci.

Dane wejściowe

NazwaWymaganeTypOpis
descriptionopcjonalnestringOpis transakcji
amountwymaganeintegerKwota do wysłania, w lamport
recipientwymaganestringAdres SVM odbiorcy
signerwymaganestringOdwołanie do konstruktu podpisującego
commitment_levelopcjonalnestringPoziom zatwierdzenia
rpc_api_urlwymaganestringURL do żądań API

Dane wyjściowe

NazwaTypOpis
signaturestringObliczony podpis transakcji
action "send_sol" "svm::send_sol" {
description = "Send some SOL"
amount = svm::sol_to_lamports(1)
signer = signer.caller
recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
}

send_token

Akcja svm::send_token koduje transakcję, która wysyła wskazany token, podpisuje ją i rozgłasza do sieci.

Dane wejściowe

NazwaWymaganeTypOpis
descriptionopcjonalnestringOpis transakcji
amountwymaganeintegerLiczba tokenów do wysłania, w jednostce bazowej
tokenwymaganestringAdres mint account tokena
recipientwymaganestringAdres SVM odbiorcy
authorityopcjonalnestringpubkey konta authority
fund_recipientopcjonalneboolUtwórz i zasilij token account odbiorcy, jeśli potrzeba
signerswymaganearray[string]Odwołania do konstruktów podpisujących

Dane wyjściowe

NazwaTypOpis
signaturestringObliczony podpis transakcji
recipient_token_addresspubkeyAdres token account odbiorcy
source_token_addresspubkeyAdres źródłowego token account
token_mint_addresspubkeyAdres mint tokena
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 może być użyty do konfiguracji surfnetu.

Obsługiwane są następujące operacje:

  • set_account - Ustawia lamports, właściciela, dane oraz pola wykonywalne konta
  • set_token_account - Ustawia kwotę, delegata, delegowaną kwotę oraz uprawnienia do zamknięcia dla token account
  • clone_program_account - Klonuje program account ze źródłowego identyfikatora programu do docelowego identyfikatora programu
  • set_program_authority - Ustawia uprawnienia programu
  • deploy_program - Wdraża program bezpośrednio do surfnetu (poprzez bezpośredni zapis do konta, nie transakcje)
  • reset_account - Resetuje konto, usuwając je z lokalnej pamięci podręcznej w celu ponownego pobrania z upstream
  • stream_account - Strumieniuje dane konta z mainnet, tak aby lokalne dane zawsze odpowiadały mainnet

Dane wejściowe

NazwaWymaganeTypOpis
descriptionopcjonalnestringOpis konfiguracji
rpc_api_urlwymaganestringAdres URL dla żądań API

set_account

Ustawia dane konta bezpośrednio na surfnecie.

NazwaWymaganeTypOpis
public_keywymaganestringKlucz publiczny konta do ustawienia
account_pathopcjonalnestringŚcieżka do pliku JSON zawierającego dane konta do ustawienia. Jeśli podano, pozostałe pola są ignorowane
lamportsopcjonalneintegerLiczba lamports, na jaką konto powinno zostać ustawione
dataopcjonalnebytesDane do ustawienia w koncie
owneropcjonalnestringWłaściciel do ustawienia dla konta
executableopcjonalneboolStan wykonywalności do ustawienia dla konta
rent_epochopcjonalneintegerEpoch, w którym konto będzie zwolnione z czynszu

Co najmniej jeden z parametrów lamports, data, owner, executable lub rent_epoch musi zostać podany (chyba że używasz account_path).

set_token_account

Ustawia dane token account w surfnet. associated token account jest automatycznie wyprowadzany z klucza publicznego właściciela i mint tokena.

NameRequiredTypeDescription
public_keyrequiredstringKlucz publiczny konta właściciela tokena do aktualizacji
tokenrequiredstringSymbol tokena (np. "usdc", "bonk") lub klucz publiczny dla mint tokena
token_programoptionalstringID Token Program. Prawidłowe wartości to token2020, token2022 lub klucz publiczny (domyślnie: token2020)
amountoptionalintegerIlość tokenów do ustawienia
delegateoptionalstringKlucz publiczny delegata do ustawienia lub null, aby wyczyścić
stateoptionalstringStan token account. Prawidłowe wartości to initialized, frozen lub uninitialized
delegated_amountoptionalintegerIlość tokenów do delegowania
close_authorityoptionalstringKlucz publiczny urzędu zamknięcia do ustawienia lub null, aby wyczyścić

Co najmniej jeden z parametrów amount, delegate, state, delegated_amount lub close_authority musi zostać podany.

clone_program_account

Klonuje program account z jednego ID programu do innego w surfnet.

NameRequiredTypeDescription
source_program_idrequiredstringKlucz publiczny programu do sklonowania
destination_program_idrequiredstringDocelowy klucz publiczny programu

set_program_authority

Ustawia lub usuwa uprawnienia do aktualizacji programu w surfnet.

NazwaWymaganeTypOpis
program_idwymaganestringpubkey programu, dla którego ustawiane są uprawnienia
authorityopcjonalnestringNowe uprawnienia dla programu. Jeśli nie podano, uprawnienia programu zostaną ustawione na None (czyniąc go niezmiennym)

deploy_program

Wdraża program bezpośrednio do surfnet poprzez zapis danych konta (nie przez transakcje).

NazwaWymaganeTypOpis
program_idwymaganestringpubkey wdrażanego programu
binary_pathwymaganestringLokalizacja pliku .so programu (np. ./target/deploy/my_program.so)
authorityopcjonalnestringpubkey podmiotu uprawnionego do zarządzania programem po jego wdrożeniu. Jeśli nie podano, program nie będzie miał żadnych uprawnień
idl_pathopcjonalnestringLokalizacja pliku IDL programu (np. ./target/idl/my_program.json)

reset_account

Resetuje konto w surfnet, usuwając je z lokalnej pamięci podręcznej, dzięki czemu zostanie ponownie pobrane z sieci nadrzędnej.

NazwaWymaganeTypOpis
public_keywymaganestringpubkey konta do zresetowania
include_owned_accountsopcjonalneboolCzy rekurencyjnie usunąć wszystkie konta należące do tego konta. Domyślnie false

stream_account

Przesyła strumieniowo dane konta z adresu URL RPC sieci głównej do surfnet, utrzymując lokalne dane konta zsynchronizowane z siecią główną.

NazwaWymaganeTypOpis
public_keywymaganestringpubkey konta do przesyłania strumieniowego
include_owned_accountsopcjonalneboolCzy rekurencyjnie przesyłać strumieniowo wszystkie konta należące do tego konta. Domyślnie 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?