Solana-dokumentaatioOhjelmien kehittäminen

Ohjelmien kehittäminen Rustilla

Solana-ohjelmat kehitetään pääasiassa Rust-ohjelmointikielellä. Tämä sivu keskittyy Solana-ohjelmien kirjoittamiseen Rustilla ilman Anchor- viitekehystä, lähestymistapaa jota usein kutsutaan "natiivi Rust" -ohjelmien kirjoittamiseksi.

Natiivi Rust-kehitys tarjoaa kehittäjille suoran hallinnan Solana- ohjelmiinsa. Tämä lähestymistapa vaatii kuitenkin enemmän manuaalista asetusta ja perusrakenteen koodia verrattuna Anchor-viitekehyksen käyttöön. Tätä menetelmää suositellaan kehittäjille, jotka:

  • Haluavat yksityiskohtaista hallintaa ohjelmalogiikkaan ja optimointeihin
  • Haluavat oppia peruskäsitteet ennen siirtymistä korkeamman tason viitekehyksiin

Aloittelijoille suosittelemme aloittamista Anchor-viitekehyksellä. Katso Anchor -osio saadaksesi lisätietoja.

Edellytykset

Yksityiskohtaiset asennusohjeet löytyvät asennus -sivulta.

Ennen kuin aloitat, varmista että sinulla on seuraavat asennettuna:

  • Rust: Ohjelmointikieli Solana-ohjelmien rakentamiseen.
  • Solana CLI: Komentorivityökalu Solana-kehitykseen.

Aloittaminen

Alla oleva esimerkki kattaa perusvaiheet ensimmäisen Rustilla kirjoitetun Solana-ohjelman luomiseen. Luomme minimaalisen ohjelman, joka tulostaa "Hello, world!" ohjelman lokiin.

Luo uusi ohjelma

Luo ensin uusi Rust-projekti käyttämällä tavallista cargo new -komentoa --lib -lipulla.

Terminal
$
cargo new hello_world --lib

Siirry projektin hakemistoon. Sinun pitäisi nähdä oletusarvoiset src/lib.rs ja Cargo.toml -tiedostot

Terminal
$
cd hello_world

Päivitä edition -kenttä tiedostossa Cargo.toml arvoon 2021. Muuten saatat kohdata virheen ohjelmaa rakentaessasi.

Lisää solana-program riippuvuus

Lisää seuraavaksi solana-program -riippuvuus. Tämä on vähimmäisriippuvuus, joka vaaditaan Solana-ohjelman rakentamiseen.

Terminal
$
cargo add solana-program@2.2.0

Lisää crate-type

Lisää seuraavaksi seuraava pätkä tiedostoon Cargo.toml.

Cargo.toml
[lib]
crate-type = ["cdylib", "lib"]

Jos et sisällytä tätä konfiguraatiota, target/deploy -hakemistoa ei luoda, kun rakennat ohjelman.

Cargo.toml -tiedostosi pitäisi näyttää seuraavalta:

Cargo.toml
[package]
name = "hello_world"
version = "0.1.0"
edition = "2021"
[lib]
crate-type = ["cdylib", "lib"]
[dependencies]
solana-program = "2.2.0"

Lisää ohjelmakoodi

Korvaa seuraavaksi src/lib.rs -tiedoston sisältö seuraavalla koodilla. Tämä on minimaalinen Solana-ohjelma, joka tulostaa "Hello, world!" ohjelman lokiin, kun ohjelmaa kutsutaan.

msg! -makroa käytetään Solana-ohjelmissa tulostamaan viesti ohjelman lokiin.

src/lib.rs
use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, pubkey::Pubkey,
};
entrypoint!(process_instruction);
pub fn process_instruction(
_program_id: &Pubkey,
_accounts: &[AccountInfo],
_instruction_data: &[u8],
) -> ProgramResult {
msg!("Hello, world!");
Ok(())
}

Rakenna ohjelma

Rakenna seuraavaksi ohjelma käyttämällä cargo build-sbf -komentoa.

Terminal
$
cargo build-sbf

Tämä komento luo target/deploy -hakemiston, joka sisältää kaksi tärkeää tiedostoa:

  1. .so -tiedosto (esim. hello_world.so): Tämä on käännetty Solana-ohjelma, joka otetaan käyttöön verkkoon "älysopimuksena".
  2. Keypair-tiedosto (esim. hello_world-keypair.json): Tämän keypair-parin julkista avainta käytetään ohjelman ID:nä ohjelmaa otettaessa käyttöön.

