Solana DokümantasyonuKod Olarak AltyapıSVM Eklentisi

SVM Eylemleri

Bu eylemler, işlem oluşturma, imzalama ve yayınlama için SVM eklentisi kullanılırken mevcuttur.

deploy_program

svm::deploy_program, bir Solana programını belirtilen SVM uyumlu ağa dağıtır.

Girdiler

AdZorunluTürAçıklama
descriptionisteğe bağlıstringDağıtım eyleminin açıklaması
programzorunluobjectDağıtılacak Solana program yapıları
payeristeğe bağlıstringDağıtım maliyetlerini karşılayan imzalayıcıya referans
authorityzorunlustringProgram yetkisi için imzalayıcıya referans
commitment_levelisteğe bağlıstringTaahhüt seviyesi ('processed', 'confirmed', 'finalized')
auto_extendisteğe bağlıboolprogram account'un otomatik genişletilip genişletilmeyeceği (varsayılan: true)

Çıktılar

AdTürAçıklama
signaturesobjectHesaplanan işlem imzaları
program_idstringDağıtılan programın program kimliği
program_idlstringProgram IDL'si
action "deploy" "svm::deploy_program" {
description = "Deploy hello world program"
program = svm::get_program_from_anchor_project("hello_world")
authority = signer.authority
payer = signer.payer # Optional, defaults to authority
}

process_instructions

svm::process_instructions eylemi, talimatları kodlar, bunları bir işleme ekler ve işlemi imzalayarak yayınlar.

Girdiler

AdZorunluTürAçıklama
descriptionisteğe bağlıstringİşlemin açıklaması
instructionzorunlumapİşleme eklenecek talimatlar
signerszorunluarray[string]İmzalayıcı yapılarına referanslar
commitment_levelisteğe bağlıstringTaahhüt seviyesi
rpc_api_urlzorunlustringAPI istekleri için URL

Çıktılar

AdTürAçıklama
signaturestringİşlem için hesaplanan imza
action "program_call" "svm::process_instructions" {
description = "Invoke instructions"
instruction {
program_idl = variable.program.idl
instruction_name = "initialize"
instruction_args = [1]
payer {
public_key = signer.payer.public_key
}
}
signers = [signer.caller]
}

send_sol

svm::send_sol eylemi, SOL gönderen bir işlemi kodlar, imzalar ve ağa yayınlar.

Girdiler

AdZorunluTürAçıklama
descriptionisteğe bağlıstringİşlemin açıklaması
amountzorunluintegerGönderilecek miktar, lamport cinsinden
recipientzorunlustringAlıcının SVM adresi
signerzorunlustringBir imzalayıcı yapısına referans
commitment_levelisteğe bağlıstringTaahhüt seviyesi
rpc_api_urlzorunlustringAPI istekleri için URL

Çıktılar

AdTürAçıklama
signaturestringİşlem için hesaplanan imza
action "send_sol" "svm::send_sol" {
description = "Send some SOL"
amount = svm::sol_to_lamports(1)
signer = signer.caller
recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
}

send_token

svm::send_token eylemi, belirtilen token'ı gönderen bir işlemi kodlar, imzalar ve ağa yayınlar.

Girdiler

AdZorunluTürAçıklama
descriptionisteğe bağlıstringİşlemin açıklaması
amountzorunluintegerGönderilecek token miktarı, temel birim cinsinden
tokenzorunlustringToken mint account adresi
recipientzorunlustringAlıcının SVM adresi
authorityisteğe bağlıstringYetki hesabının pubkey değeri
fund_recipientisteğe bağlıboolGerekirse alıcı token account oluştur ve fonla
signerszorunluarray[string]İmzalayıcı yapılarına referanslar

Çıktılar

AdTürAçıklama
signaturestringİşlem tarafından hesaplanan imza
recipient_token_addresspubkeyAlıcı token account adresi
source_token_addresspubkeyKaynak token account adresi
token_mint_addresspubkeyToken mint adresi
action "send_sol" "svm::send_token" {
description = "Send some tokens"
amount = 1000000
signers = [signer.caller]
recipient = "zbBjhHwuqyKMmz8ber5oUtJJ3ZV4B6ePmANfGyKzVGV"
token = "3bv3j4GvMPjvvBX9QdoX27pVoWhDSXpwKZipFF1QiVr6"
fund_recipient = true
}

setup_surfnet

svm::setup_surfnet bir surfnet yapılandırmak için kullanılabilir.

Aşağıdaki işlemler desteklenmektedir:

  • set_account - Bir hesabın lamports, sahip, veri ve çalıştırılabilir alanlarını ayarlar
  • set_token_account - Bir token account için miktar, delege, delege edilen miktar ve kapatma yetkisini ayarlar
  • clone_program_account - Bir program account'ı kaynak program kimliğinden hedef program kimliğine klonlar
  • set_program_authority - Bir programın yetkisini ayarlar
  • deploy_program - Surfnet'e doğrudan bir program dağıtır (işlemler aracılığıyla değil, doğrudan hesap yazma yoluyla)
  • reset_account - Bir hesabı sıfırlar, yerel önbellekten kaldırarak upstream'den yeniden getirilmesini sağlar
  • stream_account - Mainnet'ten hesap verilerini akışa alarak yerel verilerin her zaman mainnet ile eşleşmesini sağlar

Girdiler

