Τεκμηρίωση SolanaΑνάπτυξη προγραμμάτων

Επαλήθευση προγραμμάτων

Αυτός ο οδηγός προορίζεται να αποτελέσει αναφορά για προγραμματιστές που θέλουν να εφαρμόσουν επαληθευμένες κατασκευές για τα προγράμματά τους στο 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 ως προεπιλογή:

Cargo.toml
[workspace]
members = ["program/programs/*"]
resolver = "2"
[profile.release]
overflow-checks = true
lto = "fat"
codegen-units = 1
[profile.release.build-override]
opt-level = 3
incremental = false
codegen-units = 1

Βεβαιωθείτε ότι το πρόγραμμά σας βρίσκεται στον πίνακα workspace/members και ότι το Cargo.toml του προγράμματός σας έχει το σωστό όνομα lib ρυθμισμένο.

Σημαντικό είναι το lib name και όχι το όνομα του πακέτου!

Κάτι σαν αυτό:

waffle/Cargo.toml
[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 much
solana 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 build
solana 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-3454c1c2b5b3
Verification in progress... ⏳ [00:18:02] ✅ Process completed. (Done in 18
minutes) Program 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD has been verified.
The provided GitHub build matches the onchain hash. On Chain Hash:
96f8c3d9400258f7759408d1f6f8435b4a24d9b52f5a0340d97907e567cb8773 Executable
Hash: 96f8c3d9400258f7759408d1f6f8435b4a24d9b52f5a0340d97907e567cb8773 Repo URL:
https://github.com/Woody4618/verify-squads/tree/0fb0a2e30c15c51732c0ad5e837975a6f7bbc7ed
Check the verification status at:
https://verify.osec.io/status/6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD Job
url: https://verify.osec.io/job/b63339d2-163e-49ac-b55d-3454c1c2b5b3

Συγχαρητήρια, επαληθεύσατε το πρόγραμμά σας μετά από μια αναβάθμιση multisig!

Επαλήθευση από Docker image

Μπορείτε επίσης να επαληθεύσετε το πρόγραμμά σας σε σχέση με ένα Docker image εκτελώντας την ακόλουθη εντολή:

solana-verify verify-from-image -e
examples/hello_world/target/deploy/hello_world.so -i
ellipsislabs/hello_world_verifiable_build:latest -p
2ZrriTQSVekoj414Ynysd48jyn4AX6ZF4TTJRqHfbJfn

Αυτή η εντολή φορτώνει το 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 ID
2ZrriTQSVekoj414Ynysd48jyn4AX6ZF4TTJRqHfbJfn Executable path in container:
"examples/hello_world/target/deploy/hello_world.so"
Executable hash:
08d91368d349c2b56c712422f6d274a1e8f1946ff2ecd1dc3efc3ebace52a760 Program hash:
08d91368d349c2b56c712422f6d274a1e8f1946ff2ecd1dc3efc3ebace52a760 Executable
matches 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: 6877a5b732b3494b828a324ec846d526d962223959534dbaf4209e0da3b2d6a9
Onchain Program Hash: 6877a5b732b3494b828a324ec846d526d962223959534dbaf4209e0da3b2d6a9
Program 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: 72da599d9ee14b2a03a23ccfa6f06d53eea4a00825ad2191929cbd78fb69205c
Onchain Program Hash: 72da599d9ee14b2a03a23ccfa6f06d53eea4a00825ad2191929cbd78fb69205c
Program 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: e31d58edeabc3c30bf6f2aa60bfaa5e492b41ec203e9006404b463e5adee5828
Onchain Program Hash: e31d58edeabc3c30bf6f2aa60bfaa5e492b41ec203e9006404b463e5adee5828
Program 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: 890d68f48f96991016222b1fcbc2cc81b8ef2dcbf280c44fe378c523c108fad5
Onchain Program Hash: 890d68f48f96991016222b1fcbc2cc81b8ef2dcbf280c44fe378c523c108fad5
Program 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 ώρες

Τι συμβαίνει όταν αναβαθμίζω το πρόγραμμά μου;

Ακολουθήστε αυτά τα βήματα μετά την αναβάθμιση:

  1. Το API εντοπίζει την αναβάθμισή σας και αποεπαληθεύει το πρόγραμμά σας.
  2. Ενημερώστε το PDA σας με νέα μεταδεδομένα επαλήθευσης:
solana-verify verify-from-repo -um \
--program-id YourProgramId... \
https://github.com/your-org/your-program
  1. Υποβάλετε νέο αίτημα επαλήθευσης χρησιμοποιώντας την upgrade authority σας
  2. Το 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't
cargo install solana-verify
# Get the PDA data
solana-verify list-program-pdas --program-id YourProgramId...

Βήμα 2: Επαλήθευση Τοπικά

# Verify using the repository and commit & other arguments from the PDA
solana-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

Αυτό αποδεικνύει:

  1. Τα μεταδεδομένα του PDA είναι αυθεντικά (αποθηκευμένα onchain)
  2. Ο πηγαίος κώδικας στο αποθετήριο του PDA αντιστοιχεί στο αναπτυγμένο πρόγραμμα
  3. Δεν χρειάζεται να εμπιστευτείτε το API - επαληθεύστε τα πάντα μόνοι σας onchain

Μπορεί κάποιος άλλος να επαληθεύσει το πρόγραμμά μου χωρίς άδεια;

Ναι, αυτός είναι ο λόγος για τον οποίο απαιτούμε ο υπογράφων να είναι η αρχή αναβάθμισης. Θεωρούμε έγκυρη την επαλήθευση μόνο εφόσον ο υπογράφων είναι η αρχή αναβάθμισης.

Τι χρειάζομαι για να δημιουργήσω επαληθεύσιμα builds;

Εγκαταστήστε αυτά τα εργαλεία:

  • Docker (για ντετερμινιστικά builds)
  • Cargo (διαχειριστής πακέτων Rust)
  • Solana Verify CLI: cargo install solana-verify
  • Ένα δημόσιο αποθετήριο Git με τον πηγαίο κώδικά σας

Μπορώ να επαληθεύσω ιδιωτικά αποθετήρια;

Όχι - η επαλήθευση απαιτεί δημόσιο πηγαίο κώδικα:

  • Το PDA σας αποθηκεύει μια δημόσια διεύθυνση URL αποθετηρίου που μπορεί να προσπελάσει οποιοσδήποτε
  • Η αξιόπιστη επαλήθευση εξαρτάται από την πρόσβαση σε δημόσιο κώδικα
  • Οι χρήστες πρέπει να διαβάσουν τον πηγαίο κώδικά σας για να κατανοήσουν τι κάνει το πρόγραμμά σας
  • Ο κύριος σκοπός είναι να επιτρέπεται στους χρήστες να επαληθεύουν ανεξάρτητα ότι ο πηγαίος κώδικας αντιστοιχεί στην ανάπτυξη

Τα ιδιωτικά αποθετήρια καταρρίπτουν το βασικό μοντέλο εμπιστοσύνης του συστήματος επαλήθευσης.

Πώς επαληθεύω ένα πρόγραμμα που ελέγχεται από το Squads Multisig;

Ακολουθήστε τα παρακάτω βήματα για προγράμματα που ελέγχονται από multisig:

# 1. Build and deploy normally
solana-verify build
solana program deploy <your-program.so> --program-id YourProgramId...
# 2. Verify locally first - confirm the hash matches
solana-verify verify-from-repo -um \
--program-id YourProgramId... \
https://github.com/your-org/your-program
# 3. Export the PDA creation transaction
solana-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 verification
solana-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 σας:

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 Fields
preferred_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?

Πίνακας Περιεχομένων

Τι είναι οι επαληθευμένες κατασκευές;Πώς λειτουργεί;Γιατί να χρησιμοποιήσω επαληθευμένες δημιουργίες;Πώς δημιουργώ επαληθευμένες εκδόσεις;Εγκαταστήστε το Docker και το CargoΕγκαταστήστε το Solana Verify CLIΠροετοιμασία έργουΔημιουργία επαληθεύσιμων προγραμμάτωνΑνάπτυξη επαληθεύσιμων προγραμμάτωνΕπαλήθευση έναντι αποθετηρίωνΕπαλήθευση μέσω δημόσιου APIΠώς να επαληθεύσετε το πρόγραμμά σας όταν ελέγχεται από Multisig όπως το Squads1. Δημιουργήστε το επαληθεύσιμο πρόγραμμα2. Ανάπτυξη του προγράμματος3. Δέσμευση και επαλήθευση έναντι αποθετηρίου4. Μεταφορά αρχής προγράμματος στο multisig5. Εξαγωγή συναλλαγής PDA6. Υποβολή συναλλαγής μέσω Squads7. Υποβολή απομακρυσμένης εργασίας επαλήθευσης8. Ενημέρωση του προγράμματος (Προαιρετικό)9. Εξαγωγή και υποβολή νέας συναλλαγής PDAΕπαλήθευση από Docker imageΠαράδειγμα επαληθευμένης κατασκευήςΔημοφιλή προγράμματα που είναι ήδη επαληθευμέναPhoenixSquads V3Drift V2Marginfi V2Συχνές ερωτήσειςΗ επαλήθευσή μου αποτυγχάνει. Τι πρέπει να κάνω;Το τοπικό hash κατασκευής μου δεν ταιριάζει με το hash στο blockchain. Γιατί;Πόσο χρόνο θα χρειαστεί η επαλήθευσή μου;Το πρόγραμμά μου είναι αμετάβλητο (χωρίς αρχή αναβάθμισης). Πώς μπορώ να το επαληθεύσω;Τι είναι το PDA και γιατί έχει σημασία;Γιατί πρέπει να δημιουργήσω το PDA πριν χρησιμοποιήσω το API;Πόσο συχνά πρέπει να επαληθεύω το πρόγραμμά μου;Τι συμβαίνει όταν αναβαθμίζω το πρόγραμμά μου;Μπορώ να εμπιστευτώ τα αποτελέσματα επαλήθευσης;Πώς μπορώ να επαληθεύσω ανεξάρτητα ένα πρόγραμμα;Μπορεί κάποιος άλλος να επαληθεύσει το πρόγραμμά μου χωρίς άδεια;Τι χρειάζομαι για να δημιουργήσω επαληθεύσιμα builds;Μπορώ να επαληθεύσω ιδιωτικά αποθετήρια;Πώς επαληθεύω ένα πρόγραμμα που ελέγχεται από το Squads Multisig;ΣυμπέρασμαΑσφάλεια + Αποποίηση ΕυθύνηςSecurity.txt για προγράμματα SolanaΓιατί να χρησιμοποιήσετε το security.txt;Πώς να υλοποιήσετε το security.txtΒέλτιστες πρακτικές
Επεξεργασία Σελίδας
© 2026 Ίδρυμα Solana. Με επιφύλαξη παντός δικαιώματος.