Yhteenveto
Loader-v3:n kautta käyttöönotetut ohjelmat voidaan päivittää, kun päivitysoikeus on asetettu. Oikeuden peruuttaminen tekee ohjelmasta muuttumattoman. Kattaa päivitysmekanismin, loader-v3-käyttöönoton ja päivitysohjeet, kääntämisen varmentamisen sekä käytettävissä olevat latausohjelmat.
Ohjelmien käyttöönotto
Native Rust
Ota käyttöön Solana CLI:llä komennolla solana program deploy.
Anchor
Ota käyttöön Anchor-kehyksellä komennolla anchor deploy.
Ohjelmien päivittäminen
Ohjelman päivittämiseksi tilin on pidettävä hallussaan päivitysoikeutta
(tyypillisesti tili, joka alun perin
otti ohjelman käyttöön). Käyttöönoton tai
päivityksen aikana uusi tavukoodi ladataan väliaikaiselle puskuritilille ja
kirjoitetaan sitten program data -tilille. Päivitysoikeuden asettaminen arvoon
None tekee ohjelmasta muuttumattoman ja estää pysyvästi kaikki tulevat
päivitykset.
Päivitysmekanismi
Kun
UpgradeableLoaderInstruction::Upgrade
käsitellään, ajonaikaympäristö:
- Varmistaa, että program account on kirjoitettavissa ja loader-v3:n omistama.
- Varmistaa, että buffer account sisältää
Buffer-tilan oikealla oikeudella. - Varmistaa, että programdata account -tilin
upgrade_authority_addresstäsmää eikä oleNone. - Varmistaa, että ohjelmaa ei ole jo otettu käyttöön nykyisessä slotissa
(
clock.slot != slot). - Lataa ja varmistaa uudet ELF-tavut puskurista.
- Kopioi uuden tavukoodin puskurista programdata account -tilille ja nollaa jäljelle jäävät tavut.
- Rahoittaa programdata account -tilin vuokravapauteen.
- Tyhjentää puskuritilin (asettaa lamportit arvoon 0) ja katkaisee sen datan.
- Uusi versio tulee voimaan seuraavassa slotissa (
deployment_slot + 1).
Itse Program-tili (sen tila ja programdata_address-osoitin) ei muutu
päivityksen aikana. Vain ProgramData-tilin tavukoodi ja slot-metatiedot
päivitetään.
Loader-v3-käskyviite
Loader-v3 (BPF Loader Upgradeable) on nykyinen oletuslataaja ohjelmien käyttöönotolle Solanassa.
| Ohje | Kuvaus |
|---|---|
InitializeBuffer | Asettaa puskuritilin tilan Buffer:ksi määritetyllä oikeudella. Epäonnistuu, jos tili on jo alustettu. |
Write | Kirjoittaa tavut määritettyyn sijaintiin puskuritilissä. Oikeuden on allekirjoitettava. |
DeployWithMaxDataLen | Luo uuden ohjelman: johtaa ProgramData-osoitteen, luo ProgramData-tilin CPI:n avulla System Program -ohjelmaan, varmentaa ja ottaa käyttöön ELF:n puskurista, asettaa Program-tilin tilan ja merkitsee sen suoritettavaksi. |
Upgrade | Korvaa olemassa olevan ohjelman ProgramData-tilin tavukoodin puskurista. |
SetAuthority | Muuttaa Buffer- tai ProgramData-tilin oikeutta. Asettaminen None:ksi ProgramData-tilissä tekee ohjelmasta muuttumattoman. Buffer-oikeutta ei voi asettaa None:ksi. |
SetAuthorityChecked | Kuten SetAuthority, mutta vaatii myös uuden oikeuden allekirjoittamaan transaktion. |
Close | Sulkee puskuri-, alustamattoman tai ProgramData-tilin siirtämällä sen lamportit vastaanottajalle. ProgramData-tilin sulkeminen kirjoittaa myös Closed-hautakiven ohjelmavälimuistiin. Ei voi sulkea ohjelmaa, joka otettiin käyttöön nykyisessä slotissa. |
ExtendProgramChecked | Laajentaa ProgramData-tilin varauksen lisätavuilla rahoittaen ylimääräisen vuokran maksajalta. |
Ohjelmien varmentaminen
Solana tukee varmentavia käännöksiä, joiden avulla käyttäjät voivat vahvistaa, että ohjelman ketjussa oleva tavukoodi vastaa sen julkista lähdekoodia. Anchor-kehys tarjoaa sisäänrakennetun tuen varmentaville käännöksille.
Tarkistaaksesi käyttöönotetun ohjelman vahvistustilan, etsi sen ohjelmatunnus Solana Explorerista tai käytä Ellipsis Labsin Solana Verifiable Build CLI -työkalua ketjussa olevien ohjelmien itsenäiseen vahvistamiseen.
Latausohjelmat
| Lataaja | Osoite | Päivitettävissä | Kuvaus |
|---|---|---|---|
| Native Loader | NativeLoader1111111111111111111111111111111 | Vain validaattorin ohjelmistopäivityksellä | Omistaa sisäänrakennetut (System, Vote, Stake) ja muut lataajat |
| BPF Loader (v1) | BPFLoader1111111111111111111111111111111111 | Ei (lataajan hallinta poistettu käytöstä) | Vanhat ohjelmat |
| BPF Loader (v2) | BPFLoader2111111111111111111111111111111111 | Ei (lataajan hallinta poistettu käytöstä) | Vanhat ohjelmat |
| BPF Loader Upgradeable | BPFLoaderUpgradeab1e11111111111111111111111 | Kyllä, jos päivitysoikeus on asetettu | Omistaa kaikki äskettäin käyttöönotetut ohjelmat |
Is this page helpful?