Các hành động này khả dụng khi sử dụng addon SVM để xây dựng, ký và phát sóng giao dịch.
deploy_program
svm::deploy_program triển khai một chương trình Solana lên mạng tương thích
SVM được chỉ định.
Đầu vào
| Name | Required | Type | Description |
|---|---|---|---|
description | optional | string | Mô tả về hành động triển khai |
program | required | object | Các artifact của chương trình Solana cần triển khai |
payer | optional | string | Tham chiếu đến một signer để thanh toán chi phí triển khai |
authority | required | string | Tham chiếu đến một signer cho quyền quản lý chương trình |
commitment_level | optional | string | Mức độ cam kết ('processed', 'confirmed', 'finalized') |
auto_extend | optional | bool | Có tự động mở rộng program account hay không (mặc định: true) |
Đầu ra
| Name | Type | Description |
|---|---|---|
signatures | object | Chữ ký giao dịch đã được tính toán |
program_id | string | ID chương trình của chương trình đã triển khai |
program_idl | string | IDL của chương trình |
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
Hành động svm::process_instructions mã hóa các lệnh, thêm chúng vào một giao
dịch, rồi ký và phát sóng giao dịch đó.
Đầu vào
| Name | Required | Type | Description |
|---|---|---|---|
description | optional | string | Mô tả về giao dịch |
instruction | required | map | Các lệnh cần thêm vào giao dịch |
signers | required | array[string] | Tham chiếu đến các cấu trúc signer |
commitment_level | optional | string | Mức độ cam kết |
rpc_api_url | required | string | URL cho các yêu cầu API |
Đầu ra
| Tên | Kiểu | Mô tả |
|---|---|---|
signature | string | Chữ ký được tính toán của giao dịch |
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
Hành động svm::send_sol mã hóa một giao dịch gửi SOL, ký và phát sóng lên
mạng.
Đầu vào
| Tên | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|
description | tùy chọn | string | Mô tả về giao dịch |
amount | bắt buộc | integer | Số lượng cần gửi, tính bằng lamport |
recipient | bắt buộc | string | Địa chỉ SVM của người nhận |
signer | bắt buộc | string | Tham chiếu đến một cấu trúc signer |
commitment_level | tùy chọn | string | Mức độ cam kết |
rpc_api_url | bắt buộc | string | URL cho các yêu cầu API |
Đầu ra
| Tên | Kiểu | Mô tả |
|---|---|---|
signature | string | Chữ ký được tính toán của giao dịch |
action "send_sol" "svm::send_sol" {description = "Send some SOL"amount = svm::sol_to_lamports(1)signer = signer.callerrecipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"}
send_token
Hành động svm::send_token mã hóa một giao dịch gửi token được chỉ định, ký và
phát sóng lên mạng.
Đầu vào
| Tên | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|
description | tùy chọn | string | Mô tả về giao dịch |
amount | bắt buộc | integer | Số lượng token cần gửi, tính theo đơn vị cơ sở |
token | bắt buộc | string | Địa chỉ của token mint account |
recipient | bắt buộc | string | Địa chỉ SVM của người nhận |
authority | tùy chọn | string | pubkey của tài khoản authority |
fund_recipient | tùy chọn | bool | Tạo và cấp vốn cho token account của người nhận nếu cần |
signers | bắt buộc | array[string] | Tham chiếu đến các cấu trúc signer |
Đầu ra
| Tên | Loại | Mô tả |
|---|---|---|
signature | string | Chữ ký đã được tính toán của giao dịch |
recipient_token_address | pubkey | Địa chỉ associated token account của người nhận |
source_token_address | pubkey | Địa chỉ token account nguồn |
token_mint_address | pubkey | Địa chỉ token mint |
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 có thể được dùng để cấu hình một surfnet.
Các thao tác sau được hỗ trợ:
set_account- Đặt các trường lamports, owner, data và executable của một tài khoảnset_token_account- Đặt số lượng, delegate, số lượng được ủy quyền và close authority cho một token accountclone_program_account- Sao chép một program account từ ID chương trình nguồn sang ID chương trình đíchset_program_authority- Đặt authority của một chương trìnhdeploy_program- Triển khai một chương trình trực tiếp lên surfnet (thông qua ghi tài khoản trực tiếp, không qua giao dịch)reset_account- Đặt lại một tài khoản, xóa nó khỏi bộ nhớ đệm cục bộ để tải lại từ upstreamstream_account- Truyền dữ liệu tài khoản từ mainnet để dữ liệu cục bộ luôn khớp với mainnet
Đầu vào
| Tên | Bắt buộc | Loại | Mô tả |
|---|---|---|---|
description | tùy chọn | string | Mô tả về thiết lập |
rpc_api_url | bắt buộc | string | URL cho các yêu cầu API |
set_account
Đặt dữ liệu tài khoản trực tiếp trên surfnet.
| Tên | Bắt buộc | Loại | Mô tả |
|---|---|---|---|
public_key | bắt buộc | string | Khóa công khai của tài khoản cần đặt |
account_path | tùy chọn | string | Đường dẫn đến tệp JSON chứa dữ liệu tài khoản cần đặt. Nếu được cung cấp, các trường khác sẽ bị bỏ qua |
lamports | tùy chọn | integer | Số lượng lamport mà tài khoản sẽ được đặt |
data | tùy chọn | bytes | Dữ liệu cần đặt trong tài khoản |
owner | tùy chọn | string | Owner cần đặt cho tài khoản |
executable | tùy chọn | bool | Trạng thái khả năng thực thi cần đặt cho tài khoản |
rent_epoch | tùy chọn | integer | epoch mà tài khoản sẽ được miễn phí thuê |
Ít nhất một trong số lamports, data, owner, executable, hoặc
rent_epoch phải được cung cấp (trừ khi sử dụng account_path).
set_token_account
Đặt dữ liệu token account trên surfnet. associated token account được tự động suy ra từ khóa công khai của chủ sở hữu và token mint.
| Name | Required | Type | Description |
|---|---|---|---|
public_key | required | string | Khóa công khai của tài khoản chủ sở hữu token cần cập nhật |
token | required | string | Ký hiệu token (ví dụ: "usdc", "bonk") hoặc khóa công khai của token mint |
token_program | optional | string | ID của Token Program. Các giá trị hợp lệ là token2020, token2022, hoặc một khóa công khai (mặc định: token2020) |
amount | optional | integer | Số lượng token cần đặt |
delegate | optional | string | Khóa công khai của delegate cần đặt, hoặc null để xóa |
state | optional | string | Trạng thái của token account. Các giá trị hợp lệ là initialized, frozen, hoặc uninitialized |
delegated_amount | optional | integer | Số lượng token cần ủy quyền |
close_authority | optional | string | Khóa công khai của close authority cần đặt, hoặc null để xóa |
Ít nhất một trong số amount, delegate, state, delegated_amount, hoặc
close_authority phải được cung cấp.
clone_program_account
Sao chép một program account từ ID chương trình này sang ID chương trình khác trên surfnet.
| Name | Required | Type | Description |
|---|---|---|---|
source_program_id | required | string | Khóa công khai của chương trình cần sao chép |
destination_program_id | required | string | Khóa công khai đích của chương trình |
set_program_authority
Đặt hoặc xóa quyền nâng cấp của một chương trình trên surfnet.
| Tên | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|
program_id | bắt buộc | string | pubkey của chương trình cần đặt quyền |
authority | tùy chọn | string | Quyền mới cho chương trình. Nếu không được cung cấp, quyền của chương trình sẽ được đặt thành None (khiến nó bất biến) |
deploy_program
Triển khai một chương trình trực tiếp lên surfnet thông qua ghi dữ liệu tài khoản (không qua giao dịch).
| Tên | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|
program_id | bắt buộc | string | pubkey của chương trình đang được triển khai |
binary_path | bắt buộc | string | Vị trí của tệp .so của chương trình (ví dụ: ./target/deploy/my_program.so) |
authority | tùy chọn | string | pubkey của quyền quản lý chương trình sau khi triển khai. Nếu không được cung cấp, chương trình sẽ không có quyền quản lý |
idl_path | tùy chọn | string | Vị trí của tệp IDL của chương trình (ví dụ: ./target/idl/my_program.json) |
reset_account
Đặt lại một tài khoản trên surfnet, xóa nó khỏi bộ nhớ cache cục bộ để nó sẽ được tải lại từ mạng thượng nguồn.
| Tên | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|
public_key | bắt buộc | string | pubkey của tài khoản cần đặt lại |
include_owned_accounts | tùy chọn | bool | Có xóa đệ quy tất cả các tài khoản thuộc sở hữu của tài khoản này hay không. Mặc định là false |
stream_account
Truyền dữ liệu tài khoản từ URL RPC mainnet đến surfnet, giữ cho dữ liệu tài khoản cục bộ luôn đồng bộ với mainnet.
| Tên | Bắt buộc | Kiểu | Mô tả |
|---|---|---|---|
public_key | bắt buộc | string | pubkey của tài khoản cần truyền |
include_owned_accounts | tùy chọn | bool | Có truyền đệ quy tất cả các tài khoản thuộc sở hữu của tài khoản này hay không. Mặc định là 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?