Solana-dokumentaatioOhjelmien kehittäminen

Ohjelmien käyttöönotto

Tämä osio käy läpi perusvaiheiden prosessin Solana-ohjelman käyttöönotosta Solana CLI:n avulla.

CLI-komentojen viiteluettelo

TehtäväKomento
Ohjelman rakentaminencargo build-sbf
Uuden ohjelman käyttöönottosolana program deploy <path_to_program.so>
Olemassa olevan ohjelman päivityssolana program deploy <path_to_program.so> (sama kuin käyttöönotto)
Ohjelman tietojen näyttäminensolana program show <program-id>
Ohjelman käyttöoikeuden siirtosolana program set-upgrade-authority <program-id> --new-upgrade-authority <path_to_keypair>
Ohjelman muuttaminen muuttumattomaksisolana program set-upgrade-authority <program-id> --final
Ohjelman sulkeminensolana program close <program-id> --bypass-warning
Lompakon saldon tarkistaminensolana balance
Airdropin pyytäminen (devnet/localhost)solana airdrop 2

Keskeiset käsitteet

Ennen kuin syvennymme aiheeseen, selvennetään joitakin termejä:

  • Program ID: Ohjelmasi osoite lohkoketjussa. Käyttäjät ovat vuorovaikutuksessa ohjelmasi kanssa viittaamalla Program ID:hen.
  • Program Account: Lohkoketjussa oleva tili, joka tallentaa ohjelmasi metatiedot. Program accountin osoite on Program ID. Program account tallentaa myös ProgramData Accountin osoitteen.
  • ProgramData Account: Lohkoketjussa oleva tili, joka tallentaa ohjelmasi käyttöönotetun suoritettavan koodin.
  • Program Authority: Tili, jolla on oikeus päivittää tai sulkea ohjelma. Oletusarvoisesti tämä on CLI-lompakkosi.

Edellytykset

Lompakon määrittäminen

Asennuksen jälkeen luo paikallinen keypair-lompakko. Tämän lompakon osoite asetetaan oletusarvoiseksi program authorityksi ohjelmia käyttöönotettaessa:

Terminal
$
solana-keygen new

Tämä luo keypair-tiedoston oletusarvoisesti sijaintiin ~/.config/solana/id.json.

Klusterin määrittäminen

Valitse, mihin Solana-klusteriin haluat tehdä käyttöönoton. Käytä komentoa solana config get tarkistaaksesi nykyisen määrityksesi:

Terminal
$
solana config get

Vaihda klusterien välillä tarpeen mukaan:

Terminal
$
solana config set --url mainnet-beta
$
solana config set --url devnet
$
solana config set --url localhost
$
solana config set --url testnet
$
solana config set --url "https://your-rpc-url.com"

Lompakon rahoittaminen

Tarvitset SOL-tokeneita ohjelmien käyttöönottoa varten. Tarvittava määrä riippuu ohjelmasi koosta.

Devnet- tai localhost-ympäristössä voit rahoittaa lompakkosi käyttämällä komentoa solana airdrop:

Terminal
$
solana airdrop 2

Tarkista lompakkosi saldo:

Terminal
$
solana balance

Perustoiminnot

Ohjelman rakentaminen

Rakentaaksesi ohjelman käytä komentoa cargo build-sbf:

Terminal
$
cargo build-sbf

Esimerkkiohjelma

Tässä on minimaalinen Solana-ohjelma, joka tulostaa "Hello, Solana!" ohjelman lokeihin.

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, Solana!");
Ok(())
}

Käännöksen tulos

Rakenna ohjelmasi käyttämällä cargo build-sbf komentoa:

Terminal
$
cargo build-sbf

Tämä luo kaksi tärkeää tiedostoa hakemistoon target/deploy/:

  1. hello_world-keypair.json: Keypair-tiedosto, jonka julkista avainta käytetään ohjelmatunnuksenasi (Program ID)
  2. hello_world.so: Käännetty ohjelmatiedosto

Esimerkkiohjelma

Tässä on minimaalinen Solana-ohjelma, joka tulostaa "Hello, Solana!" ohjelman lokeihin.

Käännöksen tulos

Rakenna ohjelmasi käyttämällä cargo build-sbf komentoa:

Terminal
$
cargo build-sbf

Tämä luo kaksi tärkeää tiedostoa hakemistoon target/deploy/:

  1. hello_world-keypair.json: Keypair-tiedosto, jonka julkista avainta käytetään ohjelmatunnuksenasi (Program ID)
  2. hello_world.so: Käännetty ohjelmatiedosto
lib.rs
Cargo.toml
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, Solana!");
Ok(())
}

Tarkista ohjelman koko ja kustannukset

Ohjelman käyttöönotto vaatii SOL-tokeneita, jotka allokoidaan ohjelmatilille ohjelman koon perusteella. Suuremmat ohjelmat maksavat enemmän SOL-tokeneita käyttöönotossa.

Tarkista ohjelmasi koko:

Terminal
$
wc -c < ./target/deploy/hello_world.so

Laske tarvittava SOL-määrä tälle koolle (tavuina):

Terminal
$
solana rent 18504

Tarvitset hieman enemmän SOL-tokeneita kuin näytetty kattaaksesi käyttöönoton transaktiomaksut.

Ota ohjelma käyttöön

Käytä solana program deploy komentoa ottaaksesi ohjelmasi käyttöön:

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