Nähdäksesi ohjelmatunnuksen, suorita seuraava komento päätteessäsi. Tämä komento tulostaa määritetyssä tiedostopolussa olevan keypair:in julkisen avaimen:

Terminal
$
solana address -k ./target/deploy/hello_world-keypair.json

Esimerkki tulostuksesta:

4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz

Lisää testiriippuvuudet

Testaa seuraavaksi ohjelma käyttämällä litesvm -cratea. Lisää seuraavat riippuvuudet tiedostoon Cargo.toml.

Terminal
$
cargo add litesvm@0.6.1 --dev
$
cargo add solana-sdk@2.2.0 --dev

Testaa ohjelma

Lisää seuraava testi tiedostoon src/lib.rs, ohjelmakoodin alle. Tämä on testimoduuli, joka kutsuu hello world -ohjelmaa.

src/lib.rs
use solana_program::{
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, pubkey::Pubkey,
};
entrypoint!(process_instruction);
pub fn process_instruction(
_program_id: &Pubkey,
_accounts: &[AccountInfo],
_instruction_data: &[u8],
) -> ProgramResult {
msg!("Hello, world!");
Ok(())
}
#[cfg(test)]
mod test {
use litesvm::LiteSVM;
use solana_sdk::{
instruction::Instruction,
message::Message,
signature::{Keypair, Signer},
transaction::Transaction,
};
#[test]
fn test_hello_world() {
// Create a new LiteSVM instance
let mut svm = LiteSVM::new();
// Create a keypair for the transaction payer
let payer = Keypair::new();
// Airdrop some lamports to the payer
svm.airdrop(&payer.pubkey(), 1_000_000_000).unwrap();
// Load our program
let program_keypair = Keypair::new();
let program_id = program_keypair.pubkey();
svm.add_program_from_file(program_id, "target/deploy/hello_world.so")
.unwrap();
// Create instruction with no accounts and no data
let instruction = Instruction {
program_id,
accounts: vec![],
data: vec![],
};
// Create transaction
let message = Message::new(&[instruction], Some(&payer.pubkey()));
let transaction = Transaction::new(&[&payer], message, svm.latest_blockhash());
// Send transaction and verify it succeeds
let result = svm.send_transaction(transaction);
assert!(result.is_ok(), "Transaction should succeed");
let logs = result.unwrap().logs;
println!("Logs: {logs:#?}");
}
}

Suorita testi käyttämällä cargo test -komentoa. Ohjelman loki näyttää tekstin "Hello, world!".

Terminal
$
cargo test -- --no-capture

Esimerkki tulostuksesta:

Terminal
running 1 test
Logs: [
"Program 9528phXNvdWp5kkR4rgpoeZvR8ZWT5THVywK95YRprkk invoke [1]",
"Program log: Hello, world!",
"Program 9528phXNvdWp5kkR4rgpoeZvR8ZWT5THVywK95YRprkk consumed 211 of 200000 compute units",
"Program 9528phXNvdWp5kkR4rgpoeZvR8ZWT5THVywK95YRprkk success",
]
test test::test_hello_world ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s

Ota ohjelma käyttöön

Seuraavaksi julkaise ohjelma. Paikallisessa kehityksessä voimme käyttää solana-test-validator -komentoa.

Ensin, määritä Solana CLI käyttämään paikallista Solana-klusteria.

Terminal
$
solana config set -ul

Esimerkki tulostuksesta:

Config File: /.config/solana/cli/config.yml
RPC URL: http://localhost:8899
WebSocket URL: ws://localhost:8900/ (computed)
Keypair Path: /.config/solana/id.json
Commitment: confirmed

Avaa uusi terminaali ja suorita solana-test-validators -komento käynnistääksesi paikallisen validatorin.

Terminal
$
solana-test-validator

Kun testivalidatori on käynnissä, suorita solana program deploy -komento erillisessä terminaalissa julkaistaksesi ohjelman paikalliseen validatoriin.

Terminal
$
solana program deploy ./target/deploy/hello_world.so

Esimerkki tulostuksesta:

Program Id: 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz
Signature:
5osMiNMiDZGM7L1e2tPHxU8wdB8gwG8fDnXLg5G7SbhwFz4dHshYgAijk4wSQL5cXiu8z1MMou5kLadAQuHp7ybH

