Documentação SolanaInfraestrutura como CódigoSVM Addon

Ações SVM

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

NomeObrigatórioTipoDescrição
descriptionopcionalstringUma descrição da ação de implantação
programobrigatórioobjectOs artefatos do programa Solana a implantar
payeropcionalstringUma referência a um assinante para pagamento dos custos de implantação
authorityobrigatóriostringUma referência a um assinante para a autoridade do programa
commitment_levelopcionalstringO nível de confirmação ('processed', 'confirmed', 'finalized')
auto_extendopcionalboolSe deve estender automaticamente o program account (padrão: true)

Saídas

NomeTipoDescrição
signaturesobjectAs assinaturas de transação calculadas
program_idstringO ID do programa implantado
program_idlstringO IDL do 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

A ação svm::process_instructions codifica instruções, adiciona-as a uma transação e assina e transmite a transação.

Entradas

NomeObrigatórioTipoDescrição
descriptionopcionalstringUma descrição da transação
instructionobrigatóriomapAs instruções a adicionar à transação
signersobrigatórioarray[string]Referências a construtos de assinante
commitment_levelopcionalstringO nível de confirmação
rpc_api_urlobrigatóriostringO URL para requisições de API

Saídas

NomeTipoDescrição
signaturestringA assinatura computada da transação
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

A ação svm::send_sol codifica uma transação que envia SOL, assina-a e a transmite para a rede.

Entradas

NomeObrigatórioTipoDescrição
descriptionopcionalstringUma descrição da transação
amountobrigatóriointegerO valor a enviar, em lamports
recipientobrigatóriostringO endereço SVM do destinatário
signerobrigatóriostringUma referência a um construtor de assinatura
commitment_levelopcionalstringO nível de confirmação
rpc_api_urlobrigatóriostringA URL para requisições de API

Saídas

NomeTipoDescrição
signaturestringA assinatura computada da transação
action "send_sol" "svm::send_sol" {
description = "Send some SOL"
amount = svm::sol_to_lamports(1)
signer = signer.caller
recipient = "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

NomeObrigatórioTipoDescrição
descriptionopcionalstringUma descrição da transação
amountobrigatóriointegerA quantidade de tokens a enviar, em unidade base
tokenobrigatóriostringO endereço do mint account do token
recipientobrigatóriostringO endereço SVM do destinatário
authorityopcionalstringO pubkey da conta de autoridade
fund_recipientopcionalboolCriar e financiar o token account do destinatário se necessário
signersobrigatórioarray[string]Referências a construtores de assinatura

Saídas

NomeTipoDescrição
signaturestringA assinatura calculada da transação
recipient_token_addresspubkeyO endereço do token account destinatário
source_token_addresspubkeyO endereço do token account de origem
token_mint_addresspubkeyO endereço do mint do 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 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 conta
  • set_token_account - Define o valor, delegado, valor delegado e a autoridade de encerramento de um token account
  • clone_program_account - Clona um program account de um ID de programa de origem para um ID de programa de destino
  • set_program_authority - Define a autoridade de um programa
  • deploy_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 upstream
  • stream_account - Transmite dados de conta da mainnet para que os dados locais correspondam sempre à mainnet

Entradas

NomeObrigatórioTipoDescrição
descriptionopcionalstringUma descrição da configuração
rpc_api_urlobrigatóriostringA URL para requisições de API

set_account

Define os dados da conta diretamente na surfnet.

NomeObrigatórioTipoDescrição
public_keyobrigatóriostringA chave pública da conta a ser definida
account_pathopcionalstringO caminho para um arquivo JSON contendo os dados da conta a serem definidos. Se fornecido, os demais campos são ignorados
lamportsopcionalintegerA quantidade de lamports que a conta deve ter
dataopcionalbytesOs dados a serem definidos na conta
owneropcionalstringO owner a ser definido para a conta
executableopcionalboolO estado de executabilidade a ser definido para a conta
rent_epochopcionalintegerO 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.

NameRequiredTypeDescription
public_keyrequiredstringA chave pública da conta do proprietário do token a ser atualizada
tokenrequiredstringO símbolo do token (ex.: "usdc", "bonk") ou chave pública do token mint
token_programoptionalstringO ID do Token Program. Os valores válidos são token2020, token2022, ou uma chave pública (padrão: token2020)
amountoptionalintegerA quantidade de tokens a definir
delegateoptionalstringA chave pública do delegado a definir, ou null para limpar
stateoptionalstringO estado do token account. Os valores válidos são initialized, frozen, ou uninitialized
delegated_amountoptionalintegerA quantidade de tokens a delegar
close_authorityoptionalstringA 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.

NameRequiredTypeDescription
source_program_idrequiredstringA chave pública do programa a ser clonado
destination_program_idrequiredstringA chave pública de destino do programa

set_program_authority

Define ou remove a autoridade de atualização de um programa na surfnet.

NomeObrigatórioTipoDescrição
program_idobrigatóriostringA pubkey do programa para o qual definir a autoridade
authorityopcionalstringA 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).

NomeObrigatórioTipoDescrição
program_idobrigatóriostringA pubkey do programa sendo implantado
binary_pathobrigatóriostringO caminho do arquivo .so do programa (ex.: ./target/deploy/my_program.so)
authorityopcionalstringA pubkey da autoridade sobre o programa após sua implantação. Se não fornecida, o programa não terá autoridade
idl_pathopcionalstringO 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.

NomeObrigatórioTipoDescrição
public_keyobrigatóriostringA pubkey da conta a ser redefinida
include_owned_accountsopcionalboolSe 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.

NomeObrigatórioTipoDescrição
public_keyobrigatóriostringA pubkey da conta a ser transmitida
include_owned_accountsopcionalboolSe deve transmitir recursivamente todas as contas pertencentes a esta conta. O padrão é 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?

Índice

Editar Página
© 2026 Fundação Solana. Todos os direitos reservados.