Ανάπτυξη προγραμμάτων
Αυτή η ενότητα παρουσιάζει τη βασική διαδικασία εγκατάστασης ενός προγράμματος Solana χρησιμοποιώντας το Solana CLI.
Αναφορά εντολών CLI
Εργασία | Εντολή |
---|---|
Δημιουργία προγράμματος | cargo build-sbf |
Εγκατάσταση νέου προγράμματος | solana program deploy <path_to_program.so> |
Ενημέρωση υπάρχοντος προγράμματος | solana program deploy <path_to_program.so> (ίδιο με την εγκατάσταση) |
Εμφάνιση πληροφοριών προγράμματος | solana program show <program-id> |
Μεταφορά εξουσιοδότησης προγράμματος | solana program set-upgrade-authority <program-id> --new-upgrade-authority <path_to_keypair> |
Μετατροπή προγράμματος σε αμετάβλητο | solana program set-upgrade-authority <program-id> --final |
Κλείσιμο προγράμματος | solana program close <program-id> --bypass-warning |
Έλεγχος υπολοίπου πορτοφολιού | solana balance |
Αίτημα airdrop (devnet/localhost) | solana airdrop 2 |
Βασικές έννοιες
Πριν προχωρήσουμε, ας διευκρινίσουμε κάποια ορολογία:
- Program ID: Η διεύθυνση του προγράμματός σας στο blockchain. Οι χρήστες αλληλεπιδρούν με το πρόγραμμά σας αναφέροντας το Program ID.
- Program Account: Ο λογαριασμός στο blockchain που αποθηκεύει τα μεταδεδομένα του προγράμματός σας. Η διεύθυνση του program account είναι το Program ID. Το program account επίσης αποθηκεύει τη διεύθυνση του ProgramData Account.
- ProgramData Account: Ο λογαριασμός στο blockchain που αποθηκεύει τον εκτελέσιμο κώδικα του προγράμματός σας.
- Program Authority: Ο λογαριασμός που έχει άδεια να ενημερώνει ή να κλείνει το πρόγραμμα. Από προεπιλογή, αυτό είναι το πορτοφόλι του CLI σας.
Προαπαιτούμενα
Ρύθμιση πορτοφολιού
Μετά την εγκατάσταση, δημιουργήστε ένα τοπικό πορτοφόλι keypair. Η διεύθυνση αυτού του πορτοφολιού ορίζεται ως η προεπιλεγμένη εξουσιοδότηση προγράμματος κατά την εγκατάσταση προγραμμάτων:
$solana-keygen new
Αυτό δημιουργεί ένα keypair στο ~/.config/solana/id.json
από προεπιλογή.
Διαμόρφωση συστάδας
Επιλέξτε σε ποια συστάδα Solana θα γίνει η ανάπτυξη. Χρησιμοποιήστε την εντολή
solana config get
για να ελέγξετε την τρέχουσα διαμόρφωσή σας:
$solana config get
Εναλλαγή μεταξύ συστάδων ανάλογα με τις ανάγκες:
$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"
Χρηματοδότηση πορτοφολιού
Θα χρειαστείτε SOL για να πληρώσετε για τις αναπτύξεις προγραμμάτων. Το ποσό εξαρτάται από το μέγεθος του προγράμματός σας.
Για devnet ή localhost, χρηματοδοτήστε το πορτοφόλι σας χρησιμοποιώντας την
εντολή solana airdrop
:
$solana airdrop 2
Ελέγξτε το υπόλοιπο του πορτοφολιού σας:
$solana balance
Βασικές λειτουργίες
Δημιουργία προγράμματος
Για να δημιουργήσετε ένα πρόγραμμα, χρησιμοποιήστε την εντολή cargo build-sbf
:
$cargo build-sbf
Παράδειγμα προγράμματος
Εδώ είναι ένα ελάχιστο πρόγραμμα Solana που εκτυπώνει "Hello, Solana!" στα αρχεία καταγραφής του προγράμματος.
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(())}
Έξοδος Κατασκευής
Κατασκευάστε το πρόγραμμά σας χρησιμοποιώντας την εντολή cargo build-sbf
:
$cargo build-sbf
Αυτό δημιουργεί δύο σημαντικά αρχεία στο target/deploy/
:
hello_world-keypair.json
: Ένα αρχείο keypair του οποίου το δημόσιο κλειδί θα χρησιμοποιηθεί ως το Program ID σαςhello_world.so
: Το μεταγλωττισμένο εκτελέσιμο πρόγραμμα
Έλεγχος Μεγέθους και Κόστους Προγράμματος
Η ανάπτυξη ενός προγράμματος απαιτεί SOL που θα διατεθεί στον λογαριασμό του προγράμματος με βάση το μέγεθος του προγράμματος. Τα μεγαλύτερα προγράμματα κοστίζουν περισσότερο SOL για ανάπτυξη.
Ελέγξτε το μέγεθος του προγράμματός σας:
$wc -c < ./target/deploy/hello_world.so
Υπολογίστε το απαιτούμενο SOL για αυτό το μέγεθος (bytes):
$solana rent 18504
Θα χρειαστείτε λίγο περισσότερο SOL από αυτό που εμφανίζεται για να καλύψετε τα τέλη συναλλαγής ανάπτυξης.
Ανάπτυξη Προγράμματος
Χρησιμοποιήστε την εντολή solana program deploy
για να αναπτύξετε το πρόγραμμά
σας:
$solana program deploy ./target/deploy/hello_world.so
Το Program Id που εμφανίζεται είναι η μόνιμη διεύθυνση του προγράμματός σας στο δίκτυο.
Για ανάπτυξη με συγκεκριμένο Program ID (αντί για το αυτόματα δημιουργημένο), χρησιμοποιήστε:
$solana program deploy ./target/deploy/hello_world.so --program-id ./custom-keypair.json
Μπορείτε να δημιουργήσετε νέα keypairs χρησιμοποιώντας την εντολή
solana-keygen
:
$solana-keygen new -o ./custom-keypair.json
Ενημέρωση προγράμματος
Ενημερώστε το πρόγραμμά σας χρησιμοποιώντας την ίδια εντολή
solana program deploy
:
- Κάντε αλλαγές στον κώδικα του προγράμματός σας
- Επαναδημιουργήστε το πρόγραμμά σας:
cargo build-sbf
- Αναπτύξτε την ενημέρωση:
$solana program deploy ./target/deploy/hello_world.so
Εάν το ενημερωμένο πρόγραμμά σας απαιτεί περισσότερο χώρο (bytes) από αυτόν που έχει ήδη διατεθεί, η ανάπτυξη θα επεκτείνει αυτόματα τον λογαριασμό του προγράμματος. Αυτό συμβαίνει όταν το νέο σας πρόγραμμα είναι μεγαλύτερο από την προηγούμενη έκδοση. Ο λογαριασμός του προγράμματος χρειάζεται επιπλέον bytes για την αποθήκευση του νέου προγράμματος. Το CLI θα υπολογίσει το απαιτούμενο SOL και θα το αφαιρέσει αυτόματα από το πορτοφόλι σας.
Μπορείτε επίσης να επεκτείνετε χειροκίνητα ένα πρόγραμμα για να διαθέσετε περισσότερα bytes:
$solana program extend 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE 1000
Διαχείριση προγράμματος
Μόλις αναπτυχθεί το πρόγραμμά σας, υπάρχουν αρκετές συνηθισμένες εντολές για τη διαχείριση του λογαριασμού του προγράμματος.
Προβολή μεταδεδομένων προγράμματος
Για να ελέγξετε τα μεταδεδομένα του προγράμματός σας, χρησιμοποιήστε την εντολή
solana program show
:
$solana program show 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE
Παράδειγμα εξόδου:
$ solana program show 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7Program Id: 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7Owner: BPFLoaderUpgradeab1e11111111111111111111111ProgramData Address: Gqn7YQVCP8NtYV1qkEqR4Udhj8EJ3fkikvS7HskCNQ7cAuthority: 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1Last Deployed In Slot: 6573Data Length: 18504 (0x4848) bytesBalance: 0.12999192 SOL
Μεταφορά της authority του προγράμματος
Για να μεταφέρετε την authority του προγράμματος σε διαφορετικό λογαριασμό,
χρησιμοποιήστε την εντολή solana program set-upgrade-authority
:
$solana program set-upgrade-authority 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --new-upgrade-authority ./new-authority-keypair.json
Μετά τη μεταφορά της authority του προγράμματος, δεν μπορείτε πλέον να ενημερώσετε το πρόγραμμα εκτός αν έχετε πρόσβαση στο νέο keypair της authority.
Κάντε το πρόγραμμά σας αμετάβλητο
Για να κάνετε το πρόγραμμά σας αμετάβλητο, χρησιμοποιήστε την εντολή
solana program set-upgrade-authority
με τη σημαία --final
για να αφαιρέσετε
την authority του προγράμματος:
$solana program set-upgrade-authority 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --final
Μόλις ένα πρόγραμμα γίνει αμετάβλητο, δεν μπορεί ποτέ να ενημερωθεί ή να κλείσει.
Κλείσιμο του προγράμματός σας
Για να κλείσετε το πρόγραμμά σας και να ανακτήσετε το SOL που έχει κατανεμηθεί
στον λογαριασμό του προγράμματος, χρησιμοποιήστε την εντολή
solana program close
:
$solana program close 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --bypass-warning
Μόλις κλείσει, το Program ID δεν μπορεί να επαναχρησιμοποιηθεί. Δεν μπορείτε να αναπτύξετε ένα νέο πρόγραμμα στην ίδια διεύθυνση.
Εντολές βοηθητικών προγραμμάτων
Λίστα όλων των προγραμμάτων
Δείτε όλα τα προγράμματα όπου το τρέχον πορτοφόλι σας είναι η authority:
$solana program show --programs
Παράδειγμα εξόδου:
Program Id | Slot | Authority | Balance-------------------------------------------------|------------|------------------------------------------------|-------------7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE | 249885434 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.129991923KSGCk4m5hqJkTjPHBXUCPcqMwJnK3VmkqEsFUKKGJPK | 249883212 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.28654328
Λήψη ενός αναπτυγμένου προγράμματος
Για να κατεβάσετε ένα αναπτυγμένο πρόγραμμα, χρησιμοποιήστε την εντολή
solana program dump
:
$solana program dump 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE ./downloaded_program.so
Προηγμένες επιλογές
Σημαίες ανάπτυξης
Όταν το δίκτυο Solana είναι συμφορημένο, χρησιμοποιήστε αυτές τις σημαίες για να βοηθήσουν στην ανάπτυξη του προγράμματος.
Παράδειγμα χρήσης:
$solana program deploy ./target/deploy/hello_world.so \--with-compute-unit-price 10000 \--max-sign-attempts 10 \--use-rpc
Επεξήγηση επιλογών:
--with-compute-unit-price
: Ορίστε το τέλος προτεραιότητας σε μικρο-λάμπορτς (0.000001 SOL) ανά μονάδα υπολογισμού. Ελέγξτε το Helius Priority Fee API για τις τρέχουσες τιμές. Το τέλος προτεραιότητας είναι ένα επιπλέον τέλος που καταβάλλεται στον τρέχοντα ηγέτη για να δώσει προτεραιότητα στη συναλλαγή σας.--max-sign-attempts
: Αριθμός επαναλήψεων με νέο blockhash εάν οι συναλλαγές λήξουν. (Προεπιλογή: 5)--use-rpc
: Αποστολή συναλλαγών στο διαμορφωμένο RPC. Αυτή η σημαία απαιτεί σύνδεση RPC με στάθμιση συμμετοχής από παρόχους όπως το Triton ή το Helius.
Is this page helpful?