Documentation SolanaInfrastructure en tant que codeModule SVM

Actions SVM

Ces actions sont disponibles lors de l'utilisation de l'addon SVM pour la construction, la signature et la diffusion des transactions.

deploy_program

svm::deploy_program déploie un programme Solana sur le réseau compatible SVM spécifié.

Entrées

NomRequisTypeDescription
descriptionoptionnelstringUne description de l'action de déploiement
programrequisobjectLes artefacts du programme Solana à déployer
payeroptionnelstringUne référence à un signataire pour le paiement des coûts de déploiement
authorityrequisstringUne référence à un signataire pour l'autorité du programme
commitment_leveloptionnelstringLe niveau d'engagement ('processed', 'confirmed', 'finalized')
auto_extendoptionnelboolIndique s'il faut étendre automatiquement le program account (défaut : true)

Sorties

NomTypeDescription
signaturesobjectLes signatures de transaction calculées
program_idstringL'identifiant du programme déployé
program_idlstringL'IDL du programme
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

L'action svm::process_instructions encode les instructions, les ajoute à une transaction, puis signe et diffuse la transaction.

Entrées

NomRequisTypeDescription
descriptionoptionnelstringUne description de la transaction
instructionrequismapLes instructions à ajouter à la transaction
signersrequisarray[string]Références aux constructions de signataires
commitment_leveloptionnelstringLe niveau d'engagement
rpc_api_urlrequisstringL'URL pour les requêtes API

Sorties

NomTypeDescription
signaturestringLa signature calculée de la transaction
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

L'action svm::send_sol encode une transaction qui envoie des SOL, la signe et la diffuse sur le réseau.

Entrées

NomRequisTypeDescription
descriptionoptionnelstringUne description de la transaction
amountrequisintegerLe montant à envoyer, en lamports
recipientrequisstringL'adresse SVM du destinataire
signerrequisstringUne référence à un construct signataire
commitment_leveloptionnelstringLe niveau d'engagement
rpc_api_urlrequisstringL'URL pour les requêtes API

Sorties

NomTypeDescription
signaturestringLa signature calculée de la transaction
action "send_sol" "svm::send_sol" {
description = "Send some SOL"
amount = svm::sol_to_lamports(1)
signer = signer.caller
recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
}

send_token

L'action svm::send_token encode une transaction qui envoie le token spécifié, la signe et la diffuse sur le réseau.

Entrées

NomRequisTypeDescription
descriptionoptionnelstringUne description de la transaction
amountrequisintegerLe montant de tokens à envoyer, en unité de base
tokenrequisstringL'adresse du mint account du token
recipientrequisstringL'adresse SVM du destinataire
authorityoptionnelstringLe pubkey du compte d'autorité
fund_recipientoptionnelboolCréer et financer le token account du destinataire si nécessaire
signersrequisarray[string]Références aux constructs signataires

Sorties

NomTypeDescription
signaturestringLa signature calculée de la transaction
recipient_token_addresspubkeyL'adresse du token account destinataire
source_token_addresspubkeyL'adresse du token account source
token_mint_addresspubkeyL'adresse du mint du 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 peut être utilisé pour configurer un surfnet.

Les opérations suivantes sont prises en charge :

  • set_account - Définir les champs lamports, owner, data et executable d'un compte
  • set_token_account - Définir le montant, le délégué, le montant délégué et l'autorité de fermeture pour un token account
  • clone_program_account - Cloner un program account d'un ID de programme source vers un ID de programme de destination
  • set_program_authority - Définir l'autorité d'un programme
  • deploy_program - Déployer un programme directement sur le surfnet (via écriture directe dans le compte, sans transactions)
  • reset_account - Réinitialiser un compte, en le supprimant du cache local pour être récupéré depuis l'amont
  • stream_account - Diffuser les données du compte depuis le mainnet afin que les données locales correspondent toujours au mainnet

Entrées

