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 toistuvaa 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.
Uuden ohjelman luominen
Ensin luo uusi Rust-projekti käyttäen standardia cargo init
komentoa --lib
lipulla.
cargo init hello_world --lib
Siirry projektin hakemistoon. Sinun pitäisi nähdä oletusarvoiset src/lib.rs
ja
Cargo.toml
tiedostot
cd hello_world
Lisää solana-program riippuvuus
Seuraavaksi lisää solana-program
riippuvuus. Tämä on vähimmäisriippuvuus, joka
vaaditaan Solana-ohjelman rakentamiseen.
cargo add solana-program@1.18.26
Lisää seuraava koodinpätkä tiedostoon Cargo.toml
. Jos et sisällytä tätä
asetusta, target/deploy
hakemistoa ei luoda, kun rakennat ohjelman.
Lisää crate-type
Lisää seuraava koodinpätkä tiedostoon Cargo.toml
.
[lib]crate-type = ["cdylib", "lib"]
Jos et sisällytä tätä asetusta, target/deploy
hakemistoa ei luoda, kun
rakennat ohjelman.
Tiedoston Cargo.toml
pitäisi näyttää seuraavalta:
[package]name = "hello_world"version = "0.1.0"edition = "2021"[lib]crate-type = ["cdylib", "lib"][dependencies]solana-program = "1.18.26"
Lisää ohjelmakoodi
Korvaa seuraavaksi tiedoston src/lib.rs
sisältö seuraavalla koodilla. Tämä on
minimaalinen Solana-ohjelma, joka tulostaa "Hello, world!" ohjelman lokiin, kun
ohjelma suoritetaan.
Makroa msg!
käytetään Solana-ohjelmissa viestin tulostamiseen ohjelman lokiin.
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 ohjelma seuraavaksi käyttämällä komentoa cargo build-sbf
.
cargo build-sbf
Tämä komento luo target/deploy
hakemiston, joka sisältää kaksi tärkeää
tiedostoa:
.so
tiedosto (esim.hello_world.so
): Tämä on käännetty Solana-ohjelma, joka tullaan ottamaan käyttöön verkossa "älysopimuksena".- Keypair-tiedosto (esim.
hello_world-keypair.json
): Tämän keypair:in julkista avainta käytetään ohjelmatunnuksena, kun ohjelma otetaan 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:
solana address -k ./target/deploy/hello_world-keypair.json
Esimerkki tulostuksesta:
4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz
Lisää testriippuvuudet
Seuraavaksi testaa ohjelma käyttäen solana-program-test
pakettia. Lisää
seuraavat riippuvuudet tiedostoon Cargo.toml
.
cargo add solana-program-test@1.18.26 --devcargo add solana-sdk@1.18.26 --devcargo add tokio --dev
Testaa ohjelma
Lisää seuraava testi tiedostoon src/lib.rs
, ohjelmakoodin alapuolelle. Tämä on
testimoduuli, joka kutsuu hello world -ohjelmaa.
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 solana_program_test::*;use solana_sdk::{instruction::Instruction, pubkey::Pubkey, signature::Signer, transaction::Transaction,};#[tokio::test]async fn test_hello_world() {let program_id = Pubkey::new_unique();let mut program_test = ProgramTest::default();program_test.add_program("hello_world", program_id, None);let (mut banks_client, payer, recent_blockhash) = program_test.start().await;// Create instructionlet instruction = Instruction {program_id,accounts: vec![],data: vec![],};// Create transaction with instructionlet mut transaction = Transaction::new_with_payer(&[instruction], Some(&payer.pubkey()));// Sign transactiontransaction.sign(&[&payer], recent_blockhash);let transaction_result = banks_client.process_transaction(transaction).await;assert!(transaction_result.is_ok());}}
Suorita testi käyttämällä komentoa cargo test-sbf
. Ohjelman loki näyttää
"Hello, world!".
cargo test-sbf
Esimerkki tulostuksesta:
running 1 test[2024-10-18T21:24:54.889570000Z INFO solana_program_test] "hello_world" SBF program from /hello_world/target/deploy/hello_world.so, modified 35 seconds, 828 ms, 268 µs and 398 ns ago[2024-10-18T21:24:54.974294000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM invoke [1][2024-10-18T21:24:54.974814000Z DEBUG solana_runtime::message_processor::stable_log] Program log: Hello, world![2024-10-18T21:24:54.976848000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM consumed 140 of 200000 compute units[2024-10-18T21:24:54.976868000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM successtest test::test_hello_world ... oktest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
Ota ohjelma käyttöön
Seuraavaksi ota ohjelma käyttöön. Paikallisessa kehityksessä voimme käyttää
solana-test-validator
.
Ensin määritä Solana CLI käyttämään paikallista Solana-klusteria.
solana config set -ul
Esimerkki tulostuksesta:
Config File: /.config/solana/cli/config.ymlRPC URL: http://localhost:8899WebSocket URL: ws://localhost:8900/ (computed)Keypair Path: /.config/solana/id.jsonCommitment: confirmed
Avaa uusi terminaali ja suorita komento solana-test-validators
käynnistääksesi
paikallisen validatorin.
solana-test-validator
Kun testivalidator on käynnissä, suorita komento solana program deploy
erillisessä terminaalissa ottaaksesi ohjelman käyttöön paikallisessa
validatorissa.
solana program deploy ./target/deploy/hello_world.so
Esimerkki tulostuksesta:
Program Id: 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMzSignature:5osMiNMiDZGM7L1e2tPHxU8wdB8gwG8fDnXLg5G7SbhwFz4dHshYgAijk4wSQL5cXiu8z1MMou5kLadAQuHp7ybH
Voit tarkastella ohjelmatunnusta ja transaktioallekirjoitusta
Solana Explorerissa.
Huomaa, että Solana Explorerissa klusterin on myös oltava localhost. "Custom RPC
URL" -vaihtoehto Solana Explorerissa on oletuksena http://localhost:8899
.
Luo esimerkkiasiakas
Seuraavaksi näytämme, miten ohjelmaa kutsutaan Rust-asiakkaalla.
Luo ensin examples
hakemisto ja client.rs
tiedosto.
mkdir -p examplestouch examples/client.rs
Lisää seuraava koodi tiedostoon Cargo.toml
.
[[example]]name = "client"path = "examples/client.rs"
Lisää solana-client
riippuvuus.
cargo add solana-client@1.18.26 --dev
Lisää asiakas
Lisää seuraava koodi tiedostoon examples/client.rs
. Tämä on
Rust-asiakaskomentosarja, joka rahoittaa uuden keypair-avaimen
transaktiomaksujen maksamiseksi ja kutsuu sitten hello world -ohjelmaa.
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 devnetlet rpc_url = String::from("http://127.0.0.1:8899");let client = RpcClient::new_with_commitment(rpc_url, CommitmentConfig::confirmed());// Generate a new keypair for the payerlet payer = Keypair::new();// Request airdroplet airdrop_amount = 1_000_000_000; // 1 SOLlet signature = client.request_airdrop(&payer.pubkey(), airdrop_amount).expect("Failed to request airdrop");// Wait for airdrop confirmationloop {let confirmed = client.confirm_transaction(&signature).unwrap();if confirmed {break;}}// Create the instructionlet instruction = Instruction::new_with_borsh(program_id,&(), // Empty instruction datavec![], // No accounts needed);// Add the instruction to new transactionlet mut transaction = Transaction::new_with_payer(&[instruction], Some(&payer.pubkey()));transaction.sign(&[&payer], client.get_latest_blockhash().unwrap());// Send and confirm the transactionmatch client.send_and_confirm_transaction(&transaction) {Ok(signature) => println!("Transaction Signature: {}", signature),Err(err) => eprintln!("Error sending transaction: {}", err),}}
Korvaa ohjelmatunnus
Ennen komentosarjan suorittamista korvaa yllä olevassa koodissa oleva ohjelmatunnus oman ohjelmasi tunnuksella.
Voit hakea ohjelmatunnuksesi suorittamalla seuraavan komennon.
solana address -k ./target/deploy/hello_world-keypair.json
Kutsu ohjelmaa
Suorita asiakaskomentosarja seuraavalla komennolla.
cargo run --example client
Esimerkki tulostuksesta:
Transaction Signature: 54TWxKi3Jsi3UTeZbhLGUFX6JQH7TspRJjRRFZ8NFnwG5BXM9udxiX77bAACjKAS9fGnVeEazrXL4SfKrW7xZFYV
Voit tarkastella transaktion allekirjoitusta Solana Explorerissa (paikallinen klusteri) nähdäksesi "Hello, world!" ohjelman lokissa.
Ohjelman päivittäminen
Solana-ohjelmia voidaan päivittää ottamalla ne uudelleen käyttöön samalla
ohjelmatunnuksella. Päivitä ohjelma tiedostossa src/lib.rs
tulostamaan "Hello,
Solana!" "Hello, world!" sijaan.
pub fn process_instruction(_program_id: &Pubkey,_accounts: &[AccountInfo],_instruction_data: &[u8],) -> ProgramResult {-msg!("Hello, world!");+msg!("Hello, Solana!");Ok(())}
Testaa päivitetty ohjelma suorittamalla komento cargo test-sbf
.
cargo test-sbf
Ohjelman lokissa pitäisi näkyä "Hello, Solana!".
running 1 test[2024-10-23T19:28:28.842639000Z INFO solana_program_test] "hello_world" SBF program from /code/misc/delete/hello_world/target/deploy/hello_world.so, modified 4 minutes, 31 seconds, 435 ms, 566 µs and 766 ns ago[2024-10-23T19:28:28.934854000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM invoke [1][2024-10-23T19:28:28.936735000Z DEBUG solana_runtime::message_processor::stable_log] Program log: Hello, Solana![2024-10-23T19:28:28.938774000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM consumed 140 of 200000 compute units[2024-10-23T19:28:28.938793000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM successtest test::test_hello_world ... oktest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
Ohjelman uudelleenkäyttöönotto
Suorita komento cargo build-sbf
luodaksesi päivitetyn .so
tiedoston.
cargo build-sbf
Ota ohjelma uudelleen käyttöön käyttämällä komentoa solana program deploy
.
solana program deploy ./target/deploy/hello_world.so
Suorita asiakaskoodi uudelleen ja tarkastele transaktion allekirjoitusta Solana Explorerissa nähdäksesi "Hello, Solana!" ohjelman lokissa.
cargo run --example client
Ohjelman sulkeminen
Voit sulkea Solana-ohjelmasi saadaksesi takaisin tilille allokoidun SOL-määrän. Ohjelman sulkeminen on peruuttamatonta, joten se tulisi tehdä varoen.
Sulkeaksesi ohjelman käytä komentoa solana program close <PROGRAM_ID>
.
Esimerkiksi:
solana program close 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz--bypass-warning
Esimerkki tulostuksesta:
Closed Program Id 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz, 0.1350588 SOLreclaimed
Huomaa, että kun ohjelma on suljettu, sen ohjelmatunnusta ei voi käyttää uudelleen. Yritys ottaa käyttöön ohjelma aiemmin suljetulla ohjelmatunnuksella johtaa virheeseen.
Error: Program 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz has been closed, usea new Program Id
Suljetun ohjelman uudelleenkäyttöönotto
Jos haluat ottaa ohjelman uudelleen käyttöön samalla lähdekoodilla ohjelman sulkemisen jälkeen, sinun on luotava uusi ohjelmatunnus. Luodaksesi uuden keypair-avaimen ohjelmalle, suorita seuraava komento:
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
---INLINE-CODE-PLACEHOLDER-7da26eb56d495bddf67a43061ffe6--- uudelleen, joka luo
uuden keypair-tiedoston.
Uuden ohjelman luominen
Ensin luo uusi Rust-projekti käyttäen standardia cargo init
komentoa --lib
lipulla.
cargo init hello_world --lib
Siirry projektin hakemistoon. Sinun pitäisi nähdä oletusarvoiset src/lib.rs
ja
Cargo.toml
tiedostot
cd hello_world
Lisää solana-program riippuvuus
Seuraavaksi lisää solana-program
riippuvuus. Tämä on vähimmäisriippuvuus, joka
vaaditaan Solana-ohjelman rakentamiseen.
cargo add solana-program@1.18.26
Lisää seuraava koodinpätkä tiedostoon Cargo.toml
. Jos et sisällytä tätä
asetusta, target/deploy
hakemistoa ei luoda, kun rakennat ohjelman.
Lisää crate-type
Lisää seuraava koodinpätkä tiedostoon Cargo.toml
.
[lib]crate-type = ["cdylib", "lib"]
Jos et sisällytä tätä asetusta, target/deploy
hakemistoa ei luoda, kun
rakennat ohjelman.
Lisää ohjelmakoodi
Korvaa seuraavaksi tiedoston src/lib.rs
sisältö seuraavalla koodilla. Tämä on
minimaalinen Solana-ohjelma, joka tulostaa "Hello, world!" ohjelman lokiin, kun
ohjelma suoritetaan.
Makroa msg!
käytetään Solana-ohjelmissa viestin tulostamiseen ohjelman lokiin.
Rakenna ohjelma
Rakenna ohjelma seuraavaksi käyttämällä komentoa cargo build-sbf
.
cargo build-sbf
Tämä komento luo target/deploy
hakemiston, joka sisältää kaksi tärkeää
tiedostoa:
.so
tiedosto (esim.hello_world.so
): Tämä on käännetty Solana-ohjelma, joka tullaan ottamaan käyttöön verkossa "älysopimuksena".- Keypair-tiedosto (esim.
hello_world-keypair.json
): Tämän keypair:in julkista avainta käytetään ohjelmatunnuksena, kun ohjelma otetaan 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:
solana address -k ./target/deploy/hello_world-keypair.json
Esimerkki tulostuksesta:
4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz
Lisää testriippuvuudet
Seuraavaksi testaa ohjelma käyttäen solana-program-test
pakettia. Lisää
seuraavat riippuvuudet tiedostoon Cargo.toml
.
cargo add solana-program-test@1.18.26 --devcargo add solana-sdk@1.18.26 --devcargo add tokio --dev
Testaa ohjelma
Lisää seuraava testi tiedostoon src/lib.rs
, ohjelmakoodin alapuolelle. Tämä on
testimoduuli, joka kutsuu hello world -ohjelmaa.
Suorita testi käyttämällä komentoa cargo test-sbf
. Ohjelman loki näyttää
"Hello, world!".
cargo test-sbf
Esimerkki tulostuksesta:
running 1 test[2024-10-18T21:24:54.889570000Z INFO solana_program_test] "hello_world" SBF program from /hello_world/target/deploy/hello_world.so, modified 35 seconds, 828 ms, 268 µs and 398 ns ago[2024-10-18T21:24:54.974294000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM invoke [1][2024-10-18T21:24:54.974814000Z DEBUG solana_runtime::message_processor::stable_log] Program log: Hello, world![2024-10-18T21:24:54.976848000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM consumed 140 of 200000 compute units[2024-10-18T21:24:54.976868000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM successtest test::test_hello_world ... oktest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
Ota ohjelma käyttöön
Seuraavaksi ota ohjelma käyttöön. Paikallisessa kehityksessä voimme käyttää
solana-test-validator
.
Ensin määritä Solana CLI käyttämään paikallista Solana-klusteria.
solana config set -ul
Esimerkki tulostuksesta:
Config File: /.config/solana/cli/config.ymlRPC URL: http://localhost:8899WebSocket URL: ws://localhost:8900/ (computed)Keypair Path: /.config/solana/id.jsonCommitment: confirmed
Avaa uusi terminaali ja suorita komento solana-test-validators
käynnistääksesi
paikallisen validatorin.
solana-test-validator
Kun testivalidator on käynnissä, suorita komento solana program deploy
erillisessä terminaalissa ottaaksesi ohjelman käyttöön paikallisessa
validatorissa.
solana program deploy ./target/deploy/hello_world.so
Esimerkki tulostuksesta:
Program Id: 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMzSignature:5osMiNMiDZGM7L1e2tPHxU8wdB8gwG8fDnXLg5G7SbhwFz4dHshYgAijk4wSQL5cXiu8z1MMou5kLadAQuHp7ybH
Voit tarkastella ohjelmatunnusta ja transaktioallekirjoitusta
Solana Explorerissa.
Huomaa, että Solana Explorerissa klusterin on myös oltava localhost. "Custom RPC
URL" -vaihtoehto Solana Explorerissa on oletuksena http://localhost:8899
.
Luo esimerkkiasiakas
Seuraavaksi näytämme, miten ohjelmaa kutsutaan Rust-asiakkaalla.
Luo ensin examples
hakemisto ja client.rs
tiedosto.
mkdir -p examplestouch examples/client.rs
Lisää seuraava koodi tiedostoon Cargo.toml
.
[[example]]name = "client"path = "examples/client.rs"
Lisää solana-client
riippuvuus.
cargo add solana-client@1.18.26 --dev
Lisää asiakas
Lisää seuraava koodi tiedostoon examples/client.rs
. Tämä on
Rust-asiakaskomentosarja, joka rahoittaa uuden keypair-avaimen
transaktiomaksujen maksamiseksi ja kutsuu sitten hello world -ohjelmaa.
Korvaa ohjelmatunnus
Ennen komentosarjan suorittamista korvaa yllä olevassa koodissa oleva ohjelmatunnus oman ohjelmasi tunnuksella.
Voit hakea ohjelmatunnuksesi suorittamalla seuraavan komennon.
solana address -k ./target/deploy/hello_world-keypair.json
Kutsu ohjelmaa
Suorita asiakaskomentosarja seuraavalla komennolla.
cargo run --example client
Esimerkki tulostuksesta:
Transaction Signature: 54TWxKi3Jsi3UTeZbhLGUFX6JQH7TspRJjRRFZ8NFnwG5BXM9udxiX77bAACjKAS9fGnVeEazrXL4SfKrW7xZFYV
Voit tarkastella transaktion allekirjoitusta Solana Explorerissa (paikallinen klusteri) nähdäksesi "Hello, world!" ohjelman lokissa.
Ohjelman päivittäminen
Solana-ohjelmia voidaan päivittää ottamalla ne uudelleen käyttöön samalla
ohjelmatunnuksella. Päivitä ohjelma tiedostossa src/lib.rs
tulostamaan "Hello,
Solana!" "Hello, world!" sijaan.
pub fn process_instruction(_program_id: &Pubkey,_accounts: &[AccountInfo],_instruction_data: &[u8],) -> ProgramResult {-msg!("Hello, world!");+msg!("Hello, Solana!");Ok(())}
Testaa päivitetty ohjelma suorittamalla komento cargo test-sbf
.
cargo test-sbf
Ohjelman lokissa pitäisi näkyä "Hello, Solana!".
running 1 test[2024-10-23T19:28:28.842639000Z INFO solana_program_test] "hello_world" SBF program from /code/misc/delete/hello_world/target/deploy/hello_world.so, modified 4 minutes, 31 seconds, 435 ms, 566 µs and 766 ns ago[2024-10-23T19:28:28.934854000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM invoke [1][2024-10-23T19:28:28.936735000Z DEBUG solana_runtime::message_processor::stable_log] Program log: Hello, Solana![2024-10-23T19:28:28.938774000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM consumed 140 of 200000 compute units[2024-10-23T19:28:28.938793000Z DEBUG solana_runtime::message_processor::stable_log] Program 1111111QLbz7JHiBTspS962RLKV8GndWFwiEaqKM successtest test::test_hello_world ... oktest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
Ohjelman uudelleenkäyttöönotto
Suorita komento cargo build-sbf
luodaksesi päivitetyn .so
tiedoston.
cargo build-sbf
Ota ohjelma uudelleen käyttöön käyttämällä komentoa solana program deploy
.
solana program deploy ./target/deploy/hello_world.so
Suorita asiakaskoodi uudelleen ja tarkastele transaktion allekirjoitusta Solana Explorerissa nähdäksesi "Hello, Solana!" ohjelman lokissa.
cargo run --example client
Ohjelman sulkeminen
Voit sulkea Solana-ohjelmasi saadaksesi takaisin tilille allokoidun SOL-määrän. Ohjelman sulkeminen on peruuttamatonta, joten se tulisi tehdä varoen.
Sulkeaksesi ohjelman käytä komentoa solana program close <PROGRAM_ID>
.
Esimerkiksi:
solana program close 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz--bypass-warning
Esimerkki tulostuksesta:
Closed Program Id 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz, 0.1350588 SOLreclaimed
Huomaa, että kun ohjelma on suljettu, sen ohjelmatunnusta ei voi käyttää uudelleen. Yritys ottaa käyttöön ohjelma aiemmin suljetulla ohjelmatunnuksella johtaa virheeseen.
Error: Program 4Ujf5fXfLx2PAwRqcECCLtgDxHKPznoJpa43jUBxFfMz has been closed, usea new Program Id
Suljetun ohjelman uudelleenkäyttöönotto
Jos haluat ottaa ohjelman uudelleen käyttöön samalla lähdekoodilla ohjelman sulkemisen jälkeen, sinun on luotava uusi ohjelmatunnus. Luodaksesi uuden keypair-avaimen ohjelmalle, suorita seuraava komento:
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
---INLINE-CODE-PLACEHOLDER-7da26eb56d495bddf67a43061ffe6--- uudelleen, joka luo
uuden keypair-tiedoston.
[package]name = "hello_world"version = "0.1.0"edition = "2021"[dependencies]
Is this page helpful?