Documentación de SolanaInfraestructura como CódigoComplemento SVM

Acciones SVM

Estas acciones están disponibles al utilizar el complemento SVM para la construcción, firma y transmisión de transacciones.

deploy_program

svm::deploy_program despliega un programa de Solana en la red compatible con SVM especificada.

Entradas

NameRequiredTypeDescription
descriptionoptionalstringUna descripción de la acción de despliegue
programrequiredobjectLos artefactos del programa de Solana a desplegar
payeroptionalstringUna referencia a un firmante para pagar los costos de despliegue
authorityrequiredstringUna referencia a un firmante para la autoridad del programa
commitment_leveloptionalstringEl nivel de confirmación ('processed', 'confirmed', 'finalized')
auto_extendoptionalboolSi se debe extender automáticamente el program account (por defecto: true)

Salidas

NameTypeDescription
signaturesobjectLas firmas de transacción calculadas
program_idstringEl ID del programa desplegado
program_idlstringEl IDL del programa
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

La acción svm::process_instructions codifica instrucciones, las añade a una transacción, y firma y transmite la transacción.

Entradas

NameRequiredTypeDescription
descriptionoptionalstringUna descripción de la transacción
instructionrequiredmapLas instrucciones a añadir a la transacción
signersrequiredarray[string]Referencias a constructos de firmantes
commitment_leveloptionalstringEl nivel de confirmación
rpc_api_urlrequiredstringLa URL para las solicitudes de API

Salidas

NombreTipoDescripción
signaturestringLa firma calculada de la transacción
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

La acción svm::send_sol codifica una transacción que envía SOL, la firma y la transmite a la red.

Entradas

NombreRequeridoTipoDescripción
descriptionopcionalstringUna descripción de la transacción
amountrequeridointegerLa cantidad a enviar, en lamports
recipientrequeridostringLa dirección SVM del destinatario
signerrequeridostringUna referencia a un constructor de firma
commitment_levelopcionalstringEl nivel de confirmación
rpc_api_urlrequeridostringLa URL para las solicitudes de API

Salidas

NombreTipoDescripción
signaturestringLa firma calculada de la transacción
action "send_sol" "svm::send_sol" {
description = "Send some SOL"
amount = svm::sol_to_lamports(1)
signer = signer.caller
recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
}

send_token

La acción svm::send_token codifica una transacción que envía el token especificado, la firma y la transmite a la red.

Entradas

NombreRequeridoTipoDescripción
descriptionopcionalstringUna descripción de la transacción
amountrequeridointegerLa cantidad de tokens a enviar, en unidad base
tokenrequeridostringLa dirección del mint account del token
recipientrequeridostringLa dirección SVM del destinatario
authorityopcionalstringEl pubkey de la cuenta de autoridad
fund_recipientopcionalboolCrear y financiar el token account del destinatario si es necesario
signersrequeridoarray[string]Referencias a constructores de firma

Salidas

NombreTipoDescripción
signaturestringLa firma calculada de la transacción
recipient_token_addresspubkeyLa dirección del token account destinatario
source_token_addresspubkeyLa dirección del token account de origen
token_mint_addresspubkeyLa dirección del mint del token
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 puede usarse para configurar una surfnet.

Se admiten las siguientes operaciones:

  • set_account - Establece los campos lamports, owner, data y executable de una cuenta
  • set_token_account - Establece el monto, el delegado, el monto delegado y la autoridad de cierre de un token account
  • clone_program_account - Clona un program account desde un ID de programa de origen a un ID de programa de destino
  • set_program_authority - Establece la autoridad de un programa
  • deploy_program - Despliega un programa directamente en la surfnet (mediante escritura directa en la cuenta, no mediante transacciones)
  • reset_account - Restablece una cuenta, eliminándola de la caché local para volver a obtenerla del origen
  • stream_account - Transmite datos de cuenta desde mainnet para que los datos locales siempre coincidan con mainnet

Entradas