Voit tarkastella ohjelmatunnusta ja tapahtuman allekirjoitusta Solana Explorerissa.

Huomaa, että Solana Explorerin klusterin on myös oltava localhost. Solana Explorerin "Custom RPC URL" -vaihtoehto on oletuksena http://localhost:8899.

Luo esimerkkiasiakas

Seuraavaksi näytämme, miten ohjelmaa kutsutaan Rust-asiakkaalla.

Luo ensin examples -hakemisto ja client.rs -tiedosto.

Terminal
$
mkdir -p examples && touch examples/client.rs

Lisää seuraava tiedostoon Cargo.toml.

Cargo.toml
[[example]]
name = "client"
path = "examples/client.rs"

Lisää solana-client- ja tokio-riippuvuudet.

Terminal
$
cargo add solana-client@2.2.0 --dev
$
cargo add tokio --dev

Lisää asiakas

Lisää seuraava koodi tiedostoon examples/client.rs. Tämä on Rust-asiakasohjelma, joka rahoittaa uuden keypair-avaimen transaktiomaksujen maksamiseksi ja kutsuu sitten hello world -ohjelmaa.

examples/client.rs
use solana_client::rpc_client::RpcClient;
use solana_sdk::{
commitment_config::CommitmentConfig,
instruction::Instruction,
pubkey::Pubkey,
signature::{Keypair, Signer},
transaction::Transaction,
};
use std::str::FromStr;
#[tokio::main]
async fn main() {
// Program ID (replace with your actual program ID)
let program_id = Pubkey::from_str("4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz").unwrap();
// Connect to the Solana devnet
let rpc_url = String::from("http://localhost:8899");
let client = RpcClient::new_with_commitment(rpc_url, CommitmentConfig::confirmed());
// Generate a new keypair for the payer
let payer = Keypair::new();
// Request airdrop
let airdrop_amount = 1_000_000_000; // 1 SOL
let signature = client
.request_airdrop(&payer.pubkey(), airdrop_amount)
.expect("Failed to request airdrop");
// Wait for airdrop confirmation
loop {
let confirmed = client.confirm_transaction(&signature).unwrap();
if confirmed {
break;
}
}
// Create the instruction
let instruction = Instruction::new_with_borsh(
program_id,
&(), // Empty instruction data
vec![], // No accounts needed
);
// Add the instruction to new transaction
let mut transaction = Transaction::new_with_payer(&[instruction], Some(&payer.pubkey()));
transaction.sign(&[&payer], client.get_latest_blockhash().unwrap());
// Send and confirm the transaction
match client.send_and_confirm_transaction(&transaction) {
Ok(signature) => println!("Transaction Signature: {}", signature),
Err(err) => eprintln!("Error sending transaction: {}", err),
}
}

Korvaa ohjelmatunnus

Ennen asiakaskoodin suorittamista korvaa koodinpätkässä oleva ohjelmatunnus ohjelmasi tunnuksella.

Saat ohjelmatunnuksesi suorittamalla seuraavan komennon.

Terminal
$
solana address -k ./target/deploy/hello_world-keypair.json

Kutsu ohjelmaa

Suorita asiakaskoodi seuraavalla komennolla.

Terminal
$
cargo run --example client

Esimerkki tulostuksesta:

Transaction Signature: 54TWxKi3Jsi3UTeZbhLGUFX6JQH7TspRJjRRFZ8NFnwG5BXM9udxiX77bAACjKAS9fGnVeEazrXL4SfKrW7xZFYV

Voit tarkastella transaktiosignatuuria Solana Explorerissa (paikallinen klusteri) nähdäksesi "Hello, world!" ohjelman lokissa.

Päivitä ohjelma

Solana-ohjelmia voidaan päivittää ottamalla ne uudelleen käyttöön samalla ohjelmatunnisteella. Päivitä ohjelma tiedostossa src/lib.rs tulostamaan "Hello, Solana!" tekstin "Hello, world!" sijaan.

lib.rs
pub fn process_instruction(
_program_id: &Pubkey,
_accounts: &[AccountInfo],
_instruction_data: &[u8],
) -> ProgramResult {
-
msg!("Hello, world!");
+
msg!("Hello, Solana!");
Ok(())
}

Suorita cargo build-sbf-komento luodaksesi päivitetyn .so-tiedoston.

Terminal
$
cargo build-sbf

