Siedem koncepcji stanowi fundament programowania na Solanie. Zacznij od Kont i Programów, a następnie poznaj, jak Instrukcje stają się Transakcjami. PDAs, CPIs i Opłaty budują się na tym modelu wykonania.
Konta
Solana przechowuje cały stan w kontach — magazynie klucz-wartość indeksowanym adresami 32-bajtowymi. Każde konto ma pięć pól: lamports, data, owner, executable oraz rent_epoch.
Programy
Inteligentne kontrakty Solany, kompilowane do sBPF. Programy są bezstanowe, a wszelki zmienny stan przechowywany jest w oddzielnych kontach danych przekazywanych przez instrukcje.
Instrukcje
Żądanie wykonania jednego programu, zawierające identyfikator programu, listę kont oraz nieprzezroczyste bajty danych. Wiele instrukcji składa się w pojedynczą transakcję.
Transakcje
Atomowa jednostka wykonania na Solanie. Zawiera podpisy oraz wiadomość (adresy kont, niedawny blockhash i skompilowane instrukcje). Maks. 1232 bajty lub 4096 w formacie v1.
Opłaty
Opłata podstawowa wynosi 5 000 lamports za podpis, plus opcjonalna opłata priorytetowa oparta na żądanych jednostkach obliczeniowych. Maks. 1,4 mln jednostek obliczeniowych na transakcję.
Program Derived Addresses (PDAs)
Deterministyczne adresy wyprowadzane z identyfikatora programu i ziaren. Tylko program będący właścicielem może podpisywać w imieniu PDA za pomocą invoke_signed.
Cross-Program Invocations (CPIs)
Wywołanie jednego programu przez inny za pomocą invoke lub invoke_signed. Uprawnienia podpisującego i uprawnienia do zapisu są przekazywane do wywoływanego programu. Maks. głębokość stosu instrukcji wynosi 5 (poziom główny plus CPIs).
Dodatkowe Tematy
Zasoby Cyfrowe
Zamienne i niezamienne zasoby cyfrowe na Solanie (SPL Token, Token-2022).
Klastry i Punkty Końcowe
Mainnet, Devnet i Testnet: grupy validator obsługujące żądania JSON-RPC.
| Klaster | Publiczny Punkt Końcowy RPC | Zastosowanie |
|---|---|---|
| Mainnet | https://api.mainnet.solana.com | Produkcja |
| Devnet | https://api.devnet.solana.com | Eksperymenty deweloperskie |
| Testnet | https://api.testnet.solana.com | Testowanie validator |
Is this page helpful?