Documentazione SolanaInfrastruttura come codiceSVM Addon

Funzioni SVM

Queste funzioni sono disponibili quando si utilizza il componente aggiuntivo SVM per Solana e le blockchain compatibili con SVM.

system_program_id

svm::system_program_id restituisce l'id del System Program, 11111111111111111111111111111111.

output "system_program_id" {
value = svm::system_program_id()
}
// > 11111111111111111111111111111111

default_pubkey

svm::default_pubkey restituisce una pubkey predefinita, 11111111111111111111111111111111.

output "default_pubkey" {
value = svm::default_pubkey()
}
// > 11111111111111111111111111111111

get_instruction_data_from_idl_path

svm::get_instruction_data_from_idl_path crea instruction data codificati per l'invocazione di un programma, fornendo il controllo dei tipi e la serializzazione in base al file IDL fornito.

Input

NameRequiredTypeDescription
idl_pathrequiredstringIl percorso, relativo al txtx.yml, del file IDL .json
instruction_namerequiredstringIl nome dell'istruzione per cui generare i dati
argumentsoptionalarray[string]Gli argomenti dell'istruzione per cui generare i dati
output "data" {
value = svm::get_instruction_data_from_idl("/path/to/idl.json", "my_instruction", ["arg1", "arg2"])
}
// > data: 0x95763bdcc47fa1b305000000776f726c64

get_instruction_data_from_idl

svm::get_instruction_data_from_idl crea instruction data codificati per l'invocazione di un programma, fornendo il controllo dei tipi e la serializzazione in base ai dati IDL forniti.

Input

NameRequiredTypeDescription
idlrequiredstring | SVM_IDLL'IDL del programma
instruction_namerequiredstringIl nome dell'istruzione per cui generare i dati, come indicizzato dall'IDL
argumentsoptionalarray[string]Gli argomenti dell'istruzione per cui generare i dati
output "data" {
value = svm::get_instruction_data_from_idl(variable.contract.idl, "my_instruction", ["arg1", "arg2"])
}
// > data: 0x95763bdcc47fa1b305000000776f726c64

get_program_from_anchor_project

svm::get_program_from_anchor_project recupera gli artefatti di deployment del programma per un programma in un progetto Anchor.

Input

NomeObbligatorioTipoDescrizione
program_nameobbligatoriostringIl nome del programma da distribuire
keypair_pathopzionalestringIl percorso del file keypair del programma
idl_pathopzionalestringIl percorso del file IDL del programma
bin_pathopzionalestringIl percorso del file binario del programma
variable "contract" {
value = svm::get_program_from_anchor_project("my_program")
}
output "idl" {
value = variable.contract.idl
}

get_program_from_native_project

svm::get_program_from_native_project recupera gli artefatti di distribuzione del programma per un programma non-Anchor.

Input

NomeObbligatorioTipoDescrizione
program_nameobbligatoriostringIl nome del programma da distribuire
keypair_pathopzionalestringIl percorso del file keypair del programma
idl_pathopzionalestringIl percorso del file IDL del programma
bin_pathopzionalestringIl percorso del file binario del programma
variable "contract" {
value = svm::get_program_from_native_project("my_program")
}
output "idl" {
value = variable.contract.idl
}

sol_to_lamports

svm::sol_to_lamports converte la quantità di SOL fornita in lamport.

output "lamports" {
value = svm::sol_to_lamports(1.1)
}
// lamports: 1100000000

lamports_to_sol

svm::lamports_to_sol converte il numero di lamport fornito in SOL.

output "sol" {
value = svm::lamports_to_sol(1100000000)
}
// sol: 1.1

find_pda

svm::find_pda trova un PDA valido utilizzando l'ID programma e i seed forniti.

Input

NomeObbligatorioTipoDescrizione
program_idobbligatoriostringL'indirizzo del programma da cui deriva il PDA
seedsopzionalearray[string]Un array opzionale di seed (max 16, 32 byte ciascuno)
variable "pda" {
value = svm::find_pda("3bv3j4GvMPjvvBX9QdoX27pVoWhDSXpwKZipFF1QiVr6", ["data"])
}
output "pda" {
value = std::encode_base58(variable.pda.pda)
}
output "bump" {
value = variable.pda.bump_seed
}
// > pda: 4amHoWMBgLkPfM8Nq9ZP33Liq9FCuqrLoU1feejkdsUJ
// > bump: 252

get_associated_token_account

svm::get_associated_token_account calcola l'indirizzo dell'associated token account per il wallet e gli indirizzi del token mint forniti.

Input

NameRequiredTypeDescription
wallet_addressrequiredstringL'indirizzo del wallet
token_mint_addressoptionalstringL'indirizzo del token mint
variable "token_account" {
value = svm::get_associated_token_account(signer.caller.address, "So11111111111111111111111111111111111111112")
}

create_token_account_instruction

svm::create_token_account_instruction crea i byte grezzi dell'istruzione per creare un associated token account.

Input

NameRequiredTypeDescription
funding_addressrequiredstringL'indirizzo dell'account di finanziamento
wallet_addressrequiredstringL'indirizzo del wallet
token_mint_addressoptionalstringL'indirizzo del token mint
token_program_idoptionalstringL'indirizzo del Token Program
action "call" "svm::process_instructions" {
signers = [signer.caller]
instruction {
raw_bytes = svm::create_token_account_instruction(
signer.caller.address, // funding address
signer.caller.address, // wallet address
variable.token_mint, // token mint address
variable.token_program // token program id
)
}
}

u64

svm::u64 crea una rappresentazione in array di byte di un intero u64, adatta per l'uso come seed nella derivazione PDA.

Input

NameRequiredTypeDescription
valuerequiredintegerL'intero u64 da convertire in un array di byte
variable "pda" {
value = svm::find_pda("3bv3j4GvMPjvvBX9QdoX27pVoWhDSXpwKZipFF1QiVr6", [svm::u64(1000000000)])
}

i64

svm::i64 crea una rappresentazione in array di byte di un intero i64, adatta per l'uso come seed nella derivazione PDA.

Input

NameRequiredTypeDescription
valuerequiredintegerL'intero i64 da convertire in un array di byte
variable "pda" {
value = svm::find_pda("3bv3j4GvMPjvvBX9QdoX27pVoWhDSXpwKZipFF1QiVr6", [svm::i64(-1000000000)])
}

Is this page helpful?

© 2026 Solana Foundation. Tutti i diritti riservati.