Testaa päivitetty ohjelma suorittamalla cargo test-komento.

Terminal
$
cargo test -- --no-capture

Ohjelman lokissa pitäisi näkyä "Hello, Solana!".

Terminal
running 1 test
Logs: [
"Program 5y8bHrnwfq2dLDgLn3WoTHb9dDuyorj9gyapW6aeyrpV invoke [1]",
"Program log: Hello, Solana!",
"Program 5y8bHrnwfq2dLDgLn3WoTHb9dDuyorj9gyapW6aeyrpV consumed 211 of 200000 compute units",
"Program 5y8bHrnwfq2dLDgLn3WoTHb9dDuyorj9gyapW6aeyrpV success",
]
test test::test_hello_world ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s

Ota ohjelma uudelleen käyttöön

Ota ohjelma uudelleen käyttöön käyttämällä samaa solana program deploy-komentoa.

Terminal
$
solana program deploy ./target/deploy/hello_world.so

Suorita asiakaskoodi uudelleen ja tarkastele transaktiosignatuuria Solana Explorerissa nähdäksesi "Hello, Solana!" ohjelman lokissa.

Terminal
$
cargo run --example client

Sulje ohjelma

Voit sulkea Solana-ohjelmasi saadaksesi takaisin tilille allokoidun SOL:n. Ohjelman sulkeminen on peruuttamatonta, joten se tulisi tehdä varoen.

Sulje ohjelma käyttämällä solana program close <PROGRAM_ID>-komentoa. Esimerkiksi:

Terminal
$
solana program close 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz --bypass-warning

Esimerkki tulostuksesta:

Closed Program Id 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz, 0.1350588 SOL
reclaimed

Huomaa, että kun ohjelma on suljettu, sen ohjelmatunnusta ei voi käyttää uudelleen. Yritys käyttöönottaa ohjelma aiemmin suljetulla ohjelmatunnuksella johtaa virheeseen.

Error: Program 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz has been closed, use
a new Program Id

Suljetun ohjelman uudelleenkäyttöönotto

Jos haluat ottaa uudelleen käyttöön ohjelman samalla lähdekoodilla sulkemisen jälkeen, sinun on luotava uusi ohjelmatunnus. Luodaksesi uuden keypair-parin ohjelmalle, suorita seuraava komento:

Terminal
$
solana-keygen new -o ./target/deploy/hello_world-keypair.json --force

Vaihtoehtoisesti voit poistaa olemassa olevan keypair-tiedoston (esim. ./target/deploy/hello_world-keypair.json) ja suorittaa cargo build-sbf uudelleen, jolloin luodaan uusi keypair-tiedosto.

Luo uusi ohjelma

Luo ensin uusi Rust-projekti käyttämällä tavallista cargo new -komentoa --lib -lipulla.

Terminal
$
cargo new hello_world --lib

Siirry projektin hakemistoon. Sinun pitäisi nähdä oletusarvoiset src/lib.rs ja Cargo.toml -tiedostot

Terminal
$
cd hello_world

Päivitä edition -kenttä tiedostossa Cargo.toml arvoon 2021. Muuten saatat kohdata virheen ohjelmaa rakentaessasi.

Lisää solana-program riippuvuus

Lisää seuraavaksi solana-program -riippuvuus. Tämä on vähimmäisriippuvuus, joka vaaditaan Solana-ohjelman rakentamiseen.

Terminal
$
cargo add solana-program@2.2.0

Lisää crate-type

Lisää seuraavaksi seuraava pätkä tiedostoon Cargo.toml.

Cargo.toml
[lib]
crate-type = ["cdylib", "lib"]

Jos et sisällytä tätä konfiguraatiota, target/deploy -hakemistoa ei luoda, kun rakennat ohjelman.

Lisää ohjelmakoodi

Korvaa seuraavaksi src/lib.rs -tiedoston sisältö seuraavalla koodilla. Tämä on minimaalinen Solana-ohjelma, joka tulostaa "Hello, world!" ohjelman lokiin, kun ohjelmaa kutsutaan.

msg! -makroa käytetään Solana-ohjelmissa tulostamaan viesti ohjelman lokiin.

Rakenna ohjelma

Rakenna seuraavaksi ohjelma käyttämällä cargo build-sbf -komentoa.

Terminal
$
cargo build-sbf