AdZorunluTürAçıklama
descriptionisteğe bağlıstringKurulumun açıklaması
rpc_api_urlzorunlustringAPI istekleri için URL

set_account

Hesap verilerini doğrudan surfnet üzerinde ayarlar.

AdZorunluTürAçıklama
public_keyzorunlustringAyarlanacak hesabın açık anahtarı
account_pathisteğe bağlıstringAyarlanacak hesap verilerini içeren JSON dosyasının yolu. Sağlanırsa diğer alanlar yoksayılır
lamportsisteğe bağlıintegerHesabın sahip olması gereken lamport miktarı
dataisteğe bağlıbytesHesapta ayarlanacak veri
owneristeğe bağlıstringHesap için ayarlanacak sahip
executableisteğe bağlıboolHesap için ayarlanacak çalıştırılabilirlik durumu
rent_epochisteğe bağlıintegerHesabın kira muafiyetine kavuşacağı epoch

lamports, data, owner, executable veya rent_epoch değerlerinden en az biri sağlanmalıdır (account_path kullanılmıyorsa).

set_token_account

surfnet üzerindeki token account verilerini ayarlar. associated token account, sahibin genel anahtarı ve token mint'inden otomatik olarak türetilir.

AdZorunluTürAçıklama
public_keyzorunlustringGüncellenecek token sahibi hesabının genel anahtarı
tokenzorunlustringToken sembolü (örn. "usdc", "bonk") veya token mint için genel anahtar
token_programisteğe bağlıstringToken Program kimliği. Geçerli değerler: token2020, token2022 veya bir genel anahtar (varsayılan: token2020)
amountisteğe bağlıintegerAyarlanacak token miktarı
delegateisteğe bağlıstringAyarlanacak temsilcinin genel anahtarı veya temizlemek için null
stateisteğe bağlıstringtoken account durumu. Geçerli değerler: initialized, frozen veya uninitialized
delegated_amountisteğe bağlıintegerDevredilecek token miktarı
close_authorityisteğe bağlıstringAyarlanacak kapatma yetkilisinin genel anahtarı veya temizlemek için null

amount, delegate, state, delegated_amount veya close_authority değerlerinden en az biri sağlanmalıdır.

clone_program_account

Bir program account'ı surfnet üzerinde bir program kimliğinden diğerine klonlar.

AdZorunluTürAçıklama
source_program_idzorunlustringKlonlanacak programın genel anahtarı
destination_program_idzorunlustringProgramın hedef genel anahtarı

set_program_authority

Bir programın surfnet üzerindeki yükseltme yetkisini ayarlar veya kaldırır.

AdZorunluTürAçıklama
program_idzorunlustringYetki atanacak programın pubkey değeri
authorityisteğe bağlıstringProgram için yeni yetki. Belirtilmezse, programın yetkisi None olarak ayarlanır (değiştirilemez hale gelir)

deploy_program

Bir programı hesap verisi yazma yoluyla (işlemler aracılığıyla değil) doğrudan surfnet'e dağıtır.

AdZorunluTürAçıklama
program_idzorunlustringDağıtılan programın pubkey değeri
binary_pathzorunlustringProgramın .so dosyasının konumu (örn. ./target/deploy/my_program.so)
authorityisteğe bağlıstringProgram dağıtıldıktan sonra program üzerindeki yetkinin pubkey değeri. Belirtilmezse, programın yetkisi olmaz
idl_pathisteğe bağlıstringProgramın IDL dosyasının konumu (örn. ./target/idl/my_program.json)

reset_account

surfnet üzerindeki bir hesabı sıfırlar; yerel önbellekten kaldırarak yukarı akış ağından yeniden getirilmesini sağlar.

AdZorunluTürAçıklama
public_keyzorunlustringSıfırlanacak hesabın pubkey değeri
include_owned_accountsisteğe bağlıboolBu hesaba ait tüm hesapların yinelemeli olarak silinip silinmeyeceği. Varsayılan değer false'tur

stream_account

Mainnet RPC URL'sinden surfnet'e hesap verilerini akışa alır ve yerel hesap verilerini mainnet ile senkronize tutar.

AdZorunluTürAçıklama
public_keyzorunlustringAkışa alınacak hesabın pubkey'i
include_owned_accountsisteğe bağlıboolBu hesaba ait tüm hesapların yinelemeli olarak akışa alınıp alınmayacağı. Varsayılan değer false'tur
action "setup" "svm::setup_surfnet" {
// Set account balance
set_account {
public_key = signer.caller.public_key
lamports = 999999999
}
// Set token balance
set_token_account {
public_key = signer.caller.public_key
token = "usdc"
amount = 1000000
}
// Clone a program
clone_program_account {
source_program_id = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
destination_program_id = variable.my_program_id
}
// Set program authority
set_program_authority {
program_id = variable.my_program_id
authority = signer.caller.public_key
}
// Deploy a program directly
deploy_program {
program_id = variable.my_program_id
binary_path = "./target/deploy/my_program.so"
idl_path = "./target/idl/my_program.json"
}
// Reset an account to re-fetch from upstream
reset_account {
public_key = variable.some_pubkey
}
// Stream account data from mainnet
stream_account {
public_key = variable.some_pubkey
include_owned_accounts = true
}
}

Is this page helpful?

İçindekiler

Sayfayı Düzenle
© 2026 Solana Vakfı. Tüm hakları saklıdır.