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
| Nom | Requis | Type | Description |
|---|---|---|---|
description | optionnel | string | Une description de l'action de déploiement |
program | requis | object | Les artefacts du programme Solana à déployer |
payer | optionnel | string | Une référence à un signataire pour le paiement des coûts de déploiement |
authority | requis | string | Une référence à un signataire pour l'autorité du programme |
commitment_level | optionnel | string | Le niveau d'engagement ('processed', 'confirmed', 'finalized') |
auto_extend | optionnel | bool | Indique s'il faut étendre automatiquement le program account (défaut : true) |
Sorties
| Nom | Type | Description |
|---|---|---|
signatures | object | Les signatures de transaction calculées |
program_id | string | L'identifiant du programme déployé |
program_idl | string | L'IDL du programme |
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
L'action svm::process_instructions encode les instructions, les ajoute à une
transaction, puis signe et diffuse la transaction.
Entrées
| Nom | Requis | Type | Description |
|---|---|---|---|
description | optionnel | string | Une description de la transaction |
instruction | requis | map | Les instructions à ajouter à la transaction |
signers | requis | array[string] | Références aux constructions de signataires |
commitment_level | optionnel | string | Le niveau d'engagement |
rpc_api_url | requis | string | L'URL pour les requêtes API |
Sorties
| Nom | Type | Description |
|---|---|---|
signature | string | La signature calculée de la transaction |
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
L'action svm::send_sol encode une transaction qui envoie des SOL, la signe et
la diffuse sur le réseau.
Entrées
| Nom | Requis | Type | Description |
|---|---|---|---|
description | optionnel | string | Une description de la transaction |
amount | requis | integer | Le montant à envoyer, en lamports |
recipient | requis | string | L'adresse SVM du destinataire |
signer | requis | string | Une référence à un construct signataire |
commitment_level | optionnel | string | Le niveau d'engagement |
rpc_api_url | requis | string | L'URL pour les requêtes API |
Sorties
| Nom | Type | Description |
|---|---|---|
signature | string | La signature calculée de la transaction |
action "send_sol" "svm::send_sol" {description = "Send some SOL"amount = svm::sol_to_lamports(1)signer = signer.callerrecipient = "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
| Nom | Requis | Type | Description |
|---|---|---|---|
description | optionnel | string | Une description de la transaction |
amount | requis | integer | Le montant de tokens à envoyer, en unité de base |
token | requis | string | L'adresse du mint account du token |
recipient | requis | string | L'adresse SVM du destinataire |
authority | optionnel | string | Le pubkey du compte d'autorité |
fund_recipient | optionnel | bool | Créer et financer le token account du destinataire si nécessaire |
signers | requis | array[string] | Références aux constructs signataires |
Sorties
| Nom | Type | Description |
|---|---|---|
signature | string | La signature calculée de la transaction |
recipient_token_address | pubkey | L'adresse du token account destinataire |
source_token_address | pubkey | L'adresse du token account source |
token_mint_address | pubkey | L'adresse du mint du 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 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 compteset_token_account- Définir le montant, le délégué, le montant délégué et l'autorité de fermeture pour un token accountclone_program_account- Cloner un program account d'un ID de programme source vers un ID de programme de destinationset_program_authority- Définir l'autorité d'un programmedeploy_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'amontstream_account- Diffuser les données du compte depuis le mainnet afin que les données locales correspondent toujours au mainnet
Entrées
| Nom | Requis | Type | Description |
|---|---|---|---|
description | optionnel | string | Une description de la configuration |
rpc_api_url | requis | string | L'URL pour les requêtes API |
set_account
Définit les données d'un compte directement sur le surfnet.
| Nom | Requis | Type | Description |
|---|---|---|---|
public_key | requis | string | La clé publique du compte à définir |
account_path | optionnel | string | Le chemin vers un fichier JSON contenant les données du compte à définir. Si fourni, les autres champs sont ignorés |
lamports | optionnel | integer | Le montant en lamports que le compte doit avoir |
data | optionnel | bytes | Les données à définir dans le compte |
owner | optionnel | string | Le propriétaire à définir pour le compte |
executable | optionnel | bool | L'état d'exécutabilité à définir pour le compte |
rent_epoch | optionnel | integer | L'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.
| Name | Required | Type | Description |
|---|---|---|---|
public_key | required | string | La clé publique du compte propriétaire du token à mettre à jour |
token | required | string | Le symbole du token (ex. : "usdc", "bonk") ou la clé publique du token mint |
token_program | optional | string | L'identifiant du Token Program. Les valeurs valides sont token2020, token2022 ou une clé publique (par défaut : token2020) |
amount | optional | integer | Le montant de tokens à définir |
delegate | optional | string | La clé publique du délégué à définir, ou null pour effacer |
state | optional | string | L'état du token account. Les valeurs valides sont initialized, frozen ou uninitialized |
delegated_amount | optional | integer | Le montant de tokens à déléguer |
close_authority | optional | string | La 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.
| Name | Required | Type | Description |
|---|---|---|---|
source_program_id | required | string | La clé publique du programme à cloner |
destination_program_id | required | string | La clé publique de destination du programme |
set_program_authority
Définit ou supprime l'autorité de mise à niveau d'un programme sur le surfnet.
| Name | Required | Type | Description |
|---|---|---|---|
program_id | requis | string | La pubkey du programme pour lequel définir l'autorité |
authority | optionnel | string | La 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).
| Name | Required | Type | Description |
|---|---|---|---|
program_id | requis | string | La pubkey du programme en cours de déploiement |
binary_path | requis | string | L'emplacement du fichier .so du programme (ex. : ./target/deploy/my_program.so) |
authority | optionnel | string | La pubkey de l'autorité sur le programme après son déploiement. Si non fournie, le programme n'aura aucune autorité |
idl_path | optionnel | string | L'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.
| Name | Required | Type | Description |
|---|---|---|---|
public_key | requis | string | La pubkey du compte à réinitialiser |
include_owned_accounts | optionnel | bool | Indique 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.
| Nom | Requis | Type | Description |
|---|---|---|---|
public_key | requis | string | La clé publique du compte à diffuser |
include_owned_accounts | optionnel | bool | Indique 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 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?