Ці дії доступні при використанні SVM-аддона для побудови, підписання та трансляції транзакцій.
deploy_program
svm::deploy_program розгортає програму Solana у вказаній SVM-сумісній мережі.
Вхідні дані
| Назва | Обов'язково | Тип | Опис |
|---|---|---|---|
description | необов'язково | string | Опис дії розгортання |
program | обов'язково | object | Артефакти програми Solana для розгортання |
payer | необов'язково | string | Посилання на підписанта для оплати витрат на розгортання |
authority | обов'язково | string | Посилання на підписанта для авторитету програми |
commitment_level | необов'язково | string | Рівень підтвердження ('processed', 'confirmed', 'finalized') |
auto_extend | необов'язково | bool | Чи автоматично розширювати program account (за замовчуванням: true) |
Вихідні дані
| Назва | Тип | Опис |
|---|---|---|
signatures | object | Обчислені підписи транзакції |
program_id | string | ID програми розгорнутої програми |
program_idl | string | IDL програми |
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
Дія svm::process_instructions кодує інструкції, додає їх до транзакції, а
також підписує та транслює транзакцію.
Вхідні дані
| Назва | Обов'язково | Тип | Опис |
|---|---|---|---|
description | необов'язково | string | Опис транзакції |
instruction | обов'язково | map | Інструкції для додавання до транзакції |
signers | обов'язково | array[string] | Посилання на конструкти підписантів |
commitment_level | необов'язково | string | Рівень підтвердження |
rpc_api_url | обов'язково | string | URL для API-запитів |
Вихідні дані
| Назва | Тип | Опис |
|---|---|---|
signature | string | Обчислений підпис транзакції |
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
Дія svm::send_sol кодує транзакцію, яка надсилає SOL, підписує її та транслює
в мережу.
Вхідні дані
| Назва | Обов'язково | Тип | Опис |
|---|---|---|---|
description | необов'язково | string | Опис транзакції |
amount | обов'язково | integer | Сума для надсилання в lamports |
recipient | обов'язково | string | SVM-адреса отримувача |
signer | обов'язково | string | Посилання на конструкцію підписанта |
commitment_level | необов'язково | string | Рівень підтвердження |
rpc_api_url | обов'язково | string | URL для API-запитів |
Вихідні дані
| Назва | Тип | Опис |
|---|---|---|
signature | string | Обчислений підпис транзакції |
action "send_sol" "svm::send_sol" {description = "Send some SOL"amount = svm::sol_to_lamports(1)signer = signer.callerrecipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"}
send_token
Дія svm::send_token кодує транзакцію, яка надсилає вказаний токен, підписує її
та транслює в мережу.
Вхідні дані
| Назва | Обов'язково | Тип | Опис |
|---|---|---|---|
description | необов'язково | string | Опис транзакції |
amount | обов'язково | integer | Кількість токенів для надсилання в базових одиницях |
token | обов'язково | string | Адреса mint account токена |
recipient | обов'язково | string | SVM-адреса отримувача |
authority | необов'язково | string | pubkey облікового запису авторитету |
fund_recipient | необов'язково | bool | Створити та поповнити token account отримувача за потреби |
signers | обов'язково | array[string] | Посилання на конструкції підписантів |
Виводи
| Назва | Тип | Опис |
|---|---|---|
signature | string | Обчислений підпис транзакції |
recipient_token_address | pubkey | Адреса associated token account отримувача |
source_token_address | pubkey | Адреса вихідного token account |
token_mint_address | pubkey | Адреса мінту токена |
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 можна використовувати для налаштування surfnet.
Підтримуються такі операції:
set_account— Встановити lamports, власника, дані та поля виконуваності для облікового записуset_token_account— Встановити суму, делегата, делеговану суму та повноваження на закриття для token accountclone_program_account— Клонувати program account з вихідного ідентифікатора програми до цільового ідентифікатора програмиset_program_authority— Встановити повноваження програмиdeploy_program— Розгорнути програму безпосередньо на surfnet (через пряме записування до облікового запису, а не через транзакції)reset_account— Скинути обліковий запис, видаливши його з локального кешу для повторного отримання з upstreamstream_account— Транслювати дані облікового запису з mainnet, щоб локальні дані завжди збігалися з mainnet
Вхідні дані
| Назва | Обов'язковість | Тип | Опис |
|---|---|---|---|
description | необов'язковий | string | Опис налаштування |
rpc_api_url | обов'язковий | string | URL для API-запитів |
set_account
Встановлює дані облікового запису безпосередньо на surfnet.
| Назва | Обов'язковість | Тип | Опис |
|---|---|---|---|
public_key | обов'язковий | string | Публічний ключ облікового запису, який потрібно встановити |
account_path | необов'язковий | string | Шлях до JSON-файлу з даними облікового запису для встановлення. Якщо вказано, інші поля ігноруються |
lamports | необов'язковий | integer | Кількість lamports, яку повинен мати обліковий запис |
data | необов'язковий | bytes | Дані для запису в обліковий запис |
owner | необов'язковий | string | Власник, якого потрібно встановити для облікового запису |
executable | необов'язковий | bool | Стан виконуваності для встановлення облікового запису |
rent_epoch | необов'язковий | integer | epoch, після якого обліковий запис буде звільнений від орендної плати |
Необхідно вказати принаймні одне з: lamports, data, owner, executable
або rent_epoch (якщо не використовується account_path).
set_token_account
Встановлює дані token account на surfnet. associated token account автоматично визначається з відкритого ключа власника та токен-мінту.
| Name | Required | Type | Description |
|---|---|---|---|
public_key | required | string | Відкритий ключ облікового запису власника токена для оновлення |
token | required | string | Символ токена (наприклад, "usdc", "bonk") або відкритий ключ токен-мінту |
token_program | optional | string | Ідентифікатор Token Program. Допустимі значення: token2020, token2022 або відкритий ключ (за замовчуванням: token2020) |
amount | optional | integer | Кількість токенів для встановлення |
delegate | optional | string | Відкритий ключ делегата для встановлення або null для очищення |
state | optional | string | Стан token account. Допустимі значення: initialized, frozen або uninitialized |
delegated_amount | optional | integer | Кількість токенів для делегування |
close_authority | optional | string | Відкритий ключ close authority для встановлення або null для очищення |
Необхідно вказати принаймні одне з: amount, delegate, state,
delegated_amount або close_authority.
clone_program_account
Клонує program account з одного ідентифікатора програми в інший на surfnet.
| Name | Required | Type | Description |
|---|---|---|---|
source_program_id | required | string | Відкритий ключ програми для клонування |
destination_program_id | required | string | Цільовий відкритий ключ програми |
set_program_authority
Встановлює або видаляє повноваження на оновлення програми в surfnet.
| Назва | Обов'язковий | Тип | Опис |
|---|---|---|---|
program_id | обов'язковий | string | pubkey програми, для якої встановлюється повноваження |
authority | необов'язковий | string | Нове повноваження для програми. Якщо не вказано, повноваження програми буде встановлено на None (роблячи її незмінною) |
deploy_program
Розгортає програму безпосередньо в surfnet шляхом запису даних облікового запису (не через транзакції).
| Назва | Обов'язковий | Тип | Опис |
|---|---|---|---|
program_id | обов'язковий | string | pubkey програми, що розгортається |
binary_path | обов'язковий | string | Розташування файлу .so програми (наприклад, ./target/deploy/my_program.so) |
authority | необов'язковий | string | pubkey повноваження над програмою після її розгортання. Якщо не вказано, програма не матиме повноважень |
idl_path | необов'язковий | string | Розташування файлу IDL програми (наприклад, ./target/idl/my_program.json) |
reset_account
Скидає обліковий запис у surfnet, видаляючи його з локального кешу, щоб він був повторно отриманий із мережі верхнього рівня.
| Назва | Обов'язковий | Тип | Опис |
|---|---|---|---|
public_key | обов'язковий | string | pubkey облікового запису для скидання |
include_owned_accounts | необов'язковий | bool | Чи потрібно рекурсивно видаляти всі облікові записи, що належать цьому обліковому запису. За замовчуванням — false |
stream_account
Передає потоком дані акаунта з RPC URL основної мережі до surfnet, підтримуючи локальні дані акаунта синхронізованими з основною мережею.
| Назва | Обов'язковий | Тип | Опис |
|---|---|---|---|
public_key | обов'язковий | string | pubkey акаунта для потокової передачі |
include_owned_accounts | необов'язковий | bool | Чи передавати рекурсивно всі акаунти, якими володіє цей акаунт. За замовчуванням 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?