Estas ações estão disponíveis ao utilizar o addon SVM para construção, assinatura e transmissão de transações.
deploy_program
svm::deploy_program implanta um programa Solana na rede compatível com SVM
especificada.
Entradas
| Nome | Obrigatório | Tipo | Descrição |
|---|---|---|---|
description | opcional | string | Uma descrição da ação de implantação |
program | obrigatório | object | Os artefatos do programa Solana a implantar |
payer | opcional | string | Uma referência a um assinante para pagamento dos custos de implantação |
authority | obrigatório | string | Uma referência a um assinante para a autoridade do programa |
commitment_level | opcional | string | O nível de confirmação ('processed', 'confirmed', 'finalized') |
auto_extend | opcional | bool | Se deve estender automaticamente o program account (padrão: true) |
Saídas
| Nome | Tipo | Descrição |
|---|---|---|
signatures | object | As assinaturas de transação calculadas |
program_id | string | O ID do programa implantado |
program_idl | string | O IDL do 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
A ação svm::process_instructions codifica instruções, adiciona-as a uma
transação e assina e transmite a transação.
Entradas
| Nome | Obrigatório | Tipo | Descrição |
|---|---|---|---|
description | opcional | string | Uma descrição da transação |
instruction | obrigatório | map | As instruções a adicionar à transação |
signers | obrigatório | array[string] | Referências a construtos de assinante |
commitment_level | opcional | string | O nível de confirmação |
rpc_api_url | obrigatório | string | O URL para requisições de API |
Saídas
| Nome | Tipo | Descrição |
|---|---|---|
signature | string | A assinatura computada da transação |
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
A ação svm::send_sol codifica uma transação que envia SOL, assina-a e a
transmite para a rede.
Entradas
| Nome | Obrigatório | Tipo | Descrição |
|---|---|---|---|
description | opcional | string | Uma descrição da transação |
amount | obrigatório | integer | O valor a enviar, em lamports |
recipient | obrigatório | string | O endereço SVM do destinatário |
signer | obrigatório | string | Uma referência a um construtor de assinatura |
commitment_level | opcional | string | O nível de confirmação |
rpc_api_url | obrigatório | string | A URL para requisições de API |
Saídas
| Nome | Tipo | Descrição |
|---|---|---|
signature | string | A assinatura computada da transação |
action "send_sol" "svm::send_sol" {description = "Send some SOL"amount = svm::sol_to_lamports(1)signer = signer.callerrecipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"}
send_token
A ação svm::send_token codifica uma transação que envia o token especificado,
assina-a e a transmite para a rede.
Entradas
| Nome | Obrigatório | Tipo | Descrição |
|---|---|---|---|
description | opcional | string | Uma descrição da transação |
amount | obrigatório | integer | A quantidade de tokens a enviar, em unidade base |
token | obrigatório | string | O endereço do mint account do token |
recipient | obrigatório | string | O endereço SVM do destinatário |
authority | opcional | string | O pubkey da conta de autoridade |
fund_recipient | opcional | bool | Criar e financiar o token account do destinatário se necessário |
signers | obrigatório | array[string] | Referências a construtores de assinatura |
Saídas
| Nome | Tipo | Descrição |
|---|---|---|
signature | string | A assinatura calculada da transação |
recipient_token_address | pubkey | O endereço do token account destinatário |
source_token_address | pubkey | O endereço do token account de origem |
token_mint_address | pubkey | O endereço do mint do 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 pode ser usado para configurar uma surfnet.
As seguintes operações são suportadas:
set_account- Define os campos lamports, owner, data e executable de uma contaset_token_account- Define o valor, delegado, valor delegado e a autoridade de encerramento de um token accountclone_program_account- Clona um program account de um ID de programa de origem para um ID de programa de destinoset_program_authority- Define a autoridade de um programadeploy_program- Implanta um programa diretamente na surfnet (via escrita direta na conta, sem transações)reset_account- Redefine uma conta, removendo-a do cache local para ser obtida novamente do upstreamstream_account- Transmite dados de conta da mainnet para que os dados locais correspondam sempre à mainnet
Entradas
| Nome | Obrigatório | Tipo | Descrição |
|---|---|---|---|
description | opcional | string | Uma descrição da configuração |
rpc_api_url | obrigatório | string | A URL para requisições de API |
set_account
Define os dados da conta diretamente na surfnet.
| Nome | Obrigatório | Tipo | Descrição |
|---|---|---|---|
public_key | obrigatório | string | A chave pública da conta a ser definida |
account_path | opcional | string | O caminho para um arquivo JSON contendo os dados da conta a serem definidos. Se fornecido, os demais campos são ignorados |
lamports | opcional | integer | A quantidade de lamports que a conta deve ter |
data | opcional | bytes | Os dados a serem definidos na conta |
owner | opcional | string | O owner a ser definido para a conta |
executable | opcional | bool | O estado de executabilidade a ser definido para a conta |
rent_epoch | opcional | integer | O epoch em que a conta estará isenta de aluguel |
Pelo menos um de lamports, data, owner, executable, ou rent_epoch deve
ser fornecido (a menos que esteja usando account_path).
set_token_account
Define os dados do token account na surfnet. O associated token account é automaticamente derivado da chave pública do proprietário e do token mint.
| Name | Required | Type | Description |
|---|---|---|---|
public_key | required | string | A chave pública da conta do proprietário do token a ser atualizada |
token | required | string | O símbolo do token (ex.: "usdc", "bonk") ou chave pública do token mint |
token_program | optional | string | O ID do Token Program. Os valores válidos são token2020, token2022, ou uma chave pública (padrão: token2020) |
amount | optional | integer | A quantidade de tokens a definir |
delegate | optional | string | A chave pública do delegado a definir, ou null para limpar |
state | optional | string | O estado do token account. Os valores válidos são initialized, frozen, ou uninitialized |
delegated_amount | optional | integer | A quantidade de tokens a delegar |
close_authority | optional | string | A chave pública da autoridade de encerramento a definir, ou null para limpar |
Pelo menos um de amount, delegate, state, delegated_amount, ou
close_authority deve ser fornecido.
clone_program_account
Clona um program account de um ID de programa para outro na surfnet.
| Name | Required | Type | Description |
|---|---|---|---|
source_program_id | required | string | A chave pública do programa a ser clonado |
destination_program_id | required | string | A chave pública de destino do programa |
set_program_authority
Define ou remove a autoridade de atualização de um programa na surfnet.
| Nome | Obrigatório | Tipo | Descrição |
|---|---|---|---|
program_id | obrigatório | string | A pubkey do programa para o qual definir a autoridade |
authority | opcional | string | A nova autoridade do programa. Se não fornecida, a autoridade do programa será definida como None (tornando-o imutável) |
deploy_program
Implanta um programa diretamente na surfnet por meio de gravação de dados em conta (não por meio de transações).
| Nome | Obrigatório | Tipo | Descrição |
|---|---|---|---|
program_id | obrigatório | string | A pubkey do programa sendo implantado |
binary_path | obrigatório | string | O caminho do arquivo .so do programa (ex.: ./target/deploy/my_program.so) |
authority | opcional | string | A pubkey da autoridade sobre o programa após sua implantação. Se não fornecida, o programa não terá autoridade |
idl_path | opcional | string | O caminho do arquivo IDL do programa (ex.: ./target/idl/my_program.json) |
reset_account
Redefine uma conta na surfnet, removendo-a do cache local para que seja recuperada novamente da rede upstream.
| Nome | Obrigatório | Tipo | Descrição |
|---|---|---|---|
public_key | obrigatório | string | A pubkey da conta a ser redefinida |
include_owned_accounts | opcional | bool | Se todas as contas pertencentes a esta conta devem ser excluídas recursivamente. O padrão é false |
stream_account
Transmite dados de conta da URL RPC da mainnet para a surfnet, mantendo os dados da conta local sincronizados com a mainnet.
| Nome | Obrigatório | Tipo | Descrição |
|---|---|---|---|
public_key | obrigatório | string | A pubkey da conta a ser transmitida |
include_owned_accounts | opcional | bool | Se deve transmitir recursivamente todas as contas pertencentes a esta conta. O padrão é 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?