NombreRequeridoTipoDescripción
descriptionopcionalstringUna descripción de la configuración
rpc_api_urlrequeridostringLa URL para las solicitudes API

set_account

Establece los datos de una cuenta directamente en la surfnet.

NombreRequeridoTipoDescripción
public_keyrequeridostringLa clave pública de la cuenta a configurar
account_pathopcionalstringLa ruta a un archivo JSON con los datos de la cuenta a configurar. Si se proporciona, los demás campos se ignoran
lamportsopcionalintegerLa cantidad de lamports que debe tener la cuenta
dataopcionalbytesLos datos a establecer en la cuenta
owneropcionalstringEl propietario a establecer para la cuenta
executableopcionalboolEl estado de ejecutabilidad a establecer para la cuenta
rent_epochopcionalintegerEl epoch en el que la cuenta estará exenta de renta

Al menos uno de lamports, data, owner, executable o rent_epoch debe proporcionarse (a menos que se use account_path).

set_token_account

Establece los datos del token account en la surfnet. El associated token account se deriva automáticamente de la clave pública del propietario y del mint del token.

NameRequiredTypeDescription
public_keyrequiredstringLa clave pública de la cuenta del propietario del token a actualizar
tokenrequiredstringEl símbolo del token (p. ej., "usdc", "bonk") o la clave pública del mint del token
token_programoptionalstringEl ID del Token Program. Los valores válidos son token2020, token2022 o una clave pública (predeterminado: token2020)
amountoptionalintegerLa cantidad de tokens a establecer
delegateoptionalstringLa clave pública del delegado a establecer, o null para borrar
stateoptionalstringEl estado del token account. Los valores válidos son initialized, frozen o uninitialized
delegated_amountoptionalintegerLa cantidad de tokens a delegar
close_authorityoptionalstringLa clave pública de la autoridad de cierre a establecer, o null para borrar

Al menos uno de amount, delegate, state, delegated_amount o close_authority debe proporcionarse.

clone_program_account

Clona un program account de un ID de programa a otro en la surfnet.

NameRequiredTypeDescription
source_program_idrequiredstringLa clave pública del programa a clonar
destination_program_idrequiredstringLa clave pública de destino del programa

set_program_authority

Establece o elimina la autoridad de actualización de un programa en la surfnet.

NameRequiredTypeDescription
program_idrequiredstringLa pubkey del programa para el que se establece la autoridad
authorityoptionalstringLa nueva autoridad del programa. Si no se proporciona, la autoridad del programa se establecerá en None (haciéndolo inmutable)

deploy_program

Despliega un programa directamente en la surfnet mediante escritura de datos en cuenta (no mediante transacciones).

NameRequiredTypeDescription
program_idrequiredstringLa pubkey del programa que se está desplegando
binary_pathrequiredstringLa ubicación del archivo .so del programa (p. ej., ./target/deploy/my_program.so)
authorityoptionalstringLa pubkey de la autoridad sobre el programa tras su despliegue. Si no se proporciona, el programa no tendrá autoridad
idl_pathoptionalstringLa ubicación del archivo IDL del programa (p. ej., ./target/idl/my_program.json)

reset_account

Restablece una cuenta en la surfnet, eliminándola de la caché local para que sea recuperada nuevamente desde la red upstream.

NameRequiredTypeDescription
public_keyrequiredstringLa pubkey de la cuenta a restablecer
include_owned_accountsoptionalboolSi se deben eliminar recursivamente todas las cuentas propiedad de esta cuenta. El valor predeterminado es false

stream_account

Transmite datos de cuenta desde la URL RPC de la red principal a la surfnet, manteniendo los datos de la cuenta local sincronizados con la red principal.

NombreRequeridoTipoDescripción
public_keyrequeridostringLa clave pública de la cuenta a transmitir
include_owned_accountsopcionalboolSi se deben transmitir recursivamente todas las cuentas de las que esta cuenta es propietaria. El valor predeterminado es 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?

Tabla de Contenidos

Editar Página