이 액션들은 트랜잭션 빌드, 서명 및 브로드캐스트를 위한 SVM 애드온을 사용할 때 제공됩니다.
deploy_program
svm::deploy_program는 지정된 SVM 호환 네트워크에 Solana 프로그램을 배포합니다.
입력값
| 이름 | 필수 여부 | 타입 | 설명 |
|---|---|---|---|
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 | API 요청을 위한 URL |
출력
| 이름 | 유형 | 설명 |
|---|---|---|
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 | API 요청 URL |
출력
| 이름 | 유형 | 설명 |
|---|---|---|
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 | 수신자 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- 계정의 lamport, 소유자, 데이터 및 실행 가능 필드 설정set_token_account- token account의 금액, 위임자, 위임 금액 및 종료 권한 설정clone_program_account- 소스 program ID에서 대상 program ID로 program account 복제set_program_authority- 프로그램의 권한 설정deploy_program- surfnet에 프로그램 직접 배포 (트랜잭션이 아닌 직접 계정 쓰기 방식)reset_account- 계정을 초기화하여 로컬 캐시에서 제거하고 업스트림에서 다시 가져옴stream_account- 메인넷에서 계정 데이터를 스트리밍하여 로컬 데이터가 항상 메인넷과 일치하도록 유지
입력
| 이름 | 필수 여부 | 유형 | 설명 |
|---|---|---|---|
description | 선택 | string | 설정에 대한 설명 |
rpc_api_url | 필수 | string | API 요청을 위한 URL |
set_account
surfnet에 계정 데이터를 직접 설정합니다.
| 이름 | 필수 여부 | 유형 | 설명 |
|---|---|---|---|
public_key | 필수 | string | 설정할 계정의 공개 키 |
account_path | 선택 | string | 설정할 계정 데이터가 포함된 JSON 파일 경로. 제공된 경우 다른 필드는 무시됨 |
lamports | 선택 | integer | 계정에 설정할 lamport 수량 |
data | 선택 | bytes | 계정에 설정할 데이터 |
owner | 선택 | string | 계정에 설정할 소유자 |
executable | 선택 | bool | 계정에 설정할 실행 가능 상태 |
rent_epoch | 선택 | integer | 계정이 렌트 면제가 되는 epoch |
lamports, data, owner, executable, 또는 rent_epoch 중 적어도 하나는
제공되어야 합니다 (account_path를 사용하는 경우 제외).
set_token_account
surfnet에서 token account 데이터를 설정합니다. associated token account는 소유자의 공개 키와 토큰 민트로부터 자동으로 도출됩니다.
| 이름 | 필수 여부 | 타입 | 설명 |
|---|---|---|---|
public_key | 필수 | string | 업데이트할 토큰 소유자 계정의 공개 키 |
token | 필수 | string | 토큰 심볼(예: "usdc", "bonk") 또는 토큰 민트의 공개 키 |
token_program | 선택 | string | Token Program ID. 유효한 값은 token2020, token2022, 또는 공개 키입니다 (기본값: token2020) |
amount | 선택 | integer | 설정할 토큰 수량 |
delegate | 선택 | string | 설정할 위임자의 공개 키, 또는 초기화하려면 null |
state | 선택 | string | token account의 상태. 유효한 값은 initialized, frozen, 또는 uninitialized |
delegated_amount | 선택 | integer | 위임할 토큰 수량 |
close_authority | 선택 | string | 설정할 클로즈 권한의 공개 키, 또는 초기화하려면 null |
amount, delegate, state, delegated_amount, 또는 close_authority 중
적어도 하나는 제공되어야 합니다.
clone_program_account
surfnet에서 한 프로그램 ID의 program account를 다른 프로그램 ID로 복제합니다.
| 이름 | 필수 여부 | 타입 | 설명 |
|---|---|---|---|
source_program_id | 필수 | string | 복제할 프로그램의 공개 키 |
destination_program_id | 필수 | 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?