NomRequisTypeDescription
descriptionoptionnelstringUne description de la configuration
rpc_api_urlrequisstringL'URL pour les requêtes API

set_account

Définit les données d'un compte directement sur le surfnet.

NomRequisTypeDescription
public_keyrequisstringLa clé publique du compte à définir
account_pathoptionnelstringLe chemin vers un fichier JSON contenant les données du compte à définir. Si fourni, les autres champs sont ignorés
lamportsoptionnelintegerLe montant en lamports que le compte doit avoir
dataoptionnelbytesLes données à définir dans le compte
owneroptionnelstringLe propriétaire à définir pour le compte
executableoptionnelboolL'état d'exécutabilité à définir pour le compte
rent_epochoptionnelintegerL'epoch à laquelle le compte sera exempté de loyer

Au moins un des paramètres lamports, data, owner, executable ou rent_epoch doit être fourni (sauf en cas d'utilisation de account_path).

set_token_account

Définit les données du token account sur le surfnet. L'associated token account est automatiquement dérivé de la clé publique du propriétaire et du token mint.

NameRequiredTypeDescription
public_keyrequiredstringLa clé publique du compte propriétaire du token à mettre à jour
tokenrequiredstringLe symbole du token (ex. : "usdc", "bonk") ou la clé publique du token mint
token_programoptionalstringL'identifiant du Token Program. Les valeurs valides sont token2020, token2022 ou une clé publique (par défaut : token2020)
amountoptionalintegerLe montant de tokens à définir
delegateoptionalstringLa clé publique du délégué à définir, ou null pour effacer
stateoptionalstringL'état du token account. Les valeurs valides sont initialized, frozen ou uninitialized
delegated_amountoptionalintegerLe montant de tokens à déléguer
close_authorityoptionalstringLa clé publique de l'autorité de fermeture à définir, ou null pour effacer

Au moins un des paramètres amount, delegate, state, delegated_amount ou close_authority doit être fourni.

clone_program_account

Clone un program account d'un identifiant de programme vers un autre sur le surfnet.

NameRequiredTypeDescription
source_program_idrequiredstringLa clé publique du programme à cloner
destination_program_idrequiredstringLa clé publique de destination du programme

set_program_authority

Définit ou supprime l'autorité de mise à niveau d'un programme sur le surfnet.

NameRequiredTypeDescription
program_idrequisstringLa pubkey du programme pour lequel définir l'autorité
authorityoptionnelstringLa nouvelle autorité du programme. Si non fournie, l'autorité du programme sera définie sur None (le rendant immuable)

deploy_program

Déploie un programme directement sur le surfnet via l'écriture de données de compte (et non via des transactions).

NameRequiredTypeDescription
program_idrequisstringLa pubkey du programme en cours de déploiement
binary_pathrequisstringL'emplacement du fichier .so du programme (ex. : ./target/deploy/my_program.so)
authorityoptionnelstringLa pubkey de l'autorité sur le programme après son déploiement. Si non fournie, le programme n'aura aucune autorité
idl_pathoptionnelstringL'emplacement du fichier IDL du programme (ex. : ./target/idl/my_program.json)

reset_account

Réinitialise un compte sur le surfnet, le supprimant du cache local afin qu'il soit récupéré à nouveau depuis le réseau en amont.

NameRequiredTypeDescription
public_keyrequisstringLa pubkey du compte à réinitialiser
include_owned_accountsoptionnelboolIndique s'il faut supprimer récursivement tous les comptes appartenant à ce compte. La valeur par défaut est false

stream_account

Diffuse en continu les données de compte depuis l'URL RPC du mainnet vers le surfnet, maintenant les données de compte locales synchronisées avec le mainnet.

NomRequisTypeDescription
public_keyrequisstringLa clé publique du compte à diffuser
include_owned_accountsoptionnelboolIndique si tous les comptes appartenant à ce compte doivent être diffusés de manière récursive. La valeur par défaut est 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?

Table des matières

Modifier la page
© 2026 Fondation Solana. Tous droits réservés.