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
| Name | Required | Type | Description |
|---|---|---|---|
description | optional | string | Una descripción de la acción de despliegue |
program | required | object | Los artefactos del programa de Solana a desplegar |
payer | optional | string | Una referencia a un firmante para pagar los costos de despliegue |
authority | required | string | Una referencia a un firmante para la autoridad del programa |
commitment_level | optional | string | El nivel de confirmación ('processed', 'confirmed', 'finalized') |
auto_extend | optional | bool | Si se debe extender automáticamente el program account (por defecto: true) |
Salidas
| Name | Type | Description |
|---|---|---|
signatures | object | Las firmas de transacción calculadas |
program_id | string | El ID del programa desplegado |
program_idl | string | El IDL del programa |
action "deploy" "svm::deploy_program" {description = "Deploy hello world program"program = svm::get_program_from_anchor_project("hello_world")authority = signer.authoritypayer = 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
| Name | Required | Type | Description |
|---|---|---|---|
description | optional | string | Una descripción de la transacción |
instruction | required | map | Las instrucciones a añadir a la transacción |
signers | required | array[string] | Referencias a constructos de firmantes |
commitment_level | optional | string | El nivel de confirmación |
rpc_api_url | required | string | La URL para las solicitudes de API |
Salidas
| Nombre | Tipo | Descripción |
|---|---|---|
signature | string | La firma calculada de la transacción |
action "program_call" "svm::process_instructions" {description = "Invoke instructions"instruction {program_idl = variable.program.idlinstruction_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
| Nombre | Requerido | Tipo | Descripción |
|---|---|---|---|
description | opcional | string | Una descripción de la transacción |
amount | requerido | integer | La cantidad a enviar, en lamports |
recipient | requerido | string | La dirección SVM del destinatario |
signer | requerido | string | Una referencia a un constructor de firma |
commitment_level | opcional | string | El nivel de confirmación |
rpc_api_url | requerido | string | La URL para las solicitudes de API |
Salidas
| Nombre | Tipo | Descripción |
|---|---|---|
signature | string | La firma calculada de la transacción |
action "send_sol" "svm::send_sol" {description = "Send some SOL"amount = svm::sol_to_lamports(1)signer = signer.callerrecipient = "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
| Nombre | Requerido | Tipo | Descripción |
|---|---|---|---|
description | opcional | string | Una descripción de la transacción |
amount | requerido | integer | La cantidad de tokens a enviar, en unidad base |
token | requerido | string | La dirección del mint account del token |
recipient | requerido | string | La dirección SVM del destinatario |
authority | opcional | string | El pubkey de la cuenta de autoridad |
fund_recipient | opcional | bool | Crear y financiar el token account del destinatario si es necesario |
signers | requerido | array[string] | Referencias a constructores de firma |
Salidas
| Nombre | Tipo | Descripción |
|---|---|---|
signature | string | La firma calculada de la transacción |
recipient_token_address | pubkey | La dirección del token account destinatario |
source_token_address | pubkey | La dirección del token account de origen |
token_mint_address | pubkey | La dirección del mint del token |
action "send_sol" "svm::send_token" {description = "Send some tokens"amount = 1000000signers = [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 cuentaset_token_account- Establece el monto, el delegado, el monto delegado y la autoridad de cierre de un token accountclone_program_account- Clona un program account desde un ID de programa de origen a un ID de programa de destinoset_program_authority- Establece la autoridad de un programadeploy_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 origenstream_account- Transmite datos de cuenta desde mainnet para que los datos locales siempre coincidan con mainnet
Entradas
| Nombre | Requerido | Tipo | Descripción |
|---|---|---|---|
description | opcional | string | Una descripción de la configuración |
rpc_api_url | requerido | string | La URL para las solicitudes API |
set_account
Establece los datos de una cuenta directamente en la surfnet.
| Nombre | Requerido | Tipo | Descripción |
|---|---|---|---|
public_key | requerido | string | La clave pública de la cuenta a configurar |
account_path | opcional | string | La ruta a un archivo JSON con los datos de la cuenta a configurar. Si se proporciona, los demás campos se ignoran |
lamports | opcional | integer | La cantidad de lamports que debe tener la cuenta |
data | opcional | bytes | Los datos a establecer en la cuenta |
owner | opcional | string | El propietario a establecer para la cuenta |
executable | opcional | bool | El estado de ejecutabilidad a establecer para la cuenta |
rent_epoch | opcional | integer | El 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.
| Name | Required | Type | Description |
|---|---|---|---|
public_key | required | string | La clave pública de la cuenta del propietario del token a actualizar |
token | required | string | El símbolo del token (p. ej., "usdc", "bonk") o la clave pública del mint del token |
token_program | optional | string | El ID del Token Program. Los valores válidos son token2020, token2022 o una clave pública (predeterminado: token2020) |
amount | optional | integer | La cantidad de tokens a establecer |
delegate | optional | string | La clave pública del delegado a establecer, o null para borrar |
state | optional | string | El estado del token account. Los valores válidos son initialized, frozen o uninitialized |
delegated_amount | optional | integer | La cantidad de tokens a delegar |
close_authority | optional | string | La 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.
| Name | Required | Type | Description |
|---|---|---|---|
source_program_id | required | string | La clave pública del programa a clonar |
destination_program_id | required | string | La clave pública de destino del programa |
set_program_authority
Establece o elimina la autoridad de actualización de un programa en la surfnet.
| Name | Required | Type | Description |
|---|---|---|---|
program_id | required | string | La pubkey del programa para el que se establece la autoridad |
authority | optional | string | La 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).
| Name | Required | Type | Description |
|---|---|---|---|
program_id | required | string | La pubkey del programa que se está desplegando |
binary_path | required | string | La ubicación del archivo .so del programa (p. ej., ./target/deploy/my_program.so) |
authority | optional | string | La pubkey de la autoridad sobre el programa tras su despliegue. Si no se proporciona, el programa no tendrá autoridad |
idl_path | optional | string | La 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.
| Name | Required | Type | Description |
|---|---|---|---|
public_key | required | string | La pubkey de la cuenta a restablecer |
include_owned_accounts | optional | bool | Si 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.
| Nombre | Requerido | Tipo | Descripción |
|---|---|---|---|
public_key | requerido | string | La clave pública de la cuenta a transmitir |
include_owned_accounts | opcional | bool | Si 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 balanceset_account {public_key = signer.caller.public_keylamports = 999999999}// Set token balanceset_token_account {public_key = signer.caller.public_keytoken = "usdc"amount = 1000000}// Clone a programclone_program_account {source_program_id = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"destination_program_id = variable.my_program_id}// Set program authorityset_program_authority {program_id = variable.my_program_idauthority = signer.caller.public_key}// Deploy a program directlydeploy_program {program_id = variable.my_program_idbinary_path = "./target/deploy/my_program.so"idl_path = "./target/idl/my_program.json"}// Reset an account to re-fetch from upstreamreset_account {public_key = variable.some_pubkey}// Stream account data from mainnetstream_account {public_key = variable.some_pubkeyinclude_owned_accounts = true}}
Is this page helpful?