Yhteenveto
Loader-v3:n kautta käyttöönotetut ohjelmat voidaan päivittää, kun päivitysoikeus on asetettu. Oikeuden peruuttaminen tekee ohjelmasta muuttumattoman. Kattaa 9-vaiheisen päivitysmekanismin, kaikki 9 loader-v3-käskyä, käännöksen varmentamisen ja 5 lataajatyyppiä.
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.
| Käsky | Kuvaus |
|---|---|
InitializeBuffer | Asettaa puskuritilin tilan arvoon Buffer määritetyllä valtuutuksella. Epäonnistuu, jos jo alustettu. |
Write | Kirjoittaa tavuja määritettyyn kohtaan puskuritilillä. Valtuutuksen on allekirjoitettava. |
DeployWithMaxDataLen | Luo uuden ohjelman: johtaa ProgramData-osoitteen, luo ProgramData-tilin CPI:n kautta System Programiin, vahvistaa ja ottaa käyttöön ELF:n puskurista, asettaa program account -tilin tilan ja merkitsee sen suoritettavaksi. |
Upgrade | Korvaa olemassa olevan ohjelman ProgramData-tilin tavukoodin puskurista. |
SetAuthority | Muuttaa Buffer- tai ProgramData-tilin valtuutusta. Asettaminen arvoon None ProgramDatassa tekee ohjelmasta muuttumattoman. Puskurin valtuutusta ei voi asettaa arvoon None. |
SetAuthorityChecked | Kuten SetAuthority, mutta vaatii myös uuden valtuutuksen allekirjoittamaan transaktion. |
Close | Sulkee puskuri-, alustamattoman tai ProgramData-tilin siirtämällä sen lamportit vastaanottajalle. ProgramDatan sulkeminen kirjoittaa myös Closed-hautakiven ohjelman välimuistiin. Ei voi sulkea ohjelmaa, joka otettiin käyttöön nykyisellä slotilla. |
ExtendProgramChecked | Laajentaa ProgramData-tilin varausta lisätavuilla rahoittaen ylimääräisen rent-maksun maksajalta. |
Migrate | Siirtää loader-v3-ohjelman loader-v4:ään siirtämällä program account -tilin omistajuuden ja kopioimalla tavukoodin. Vaatii migraatiovaltuutuksen tai ohjelman päivitysvaltuutuksen allekirjoituksen. Loader-v4 ei ole vielä julkaistu mainnetissä. |
Ohjelmien varmentaminen
Solana tukee varmenettavia käännöksiä, joiden avulla käyttäjät voivat varmistaa, että ohjelman lohkoketjussa oleva tavukoodi vastaa sen julkista lähdekoodia. Anchor-kehys tarjoaa sisäänrakennetun tuen varmenettaville käännöksille.
Tarkistaaksesi käyttöönotetun ohjelman varmentamistilan, etsi sen ohjelmatunnus Solana Explorerista tai käytä Ellipsis Labsin Solana Verifiable Build CLI -työkalua varmentaaksesi lohkoketjussa olevat ohjelmat itsenäisesti.
Latausohjelmat
| Latausohjelma | Osoite | Päivitettävissä | Kuvaus |
|---|---|---|---|
| Native Loader | NativeLoader1111111111111111111111111111111 | Vain validaattoriohjelmiston päivityksen kautta | Omistaa sisäänrakennetut ohjelmat (System, Vote, Stake) ja muut latausohjelmat |
| BPF Loader (v1) | BPFLoader1111111111111111111111111111111111 | Ei (lataimen hallinta poistettu käytöstä) | Vanhat ohjelmat |
| BPF Loader (v2) | BPFLoader2111111111111111111111111111111111 | Ei (lataimen 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 |
| Loader-v4 | LoaderV411111111111111111111111111111111111 | Kyllä, jos oikeus on asetettu | Ei vielä julkaistu mainnetissä |
Is this page helpful?