Эти действия доступны при использовании дополнения SVM для построения, подписания и отправки транзакций.
deploy_program
svm::deploy_program развёртывает программу Solana в указанной SVM-совместимой
сети.
Входные параметры
| Name | Required | Type | Description |
|---|---|---|---|
description | optional | string | Описание действия по развёртыванию |
program | required | object | Артефакты программы Solana для развёртывания |
payer | optional | string | Ссылка на подписанта для оплаты затрат на развёртывание |
authority | required | string | Ссылка на подписанта для авторизации программы |
commitment_level | optional | string | Уровень подтверждения ('processed', 'confirmed', 'finalized') |
auto_extend | optional | bool | Автоматически ли расширять program account (по умолчанию: true) |
Выходные параметры
| Name | Type | Description |
|---|---|---|
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 кодирует инструкции, добавляет их в
транзакцию, а затем подписывает и отправляет транзакцию.
Входные параметры
| Name | Required | Type | Description |
|---|---|---|---|
description | optional | string | Описание транзакции |
instruction | required | map | Инструкции для добавления в транзакцию |
signers | required | array[string] | Ссылки на конструкты подписантов |
commitment_level | optional | string | Уровень подтверждения |
rpc_api_url | required | 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 | Сумма для отправки в lamport |
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 аккаунта authority |
fund_recipient | опционально | bool | Создать и пополнить token account получателя при необходимости |
signers | обязательно | array[string] | Ссылки на конструкции подписантов |
Выходные данные
| Название | Тип | Описание |
|---|---|---|
signature | string | Вычисленная подпись транзакции |
recipient_token_address | pubkey | Адрес 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, owner, data и executable для аккаунтаset_token_account— Задать сумму, делегата, делегированную сумму и authority закрытия для token accountclone_program_account— Клонировать program account из исходного program ID в целевой program IDset_program_authority— Задать authority программыdeploy_program— Развернуть программу непосредственно на surfnet (через прямую запись в аккаунт, без транзакций)reset_account— Сбросить аккаунт, удалив его из локального кэша для повторного получения из вышестоящего узлаstream_account— Транслировать данные аккаунта из мейннета, чтобы локальные данные всегда соответствовали мейннету
Входные данные
| Название | Обязательно | Тип | Описание |
|---|---|---|---|
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 | Owner, устанавливаемый для аккаунта |
executable | опционально | bool | Состояние исполняемости, устанавливаемое для аккаунта |
rent_epoch | опционально | integer | Epoch, в котором аккаунт будет освобождён от арендной платы |
Необходимо указать хотя бы один из следующих параметров: lamports, data,
owner, executable или rent_epoch (если не используется account_path).
set_token_account
Устанавливает данные token account в surfnet. Associated token account автоматически определяется на основе публичного ключа владельца и token mint.
| Имя | Обязательный | Тип | Описание |
|---|---|---|---|
public_key | обязательный | string | Публичный ключ аккаунта владельца токена для обновления |
token | обязательный | string | Символ токена (например, "usdc", "bonk") или публичный ключ для token mint |
token_program | необязательный | string | ID Token Program. Допустимые значения: token2020, token2022 или публичный ключ (по умолчанию: token2020) |
amount | необязательный | integer | Количество токенов для установки |
delegate | необязательный | string | Публичный ключ делегата для установки или null для сброса |
state | необязательный | string | Состояние token account. Допустимые значения: initialized, frozen или uninitialized |
delegated_amount | необязательный | integer | Количество токенов для делегирования |
close_authority | необязательный | string | Публичный ключ close authority для установки или null для сброса |
Необходимо указать хотя бы один из следующих параметров: amount, delegate,
state, delegated_amount или close_authority.
clone_program_account
Клонирует program account из одного ID программы в другой в surfnet.
| Имя | Обязательный | Тип | Описание |
|---|---|---|---|
source_program_id | обязательный | string | Публичный ключ программы для клонирования |
destination_program_id | обязательный | string | Целевой публичный ключ программы |
set_program_authority
Устанавливает или удаляет полномочия на обновление программы в surfnet.
| Название | Обязательный | Тип | Описание |
|---|---|---|---|
program_id | обязательный | string | Публичный ключ программы, для которой устанавливаются полномочия |
authority | необязательный | string | Новые полномочия для программы. Если не указано, полномочия программы будут установлены в None (делая её неизменяемой) |
deploy_program
Развёртывает программу непосредственно в surfnet через запись данных аккаунта (не через транзакции).
| Название | Обязательный | Тип | Описание |
|---|---|---|---|
program_id | обязательный | string | Публичный ключ развёртываемой программы |
binary_path | обязательный | string | Путь к .so-файлу программы (например, ./target/deploy/my_program.so) |
authority | необязательный | string | Публичный ключ владельца полномочий над программой после её развёртывания. Если не указано, программа не будет иметь полномочий |
idl_path | необязательный | string | Путь к IDL-файлу программы (например, ./target/idl/my_program.json) |
reset_account
Сбрасывает аккаунт в surfnet, удаляя его из локального кэша, чтобы он был повторно получен из вышестоящей сети.
| Название | Обязательный | Тип | Описание |
|---|---|---|---|
public_key | обязательный | string | Публичный ключ аккаунта для сброса |
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?