Näytetty Program Id on ohjelmasi pysyvä osoite verkossa.

Jos haluat ottaa ohjelman käyttöön tietyllä Program ID:llä (automaattisesti luodun sijaan), käytä:

Terminal
$
solana program deploy ./target/deploy/hello_world.so --program-id ./custom-keypair.json

Voit luoda uusia keypair-avaimia käyttämällä solana-keygen komentoa:

Terminal
$
solana-keygen new -o ./custom-keypair.json

Päivitä ohjelma

Päivitä ohjelmasi käyttämällä samaa solana program deploy komentoa:

  1. Tee muutoksia ohjelmakoodiisi
  2. Rakenna ohjelmasi uudelleen: cargo build-sbf
  3. Ota päivitys käyttöön:
Terminal
$
solana program deploy ./target/deploy/hello_world.so

Jos päivitetty ohjelmasi vaatii enemmän tilaa (tavuja) kuin on tällä hetkellä varattu, käyttöönotto laajentaa automaattisesti program account -tiliä. Näin tapahtuu, kun uusi ohjelmasi on suurempi kuin edellinen versio. Program account tarvitsee lisää tavuja uuden ohjelman tallentamiseen. CLI laskee tarvittavan SOL-määrän ja vähentää sen automaattisesti lompakostasi.

Voit myös manuaalisesti laajentaa ohjelmaa varataksesi lisää tavuja:

Terminal
$
solana program extend 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE 1000

Ohjelman hallinta

Kun ohjelmasi on otettu käyttöön, on olemassa useita yleisiä komentoja program account -tilin hallintaan.

Tarkastele ohjelman metatietoja

Tarkistaaksesi ohjelmasi metatiedot, käytä solana program show komentoa:

Terminal
$
solana program show 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE

Esimerkki tulostuksesta:

$ solana program show 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7
Program Id: 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7
Owner: BPFLoaderUpgradeab1e11111111111111111111111
ProgramData Address: Gqn7YQVCP8NtYV1qkEqR4Udhj8EJ3fkikvS7HskCNQ7c
Authority: 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1
Last Deployed In Slot: 6573
Data Length: 18504 (0x4848) bytes
Balance: 0.12999192 SOL

Ohjelman authorityn siirtäminen

Siirtääksesi ohjelman authorityn toiselle tilille, käytä solana program set-upgrade-authority komentoa:

Terminal
$
solana program set-upgrade-authority 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --new-upgrade-authority ./new-authority-keypair.json

Kun olet siirtänyt ohjelman authorityn, et voi enää päivittää ohjelmaa, ellei sinulla ole pääsyä uuteen authority-keypairiin.

Ohjelman tekeminen muuttumattomaksi

Tehdäksesi ohjelmastasi muuttumattoman, käytä solana program set-upgrade-authority komentoa --final lipulla poistaaksesi ohjelman authorityn:

Terminal
$
solana program set-upgrade-authority 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --final

Kun ohjelma on tehty muuttumattomaksi, sitä ei voi koskaan päivittää tai sulkea.

Ohjelman sulkeminen

Sulkeaksesi ohjelmasi ja saadaksesi takaisin ohjelmatilille allokoidun SOLin, käytä solana program close komentoa:

Terminal
$
solana program close 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --bypass-warning

Kun ohjelma on suljettu, Program ID:tä ei voi käyttää uudelleen. Et voi ottaa käyttöön uutta ohjelmaa samaan osoitteeseen.

Apukomennot

Kaikkien ohjelmien listaaminen

Näytä kaikki ohjelmat, joissa nykyinen lompakkosi on authority:

Terminal
$
solana program show --programs

Esimerkki tulostuksesta:

Program Id | Slot | Authority | Balance
-------------------------------------------------|------------|------------------------------------------------|-------------
7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE | 249885434 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.12999192
3KSGCk4m5hqJkTjPHBXUCPcqMwJnK3VmkqEsFUKKGJPK | 249883212 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.28654328

Käyttöönotetun ohjelman lataaminen

Käyttöönotetun ohjelman lataamiseen käytä solana program dump komentoa:

Terminal
$
solana program dump 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE ./downloaded_program.so

Edistyneet vaihtoehdot

Käyttöönottolippuja

Kun Solana-verkko on ruuhkainen, käytä näitä lippuja auttamaan ohjelman käyttöönotossa.

Esimerkki käytöstä:

Terminal
$
solana program deploy ./target/deploy/hello_world.so \
--with-compute-unit-price 10000 \
--max-sign-attempts 10 \
--use-rpc

Vaihtoehtojen selitykset:

  • --with-compute-unit-price: Aseta prioriteettimaksu mikro-lamporteissa (0.000001 SOL) laskentayksikköä kohden. Tarkista Helius Priority Fee API nykyiset hinnat. Prioriteettimaksu on lisämaksu, joka maksetaan nykyiselle johtajalle transaktiosi priorisoimiseksi.
  • --max-sign-attempts: Kuinka monta kertaa yritetään uudelleen uudella blockhashilla, jos transaktiot vanhenevat. (Oletus: 5)
  • --use-rpc: Lähetä transaktiot määritettyyn RPC:hen. Tämä lippu vaatii stake-weighted RPC-yhteyden palveluntarjoajilta kuten Triton tai Helius.

Is this page helpful?