Wdrażanie programów

Podsumowanie

Programy wdrożone za pomocą loader-v3 mogą być aktualizowane, jeśli ustawiony jest uprawniony do aktualizacji. Cofnięcie uprawnień sprawia, że program staje się niezmienny. Obejmuje mechanizm aktualizacji, instrukcje wdrażania i aktualizacji loader-v3, weryfikację budowy oraz dostępne programy ładujące.

Wdrażanie programów

Aktualizacja programów

Aby zaktualizować program, konto musi posiadać uprawnienia do aktualizacji (zwykle jest to konto, które pierwotnie wdrożyło program). Podczas wdrażania lub aktualizacji nowy bajtkod jest przesyłany do tymczasowego konta bufora, a następnie zapisywany na koncie programdata. Ustawienie autorytetu aktualizacji na None sprawia, że program staje się niezmienny i trwale uniemożliwia dalsze aktualizacje.

Mechanizm aktualizacji

Gdy UpgradeableLoaderInstruction::Upgrade zostanie przetworzony, środowisko uruchomieniowe:

  1. Weryfikuje, czy konto Program jest zapisywalne i należy do loader-v3.
  2. Weryfikuje, czy konto Buffer zawiera stan Buffer z poprawnym autorytetem.
  3. Weryfikuje, czy konto ProgramData ma zgodny upgrade_authority_address i nie jest None.
  4. Weryfikuje, czy program nie został już wdrożony w bieżącym slocie (clock.slot != slot).
  5. Ładuje i weryfikuje nowe bajty ELF z bufora.
  6. Kopiuje nowy bajtkod z bufora do konta ProgramData i zeruje pozostałe bajty.
  7. Zasila konto ProgramData do poziomu zwolnienia z opłat za wynajem.
  8. Opróżnia konto bufora (ustawia lamports na 0) i przycina jego dane.
  9. Nowa wersja staje się aktywna w następnym slocie (deployment_slot + 1).

Samo konto Program (jego stan oraz wskaźnik programdata_address) nie zmienia się podczas aktualizacji. Aktualizowane są jedynie bajtkod konta ProgramData oraz metadane slot.

Referencja instrukcji Loader-v3

Loader-v3 (BPF Loader Upgradeable) to obecnie domyślny loader do wdrażania programów na Solanie.

InstrukcjaOpis
InitializeBufferUstawia stan konta bufora na Buffer z określonym uprawnieniem. Kończy się niepowodzeniem, jeśli już zainicjowane.
WriteZapisuje bajty pod określonym przesunięciem w koncie bufora. Uprawniony musi podpisać.
DeployWithMaxDataLenTworzy nowy program: wyprowadza adres ProgramData, tworzy konto ProgramData poprzez CPI do System Program, weryfikuje i wdraża ELF z bufora, ustawia stan konta Program i oznacza je jako wykonywalne.
UpgradeZastępuje kod bajtowy w koncie ProgramData istniejącego programu z bufora.
SetAuthorityZmienia uprawnionego konta Buffer lub ProgramData. Ustawienie na None w ProgramData sprawia, że program staje się niezmienny. Uprawniony bufora nie może być ustawiony na None.
SetAuthorityCheckedPodobnie jak SetAuthority, ale wymaga również podpisu nowego uprawnionego w transakcji.
CloseZamyka konto bufora, niezainicjowane lub ProgramData, przenosząc jego lamporty do odbiorcy. Zamknięcie ProgramData zapisuje również nagrobek Closed do pamięci podręcznej programu. Nie można zamknąć programu, który został wdrożony w bieżącym slocie.
ExtendProgramCheckedRozszerza alokację konta ProgramData o dodatkowe bajty, finansując dodatkowy czynsz z konta płatnika.

Weryfikacja programów

Solana obsługuje weryfikowalne budowy, które pozwalają użytkownikom potwierdzić, że kod bajtowy programu w sieci odpowiada jego publicznemu kodowi źródłowemu. Framework Anchor zapewnia wbudowane wsparcie dla weryfikowalnych budów.

Aby sprawdzić status weryfikacji wdrożonego programu, wyszukaj jego identyfikator programu w Solana Explorer, lub użyj Solana Verifiable Build CLI od Ellipsis Labs, aby niezależnie zweryfikować programy onchain.

Programy loaderów

LoaderAdresMożliwość aktualizacjiOpis
Native LoaderNativeLoader1111111111111111111111111111111Tylko poprzez aktualizację walidatoraZarządza wbudowanymi programami (System, Vote, Stake) i innymi loaderami
BPF Loader (v1)BPFLoader1111111111111111111111111111111111Nie (zarządzanie loaderem wyłączone)Programy legacy
BPF Loader (v2)BPFLoader2111111111111111111111111111111111Nie (zarządzanie loaderem wyłączone)Programy legacy
BPF Loader UpgradeableBPFLoaderUpgradeab1e11111111111111111111111Tak, jeśli ustawiono uprawnienie do aktualizacjiZarządza wszystkimi nowo wdrożonymi programami

Is this page helpful?

Spis treści

Edytuj stronę

Zarządzane przez

© 2026 Solana Foundation.
Wszelkie prawa zastrzeżone.
Bądź na bieżąco