Tämä opas on tarkoitettu viitteeksi kehittäjille, jotka haluavat toteuttaa varmennetut käännökset ohjelmilleen Solanassa. Käsittelemme mitä varmennetut käännökset ovat, miten niitä käytetään, erityisiä huomioita ja parhaita käytäntöjä ohjelmasi aitouden varmistamiseksi lohkoketjussa.
Mitä ovat varmennetut käännökset?
Varmennetut käännökset varmistavat, että Solanan verkkoon käyttöönottamasi suoritettava ohjelma vastaa lähdekoodia repositoriossasi. Tämän avulla kehittäjät ja käyttäjät voivat luottaa siihen, että lohkoketjussa toimiva ohjelma vastaa täsmälleen julkista lähdekoodia, edistäen läpinäkyvyyttä ja turvallisuutta.
Varmennusprosessi sisältää lohkoketjussa olevan ohjelman tiivisteen vertaamisen paikallisesti lähdekoodista käännetyn ohjelman tiivisteeseen. Tämä varmistaa, ettei versioiden välillä ole eroavaisuuksia.
Vaikka varmennettua käännöstä ei tulisi pitää turvallisempana kuin varmentamatonta käännöstä, käännös mahdollistaa kehittäjien itse varmistaa, että lähdekoodi vastaa sitä, mikä on käyttöönotettu lohkoketjussa. Lähdekoodin avulla kehittäjä voi sitten validoida mitä koodi suorittaa, kun lähetetään transaktio.
Varmennettujen käännösten prosessin ovat suunnitelleet ja sitä ylläpitävät Ellipsis Labs ja OtterSec. Lisätietoja saat seuraamalla ohjeita alkuperäisessä varmennettujen käännösten repositoriossa sekä varmennusprosessia suoraan Anza -työkalupaketissa, kun se on tuettu siellä.
Miten se toimii?
Vahvistusprosessi tehdään vertaamalla lohkoketjussa olevan ohjelman tiivistettä paikallisesti lähdekoodista rakennetun ohjelman tiivisteeseen. Rakennat ohjelmasi kontrolloidussa ympäristössä käyttäen Solana Verify CLI:tä ja Dockeria. Tämä varmistaa, että rakennusprosessi on deterministinen ja yhdenmukainen eri järjestelmissä. Kun sinulla on suoritettava tiedosto, voit ottaa sen käyttöön Solana-verkossa. Rakennusprosessin aikana luodaan verify-ohjelman PDA. Tämä PDA sisältää kaikki tarvittavat tiedot ohjelman vahvistamiseen. PDA sisältää ohjelman osoitteen, git-url-osoitteen, commit-tiivisteen ja ohjelman rakentamiseen käytetyt argumentit.
PDA:ssa olevien tietojen avulla kuka tahansa voi suorittaa verify-ohjelmakomennon paikallisesti ja tarkistaa, onko ohjelma rakennettu annetusta lähdekoodista. Sitten jokainen voi vahvistaa täysin luottamuksettomasti tai käyttää omaa OtterSecin ylläpitämää verify API:a, joka tarjoaa käyttäjille helpon pääsyn tarkistamaan vahvistuksen. Voit jo nähdä näitä API-kutsuja käytettävän Solana Explorerissa ja SolanaFM:ssä sekä muissa paikoissa.
Miksi minun pitäisi käyttää vahvistettuja buildeja?
Vahvistettujen buildien käyttö tarjoaa seuraavat edut:
-
Turvallisuus: Takaa, että lohkoketjussa toimiva ohjelma vastaa lähdekoodia, estäen haitalliset muutokset.
-
Läpinäkyvyys: Mahdollistaa muiden käyttäjien ja kehittäjien vahvistaa, että lohkoketjussa oleva ohjelma on luotettava vertaamalla sitä julkiseen koodikantaan.
-
Luottamus: Lisää käyttäjien luottamusta, sillä vahvistetut buildit osoittavat, että ohjelmasi lohkoketjukäyttäytyminen on linjassa julkisen koodisi kanssa. Kun rakennat vahvistettavia ohjelmia, minimoit luvattoman tai haitallisen koodin suorittamiseen liittyvät riskit. Se varmistaa myös, että noudatat parhaita käytäntöjä ja tarjoat tietoturvatutkijoille helpon tavan ottaa sinuun yhteyttä. Myös lompakot ja muut työkalut voivat sallia transaktioita ohjelmastasi helpommin, kunhan se on vahvistettu.
-
Löydettävyys: Kun tarjoat varmennetun version ohjelmastasi, kaikki voivat löytää lähdekoodisi, dokumentaatiosi, ohjelma-SDK:n tai IDL:n, ja he voivat myös helposti ottaa sinuun yhteyttä GitHubin kautta, jos ongelmia ilmenee.
Miten luon varmennettuja buildeja?
Luodaksesi varmennettuja buildeja sinun on noudatettava seuraavia vaiheita:
Yhteenveto:
- Committaa koodisi julkiseen repositoryyn
- Rakenna varmennettu build dockerissa
- Ota käyttöön varmennettu build
- Varmenna käyttöönotettu ohjelma julkista API:a vastaan
Jos varmennat ohjelman, jota ei ole rakennettu docker-kontissa, se todennäköisesti epäonnistuu, koska Solana-ohjelmien buildit eivät ole deterministisiä eri järjestelmien välillä.
Asenna Docker ja Cargo
Asenna tarvittavat työkalut: varmista, että sinulla on Docker ja Cargo asennettuna. Docker tarjoaa kontrolloidun build-ympäristön johdonmukaisuuden varmistamiseksi, ja Cargoa käytetään Rust-pakettien hallintaan.
- Docker: Seuraa ohjeita Docker-verkkosivustolla asentaaksesi Dockerin alustallesi. Kun asennus on valmis, varmista että Docker-palvelu on käynnissä seuraamalla tätä ohjetta eteenpäin.
- Cargo: Jos sinulla ei ole vielä Cargoa asennettuna, voit asentaa sen suorittamalla seuraavan komennon:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Asenna Solana Verify CLI
Solana Verify CLI on ensisijainen työkalu, jota käytetään buildien varmentamiseen. Solana Verify CLI:tä ylläpitää tällä hetkellä Ellipsis Labs ja se voidaan asentaa Cargon avulla.
Voit asentaa sen suorittamalla:
cargo install solana-verify
Jos tarvitset tietyn version CLI:stä, voit kiinnittää version komennolla:
cargo install solana-verify --version $VERSION
Halutessasi voit asentaa version suoraan tietystä commitista:
cargo install solana-verify --git https://github.com/Ellipsis-Labs/solana-verifiable-build --rev 13a1db2
Valmistele projekti
Repositoriota vasten todentamiseksi sen juurihakemistossa tulee olla
Cargo.lock-tiedosto. Jos repositoriossasi on vain yksi ohjelma ja juuressa on
cargo.lock-tiedosto, voit siirtyä suoraan seuraavaan vaiheeseen ja rakentaa
ohjelmasi.
Jos ohjelmasi on alikansiossa ja sinulla on Rust-workspace, sinun tulee luoda
workspace-Cargo.toml-tiedosto repositoriosi juurihakemistoon.
Voit käyttää tätä Cargo.toml-esimerkkiä pohjana:
[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
Varmista, että ohjelmasi on workspace/members-taulukossa ja että ohjelmasi
Cargo.toml-tiedostossa on määritetty oikea lib-nimi.
Tärkeää on
lib name, ei paketin nimi!
Jotain tällaista:
[package]name = "waffle"version = "0.1.0"edition = "2021"[lib]name = "waffle"crate-type = ["cdylib", "lib"][dependencies]solana-program = "2.1.0"
Tästä repositoriosta
näet esimerkin workspacesta, jossa ohjelma on alikansiossa. Huomaa myös, että
kun ohjelma on alikansiossa, sinun tulee myöhemmin lisätä tämä kansio
--mount-path-parametrina verify-from-repo-komentoon.
Tästä repositoriosta löydät Anchor-esimerkin. Tästä repositoriosta löydät natiivi Rust -esimerkin.
Kun tämä Cargo.toml-tiedosto on paikallaan, voit suorittaa
cargo generate-lockfile-komennon luodaksesi lock-tiedoston ja jatkaa ohjelmasi
rakentamiseen.
Todennettavien ohjelmien rakentaminen
Rakentaaksesi Solana-ohjelmasi todennettavasti, siirry hakemistoon, joka
sisältää workspacesi Cargo.toml-tiedoston, ja suorita:
solana-verify build
Tämä kopioi ympäristösi docker-konttiin ja rakentaa sen deterministisellä tavalla.
Varmista, että todella julkaiset todennetun buildin äläkä vahingossa ylikirjoita sitä
anchor build- taicargo build-sbf-komennoilla, sillä nämä eivät todennäköisesti tuota samaa hashia ja todentaminen epäonnistuu.
Projekteissa, joissa on useita ohjelmia, voit rakentaa tietyn ohjelman käyttämällä kirjaston nimeä (ei paketin nimeä):
solana-verify build --library-name $PROGRAM_LIB_NAME
Tämä prosessi varmistaa deterministiset käännökset ja voi viedä jonkin aikaa, erityisesti tietyillä järjestelmillä (esim. M1 MacBook), koska se suoritetaan docker- kontissa. Nopeampia käännöksiä varten suositellaan x86-arkkitehtuuria käyttävää Linux-konetta.
Kun käännös on valmis, voit hakea suoritettavan tiedoston tiivisteen käyttämällä seuraavaa komentoa:
solana-verify get-executable-hash target/deploy/$PROGRAM_LIB_NAME.so
Todennettavien ohjelmien käyttöönotto
Kun olet rakentanut ohjelmasi ja hakenut sen tiivisteen, voit ottaa sen käyttöön Solana-verkossa. On suositeltavaa käyttää moniallekirjoitus- tai hallintoratkaisua kuten Squads Protocol turvalliseen käyttöönottoon, mutta voit myös ottaa sen suoraan käyttöön komennolla:
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
Sopivan matalan prioriteetin maksun voit pyytää rpc-palveluntarjoajaltasi, esimerkiksi Quicknode.
Varmistaaksesi, että käyttöönotettu ohjelma vastaa rakennettua suoritettavaa tiedostoa, suorita:
solana-verify get-program-hash -u $NETWORK_URL $PROGRAM_ID
Sinulla voi olla eri versioita käytössä eri Solana-klustereissa (esim. devnet, testnet, mainnet). Varmista, että käytät oikeaa verkko-URL:ää haluamallesi Solana-klusterille, jota vastaan haluat todentaa ohjelman. Etätodentaminen toimii vain mainnetissä.
Todentaminen repositorioita vastaan
Ohjelman todentamiseksi sen julkista repositoriota vastaan käytä:
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
Kun suoritat vahvistetun käännöksen ohjelmahakemistossasi, sinun on lisättävä
--mount-path-lippu käyttäessäsi komentoaverify-from-repo. Tämä on polku kansioon, joka sisältääCargo.toml-tiedoston, jossa on ohjelmasi kirjaston nimi.
Tämä komento vertaa ketjussa olevaa ohjelman tiivistettä lähdekoodista rakennettuun suoritettavaan tiivisteeseen määritetyssä commit-tiivisteessä.
Lopuksi komento kysyy, haluatko ladata vahvistustietosi ketjuun. Jos teet niin, Solana Explorer näyttää välittömästi ohjelmasi vahvistustiedot. Kunnes se on vahvistettu etäkäännöksellä, se näkyy vahvistamattomana. Opi seuraavassa vaiheessa, kuinka voit vahvistaa ohjelmasi julkista API:a vastaan.
Jos haluat lukita vahvistuksen tiettyyn julkaisuun, voit lisätä komentoon
--commit-hash -lipun.
Vahvista julkista API:a vastaan
Kun olet ladannut vahvistus-PDA:n ketjuun verify-from-repo-komennolla, lähetä
etävahvistustehtävä
OtterSec API:lle:
solana-verify remote submit-job --program-id <program-id> --uploader <address>
--uploader on osoite, joka latasi vahvistus-PDA:n – yleensä ohjelmasi
päivitysvaltuus. Jos ohjelmasi on multisigin hallinnassa, jatka tämän oppaan
multisig-vahvistus
-osioon alla.
Vanha
--remote-lippuverify-from-repo-komennossa on poistettu käytöstä. Lataa ensin PDA:si ja suorita sittenremote submit-job.
Tämä lähettää tehtävän OtterSec API:lle. Voit tarkistaa tehtävän tilan komennolla:
solana-verify remote get-job --job-id <job-id>
Kun vahvistus on suoritettu onnistuneesti – mikä voi kestää hetken – voit nähdä ohjelmasi vahvistettuna OtterSec API:ssa yksittäisille ohjelmille sekä Solana Explorerissa, SolanaFM:ssä, SolScanissa ja myöhemmin myös yhteisön ylläpitämällä sivustolla SolanaVerify.org, jota ylläpitävät 0xDeep ja OtterSec:n vahvistettujen ohjelmien API sekä lopulta Verified Programs Dune Dashboard -palvelussa, edistäen terveellisempää Solana-ekosysteemiä.
Ohjelman vahvistaminen, kun se on Multisigin, kuten Squadsin, hallinnassa
Etävahvistuksen toimimiseksi sinun on kirjoitettava vahvistusdata PDA:han, jonka ohjelman valtuus on allekirjoittanut. Jos ohjelmasi on multisigin hallinnassa, voit viedä tämän kirjoitus-PDA-transaktion ja lähettää sen Squads Protocolin tai muun valitsemasi multisig-ratkaisun kautta.
1. Rakenna vahvistettava ohjelma
Rakenna ensin ohjelma:
solana-verify build
Tämä rakentaa vahvistettavan buildin Docker-konttia käyttäen, hyödyntäen
Cargo.lock-tiedostossa määriteltyä Solana-versiota.
2. Ota ohjelma käyttöön
solana config set --url "PayedMainnetRPCAddress" // the public endpoint will be rate limited too muchsolana program deploy target/deploy/verify_squads.so
Tässä multisig-oppaassa käytämme esimerkkinä ohjelmatunnusta
6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD.
3. Sitoudu ja vahvista arkistoa vasten
Kun tämä on tehty, lähetämme projektin GitHubiin. Tässä on esimerkki: https://github.com/solana-developers/verify-squads
Valinnainen: Tarkista ensin, voitko vahvistaa paikallisesti (tämä komento
käyttää esimerkkinä ohjelmatunnusta
6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD):
solana-verify verify-from-repo https://github.com/solana-developers/verify-squads --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD
Varmista, että parametrisi ovat oikein.
4. Siirrä ohjelman hallintaoikeus multisigille
Jos et ole vielä siirtänyt ohjelmasi hallintaoikeutta multisigille, kopioi multisigin hallintaosoite. Tarvitset sitä seuraavassa vaiheessa.
5. Vie PDA-transaktio
Kun sinulla on ohjelman hallintaoikeus paikallisesti, sinua kehotetaan lataamaan
koontitiedot lohkoketjuun komennolla solana-verify verify-from-repo.
Koska et voi tehdä sitä multisigia käyttäessäsi, sinun täytyy viedä PDA-transaktio manuaalisesti ja käynnistää transaktio Squadsin kautta.
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
Tämä palauttaa sinulle base58-transaktion. Jos haluat base64-koodatun
transaktion käytettäväksi transaktion tarkastajassa, voit käyttää
--encoding base64.
P6vBfcPaaXb8fZoT3NBAYEcdtEj7tubA1k2gBxmFKZ3UWF5YyrmDMFTvLKALCJoUuRsPAjMckudYruCu3eeWQtuDrFbEMLxLFutnKXac974fnkMivcwUdY66VLjbxQT6ATmcy7F4hBtz1G4P1h6iBJLhb8WtrtgY3i4qq45MUEb7RjuMEfUFXKrNgPdGxkz5xvMHq3dxKRcpmEK5k2DkeW6SUQYBVe19Ga3B9GyhTX8k3CMt9JCEah13WyRnQd8GjoK6sTEvGJym6xDNvmd8yiJYSNcaYwEJsjHEUf4Yh6kAC7ki2KRvVAr3NVe1gjqK9McrwSQjtUatvydTG8Zovcr7PPUEMf3yPMgKXjZLB2QpkH63yTTYdNAnWFuv9E6b6nYRqye5XcNi436yKw5U14fXh65yK34bgYLi9328UT1huJELsJU9BRGnGUmb6GWp6c2WL5BhnzgNTSnt9TXFfEgUMzhvKzpVBxLP44hwqqBdyUhHFysCF37531PnmiESq8x1xou23xJ6FcQbc199754MkqQd7tX9CUznGzAEqHGkzn3VBoJnojsKtgYmiTYbdRsT1CU18MbYEE7WvGAvXyxxbpNzbAcc94HrnM6cqRGmwhEBroPfFghTdmzg9D
6. Lähetä transaktio Squadsin kautta
Siirry Squadsin transaktionrakentajaan ja tuo base58-koodattu transaktio. Varmista, että simulaatiossa transaktiossa on ainoastaan kutsu osec-vahvistusohjelmaan ja tietokonebudjettiohjelmaan, eikä mitään muuta!
7. Lähetä etävahvistustehtävä
Kun transaktio Squadsiin onnistui, voit lähettää etätehtävän:
solana-verify remote submit-job --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD--uploader <your program authority>
Siinä kaikki! Olet varmentanut ohjelmasi julkista repositoriota vasten ja lähettänyt etätyön OtterSec API:lle. Sen pitäisi nyt näkyä Solana Explorerissa ja muissa paikoissa.
8. Ohjelman päivittäminen (Valinnainen)
Kun päivität ohjelmaasi, sinun täytyy viedä uusi PDA-transaktio ja lähettää se uudelleen Squadsin kautta.
Ohjelman päivityksen suorittaminen:
solana-verify buildsolana program write-buffer target/deploy/verify_squads.so --with-compute-unit-price 50000 --max-sign-attempts 50
Siirrä sen jälkeen puskurin hallintaoikeus multisigille tai luo puskuri suoraan multisigin hallintaoikeudella.
solana program set-buffer-authority Fu3k79g53ZozAj47uq1tXrFy4QbQYh7y745DDsxjtyLR --new-buffer-authority 3JG6ULvZVCrkKtSSskKNJGe8RNZGFe8Ruev9KUhxzK5K
9. Vie ja lähetä uusi PDA-transaktio
Muista tallentaa muutoksesi GitHubiin. Vie PDA-päivitystransaktio uudelleen:
solana-verify export-pda-tx https://github.com/solana-developers/verify-squads --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD --uploader 3JG6ULvZVCrkKtSSskKNJGe8RNZGFe8Ruev9KUhxzK5K
Lähetä transaktio uudelleen Squadsin kautta.
Voit tarkastella esimerkkitransaktiota täältä.
Lähetä sen jälkeen uusi etäkäännöspyyntö:
solana-verify remote submit-job --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD --uploader 3JG6ULvZVCrkKtSSskKNJGe8RNZGFe8Ruev9KUhxzK5K
Tuloksen pitäisi näyttää suunnilleen tältä:
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
Onnittelut, olet varmentanut ohjelmasi multisig-päivityksen jälkeen!
Varmennus Docker-imagesta
Voit myös varmentaa ohjelmasi Docker-imagea vasten suorittamalla seuraavan komennon:
solana-verify verify-from-image -eexamples/hello_world/target/deploy/hello_world.so -iellipsislabs/hello_world_verifiable_build:latest -p2ZrriTQSVekoj414Ynysd48jyn4AX6ZF4TTJRqHfbJfn
Tämä komento lataa osoitteessa
ellipsislabs/hello_world_verifiable_build:latest tallennetun imagen ja
varmentaa, että kontin suoritettavan tiedoston polun hajautusarvo on sama kuin
komennolle annetun ketjussa olevan ohjelman hajautusarvo. Koska käännös on jo
ladattu imageen, koko suoritettavan tiedoston uudelleenkääntäminen ei ole
tarpeen, mikä voi muuten viedä paljon aikaa.
Dockerfile, joka luo imagen ellipsislabs/hello_world_verifiable_build:latest,
löytyy Ellipsis Labsin repositoriosta
/examples/hello_world.
Alla on odotettu tulos:
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 ✅
Esimerkki varmennetusta buildista
Tässä on esimerkki esimerkkiohjelman varmentamisesta tunnuksella
FWEYpBAf9WsemQiNbAewhyESfR38GBBHLrCaU3MpEKWv käyttämällä lähdekoodia tästä
repositoriosta:
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
Oletusarvoisesti verify-from-repo-komento käyttää main-haaran viimeistä
committia. Voit myös määrittää tietyn commitin, jos haluat jatkaa työskentelyä
repositoriossa käyttämällä commit-hash-parametria:
--commit-hash 5b82b86f02afbde330dff3e1847bed2d42069f4e
Kun sinulta kysytään, vastaa kyllä ladataksesi varmennus-PDA:n ketjuun. Lähetä sen jälkeen etävarmennus-työ OtterSec API:lle:
solana-verify remote submit-job --program-id FWEYpBAf9WsemQiNbAewhyESfR38GBBHLrCaU3MpEKWv --uploader <your-upgrade-authority>
Suosittuja ohjelmia, jotka on jo varmennettu
Phoenix
solana-verify verify-from-repo -um --program-id PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY https://github.com/Ellipsis-Labs/phoenix-v1
Lopullinen tulos:
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
Huomaa, että meidän piti määrittää
library-name, koska Squads-repositorio sisältää useita ohjelmia. Käytämme--bpf-lippua, koskasquads_mploli aiemmin varmennettu Anchor-työkalulla.
Lopullinen tulos:
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
Lopullinen tulos:
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
Lopullinen tulos:
Executable Program Hash from repo: 890d68f48f96991016222b1fcbc2cc81b8ef2dcbf280c44fe378c523c108fad5Onchain Program Hash: 890d68f48f96991016222b1fcbc2cc81b8ef2dcbf280c44fe378c523c108fad5Program hash matches ✅
Usein kysytyt kysymykset
Vahvistukseni epäonnistuu. Mitä minun pitäisi tehdä?
Tarkista nämä yleiset ongelmat:
- Väärä allekirjoittaja: Varmista, että allekirjoittajasi on ohjelman
päivitysvaltuus ajamalla
solana program show YourProgramId - Ei ketjussa olevaa PDA:ta: Suorita
solana-verify verify-from-repo -umja valitse KYLLÄ pyydettäessä. Ilman PDA:n lataamista API ei pysty hakemaan vahvistusmetatietojasi. - PDA-tietojen ristiriita: Päivitä PDA:si, jos olet ottanut ohjelmasi uudelleen käyttöön. PDA-tietojesi on vastattava käyttöön ottamaasi ohjelmaa.
- Virheellinen commit-tiiviste: Luo PDA:si käyttämällä täsmälleen sitä commit-tiivistettä, jonka olet ottanut käyttöön
- Koontaympäristön erot: Käytä Dockeria solana-verifyn kanssa, kun luot PDA:ta
Paikallinen koontitiivisteeni ei täsmää ketjussa olevan tiivisteen kanssa. Miksi?
Tämä tarkoittaa yleensä:
- Käytät eri Rust/Solana-työkaluketjuversioita
- Riippuvuutesi päivitettiin koontikertojen välillä
- Et rakentanut Docker-säiliössä
- Haoit väärän commitin
Korjaa tämä rakentamalla solana-verify build Dockerissa käyttäen täsmälleen
sitä committia, jonka otit käyttöön.
Kuinka kauan vahvistukseni kestää?
Odota näitä aikatauluja ohjelmasi koon mukaan:
- Yksinkertaiset ohjelmat: 1–5 minuuttia
- Monimutkaiset ohjelmat: 5–15 minuuttia
- Erittäin suuret ohjelmat: Enintään 30 minuuttia
Seuraa edistymistäsi työn tila -päätepisteellä.
Ohjelmani on muuttumaton (ei päivitysvaltuutta). Kuinka voin vahvistaa sen?
Jos ohjelmallasi ei ole päivitysvaltuutta tai se tehtiin muuttumattomaksi ennen kuin pystyit luomaan PDA:n, meillä on tätä tilannetta varten sallittujen listalla oleva osoite. Ota meihin yhteyttä osoitteessa contact@osec.io, niin autamme sinua saamaan ohjelmasi vahvistetuksi.
Mikä on PDA ja miksi sillä on merkitystä?
PDA-tilisi (Program Derived Account) mahdollistaa luottamuksettoman todentamisen:
- Ketjutallennus: Tallenna todentamismetatietosi (repo-URL,
commit-hajautusarvo, koontiversioparametrit) ketjulle PDA-tiliin, jonka
omistaa Otter Verify -ohjelma (
verifycLy8mB96wd9wqq3WDXQwM4oU6r42Th37Db9fC) - Kryptografinen linkki: PDA-tilisi johdetaan ohjelmaosoitteestasi, luoden muuttumattoman yhteyden todentamistietoihisi
- Hajautettu luottamus: Kuka tahansa voi lukea PDA-tilisi ja todentaa ohjelmasi itsenäisesti
Miksi minun täytyy luoda PDA ennen API:n käyttöä?
API toimii vain ketjulla olevien PDA-tilien kanssa, koska:
- Luottamukseton: API hylkää mielivaltaisen datan – se käyttää vain sitä, mitä päivitysvaltuutesi on tallentanut ketjulle
- Yksinkertaisempi: Anna vain allekirjoittaja ja program_id; API hakee kaiken muun PDA-tililtäsi
- Väärentämissuojattu: PDA-tilisi luo muuttumattoman tietueen, jonka kuka tahansa voi todentaa itsenäisesti
- Omistajuustodistus: Allekirjoittajasi täytyy olla päivitysvaltuus, kryptografisesti todistaa, että hallitset ohjelmaa
Kuinka usein minun tulisi todentaa ohjelmani?
Todenna ohjelmasi:
- Jokaisen käyttöönoton tai päivityksen jälkeen
- Kun päivität lähderepositoriosi
- Älä huolehdi uudelleentodentamisesta muulloin – API todentaa automaattisesti kaikki ohjelmat uudelleen 24 tunnin välein
Mitä tapahtuu, kun päivitän ohjelmani?
Noudata näitä vaiheita päivityksen jälkeen:
- API havaitsee päivityksesi ja poistaa ohjelmasi todennuksen.
- Päivitä PDA-tilisi uusilla todentamismetatiedoilla:
solana-verify verify-from-repo -um \--program-id YourProgramId... \https://github.com/your-org/your-program
- Lähetä uusi todentamispyyntö käyttämällä päivitysvaltuuttasi
- API todentaa uuden versiosi päivitettyä PDA-tiliä vasten
Tärkeää: Päivitä aina PDA-tilisi päivitysvaltuudellasi käyttäen uuden päivitetyn ohjelman commit-hajautusarvoa.
Voiko vahvistustuloksiin luottaa?
Kyllä – järjestelmä on suunniteltu luottamuksettomaksi ja itsenäisesti todennettavaksi:
Mikä tekee siitä luotettavan:
- Ketjussa oleva PDA: Vahvistusmetadatasi on tallennettu ketjuun, eikä mikään keskusviranomainen hallitse sitä
- Päivitysvaltuuden todiste: Vain ohjelmasi päivitysvaltuus voi luoda/päivittää PDA:n
- Itsenäinen todentaminen: Kuka tahansa voi todentaa lukemalla PDA:si ja
ajamalla
solana-verifypaikallisesti - Jatkuva uudelleentodentaminen: API todentaa kaikki ohjelmat automaattisesti uudelleen 24 tunnin välein
Huomioi nämä rajoitukset:
- Vahvistus varmistaa, että lähdekoodi vastaa käyttöönottoa – EI sitä, että koodisi on turvallinen
- Tarkista koodi aina ennen ohjelmien kanssa vuorovaikuttamista
- Vahvistettu ≠ auditoitu tai turvallinen
- Tarkista PDA:n repositorio ja commit varmistaaksesi, että se on luotetusta lähteestä
Miten voin itsenäisesti todentaa ohjelman?
Todenna mikä tahansa ohjelma itse lukemalla sen ketjussa oleva PDA ja ajamalla todentaminen paikallisesti:
Vaihe 1: Lue ketjussa oleva PDA
# Install solana-verify if you haven'tcargo install solana-verify# Get the PDA datasolana-verify list-program-pdas --program-id YourProgramId...
Vaihe 2: Todenna paikallisesti
# 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
Tämä todistaa:
- PDA:n metadata on aito (tallennettu ketjuun)
- PDA:n repositorion lähdekoodi vastaa käyttöönotettua ohjelmaa
- Sinun ei tarvitse luottaa API:in – voit todentaa kaiken itse ketjussa
Voiko joku muu todentaa ohjelmani ilman lupaa?
Kyllä, ja juuri siksi vaadimme allekirjoittajan olevan päivitysvaltuus. Pidämme vahvistusta pätevänä vain, jos allekirjoittaja on päivitysvaltuus.
Mitä tarvitsen todennettavien buildien luomiseen?
Asenna nämä työkalut:
- Docker (deterministisia buildeja varten)
- Cargo (Rustin paketinhallinta)
- Solana Verify CLI:
cargo install solana-verify - Julkinen Git-repositorio lähdekoodillesi
Voinko vahvistaa yksityisiä repositorioita?
Ei – vahvistus edellyttää julkista lähdekoodia:
- PDA:si tallentaa julkisen repositorion URL-osoitteen, johon kaikilla on pääsy
- Luottamukseton vahvistus riippuu julkisesta koodin saatavuudesta
- Käyttäjien on luettava lähdekoodisi ymmärtääkseen, mitä ohjelmasi tekee
- Koko tarkoituksena on antaa käyttäjien itsenäisesti varmistaa, että lähdekoodi vastaa käyttöönotettua versiota
Yksityiset repositoriot rikkovat vahvistusjärjestelmän keskeisen luottamusmallin.
Kuinka vahvistan Squads Multisig -ohjelman?
Noudata näitä vaiheita multisig-hallittujen ohjelmien osalta:
# 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...
Tärkeää: Vahvista aina paikallisesti (vaihe 2) varmistaaksesi, että build-hajautusarvo täsmää ennen PDA-transaktion vientiä.
Yhteenveto
Käyttämällä vahvistettuja buildeja Solanassa varmistat ohjelmiesi eheyden ja luotettavuuden verkossa sekä mahdollistat kehittäjille SDK:idesi löytämisen suoraan Solana Explorerista. Hyödyntämällä työkaluja kuten Solana Verify CLI ja Docker, voit ylläpitää todennettavia ja turvallisia buildeja, jotka vastaavat lähdekoodiasi. Käytä aina tarvittavia varotoimia yhtenäisten ympäristöjen varmistamiseksi, ja harkitse hallintaratkaisuja turvallisia päivityksiä ja käyttöönottoja varten.
Tietoturva ja vastuuvapauslauseke
Vaikka vahvistetut buildit ovat tehokas työkalu Solana-ohjelmiesi eheyden varmistamiseen, ne eivät ole täysin luottamuksettomia oletusasetuksissa. Docker-kuvat rakennetaan ja isännöidään Solana Foundationin toimesta.
Huomaa, että rakennat projektisi ladatussa Docker-kuvassa ja koko asetuksesi kopioidaan kyseiseen Docker-kuvaan rakentamista varten, mukaan lukien mahdollisesti arkaluonteiset tiedot.
Jos haluat täysin luottamuksettoman asetuksen, voit rakentaa Docker-kuvat itse ja isännöidä niitä omassa infrastruktuurissasi. Näin voit varmistua, että Docker-kuvia ei ole muutettu. Löydät skriptit omien Docker-kuvien luomiseen Verified builds -repositoriosta, josta voit haarauttaa sen ja ajaa GitHub Actions -toiminnot itse tai vahvistaa, että ne ovat oikein.
Lisäksi etävarennuksessa luotat OtterSec API:hin ja Solana Exploreriin jossain määrin.
API tai Solana Explorer saattaa näyttää virheellistä tietoa, jos se on vaarantunut.
Jos haluat täysin luottamuksettoman ympäristön, voit ajaa
Verify API:n itse
tai suorittaa ohjelman varennuksen paikallisesti käyttämällä verify-from-repo
-komentoa, joka hyödyntää ketjussa tallennettua varennusdataa
PDA:ssa,
joka on johdettu ohjelman käyttöönottovaltuudesta ja
verify-ohjelmasta.
Verify-ohjelma on OtterSec-tiimin käyttöönotettama, eikä sitä ole vielä jäädytetty, joten sitä voidaan päivittää milloin tahansa.
Solana Foundation, OtterSec ja Ellipsis Labs -tiimi eivät ole vastuussa mistään vahingoista tai menetyksistä, joita voi aiheutua varennettuja build-putkia käytettäessä.
Security.txt Solana-ohjelmille
Varennetttujen buildien lisäksi voit myös lisätä security.txt -tiedoston
ohjelmaasi. Tulevaisuudessa, kun se on toteutettu, security.txt sisältää
varmentajan julkisen avaimen, jotta varennusdataan pääsee helposti käsiksi
varennusPDA:sta. PDA, joka sisältää kaikki tarvittavat tiedot ohjelman
buildaamiseen ja varennukseen, johdetaan ohjelman osoitteesta ja varmentajan
pubkey:stä. Oletuksena tämä on sama pubkey, jolla ohjelma on builtattu ja otettu
käyttöön. Se voi kuitenkin olla myös toinen pubkey, joka voidaan määrittää
security.txt -tiedostossa.
security.txt -ominaisuus antaa kehittäjille mahdollisuuden upottaa
yhteystieto- ja turvallisuustiedot suoraan Solana-älykkäisiin sopimuksiinsa.
Inspiraationaan securitytxt.org, tämä lähestymistapa
tarjoaa standardoidun tavan turvallisuustutkijoille ottaa yhteyttä projektin
ylläpitäjiin, vaikka he tietäisivät vain sopimuksen osoitteen.
Miksi käyttää security.txt:ää?
Monissa projekteissa, erityisesti pienemmissä tai yksityisissä, kehittäjien
tunnistaminen pelkän sopimusosoitteen perusteella voi olla vaikeaa ja aikaa
vievää. Liittämällä security.txt -tiedosto ohjelmaan varmistetaan, että
tietoturvatutkijat voivat helposti ottaa yhteyttä oikeisiin henkilöihin, mikä
voi ehkäistä hyökkäyksiä ja varmistaa virheilmoitusten oikea-aikaisen
käsittelyn.
Kuinka toteuttaa security.txt
Lisätäksesi security.txt Solana-ohjelmaasi, noudata seuraavia vaiheita:
Lisää solana-security-txt -riippuvuus Cargo.toml -tiedostoosi:
[dependencies]solana-security-txt = "1.1.1"
Käytä security_txt! -makroa sopimuksessasi määritelläksesi tietoturvatietosi.
Voit sisällyttää yhteystiedot, projektin URL-osoitteet ja jopa
tietoturvakäytännön. Tässä on esimerkki:
#[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!"}
Kun security.txt -tiedot on upotettu ohjelmaasi, niitä voidaan helposti hakea
esimerkiksi Solana Explorerin kaltaisilla työkaluilla, jolloin yhteystietosi ja
tietoturvatietosi ovat kaikkien saatavilla mahdollisten ongelmien ilmoittamista
varten.
Parhaat käytännöt
-
Käytä linkkejä: Tietojen osalta, jotka todennäköisesti muuttuvat (esim. yhteystiedot), on suositeltavaa linkittää verkkosivulle sen sijaan, että ne kovakoodataan sopimukseen. Tämä välttää tarpeen päivittää ohjelmaa usein.
-
Varmennus: Ennen käyttöönottoa tarkista muoto ja sisältö käyttämällä
query-security-txt-työkalua, joka pystyy validoimaan sekä ketjussa olevat ohjelmat että paikalliset binäärit:
query-security-txt target/bpfel-unknown-unknown/release/my_contract.so
Upottamalla tietoturvayhteystiedot suoraan sopimukseesi helpottaa tutkijoiden yhteydenottoa sinuun, edistäen parempaa tietoturvaa ja viestintää Solana-ekosysteemissä.
Tämä on esimerkki siitä, miltä security.txt näyttää Solana Explorerissa
security.txt -projektia ylläpitää
Neodyme Labs
Voit tarkistaa varmennetun tilan ja selata varmennetuja ohjelmia osoitteessa verify.osec.io.
Is this page helpful?