Αυτός ο οδηγός προορίζεται να αποτελέσει αναφορά για προγραμματιστές που θέλουν να εφαρμόσουν επαληθευμένες κατασκευές για τα προγράμματά τους στο Solana. Θα καλύψουμε τι είναι οι επαληθευμένες κατασκευές, πώς να τις χρησιμοποιήσετε, ειδικά ζητήματα και βέλτιστες πρακτικές για να διασφαλίσετε την αυθεντικότητα του προγράμματός σας στην αλυσίδα.
Τι είναι οι επαληθευμένες κατασκευές;
Οι επαληθευμένες κατασκευές διασφαλίζουν ότι το εκτελέσιμο πρόγραμμα που αναπτύσσετε στο δίκτυο του Solana αντιστοιχεί στον πηγαίο κώδικα στο αποθετήριό σας. Με αυτόν τον τρόπο, οι προγραμματιστές και οι χρήστες μπορούν να είναι βέβαιοι ότι το πρόγραμμα που εκτελείται στην αλυσίδα αντιστοιχεί ακριβώς στον δημόσιο κώδικα, προωθώντας τη διαφάνεια και την ασφάλεια.
Η διαδικασία επαλήθευσης περιλαμβάνει τη σύγκριση του hash του προγράμματος στην αλυσίδα με το hash του τοπικά κατασκευασμένου προγράμματος από τον πηγαίο κώδικα. Αυτό διασφαλίζει ότι δεν υπάρχουν αποκλίσεις μεταξύ των δύο εκδόσεων.
Αν και μια επαληθευμένη κατασκευή δεν θα πρέπει να θεωρείται πιο ασφαλής από μια μη επαληθευμένη κατασκευή, η κατασκευή επιτρέπει στους προγραμματιστές να επαληθεύσουν οι ίδιοι ότι ο πηγαίος κώδικας αντιστοιχεί σε αυτό που έχει αναπτυχθεί στην αλυσίδα. Χρησιμοποιώντας τον πηγαίο κώδικα, ένας προγραμματιστής μπορεί στη συνέχεια να επικυρώσει τι εκτελεί ο κώδικας κατά την αποστολή μιας συναλλαγής.
Η διαδικασία επαληθευμένων κατασκευών σχεδιάστηκε και συντηρείται από το Ellipsis Labs και το OtterSec. Για περισσότερες λεπτομέρειες, ακολουθήστε τον οδηγό στο αρχικό αποθετήριο επαληθευμένων κατασκευών καθώς και τη διαδικασία επαλήθευσης κατασκευής απευθείας στη σουίτα εργαλείων Anza, μόλις υποστηριχθεί εκεί.
Πώς λειτουργεί;
Η διαδικασία επαλήθευσης γίνεται συγκρίνοντας το hash του προγράμματος στην αλυσίδα με το hash του τοπικά δημιουργημένου προγράμματος από τον πηγαίο κώδικα. Δημιουργείτε το πρόγραμμά σας σε ένα ελεγχόμενο περιβάλλον χρησιμοποιώντας το Solana Verify CLI και το Docker. Αυτό εξασφαλίζει ότι η διαδικασία δημιουργίας είναι ντετερμινιστική και συνεπής σε διαφορετικά συστήματα. Μόλις έχετε το εκτελέσιμο, μπορείτε να το αναπτύξετε στο δίκτυο Solana. Κατά τη διάρκεια της διαδικασίας δημιουργίας, ένα PDA του προγράμματος επαλήθευσης θα δημιουργηθεί. Αυτό το PDA περιέχει όλα τα απαραίτητα δεδομένα για την επαλήθευση του προγράμματος. Το PDA περιέχει τη διεύθυνση του προγράμματος, το git url, το commit hash και τα ορίσματα που χρησιμοποιήθηκαν για τη δημιουργία του προγράμματος.
Χρησιμοποιώντας τα δεδομένα στο PDA, ο καθένας μπορεί να εκτελέσει την εντολή του προγράμματος επαλήθευσης τοπικά και να ελέγξει αν το πρόγραμμα δημιουργήθηκε από τον παρεχόμενο πηγαίο κώδικα. Έτσι, ο καθένας μπορεί να επαληθεύσει μόνος του εντελώς χωρίς εμπιστοσύνη ή μπορεί να εκτελέσει το δικό του API επαλήθευσης που συντηρείται από την OtterSec για να παρέχει ένα εύκολο σημείο πρόσβασης για τους χρήστες ώστε να ελέγχουν την επαλήθευση. Μπορείτε ήδη να δείτε αυτές τις κλήσεις API να χρησιμοποιούνται στον Solana Explorer και στο SolanaFM, μεταξύ άλλων.
Γιατί να χρησιμοποιήσω επαληθευμένες δημιουργίες;
Η χρήση επαληθευμένων δημιουργιών παρέχει τα ακόλουθα οφέλη:
-
Ασφάλεια: Εγγύηση ότι το πρόγραμμα που εκτελείται στην αλυσίδα ταιριάζει με τον πηγαίο κώδικα, αποτρέποντας κακόβουλες αλλοιώσεις.
-
Διαφάνεια: Επιτρέπει σε άλλους χρήστες και προγραμματιστές να επικυρώσουν ότι το πρόγραμμα στην αλυσίδα είναι αξιόπιστο συγκρίνοντάς το με τη δημόσια βάση κώδικα.
-
Εμπιστοσύνη: Αυξάνει την εμπιστοσύνη των χρηστών, καθώς οι επαληθευμένες δημιουργίες αποδεικνύουν ότι η συμπεριφορά του προγράμματός σας στην αλυσίδα είναι ευθυγραμμισμένη με τον δημόσιο κώδικά σας. Όταν δημιουργείτε επαληθεύσιμα προγράμματα, ελαχιστοποιείτε τους κινδύνους που σχετίζονται με την εκτέλεση μη εξουσιοδοτημένου ή κακόβουλου κώδικα. Επίσης, διασφαλίζει ότι συμμορφώνεστε με τις βέλτιστες πρακτικές και δίνετε στους ερευνητές ασφαλείας έναν εύκολο τρόπο να επικοινωνήσουν μαζί σας. Επίσης, τα πορτοφόλια και άλλα εργαλεία μπορούν να επιτρέπουν συναλλαγές από το πρόγραμμά σας πιο εύκολα εφόσον είναι επαληθευμένο.
-
Ανακαλυψιμότητα: Όταν παρέχετε μια επαληθευμένη έκδοση του προγράμματός σας, όλοι μπορούν να βρουν τον πηγαίο κώδικα, την τεκμηρίωση, το SDK ή το IDL του προγράμματος και μπορούν επίσης εύκολα να επικοινωνήσουν μαζί σας μέσω του GitHub σε περίπτωση που υπάρχει κάποιο πρόβλημα.
Πώς δημιουργώ επαληθευμένες εκδόσεις;
Για να δημιουργήσετε επαληθευμένες εκδόσεις, θα πρέπει να ακολουθήσετε τα εξής βήματα:
Περίληψη:
- Καταχωρήστε τον κώδικά σας σε ένα δημόσιο αποθετήριο
- Δημιουργήστε μια επαληθευμένη έκδοση σε docker
- Αναπτύξτε την επαληθευμένη έκδοση
- Επαληθεύστε το αναπτυγμένο πρόγραμμα μέσω του δημόσιου API
Αν επαληθεύσετε το πρόγραμμά σας που δεν έχει δημιουργηθεί σε ένα container docker, πιθανότατα θα αποτύχει επειδή οι εκδόσεις προγραμμάτων Solana δεν είναι ντετερμινιστικές σε διαφορετικά συστήματα.
Εγκαταστήστε το Docker και το Cargo
Εγκαταστήστε τα απαραίτητα εργαλεία και βεβαιωθείτε ότι έχετε εγκαταστήσει το Docker και το Cargo. Το Docker παρέχει ένα ελεγχόμενο περιβάλλον δημιουργίας για να διασφαλίσει τη συνέπεια, και το Cargo χρησιμοποιείται για τη διαχείριση πακέτων Rust.
- Docker: Ακολουθήστε τα βήματα στον ιστότοπο του Docker για να εγκαταστήσετε το Docker για την πλατφόρμα σας. Μόλις εγκατασταθεί, βεβαιωθείτε ότι η υπηρεσία Docker λειτουργεί ακολουθώντας αυτόν τον οδηγό παρακάτω.
- Cargo: Αν δεν έχετε ήδη εγκαταστήσει το Cargo, μπορείτε να το εγκαταστήσετε εκτελώντας την ακόλουθη εντολή:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Εγκαταστήστε το Solana Verify CLI
Το Solana Verify CLI είναι το κύριο εργαλείο που χρησιμοποιείται για την επαλήθευση εκδόσεων. Το Solana Verify CLI συντηρείται επί του παρόντος από την Ellipsis Labs και μπορεί να εγκατασταθεί χρησιμοποιώντας το Cargo.
Μπορείτε να το εγκαταστήσετε εκτελώντας:
cargo install solana-verify
Αν χρειάζεστε μια συγκεκριμένη έκδοση του CLI, μπορείτε να καθορίσετε την έκδοση με:
cargo install solana-verify --version $VERSION
Αν επιθυμείτε, μπορείτε να εγκαταστήσετε μια έκδοση απευθείας από ένα συγκεκριμένο commit:
cargo install solana-verify --git https://github.com/Ellipsis-Labs/solana-verifiable-build --rev 13a1db2
Προετοιμασία έργου
Για να επαληθεύσετε έναντι ενός αποθετηρίου, πρέπει να υπάρχει ένα αρχείο
Cargo.lock στον ριζικό κατάλογο του αποθετηρίου σας. Αν έχετε μόνο ένα
πρόγραμμα στο αποθετήριό σας και ένα αρχείο cargo.lock στη ρίζα σας, μπορείτε
να προχωρήσετε απευθείας στο επόμενο βήμα και να κάνετε build το πρόγραμμά σας.
Αν το πρόγραμμά σας βρίσκεται σε υποφάκελο και έχετε ένα rust workspace, πρέπει
να δημιουργήσετε ένα αρχείο Cargo.toml workspace στον ριζικό κατάλογο του
αποθετηρίου σας.
Μπορείτε να χρησιμοποιήσετε αυτό το παράδειγμα Cargo.toml ως προεπιλογή:
[workspace]members = ["program/programs/*"]resolver = "2"[profile.release]overflow-checks = truelto = "fat"codegen-units = 1[profile.release.build-override]opt-level = 3incremental = falsecodegen-units = 1
Βεβαιωθείτε ότι το πρόγραμμά σας βρίσκεται στον πίνακα workspace/members και
ότι το Cargo.toml του προγράμματός σας έχει το σωστό όνομα lib ρυθμισμένο.
Σημαντικό είναι το
lib nameκαι όχι το όνομα του πακέτου!
Κάτι σαν αυτό:
[package]name = "waffle"version = "0.1.0"edition = "2021"[lib]name = "waffle"crate-type = ["cdylib", "lib"][dependencies]solana-program = "2.1.0"
Σε αυτό το αποθετήριο
μπορείτε να δείτε ένα παράδειγμα workspace με ένα πρόγραμμα σε υποφάκελο.
Παρατηρήστε επίσης ότι όταν το πρόγραμμα βρίσκεται σε υποφάκελο, θα πρέπει
αργότερα να προσθέσετε αυτόν τον φάκελο ως --mount-path στην εντολή
verify-from-repo.
Σε αυτό το αποθετήριο μπορείτε να βρείτε ένα παράδειγμα Anchor. Σε αυτό το αποθετήριο μπορείτε να βρείτε ένα παράδειγμα εγγενούς rust.
Με αυτό το αρχείο Cargo.toml στη θέση του, μπορείτε στη συνέχεια να εκτελέσετε
cargo generate-lockfile για να δημιουργήσετε ένα αρχείο lock και να συνεχίσετε
με το build του προγράμματός σας.
Δημιουργία επαληθεύσιμων προγραμμάτων
Για να κάνετε verifiable build το πρόγραμμα Solana σας, μεταβείτε στον κατάλογο
που περιέχει το αρχείο Cargo.toml του workspace σας και εκτελέστε:
solana-verify build
Αυτό θα αντιγράψει το περιβάλλον σας σε ένα container docker και θα το δημιουργήσει με έναν ντετερμινιστικό τρόπο.
Βεβαιωθείτε ότι πράγματι κάνετε deploy το verified build και δεν το αντικαθιστάτε κατά λάθος με
anchor buildήcargo build-sbf, καθώς αυτά πιθανότατα δεν θα οδηγήσουν στο ίδιο hash και έτσι η επαλήθευσή σας θα αποτύχει.
Για έργα με πολλαπλά προγράμματα, μπορείτε να δημιουργήσετε ένα συγκεκριμένο πρόγραμμα χρησιμοποιώντας το όνομα της βιβλιοθήκης (όχι το όνομα του πακέτου):
solana-verify build --library-name $PROGRAM_LIB_NAME
Αυτή η διαδικασία εξασφαλίζει ντετερμινιστικές κατασκευές και μπορεί να διαρκέσει κάποιο χρόνο, ειδικά σε ορισμένα συστήματα (π.χ. M1 MacBook) επειδή εκτελείται μέσα σε ένα container docker. Για ταχύτερες κατασκευές, συνιστάται η χρήση ενός μηχανήματος Linux με αρχιτεκτονική x86.
Μόλις ολοκληρωθεί η κατασκευή, μπορείτε να ανακτήσετε το hash του εκτελέσιμου χρησιμοποιώντας την ακόλουθη εντολή:
solana-verify get-executable-hash target/deploy/$PROGRAM_LIB_NAME.so
Ανάπτυξη επαληθεύσιμων προγραμμάτων
Αφού έχετε δημιουργήσει το πρόγραμμά σας και έχετε ανακτήσει το hash του, μπορείτε να το αναπτύξετε στο δίκτυο Solana. Συνιστάται να χρησιμοποιήσετε μια λύση πολλαπλών υπογραφών ή διακυβέρνησης όπως το Squads Protocol για ασφαλείς αναπτύξεις, αλλά μπορείτε επίσης να αναπτύξετε απευθείας με:
solana program deploy -u $NETWORK_URL target/deploy/$PROGRAM_LIB_NAME.so --program-id $PROGRAM_ID --with-compute-unit-price 50000 --max-sign-attempts 100 --use-rpc
Ένα κατάλληλο τέλος χαμηλής προτεραιότητας που μπορείτε να ζητήσετε από τον πάροχο rpc σας, για παράδειγμα το Quicknode.
Για να επαληθεύσετε ότι το αναπτυγμένο πρόγραμμα ταιριάζει με το εκτελέσιμο που δημιουργήσατε, εκτελέστε:
solana-verify get-program-hash -u $NETWORK_URL $PROGRAM_ID
Μπορεί να έχετε διαφορετικές εκδόσεις αναπτυγμένες σε διαφορετικά συμπλέγματα Solana (δηλαδή devnet, testnet, mainnet). Βεβαιωθείτε ότι χρησιμοποιείτε το σωστό URL δικτύου για το επιθυμητό σύμπλεγμα Solana στο οποίο θέλετε να επαληθεύσετε ένα πρόγραμμα. Η απομακρυσμένη επαλήθευση θα λειτουργεί μόνο στο mainnet.
Επαλήθευση έναντι αποθετηρίων
Για να επαληθεύσετε ένα πρόγραμμα έναντι του δημόσιου αποθετηρίου του, χρησιμοποιήστε:
solana-verify verify-from-repo -u $NETWORK_URL --program-id $PROGRAM_ID https://github.com/$REPO_PATH --commit-hash $COMMIT_HASH --library-name $PROGRAM_LIB_NAME --mount-path $MOUNT_PATH
Ενώ εκτελείτε την επαληθευμένη κατασκευή στον κατάλογο του προγράμματός σας, όταν εκτελείτε
verify-from-repoπρέπει να προσθέσετε τη σημαία--mount-path. Αυτή θα είναι η διαδρομή προς τον φάκελο που περιέχει τοCargo.tomlπου περιέχει το όνομα βιβλιοθήκης του προγράμματός σας.
Αυτή η εντολή συγκρίνει το hash του προγράμματος στην αλυσίδα με το hash του εκτελέσιμου που δημιουργήθηκε από τον πηγαίο κώδικα στο καθορισμένο commit hash.
Στο τέλος, η εντολή θα σας ρωτήσει αν θέλετε να ανεβάσετε τα δεδομένα επαλήθευσής σας στην αλυσίδα. Αν το κάνετε αυτό, ο Solana Explorer θα εμφανίσει αμέσως τα δεδομένα επαλήθευσης του προγράμματός σας. Μέχρι να επαληθευτεί από μια απομακρυσμένη κατασκευή, θα εμφανίζεται ως μη επαληθευμένο. Μάθετε πώς μπορείτε να επαληθεύσετε το πρόγραμμά σας μέσω ενός δημόσιου API στο επόμενο βήμα.
Αν θέλετε να κλειδώσετε την επαλήθευση σε μια συγκεκριμένη έκδοση, μπορείτε να
προσθέσετε τη σημαία --commit-hash στην εντολή.
Επαλήθευση μέσω δημόσιου API
Αφού ανεβάσετε το PDA επαλήθευσής σας onchain με verify-from-repo, υποβάλετε
μια απομακρυσμένη εργασία επαλήθευσης στο
OtterSec API:
solana-verify remote submit-job --program-id <program-id> --uploader <address>
Το --uploader είναι η διεύθυνση που ανέβασε το PDA επαλήθευσης, συνήθως η αρχή
αναβάθμισης του προγράμματός σας. Εάν το πρόγραμμά σας ελέγχεται από multisig,
συνεχίστε στο τμήμα
επαλήθευση με multisig
αυτού του οδηγού παρακάτω.
Η παλαιότερη σημαία
--remoteστοverify-from-repoέχει καταργηθεί. Ανεβάστε πρώτα το PDA σας και στη συνέχεια εκτελέστε τοremote submit-job.
Αυτό υποβάλλει μια εργασία στο OtterSec API. Μπορείτε να ελέγξετε την κατάσταση της εργασίας με:
solana-verify remote get-job --job-id <job-id>
Μόλις ολοκληρωθεί επιτυχώς η επαλήθευση, κάτι που μπορεί να πάρει λίγο χρόνο, θα μπορείτε να δείτε το πρόγραμμά σας ως επαληθευμένο στο OtterSec API για μεμονωμένα προγράμματα και στο Solana Explorer, SolanaFM, SolScan και τελικά και στον ιστότοπο που διαχειρίζεται η κοινότητα SolanaVerify.org που συντηρείται από τον 0xDeep και το OtterSec verified programs API και τέλος στο Verified Programs Dune Dashboard συμβάλλοντας σε ένα πιο υγιές οικοσύστημα Solana.
Πώς να επαληθεύσετε το πρόγραμμά σας όταν ελέγχεται από Multisig όπως το Squads
Για να λειτουργήσει η απομακρυσμένη επαλήθευση, πρέπει να γράψετε τα δεδομένα επαλήθευσης σε ένα PDA υπογεγραμμένο από την αρχή του προγράμματος. Εάν το πρόγραμμά σας ελέγχεται από multisig, μπορείτε να εξαγάγετε αυτή τη συναλλαγή εγγραφής PDA και να την υποβάλετε μέσω Squads Protocol ή μιας άλλης λύσης multisig της επιλογής σας.
1. Δημιουργήστε το επαληθεύσιμο πρόγραμμα
Αρχικά δημιουργήστε το πρόγραμμα:
solana-verify build
Αυτό θα δημιουργήσει ένα επαληθεύσιμο build χρησιμοποιώντας ένα container Docker
με την έκδοση solana που καθορίζεται στο αρχείο Cargo.lock.
2. Ανάπτυξη του προγράμματος
solana config set --url "PayedMainnetRPCAddress" // the public endpoint will be rate limited too muchsolana program deploy target/deploy/verify_squads.so
Για τον υπόλοιπο οδηγό multisig, θα χρησιμοποιήσουμε ένα παράδειγμα
αναγνωριστικού προγράμματος 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD.
3. Δέσμευση και επαλήθευση έναντι αποθετηρίου
Μόλις ολοκληρωθεί αυτό, δεσμεύουμε το έργο στο github. Ορίστε ένα παράδειγμα: https://github.com/solana-developers/verify-squads
Προαιρετικό: Δείτε αν μπορείτε να επαληθεύσετε τοπικά πρώτα (αυτή η εντολή
χρησιμοποιεί παράδειγμα αναγνωριστικού προγράμματος
6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD):
solana-verify verify-from-repo https://github.com/solana-developers/verify-squads --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD
Απλώς για να βεβαιωθείτε ότι οι παράμετροί σας είναι σωστές.
4. Μεταφορά αρχής προγράμματος στο multisig
Εάν δεν έχετε ακόμη μεταφέρει την αρχή του προγράμματός σας στο multisig, αντιγράψτε την αρχή του multisig. Θα τη χρειαστείτε στο επόμενο βήμα.
5. Εξαγωγή συναλλαγής PDA
Όταν έχετε τοπικά την αρχή του προγράμματός σας, σας ζητείται να ανεβάσετε τα
δεδομένα κατασκευής onchain κατά τη χρήση της εντολής
solana-verify verify-from-repo.
Εφόσον δεν μπορείτε να το κάνετε αυτό όταν χρησιμοποιείτε multisig, πρέπει να εξαγάγετε τη συναλλαγή PDA χειροκίνητα και στη συνέχεια να την ενεργοποιήσετε μέσω του Squads.
solana-verify export-pda-tx https://github.com/solana-developers/verify-squads --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD --uploader <your program authority> --encoding base58 --compute-unit-price 0
Αυτό θα σας επιστρέψει μια συναλλαγή base58. Εάν θέλετε μια συναλλαγή
κωδικοποιημένη σε base64 για χρήση σε επιθεωρητή συναλλαγών, μπορείτε να
χρησιμοποιήσετε --encoding base64.
P6vBfcPaaXb8fZoT3NBAYEcdtEj7tubA1k2gBxmFKZ3UWF5YyrmDMFTvLKALCJoUuRsPAjMckudYruCu3eeWQtuDrFbEMLxLFutnKXac974fnkMivcwUdY66VLjbxQT6ATmcy7F4hBtz1G4P1h6iBJLhb8WtrtgY3i4qq45MUEb7RjuMEfUFXKrNgPdGxkz5xvMHq3dxKRcpmEK5k2DkeW6SUQYBVe19Ga3B9GyhTX8k3CMt9JCEah13WyRnQd8GjoK6sTEvGJym6xDNvmd8yiJYSNcaYwEJsjHEUf4Yh6kAC7ki2KRvVAr3NVe1gjqK9McrwSQjtUatvydTG8Zovcr7PPUEMf3yPMgKXjZLB2QpkH63yTTYdNAnWFuv9E6b6nYRqye5XcNi436yKw5U14fXh65yK34bgYLi9328UT1huJELsJU9BRGnGUmb6GWp6c2WL5BhnzgNTSnt9TXFfEgUMzhvKzpVBxLP44hwqqBdyUhHFysCF37531PnmiESq8x1xou23xJ6FcQbc199754MkqQd7tX9CUznGzAEqHGkzn3VBoJnojsKtgYmiTYbdRsT1CU18MbYEE7WvGAvXyxxbpNzbAcc94HrnM6cqRGmwhEBroPfFghTdmzg9D
6. Υποβολή συναλλαγής μέσω Squads
Μεταβείτε στο εργαλείο δημιουργίας συναλλαγών του Squads και εισαγάγετε τη συναλλαγή κωδικοποιημένη σε base58. Βεβαιωθείτε ότι στην προσομοίωση η συναλλαγή περιέχει μόνο μια κλήση στο πρόγραμμα επαλήθευσης osec και στο πρόγραμμα computer budget και τίποτα άλλο!
7. Υποβολή απομακρυσμένης εργασίας επαλήθευσης
Μόλις η συναλλαγή προς το Squads ολοκληρωθεί με επιτυχία, μπορείτε να υποβάλετε την απομακρυσμένη εργασία:
solana-verify remote submit-job --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD--uploader <your program authority>
Τα καταφέρατε! Επαληθεύσατε το πρόγραμμά σας σε σχέση με ένα δημόσιο αποθετήριο και υποβάλατε μια απομακρυσμένη εργασία στο API του OtterSec. Θα πρέπει τώρα να μπορείτε να το δείτε να εμφανίζεται στον εξερευνητή του Solana και σε άλλα μέρη.
8. Ενημέρωση του προγράμματος (Προαιρετικό)
Όταν ενημερώνετε το πρόγραμμά σας, πρέπει να εξαγάγετε μια νέα συναλλαγή PDA και να την υποβάλετε ξανά μέσω του Squads.
Εκτέλεση ενημέρωσης του προγράμματος:
solana-verify buildsolana program write-buffer target/deploy/verify_squads.so --with-compute-unit-price 50000 --max-sign-attempts 50
Στη συνέχεια, μεταφέρετε την αρχή του buffer στο multisig ή δημιουργήστε απευθείας το buffer με την αρχή του multisig.
solana program set-buffer-authority Fu3k79g53ZozAj47uq1tXrFy4QbQYh7y745DDsxjtyLR --new-buffer-authority 3JG6ULvZVCrkKtSSskKNJGe8RNZGFe8Ruev9KUhxzK5K
9. Εξαγωγή και υποβολή νέας συναλλαγής PDA
Μην ξεχάσετε να υποβάλετε τις αλλαγές σας στο GitHub. Εξαγάγετε ξανά τη συναλλαγή αναβάθμισης PDA:
solana-verify export-pda-tx https://github.com/solana-developers/verify-squads --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD --uploader 3JG6ULvZVCrkKtSSskKNJGe8RNZGFe8Ruev9KUhxzK5K
Υποβάλετε ξανά τη συναλλαγή μέσω του Squads.
Μπορείτε να δείτε ένα παράδειγμα συναλλαγής εδώ.
Στη συνέχεια, υποβάλετε για άλλη μία απομακρυσμένη κατασκευή:
solana-verify remote submit-job --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD --uploader 3JG6ULvZVCrkKtSSskKNJGe8RNZGFe8Ruev9KUhxzK5K
Το αποτέλεσμα θα πρέπει να μοιάζει με κάτι τέτοιο:
Verification request sent with request id: b63339d2-163e-49ac-b55d-3454c1c2b5b3Verification in progress... ⏳ [00:18:02] ✅ Process completed. (Done in 18minutes) Program 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD has been verified.✅ The provided GitHub build matches the onchain hash. On Chain Hash:96f8c3d9400258f7759408d1f6f8435b4a24d9b52f5a0340d97907e567cb8773 ExecutableHash: 96f8c3d9400258f7759408d1f6f8435b4a24d9b52f5a0340d97907e567cb8773 Repo URL:https://github.com/Woody4618/verify-squads/tree/0fb0a2e30c15c51732c0ad5e837975a6f7bbc7edCheck the verification status at:https://verify.osec.io/status/6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD Joburl: https://verify.osec.io/job/b63339d2-163e-49ac-b55d-3454c1c2b5b3
Συγχαρητήρια, επαληθεύσατε το πρόγραμμά σας μετά από μια αναβάθμιση multisig!
Επαλήθευση από Docker image
Μπορείτε επίσης να επαληθεύσετε το πρόγραμμά σας σε σχέση με ένα Docker image εκτελώντας την ακόλουθη εντολή:
solana-verify verify-from-image -eexamples/hello_world/target/deploy/hello_world.so -iellipsislabs/hello_world_verifiable_build:latest -p2ZrriTQSVekoj414Ynysd48jyn4AX6ZF4TTJRqHfbJfn
Αυτή η εντολή φορτώνει το image που είναι αποθηκευμένο στο
ellipsislabs/hello_world_verifiable_build:latest, και επαληθεύει ότι το hash
της διαδρομής του εκτελέσιμου αρχείου στο container είναι ίδιο με το hash του
onchain προγράμματος που παρέχεται στην εντολή. Επειδή η κατασκευή έχει ήδη
μεταφορτωθεί σε ένα image, δεν απαιτείται πλήρης ανακατασκευή του εκτελέσιμου
αρχείου, η οποία μπορεί να διαρκέσει πολύ.
Το Dockerfile που δημιουργεί το image
ellipsislabs/hello_world_verifiable_build:latest βρίσκεται στο αποθετήριο της
Ellipsis Labs
/examples/hello_world.
Παρακάτω είναι η αναμενόμενη έξοδος:
Verifying image: "ellipsislabs/hello_world_verifiable_build:latest", on network"https://api.mainnet.solana.com" against program ID2ZrriTQSVekoj414Ynysd48jyn4AX6ZF4TTJRqHfbJfn Executable path in container:"examples/hello_world/target/deploy/hello_world.so"Executable hash:08d91368d349c2b56c712422f6d274a1e8f1946ff2ecd1dc3efc3ebace52a760 Program hash:08d91368d349c2b56c712422f6d274a1e8f1946ff2ecd1dc3efc3ebace52a760 Executablematches onchain program data ✅
Παράδειγμα επαληθευμένης κατασκευής
Ακολουθεί ένα παράδειγμα επαλήθευσης ενός προγράμματος με αναγνωριστικό
FWEYpBAf9WsemQiNbAewhyESfR38GBBHLrCaU3MpEKWv χρησιμοποιώντας τον πηγαίο κώδικα
από αυτό το αποθετήριο:
solana-verify verify-from-repo https://github.com/solana-developers/verified-program --url YOUR-RPC-URL --program-id FWEYpBAf9WsemQiNbAewhyESfR38GBBHLrCaU3MpEKWv --mount-path waffle --library-name waffle --commit-hash 5b82b86f02afbde330dff3e1847bed2d42069f4e
Από προεπιλογή, η εντολή verify-from-repo λαμβάνει την τελευταία δέσμευση στον
κύριο κλάδο. Μπορείτε επίσης να ορίσετε μια συγκεκριμένη δέσμευση σε περίπτωση
που θέλετε να συνεχίσετε την εργασία στο αποθετήριο χρησιμοποιώντας την
παράμετρο commit-hash:
--commit-hash 5b82b86f02afbde330dff3e1847bed2d42069f4e
Όταν σας ζητηθεί, απαντήστε ναι για να ανεβάσετε το PDA επαλήθευσής σας onchain. Στη συνέχεια υποβάλετε μια απομακρυσμένη εργασία επαλήθευσης μέσω του OtterSec API:
solana-verify remote submit-job --program-id FWEYpBAf9WsemQiNbAewhyESfR38GBBHLrCaU3MpEKWv --uploader <your-upgrade-authority>
Δημοφιλή προγράμματα που είναι ήδη επαληθευμένα
Phoenix
solana-verify verify-from-repo -um --program-id PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY https://github.com/Ellipsis-Labs/phoenix-v1
Τελική Έξοδος:
Executable Program Hash from repo: 6877a5b732b3494b828a324ec846d526d962223959534dbaf4209e0da3b2d6a9Onchain Program Hash: 6877a5b732b3494b828a324ec846d526d962223959534dbaf4209e0da3b2d6a9Program hash matches ✅
Squads V3
solana-verify verify-from-repo https://github.com/Squads-Protocol/squads-mpl --commit-hash c95b7673d616c377a349ca424261872dfcf8b19d --program-id SMPLecH534NA9acpos4G6x7uf3LWbCAwZQE9e8ZekMu -um --library-name squads_mpl --bpf
Σημειώστε ότι χρειάστηκε να καθορίσουμε το
library-nameεπειδή το αποθετήριο Squads περιλαμβάνει πολλαπλά προγράμματα. Χρησιμοποιούμε τη σημαία--bpfεπειδή τοsquads_mplείχε επαληθευτεί προηγουμένως με Anchor.
Τελική Έξοδος:
Executable Program Hash from repo: 72da599d9ee14b2a03a23ccfa6f06d53eea4a00825ad2191929cbd78fb69205cOnchain Program Hash: 72da599d9ee14b2a03a23ccfa6f06d53eea4a00825ad2191929cbd78fb69205cProgram hash matches ✅
Drift V2
solana-verify verify-from-repo -um --program-id dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH https://github.com/drift-labs/protocol-v2 --commit-hash 110d3ff4f8ba07c178d69f9bfc7b30194fac56d6 --library-name drift
Τελική Έξοδος:
Executable Program Hash from repo: e31d58edeabc3c30bf6f2aa60bfaa5e492b41ec203e9006404b463e5adee5828Onchain Program Hash: e31d58edeabc3c30bf6f2aa60bfaa5e492b41ec203e9006404b463e5adee5828Program hash matches ✅
Marginfi V2
solana-verify verify-from-repo -um --program-id MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA https://github.com/mrgnlabs/marginfi-v2 --commit-hash d33e649e415c354cc2a1e3c49131725552d69ba0 --library-name marginfi -- --features mainnet-beta
Τελική Έξοδος:
Executable Program Hash from repo: 890d68f48f96991016222b1fcbc2cc81b8ef2dcbf280c44fe378c523c108fad5Onchain Program Hash: 890d68f48f96991016222b1fcbc2cc81b8ef2dcbf280c44fe378c523c108fad5Program hash matches ✅
Συχνές ερωτήσεις
Η επαλήθευσή μου αποτυγχάνει. Τι πρέπει να κάνω;
Ελέγξτε αυτά τα συνηθισμένα προβλήματα:
- Λανθασμένος υπογράφων: Επιβεβαιώστε ότι ο υπογράφων σας είναι η αρχή
αναβάθμισης του προγράμματος εκτελώντας
solana program show YourProgramId - Δεν υπάρχει PDA στο blockchain: Εκτελέστε
solana-verify verify-from-repo -umκαι επιλέξτε ΝΑΙ όταν σας ζητηθεί. Χωρίς την ανάρτηση του PDA, το API δεν μπορεί να ανακτήσει τα μεταδεδομένα επαλήθευσής σας. - Αναντιστοιχία δεδομένων PDA: Ενημερώστε το PDA σας εάν έχετε αναπτύξει εκ νέου το πρόγραμμά σας. Τα δεδομένα του PDA σας πρέπει να ταιριάζουν με το αναπτυγμένο πρόγραμμά σας.
- Λανθασμένο hash δέσμευσης: Δημιουργήστε το PDA σας χρησιμοποιώντας το ακριβές hash δέσμευσης που αναπτύξατε
- Διαφορές περιβάλλοντος κατασκευής: Χρησιμοποιήστε το Docker με το solana-verify κατά τη δημιουργία του PDA σας
Το τοπικό hash κατασκευής μου δεν ταιριάζει με το hash στο blockchain. Γιατί;
Αυτό συνήθως σημαίνει:
- Χρησιμοποιείτε διαφορετικές εκδόσεις εργαλειοθήκης Rust/Solana
- Οι εξαρτήσεις σας ενημερώθηκαν μεταξύ των κατασκευών
- Δεν κατασκευάσατε σε κοντέινερ Docker
- Ανακτήσατε λανθασμένη δέσμευση
Διορθώστε το κατασκευάζοντας με solana-verify build στο Docker χρησιμοποιώντας
την ακριβή δέσμευση που αναπτύξατε.
Πόσο χρόνο θα χρειαστεί η επαλήθευσή μου;
Αναμένετε τα παρακάτω χρονικά πλαίσια ανάλογα με το μέγεθος του προγράμματός σας:
- Απλά προγράμματα: 1-5 λεπτά
- Σύνθετα προγράμματα: 5-15 λεπτά
- Πολύ μεγάλα προγράμματα: Έως 30 λεπτά
Παρακολουθήστε την πρόοδό σας χρησιμοποιώντας το τελικό σημείο κατάστασης εργασίας.
Το πρόγραμμά μου είναι αμετάβλητο (χωρίς αρχή αναβάθμισης). Πώς μπορώ να το επαληθεύσω;
Εάν το πρόγραμμά σας δεν έχει αρχή αναβάθμισης ή έγινε αμετάβλητο πριν μπορέσετε να δημιουργήσετε ένα PDA, διαθέτουμε μια διεύθυνση στη λίστα επιτρεπόμενων για αυτήν την περίπτωση. Επικοινωνήστε μαζί μας στο contact@osec.io και θα σας βοηθήσουμε να επαληθεύσετε το πρόγραμμά σας.
Τι είναι το PDA και γιατί έχει σημασία;
Το PDA σας (Program Derived Account) επιτρέπει την αξιόπιστη επαλήθευση χωρίς εμπιστοσύνη:
- Αποθήκευση On-Chain: Αποθηκεύστε τα μεταδεδομένα επαλήθευσής σας (URL
αποθετηρίου, hash commit, παράμετροι build) onchain σε ένα PDA που ανήκει στο
πρόγραμμα Otter Verify (
verifycLy8mB96wd9wqq3WDXQwM4oU6r42Th37Db9fC) - Κρυπτογραφική Σύνδεση: Το PDA σας προέρχεται από τη διεύθυνση του προγράμματός σας, δημιουργώντας έναν αμετάβλητο σύνδεσμο με τα δεδομένα επαλήθευσής σας
- Αποκεντρωμένη Εμπιστοσύνη: Οποιοσδήποτε μπορεί να διαβάσει το PDA σας και να επαληθεύσει ανεξάρτητα το πρόγραμμά σας
Γιατί πρέπει να δημιουργήσω το PDA πριν χρησιμοποιήσω το API;
Το API λειτουργεί μόνο με onchain PDAs επειδή:
- Χωρίς Εμπιστοσύνη: Το API απορρίπτει αυθαίρετα δεδομένα - χρησιμοποιεί μόνο αυτά που η upgrade authority σας αποθήκευσε onchain
- Απλούστερο: Απλώς δώστε signer + program_id· το API λαμβάνει όλα τα υπόλοιπα από το PDA σας
- Αδύνατο να παραβιαστεί: Το PDA σας δημιουργεί ένα αμετάβλητο αρχείο που μπορεί να επαληθεύσει ανεξάρτητα ο καθένας
- Απόδειξη Κυριότητας: Ο signer σας πρέπει να είναι η upgrade authority, αποδεικνύοντας κρυπτογραφικά ότι ελέγχετε το πρόγραμμα
Πόσο συχνά πρέπει να επαληθεύω το πρόγραμμά μου;
Επαληθεύστε το πρόγραμμά σας:
- Μετά από κάθε deployment ή αναβάθμιση
- Όταν ενημερώνετε το αποθετήριο πηγαίου κώδικα
- Μην ανησυχείτε για επαναλήψεις επαλήθευσης σε άλλες περιπτώσεις - το API επαληθεύει αυτόματα όλα τα προγράμματα κάθε 24 ώρες
Τι συμβαίνει όταν αναβαθμίζω το πρόγραμμά μου;
Ακολουθήστε αυτά τα βήματα μετά την αναβάθμιση:
- Το API εντοπίζει την αναβάθμισή σας και αποεπαληθεύει το πρόγραμμά σας.
- Ενημερώστε το PDA σας με νέα μεταδεδομένα επαλήθευσης:
solana-verify verify-from-repo -um \--program-id YourProgramId... \https://github.com/your-org/your-program
- Υποβάλετε νέο αίτημα επαλήθευσης χρησιμοποιώντας την upgrade authority σας
- Το API θα επαληθεύσει τη νέα έκδοσή σας έναντι του ενημερωμένου PDA
Σημαντικό: Να ενημερώνετε πάντα το PDA σας χρησιμοποιώντας την upgrade authority σας με το νέο hash commit για το αναβαθμισμένο πρόγραμμα.
Μπορώ να εμπιστευτώ τα αποτελέσματα επαλήθευσης;
Ναι - το σύστημα είναι σχεδιασμένο να είναι αξιόπιστο χωρίς την ανάγκη εμπιστοσύνης και ανεξάρτητα επαληθεύσιμο:
Τι το Καθιστά Αξιόπιστο:
- On-Chain PDA: Τα μεταδεδομένα επαλήθευσής σας βρίσκονται onchain, χωρίς να ελέγχονται από καμία κεντρική αρχή
- Απόδειξη Αρχής Αναβάθμισης: Μόνο η αρχή αναβάθμισης του προγράμματός σας μπορεί να δημιουργήσει/ενημερώσει το PDA
- Ανεξάρτητη Επαλήθευση: Οποιοσδήποτε μπορεί να επαληθεύσει διαβάζοντας το
PDA σας και εκτελώντας
solana-verifyτοπικά - Συνεχής Επανεπαλήθευση: Το API επανεπαληθεύει αυτόματα όλα τα προγράμματα κάθε 24 ώρες
Κατανοήστε Αυτούς τους Περιορισμούς:
- Η επαλήθευση επιβεβαιώνει ότι ο πηγαίος κώδικας αντιστοιχεί στην ανάπτυξη - ΟΧΙ ότι ο κώδικάς σας είναι ασφαλής
- Να ελέγχετε πάντα τον κώδικα πριν αλληλεπιδράσετε με προγράμματα
- Επαληθευμένο ≠ ελεγμένο, ή ασφαλές
- Ελέγξτε το αποθετήριο και την υποβολή στο PDA για να επιβεβαιώσετε ότι προέρχεται από αξιόπιστη πηγή
Πώς μπορώ να επαληθεύσω ανεξάρτητα ένα πρόγραμμα;
Επαληθεύστε οποιοδήποτε πρόγραμμα μόνοι σας διαβάζοντας το onchain PDA του και εκτελώντας την επαλήθευση τοπικά:
Βήμα 1: Διαβάστε το On-Chain PDA
# Install solana-verify if you haven'tcargo install solana-verify# Get the PDA datasolana-verify list-program-pdas --program-id YourProgramId...
Βήμα 2: Επαλήθευση Τοπικά
# Verify using the repository and commit & other arguments from the PDAsolana-verify verify-from-repo \--program-id YourProgramId... \https://github.com/your-org/your-program--commit-hash <commit-hash>... (other arguments from the PDA)# Confirm the hash output matches the onchain program hash
Αυτό αποδεικνύει:
- Τα μεταδεδομένα του PDA είναι αυθεντικά (αποθηκευμένα onchain)
- Ο πηγαίος κώδικας στο αποθετήριο του PDA αντιστοιχεί στο αναπτυγμένο πρόγραμμα
- Δεν χρειάζεται να εμπιστευτείτε το API - επαληθεύστε τα πάντα μόνοι σας onchain
Μπορεί κάποιος άλλος να επαληθεύσει το πρόγραμμά μου χωρίς άδεια;
Ναι, αυτός είναι ο λόγος για τον οποίο απαιτούμε ο υπογράφων να είναι η αρχή αναβάθμισης. Θεωρούμε έγκυρη την επαλήθευση μόνο εφόσον ο υπογράφων είναι η αρχή αναβάθμισης.
Τι χρειάζομαι για να δημιουργήσω επαληθεύσιμα builds;
Εγκαταστήστε αυτά τα εργαλεία:
- Docker (για ντετερμινιστικά builds)
- Cargo (διαχειριστής πακέτων Rust)
- Solana Verify CLI:
cargo install solana-verify - Ένα δημόσιο αποθετήριο Git με τον πηγαίο κώδικά σας
Μπορώ να επαληθεύσω ιδιωτικά αποθετήρια;
Όχι - η επαλήθευση απαιτεί δημόσιο πηγαίο κώδικα:
- Το PDA σας αποθηκεύει μια δημόσια διεύθυνση URL αποθετηρίου που μπορεί να προσπελάσει οποιοσδήποτε
- Η αξιόπιστη επαλήθευση εξαρτάται από την πρόσβαση σε δημόσιο κώδικα
- Οι χρήστες πρέπει να διαβάσουν τον πηγαίο κώδικά σας για να κατανοήσουν τι κάνει το πρόγραμμά σας
- Ο κύριος σκοπός είναι να επιτρέπεται στους χρήστες να επαληθεύουν ανεξάρτητα ότι ο πηγαίος κώδικας αντιστοιχεί στην ανάπτυξη
Τα ιδιωτικά αποθετήρια καταρρίπτουν το βασικό μοντέλο εμπιστοσύνης του συστήματος επαλήθευσης.
Πώς επαληθεύω ένα πρόγραμμα που ελέγχεται από το Squads Multisig;
Ακολουθήστε τα παρακάτω βήματα για προγράμματα που ελέγχονται από multisig:
# 1. Build and deploy normallysolana-verify buildsolana program deploy <your-program.so> --program-id YourProgramId...# 2. Verify locally first - confirm the hash matchessolana-verify verify-from-repo -um \--program-id YourProgramId... \https://github.com/your-org/your-program# 3. Export the PDA creation transactionsolana-verify export-pda-tx \--program-id YourProgramId... \https://github.com/your-org/your-program# 4. Execute the PDA transaction through your Squads Multisig interface# 5. After multisig execution, trigger remote verificationsolana-verify remote submit-job \--program-id YourProgramId... \--uploader YourMultisigAddress...
Κρίσιμο: Πάντα να επαληθεύετε τοπικά (βήμα 2) για να επιβεβαιώσετε ότι το hash κατασκευής ταιριάζει πριν εξαγάγετε τη συναλλαγή PDA.
Συμπέρασμα
Η χρήση επαληθευμένων builds στο Solana διασφαλίζει την ακεραιότητα και την αξιοπιστία των προγραμμάτων σας στο δίκτυο και επιτρέπει στους προγραμματιστές να βρίσκουν τα SDK σας απευθείας μέσα από το Solana Explorer. Αξιοποιώντας εργαλεία όπως το Solana Verify CLI και το Docker, μπορείτε να διατηρείτε επαληθεύσιμα και ασφαλή builds που αντιστοιχούν στον πηγαίο κώδικά σας. Λαμβάνετε πάντα τις απαραίτητες προφυλάξεις για τη χρήση συνεπών περιβαλλόντων και εξετάστε λύσεις διακυβέρνησης για ασφαλείς αναβαθμίσεις και αναπτύξεις.
Ασφάλεια + Αποποίηση Ευθύνης
Ενώ τα επαληθευμένα builds αποτελούν ένα ισχυρό εργαλείο για τη διασφάλιση της ακεραιότητας των προγραμμάτων σας στο Solana, δεν είναι εντελώς αξιόπιστα στην προεπιλεγμένη ρύθμιση. Τα docker images κατασκευάζονται και φιλοξενούνται από το Solana Foundation.
Να γνωρίζετε ότι κατασκευάζετε το project σας μέσα σε ένα ληφθέν docker image και ότι ολόκληρη η ρύθμισή σας αντιγράφεται σε αυτό το docker image για την κατασκευή, συμπεριλαμβανομένων ενδεχομένως ευαίσθητων πληροφοριών.
Εάν θέλετε να έχετε μια εντελώς αξιόπιστη ρύθμιση, μπορείτε να κατασκευάσετε τα docker images μόνοι σας και να τα φιλοξενήσετε στη δική σας υποδομή. Με αυτόν τον τρόπο μπορείτε να είστε βέβαιοι ότι τα docker images δεν έχουν παραβιαστεί. Μπορείτε να βρείτε τα scripts για τη δημιουργία των δικών σας docker images στο αποθετήριο Verified builds και μπορείτε να το κάνετε fork και να εκτελέσετε τα github actions μόνοι σας ή να επαληθεύσετε ότι είναι σωστά.
Επιπλέον, για την απομακρυσμένη επαλήθευση εμπιστεύεστε σε κάποιο βαθμό το OtterSec API και τον Solana Explorer.
Το API ή ο Solana Explorer ενδέχεται να εμφανίσουν λανθασμένες πληροφορίες εάν έχουν παραβιαστεί.
Αν θέλετε μια πλήρως αξιόπιστη ρύθμιση χωρίς την ανάγκη εμπιστοσύνης τρίτων,
μπορείτε να εκτελέσετε το
Verify API μόνοι
σας ή να εκτελέσετε τοπικά την επαλήθευση προγράμματος χρησιμοποιώντας την
εντολή verify-from-repo με τα δεδομένα επαλήθευσης on-chain που είναι
αποθηκευμένα σε ένα
PDA
το οποίο προκύπτει από την αρχή ανάπτυξης του προγράμματος και το
verify program.
Το πρόγραμμα επαλήθευσης έχει αναπτυχθεί από την ομάδα OtterSec και δεν έχει ακόμη παγώσει, οπότε μπορεί να αναβαθμιστεί ανά πάσα στιγμή.
Το Ίδρυμα Solana, η OtterSec και η ομάδα Ellipsis Labs δεν φέρουν ευθύνη για τυχόν απώλειες ή ζημίες που ενδέχεται να προκύψουν από τη χρήση του αγωγού επαληθευμένων εκδόσεων.
Security.txt για προγράμματα Solana
Εκτός από τις επαληθευμένες εκδόσεις, μπορείτε επίσης να προσθέσετε ένα αρχείο
security.txt στο πρόγραμμά σας. Στο μέλλον, όταν υλοποιηθεί, το security.txt
θα περιέχει το δημόσιο κλειδί του επαληθευτή για εύκολη πρόσβαση στα δεδομένα
επαλήθευσης που είναι αποθηκευμένα στο PDA επαλήθευσης. Το PDA που περιέχει όλες
τις απαραίτητες πληροφορίες για την κατασκευή και την επαλήθευση ενός
προγράμματος προκύπτει από τη διεύθυνση του προγράμματος και το pubkey του
επαληθευτή. Εξ ορισμού, αυτό είναι το ίδιο pubkey που κατασκεύασε και ανέπτυξε
το πρόγραμμα. Ωστόσο, μπορεί επίσης να είναι ένα άλλο pubkey που μπορεί να
καθοριστεί στο security.txt.
Η λειτουργία security.txt επιτρέπει στους προγραμματιστές να ενσωματώνουν
πληροφορίες επικοινωνίας και ασφαλείας απευθείας μέσα στα έξυπνα συμβόλαιά τους
στο Solana. Εμπνευσμένη από το securitytxt.org, αυτή
η προσέγγιση παρέχει έναν τυποποιημένο τρόπο για τους ερευνητές ασφαλείας να
επικοινωνούν με τους υπεύθυνους συντήρησης του έργου, ακόμα και αν γνωρίζουν
μόνο τη διεύθυνση του συμβολαίου.
Γιατί να χρησιμοποιήσετε το security.txt;
Για πολλά έργα, ειδικά τα μικρότερα ή τα ιδιωτικά, ο εντοπισμός των
προγραμματιστών από μόνο τη διεύθυνση του συμβολαίου μπορεί να είναι δύσκολος
και χρονοβόρος. Η ενσωμάτωση ενός αρχείου security.txt στο πρόγραμμα
διασφαλίζει ότι οι ερευνητές ασφαλείας μπορούν εύκολα να επικοινωνήσουν με τα
κατάλληλα άτομα, αποτρέποντας πιθανές επιθέσεις και εξασφαλίζοντας έγκαιρες
αναφορές σφαλμάτων.
Πώς να υλοποιήσετε το security.txt
Για να προσθέσετε ένα security.txt στο πρόγραμμα Solana σας, ακολουθήστε τα
παρακάτω βήματα:
Προσθέστε την εξάρτηση solana-security-txt στο Cargo.toml σας:
[dependencies]solana-security-txt = "1.1.1"
Χρησιμοποιήστε τη μακροεντολή security_txt! στο συμβόλαιό σας για να ορίσετε
τις πληροφορίες ασφαλείας σας. Μπορείτε να συμπεριλάβετε στοιχεία επικοινωνίας,
URLs έργου και ακόμη και μια πολιτική ασφαλείας. Ακολουθεί ένα παράδειγμα:
#[cfg(not(feature = "no-entrypoint"))]use {default_env::default_env, solana_security_txt::security_txt};#[cfg(not(feature = "no-entrypoint"))]security_txt! {name: "MyProject",project_url: "https://myproject.com",contacts: "email:security@myproject.com,discord:security#1234",policy: "https://myproject.com/security-policy",// Optional Fieldspreferred_languages: "en,de",source_code: "https://github.com/solana-developers/solana-game-preset",source_revision: "5vJwnLeyjV8uNJSp1zn7VLW8GwiQbcsQbGaVSwRmkE4r",source_release: "",encryption: "",auditors: "Verifier pubkey: 5vJwnLeyjV8uNJSp1zn7VLW8GwiQbcsQbGaVSwRmkE4r",acknowledgements: "Thank you to our bug bounty hunters!"}
Μόλις οι πληροφορίες security.txt ενσωματωθούν στο πρόγραμμά σας, μπορούν να
εκτελεστούν εύκολα ερωτήματα μέσω εργαλείων όπως το Solana Explorer,
διασφαλίζοντας ότι τα στοιχεία επικοινωνίας και ασφαλείας σας είναι διαθέσιμα σε
οποιονδήποτε θέλει να αναφέρει πιθανά ζητήματα.
Βέλτιστες πρακτικές
-
Χρήση συνδέσμων: Για πληροφορίες που ενδέχεται να αλλάξουν (π.χ., στοιχεία επικοινωνίας), συνιστάται η σύνδεση σε μια ιστοσελίδα αντί να κωδικοποιηθούν απευθείας στο συμβόλαιο. Αυτό αποφεύγει την ανάγκη συχνών αναβαθμίσεων του προγράμματος.
-
Επαλήθευση: Πριν από την ανάπτυξη, επαληθεύστε τη μορφή και το περιεχόμενο χρησιμοποιώντας το εργαλείο
query-security-txt, το οποίο μπορεί να επικυρώσει τόσο τα προγράμματα onchain όσο και τα τοπικά δυαδικά αρχεία:
query-security-txt target/bpfel-unknown-unknown/release/my_contract.so
Ενσωματώνοντας πληροφορίες επικοινωνίας ασφαλείας απευθείας στο συμβόλαιό σας, διευκολύνετε τους ερευνητές να επικοινωνήσουν μαζί σας, προωθώντας καλύτερη ασφάλεια και επικοινωνία εντός του οικοσυστήματος Solana.
Αυτό είναι ένα παράδειγμα του πώς εμφανίζεται το security.txt στο Solana Explorer
Το έργο security.txt συντηρείται από τη
Neodyme Labs
Μπορείτε να ελέγξετε την κατάσταση επαλήθευσης και να περιηγηθείτε σε επαληθευμένα προγράμματα στο verify.osec.io.
Is this page helpful?