Tämä komento luo target/deploy -hakemiston, joka sisältää kaksi tärkeää tiedostoa:

  1. .so -tiedosto (esim. hello_world.so): Tämä on käännetty Solana-ohjelma, joka otetaan käyttöön verkkoon "älysopimuksena".
  2. Keypair-tiedosto (esim. hello_world-keypair.json): Tämän keypair-parin julkista avainta käytetään ohjelman ID:nä ohjelmaa otettaessa käyttöön.

Nähdäksesi ohjelmatunnuksen, suorita seuraava komento päätteessäsi. Tämä komento tulostaa määritetyssä tiedostopolussa olevan keypair:in julkisen avaimen:

Terminal
$
solana address -k ./target/deploy/hello_world-keypair.json

Esimerkki tulostuksesta:

4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz

Lisää testiriippuvuudet

Testaa seuraavaksi ohjelma käyttämällä litesvm -cratea. Lisää seuraavat riippuvuudet tiedostoon Cargo.toml.

Terminal
$
cargo add litesvm@0.6.1 --dev
$
cargo add solana-sdk@2.2.0 --dev

Testaa ohjelma

Lisää seuraava testi tiedostoon src/lib.rs, ohjelmakoodin alle. Tämä on testimoduuli, joka kutsuu hello world -ohjelmaa.

Suorita testi käyttämällä cargo test -komentoa. Ohjelman loki näyttää tekstin "Hello, world!".

Terminal
$
cargo test -- --no-capture

Esimerkki tulostuksesta:

Terminal
running 1 test
Logs: [
"Program 9528phXNvdWp5kkR4rgpoeZvR8ZWT5THVywK95YRprkk invoke [1]",
"Program log: Hello, world!",
"Program 9528phXNvdWp5kkR4rgpoeZvR8ZWT5THVywK95YRprkk consumed 211 of 200000 compute units",
"Program 9528phXNvdWp5kkR4rgpoeZvR8ZWT5THVywK95YRprkk success",
]
test test::test_hello_world ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s

Ota ohjelma käyttöön

Seuraavaksi julkaise ohjelma. Paikallisessa kehityksessä voimme käyttää solana-test-validator -komentoa.

Ensin, määritä Solana CLI käyttämään paikallista Solana-klusteria.

Terminal
$
solana config set -ul

Esimerkki tulostuksesta:

Config File: /.config/solana/cli/config.yml
RPC URL: http://localhost:8899
WebSocket URL: ws://localhost:8900/ (computed)
Keypair Path: /.config/solana/id.json
Commitment: confirmed

Avaa uusi terminaali ja suorita solana-test-validators -komento käynnistääksesi paikallisen validatorin.

Terminal
$
solana-test-validator

Kun testivalidatori on käynnissä, suorita solana program deploy -komento erillisessä terminaalissa julkaistaksesi ohjelman paikalliseen validatoriin.

Terminal
$
solana program deploy ./target/deploy/hello_world.so

Esimerkki tulostuksesta:

Program Id: 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz
Signature:
5osMiNMiDZGM7L1e2tPHxU8wdB8gwG8fDnXLg5G7SbhwFz4dHshYgAijk4wSQL5cXiu8z1MMou5kLadAQuHp7ybH

Voit tarkastella ohjelmatunnusta ja tapahtuman allekirjoitusta Solana Explorerissa.

Huomaa, että Solana Explorerin klusterin on myös oltava localhost. Solana Explorerin "Custom RPC URL" -vaihtoehto on oletuksena http://localhost:8899.

Luo esimerkkiasiakas

Seuraavaksi näytämme, miten ohjelmaa kutsutaan Rust-asiakkaalla.

Luo ensin examples -hakemisto ja client.rs -tiedosto.

Terminal
$
mkdir -p examples && touch examples/client.rs

Lisää seuraava tiedostoon Cargo.toml.

Cargo.toml
[[example]]
name = "client"
path = "examples/client.rs"

Lisää solana-client- ja tokio-riippuvuudet.

Terminal
$
cargo add solana-client@2.2.0 --dev
$
cargo add tokio --dev

Lisää asiakas

Lisää seuraava koodi tiedostoon examples/client.rs. Tämä on Rust-asiakasohjelma, joka rahoittaa uuden keypair-avaimen transaktiomaksujen maksamiseksi ja kutsuu sitten hello world -ohjelmaa.

Korvaa ohjelmatunnus

Ennen asiakaskoodin suorittamista korvaa koodinpätkässä oleva ohjelmatunnus ohjelmasi tunnuksella.

