Documentación de SolanaInfraestructura como CódigoComplemento SVM

Funciones SVM

Estas funciones están disponibles al usar el complemento SVM para Solana y blockchains compatibles con SVM.

system_program_id

svm::system_program_id devuelve el id del System Program, 11111111111111111111111111111111.

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

default_pubkey

svm::default_pubkey devuelve un pubkey público predeterminado, 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 codificada para la invocación de un programa, proporcionando verificación de tipos y serialización basada en el archivo IDL proporcionado.

Entradas

NameRequiredTypeDescription
idl_pathrequiredstringLa ruta, relativa al txtx.yml, al archivo IDL .json
instruction_namerequiredstringEl nombre de la instrucción para la que se generarán datos
argumentsoptionalarray[string]Los argumentos de la instrucción para los que se generarán datos
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 codificada para la invocación de un programa, proporcionando verificación de tipos y serialización basada en los datos IDL proporcionados.

Entradas

NameRequiredTypeDescription
idlrequiredstring | SVM_IDLEl IDL del programa
instruction_namerequiredstringEl nombre de la instrucción para la que se generarán datos, según el índice del IDL
argumentsoptionalarray[string]Los argumentos de la instrucción para los que se generarán datos
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 los artefactos de despliegue del programa para un programa en un proyecto Anchor.

Entradas

NombreRequeridoTipoDescripción
program_namerequeridostringEl nombre del programa que se despliega
keypair_pathopcionalstringLa ubicación del archivo keypair del programa
idl_pathopcionalstringLa ubicación del archivo IDL del programa
bin_pathopcionalstringLa ubicación del archivo binario del programa
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 obtiene los artefactos de despliegue del programa para un programa que no es de Anchor.

Entradas

NombreRequeridoTipoDescripción
program_namerequeridostringEl nombre del programa que se despliega
keypair_pathopcionalstringLa ubicación del archivo keypair del programa
idl_pathopcionalstringLa ubicación del archivo IDL del programa
bin_pathopcionalstringLa ubicación del archivo binario del programa
variable "contract" {
value = svm::get_program_from_native_project("my_program")
}
output "idl" {
value = variable.contract.idl
}

sol_to_lamports

svm::sol_to_lamports convierte la cantidad de SOL proporcionada a lamports.

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

lamports_to_sol

svm::lamports_to_sol convierte la cantidad de lamports proporcionada a SOL.

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

find_pda

svm::find_pda encuentra un PDA válido utilizando el ID de programa y las semillas proporcionadas.

Entradas

NombreRequeridoTipoDescripción
program_idrequeridostringLa dirección del programa del que se deriva el PDA
seedsopcionalarray[string]Un array opcional de semillas (máx. 16, 32 bytes cada una)
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 calcula la dirección del associated token account para las direcciones de billetera y token mint proporcionadas.

Entradas

NameRequiredTypeDescription
wallet_addressrequiredstringLa dirección de la billetera
token_mint_addressoptionalstringLa dirección 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 los bytes de instrucción sin procesar para crear un associated token account.

Entradas

NameRequiredTypeDescription
funding_addressrequiredstringLa dirección de la cuenta de financiamiento
wallet_addressrequiredstringLa dirección de la billetera
token_mint_addressoptionalstringLa dirección del token mint
token_program_idoptionalstringLa dirección 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 representación en arreglo de bytes de un entero u64, adecuada para su uso como seed en la derivación de PDA.

Entradas

NameRequiredTypeDescription
valuerequiredintegerEl entero u64 a convertir en un arreglo de bytes
variable "pda" {
value = svm::find_pda("3bv3j4GvMPjvvBX9QdoX27pVoWhDSXpwKZipFF1QiVr6", [svm::u64(1000000000)])
}

i64

svm::i64 crea una representación en arreglo de bytes de un entero i64, adecuada para su uso como seed en la derivación de PDA.

Entradas

NameRequiredTypeDescription
valuerequiredintegerEl entero i64 a convertir en un arreglo de bytes
variable "pda" {
value = svm::find_pda("3bv3j4GvMPjvvBX9QdoX27pVoWhDSXpwKZipFF1QiVr6", [svm::i64(-1000000000)])
}

Is this page helpful?