Saat ohjelmatunnuksesi suorittamalla seuraavan komennon.

Terminal
$
solana address -k ./target/deploy/hello_world-keypair.json

Kutsu ohjelmaa

Suorita asiakaskoodi seuraavalla komennolla.

Terminal
$
cargo run --example client

Esimerkki tulostuksesta:

Transaction Signature: 54TWxKi3Jsi3UTeZbhLGUFX6JQH7TspRJjRRFZ8NFnwG5BXM9udxiX77bAACjKAS9fGnVeEazrXL4SfKrW7xZFYV

Voit tarkastella transaktiosignatuuria Solana Explorerissa (paikallinen klusteri) nähdäksesi "Hello, world!" ohjelman lokissa.

Päivitä ohjelma

Solana-ohjelmia voidaan päivittää ottamalla ne uudelleen käyttöön samalla ohjelmatunnisteella. Päivitä ohjelma tiedostossa src/lib.rs tulostamaan "Hello, Solana!" tekstin "Hello, world!" sijaan.

lib.rs
pub fn process_instruction(
_program_id: &Pubkey,
_accounts: &[AccountInfo],
_instruction_data: &[u8],
) -> ProgramResult {
-
msg!("Hello, world!");
+
msg!("Hello, Solana!");
Ok(())
}

Suorita cargo build-sbf-komento luodaksesi päivitetyn .so-tiedoston.

Terminal
$
cargo build-sbf

Testaa päivitetty ohjelma suorittamalla cargo test-komento.

Terminal
$
cargo test -- --no-capture

Ohjelman lokissa pitäisi näkyä "Hello, Solana!".

Terminal
running 1 test
Logs: [
"Program 5y8bHrnwfq2dLDgLn3WoTHb9dDuyorj9gyapW6aeyrpV invoke [1]",
"Program log: Hello, Solana!",
"Program 5y8bHrnwfq2dLDgLn3WoTHb9dDuyorj9gyapW6aeyrpV consumed 211 of 200000 compute units",
"Program 5y8bHrnwfq2dLDgLn3WoTHb9dDuyorj9gyapW6aeyrpV success",
]
test test::test_hello_world ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s

Ota ohjelma uudelleen käyttöön

Ota ohjelma uudelleen käyttöön käyttämällä samaa solana program deploy-komentoa.

Terminal
$
solana program deploy ./target/deploy/hello_world.so

Suorita asiakaskoodi uudelleen ja tarkastele transaktiosignatuuria Solana Explorerissa nähdäksesi "Hello, Solana!" ohjelman lokissa.

Terminal
$
cargo run --example client

Sulje ohjelma

Voit sulkea Solana-ohjelmasi saadaksesi takaisin tilille allokoidun SOL:n. Ohjelman sulkeminen on peruuttamatonta, joten se tulisi tehdä varoen.

Sulje ohjelma käyttämällä solana program close <PROGRAM_ID>-komentoa. Esimerkiksi:

Terminal
$
solana program close 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz --bypass-warning

Esimerkki tulostuksesta:

Closed Program Id 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz, 0.1350588 SOL
reclaimed

Huomaa, että kun ohjelma on suljettu, sen ohjelmatunnusta ei voi käyttää uudelleen. Yritys käyttöönottaa ohjelma aiemmin suljetulla ohjelmatunnuksella johtaa virheeseen.

Error: Program 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz has been closed, use
a new Program Id

Suljetun ohjelman uudelleenkäyttöönotto

Jos haluat ottaa uudelleen käyttöön ohjelman samalla lähdekoodilla sulkemisen jälkeen, sinun on luotava uusi ohjelmatunnus. Luodaksesi uuden keypair-parin ohjelmalle, suorita seuraava komento:

Terminal
$
solana-keygen new -o ./target/deploy/hello_world-keypair.json --force

Vaihtoehtoisesti voit poistaa olemassa olevan keypair-tiedoston (esim. ./target/deploy/hello_world-keypair.json) ja suorittaa cargo build-sbf uudelleen, jolloin luodaan uusi keypair-tiedosto.

lib.rs
Cargo.toml
[package]
name = "hello_world"
version = "0.1.0"
edition = "2021"
[dependencies]

Is this page helpful?

Sisällysluettelo

Muokkaa sivua

Hallinnoi

© 2026 Solana Foundation.
Kaikki oikeudet pidätetään.
Yhdistä