Solana-dokumentaatioOhjelmien kehittäminen

Ohjelmien varmentaminen

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

Jotta voit varmentaa ohjelman repositoriota vasten, siinä täytyy olla Cargo.lock tiedosto repositorion juurihakemistossa. Jos sinulla on vain yksi ohjelma repositoriossasi ja cargo.lock tiedosto juuressa, voit siirtyä suoraan seuraavaan vaiheeseen ja rakentaa ohjelmasi.

Jos ohjelmasi on alikansiossa ja käytät Rust-työtilaa, sinun täytyy luoda työtilan Cargo.toml tiedosto repositoriosi juurihakemistoon.

Voit käyttää tätä Cargo.toml esimerkkiä pohjana:

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

Varmista, että ohjelmasi on workspace/members taulukossa ja että ohjelmasi Cargo.toml tiedostossa on määritetty oikea lib nimi.

Tärkeää on lib name eikä paketin nimi!

Jotain tällaista:

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"

Tässä repositoriossa näet esimerkin työtilasta, jossa ohjelma on alikansiossa. Huomaa myös, että kun ohjelma on alikansiossa, sinun täytyy 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 ajaa cargo generate-lockfile luodaksesi lukitustiedoston ja jatkaa ohjelmasi rakentamiseen.

Todennettavien ohjelmien rakentaminen

Rakentaaksesi todennettavasti Solana-ohjelmasi, siirry hakemistoon, joka sisältää työtilasi Cargo.toml tiedoston ja suorita:

solana-verify build

Tämä kopioi ympäristösi docker-konttiin ja rakentaa sen deterministisellä tavalla.

Varmista, että todella otat käyttöön varmennetun version äläkä vahingossa korvaa sitä anchor build tai cargo build-sbf komennoilla, sillä nämä eivät todennäköisesti tuota samaa tiivistettä, jolloin varmennuksesi 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 todennettua käännöstä ohjelmakansiossasi, suorittaessasi verify-from-repo sinun täytyy lisätä --mount-path -lippu. Tämä on polku kansioon, joka sisältää Cargo.toml -tiedoston, joka sisältää ohjelmasi kirjaston nimen.

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ä komennon perään lipun --commit-hash.

Vahvista julkista API:a vastaan

Lopuksi voit myös suoraan vahvistaa ohjelman ketä tahansa vastaan, joka käyttää vahvistus-API:a:

solana-verify verify-from-repo --remote -um --program-id PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY https://github.com/Ellipsis-Labs/phoenix-v1

On suositeltavaa käyttää maksullista RPC-osoitetta, koska muuten saatat törmätä ilmaisten RPC:iden rajoituksiin. Joten -um sijaan sinun kannattaa käyttää --url yourRpcUrl luotettavampaa vahvistusta varten.

Lippu --remote lähettää rakennuspyynnön OtterSec API:lle, joka käynnistää ohjelmasi etäkäännöksen. Kun käännös on valmis, järjestelmä vahvistaa, että ohjelmasi ketjussa oleva tiiviste vastaa tietovarastostasi luodun käännöstuotteen tiivistettä.

Oletusarvoisesti käytetään OtterSec API:a.

Varmista, että valitset kyllä, kun sinulta kysytään vahvistustietojen lataamisesta ketjuun. Tätä käytetään API:ssa vahvistamaan, että olet ladannut vahvistustiedot.

Voit myös käynnistää etätyön manuaalisesti käyttämällä:

solana-verify remote submit-job --program-id <program-id> --uploader <address>

Jossa lataaja on osoite, jolla on oikeus kirjoittaa PDA:han. Tämän tulisi useimmissa tapauksissa olla ohjelman valtuutus. Jos ohjelmaasi hallinnoi moniallekirjoitus, jatka moniallekirjoituksen vahvistus -osioon tämän oppaan alapuolella.

Tämä lähettää työn OtterSec API:lle, ja voit sitten tarkistaa työn tilan komennolla:

solana-verify remote get-job-status --job-id <job-id>

Kun vahvistus on suoritettu onnistuneesti, mikä saattaa kestää jonkin aikaa, ohjelmasi näkyy vahvistettuna OtterSec API:ssa yksittäisille ohjelmille ja Solana Explorerissa, SolanaFM:ssä, SolScanissa ja lopulta myös yhteisön ylläpitämällä verkkosivustolla SolanaVerify.org, jota ylläpitää 0xDeep sekä OtterSec vahvistettujen ohjelmien API:ssa ja viimeisenä Vahvistettujen ohjelmien Dune-kojelaudassa, mikä edistää terveempää Solana-ekosysteemiä.

Miten vahvistat ohjelmasi, kun sitä hallinnoi moniallekirjoitus kuten Squads

Jotta etävahvistus toimisi, sinun täytyy kirjoittaa vahvistustiedot PDA:han, jonka ohjelman valtuutus on allekirjoittanut. Jos ohjelmaasi hallinnoi moniallekirjoitus, voit viedä tämän kirjoitus-PDA-transaktion ja lähettää sen Squads Protocolin tai muun valitsemasi moniallekirjoitusratkaisun kautta.

1. Rakenna vahvistettava ohjelma

Rakenna ensin ohjelma:

solana-verify build

Tämä rakentaa vahvistettavan version käyttäen docker-konttia ja Solana-versiota, joka on määritetty Cargo.lock tiedostossa.

2. Ota ohjelma käyttöön

solana config set --url "PayedMainnetRPCAddress" // the public endpoint will be rate limited too much
solana program deploy target/deploy/verify_squads.so

Tässä moniallekirjoitusoppaassa käytämme esimerkkinä ohjelmatunnusta 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD.

3. Tee commit ja varmenna repositoriota vastaan

Kun se on tehty, commitoimme projektin githubiin. Tässä on esimerkki: https://github.com/solana-developers/verify-squads

Valinnainen: Katso, voitko varmentaa ensin paikallisesti (tämä komento käyttää esimerkkiohjelman ID:tä 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD):

solana-verify verify-from-repo https://github.com/solana-developers/verify-squads --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD

Vain varmistaaksesi, että parametrisi ovat oikein.

4. Siirrä ohjelman valtuudet multisigille

Jos et ole vielä siirtänyt ohjelmasi valtuuksia multisigille ja kopioinut multisigin valtuuksia. Tarvitset niitä seuraavassa vaiheessa.

5. Vie PDA-transaktio

Kun sinulla on ohjelman valtuudet paikallisesti, sinua kehotetaan lataamaan build- tiedot lohkoketjuun käyttäessäsi komentoa solana-verify verify-from-repo.

Koska et voi tehdä sitä käyttäessäsi multisigiä, sinun täytyy viedä PDA-transaktio manuaalisesti ja sitten 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 transaktiotarkastimessa, voit käyttää --encoding base64.

P6vBfcPaaXb8fZoT3NBAYEcdtEj7tubA1k2gBxmFKZ3UWF5YyrmDMFTvLKALCJoUuRsPAjMckudYruCu3eeWQtuDrFbEMLxLFutnKXac974fnkMivcwUdY66VLjbxQT6ATmcy7F4hBtz1G4P1h6iBJLhb8WtrtgY3i4qq45MUEb7RjuMEfUFXKrNgPdGxkz5xvMHq3dxKRcpmEK5k2DkeW6SUQYBVe19Ga3B9GyhTX8k3CMt9JCEah13WyRnQd8GjoK6sTEvGJym6xDNvmd8yiJYSNcaYwEJsjHEUf4Yh6kAC7ki2KRvVAr3NVe1gjqK9McrwSQjtUatvydTG8Zovcr7PPUEMf3yPMgKXjZLB2QpkH63yTTYdNAnWFuv9E6b6nYRqye5XcNi436yKw5U14fXh65yK34bgYLi9328UT1huJELsJU9BRGnGUmb6GWp6c2WL5BhnzgNTSnt9TXFfEgUMzhvKzpVBxLP44hwqqBdyUhHFysCF37531PnmiESq8x1xou23xJ6FcQbc199754MkqQd7tX9CUznGzAEqHGkzn3VBoJnojsKtgYmiTYbdRsT1CU18MbYEE7WvGAvXyxxbpNzbAcc94HrnM6cqRGmwhEBroPfFghTdmzg9D

6. Lähetä transaktio Squadsin kautta

Mene Squadsin transaktiorakentajaan ja tuo base58-koodattu transaktio. Varmista, että simulaatiossa transaktio sisältää vain kutsun osec verify -ohjelmaan ja computer budget -ohjelmaan eikä mitään muuta!

7. Lähetä etävarmennus-työ

Kun transaktio Squadsiin onnistui, voit lähettää etätyön:

solana-verify remote submit-job --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD
--uploader <your program authority>

Siinä se! Olet varmentanut ohjelmasi julkista repositoriota vastaan ja lähettänyt etätyön OtterSec API:lle. Sinun pitäisi nyt nähdä se Solana explorerissa ja muissa paikoissa.

8. Ohjelman päivittäminen (Valinnainen)

Kun päivität ohjelmasi, sinun täytyy viedä uusi PDA-transaktio ja lähettää se uudelleen Squadsin kautta.

Ohjelman päivittäminen:

solana-verify build
solana program write-buffer target/deploy/verify_squads.so --with-compute-unit-price 50000 --max-sign-attempts 50

Siirrä sitten 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 nähdä esimerkkitransaktion täällä.

Lähetä sitten etäkäännöstä varten:

solana-verify remote submit-job --program-id 6XBGfP17P3KQAKoJb2s5M5fR4aFTXzPeuC1af2GYkvhD --uploader 3JG6ULvZVCrkKtSSskKNJGe8RNZGFe8Ruev9KUhxzK5K

Tuloksen pitäisi näyttää tältä:

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 on-chain 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

Onnittelut, olet varmistanut ohjelmasi multisig-päivityksen jälkeen!

Varmistaminen docker-imagesta

Voit myös varmistaa ohjelmasi docker-imagea vastaan suorittamalla seuraavan komennon:

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

Tämä komento lataa osoitteessa ellipsislabs/hello_world_verifiable_build:latest tallennetun imagen ja varmistaa, että kontainerissa olevan suoritettavan tiedoston polun tiiviste on sama kuin komennolle annetun lohkoketjussa olevan ohjelman tiiviste. Koska build on jo ladattu imageen, ei tarvita täyttä suoritettavan tiedoston uudelleenkäännöstä, mikä voi viedä paljon aikaa.

Dockerfile, joka luo imagen ellipsislabs/hello_world_verifiable_build:latest, löytyy Ellipsis Labsin repositoriosta /examples/hello_world.

Alla on odotettu tuloste:

Verifying image: "ellipsislabs/hello_world_verifiable_build:latest", on network
"https://api.mainnet-beta.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 on-chain program data ✅

Esimerkki verifioidusta buildista

Tässä on esimerkki esimerkkiohjelman verifioinnista, jonka tunnus on FWEYpBAf9WsemQiNbAewhyESfR38GBBHLrCaU3MpEKWv käyttäen lähdekoodia tästä repositorysta:

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

Oletuksena verify-from-repo komento käyttää viimeisintä commitia main haarassa. Voit myös määrittää tietyn commitin, jos haluat jatkaa työskentelyä repositoryssa käyttämällä commit-hash parametria: --commit-hash 5b82b86f02afbde330dff3e1847bed2d42069f4e

Lopuksi voit myös suoraan verifioida ohjelman OtterSec API:a vastaan:

solana-verify verify-from-repo https://github.com/solana-developers/verified-program --url YOUR-RPC-URL --remote --program-id FWEYpBAf9WsemQiNbAewhyESfR38GBBHLrCaU3MpEKWv --mount-path waffle --library-name waffle --commit-hash 5b82b86f02afbde330dff3e1847bed2d42069f4e

--remote komento lähettää build-pyynnön OtterSec API:lle, joka käynnistää ohjelmasi etäbuildin. Kun build on valmis, järjestelmä varmistaa, että ohjelmasi ketjussa oleva hash vastaa repositorystasi generoidun build- artifaktin hashia.

Suosittuja ohjelmia, jotka on jo verifioitu

Phoenix

solana-verify verify-from-repo -um --program-id PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY https://github.com/Ellipsis-Labs/phoenix-v1

Lopputulos:

Executable Program Hash from repo: 6877a5b732b3494b828a324ec846d526d962223959534dbaf4209e0da3b2d6a9
On-chain 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

Huomaa, että meidän piti määrittää library-name, koska Squads-repo sisältää useita ohjelmia. Käytämme --bpf lippua, koska squads_mpl oli aiemmin verifioitu Anchorilla.

Lopputulos:

Executable Program Hash from repo: 72da599d9ee14b2a03a23ccfa6f06d53eea4a00825ad2191929cbd78fb69205c
On-chain 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

Lopputulos:

Executable Program Hash from repo: e31d58edeabc3c30bf6f2aa60bfaa5e492b41ec203e9006404b463e5adee5828
On-chain 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

Lopputulos:

Executable Program Hash from repo: 890d68f48f96991016222b1fcbc2cc81b8ef2dcbf280c44fe378c523c108fad5
On-chain Program Hash: 890d68f48f96991016222b1fcbc2cc81b8ef2dcbf280c44fe378c523c108fad5
Program hash matches ✅

Yhteenveto

Varmennettujen buildien käyttö Solanassa varmistaa ohjelmien eheyden ja luotettavuuden verkossa ja mahdollistaa kehittäjille SDK:iden 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. Muista aina ottaa tarvittavat varotoimet käyttääksesi johdonmukaisia ympäristöjä ja harkitse hallintoratkaisuja turvallisia päivityksiä ja käyttöönottoja varten.

Turvallisuus + Vastuuvapauslauseke

Vaikka varmennetut buildit ovat tehokas työkalu Solana-ohjelmien eheyden varmistamiseen, ne eivät ole täysin luottamuksettomia oletusasetuksilla. Docker-kuvat rakentaa ja ylläpitää Solana Foundation.

Huomioi, että rakennat projektisi ladatussa docker-kuvassa ja koko asetuksesi kopioidaan kyseiseen docker-kuvaan rakentamista varten, mukaan lukien mahdollisesti arkaluontoisia tietoja.

Jos haluat täysin luottamuksettoman asetuksen, voit rakentaa docker-kuvat itse ja ylläpitää niitä omassa infrastruktuurissasi. Näin voit varmistaa, että docker-kuvia ei ole peukaloitu. Löydät skriptit omien docker-kuvien luomiseen Verified builds -repositoriosta ja voit forkata sen ja ajaa github-toiminnot itse tai vahvistaa, että ne ovat oikein.

Lisäksi etävarmennuksessa luotat OtterSec API:in ja Solana Exploreriin tiettyyn pisteeseen asti.

API tai Solana Explorer saattaa mahdollisesti näyttää virheellistä tietoa, jos ne on vaarannettu.

Jos haluat täysin luottamuksettoman asetuksen, voit ajaa Verify API:n itse tai suorittaa ohjelman varmennuksen paikallisesti käyttäen verify-from-repo -komentoa käyttäen lohkoketjussa olevaa varmennusdataa, joka on tallennettu PDA:han, joka johdetaan ohjelmien käyttöönottoviranomaisesta ja verify-ohjelmasta.

Verify-ohjelman on ottanut käyttöön OtterSec-tiimi, 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 menetyksistä tai vahingoista, joita saattaa aiheutua varmennettujen koontiversioiden prosessin käytöstä.

Security.txt Solana-ohjelmille

Varmennettujen koontiversioiden lisäksi voit myös lisätä security.txt -tiedoston ohjelmaasi. Tulevaisuudessa, kun toiminto on toteutettu, security.txt sisältää varmentajan julkisen avaimen, jolla pääsee helposti käsiksi varmennustietoihin, jotka on tallennettu varmennuksen PDA:han. PDA, joka sisältää kaikki tarvittavat tiedot ohjelman rakentamiseen ja varmentamiseen, johdetaan ohjelman osoitteesta ja varmentajan pubkey-avaimesta. Oletusarvoisesti tämä on sama pubkey, joka rakensi ja otti ohjelman käyttöön. Mutta se voi olla myös toinen pubkey, joka voidaan määrittää security.txt -tiedostossa.

security.txt -ominaisuus mahdollistaa kehittäjille yhteystieto- ja turvallisuustietojen upottamisen suoraan Solana-älysopimuksiinsa. Securitytxt.org-sivuston innoittamana tämä lähestymistapa tarjoaa standardoidun tavan tietoturvatutkijoille ottaa yhteyttä projektin ylläpitäjiin, vaikka he tietäisivät vain sopimuksen osoitteen.

Miksi käyttää security.txt-tiedostoa?

Monien projektien, erityisesti pienempien tai yksityisten, kehittäjien tunnistaminen pelkän sopimusosoitteen perusteella voi olla vaikeaa ja aikaa vievää. security.txt -tiedoston upottaminen ohjelmaan varmistaa, että tietoturvatutkijat voivat helposti ottaa yhteyttä oikeisiin henkilöihin, mikä mahdollisesti estää hyväksikäyttöjä ja varmistaa oikea-aikaiset virheraportit.

Miten toteuttaa security.txt

Lisätäksesi security.txt -tiedoston Solana-ohjelmaasi, sisällytä seuraavat vaiheet:

Lisää solana-security-txt -riippuvuus Cargo.toml -tiedostoosi:

Cargo.toml
[dependencies]
solana-security-txt = "1.1.1"

Käytä security_txt! -makroa sopimuksessasi määrittääksesi turvallisuustietosi. Voit sisällyttää yhteystietoja, projektin URL-osoitteita ja jopa tietoturvakäytännön. Tässä 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 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!"
}

Kun security.txt -tiedot on upotettu ohjelmaasi, niitä voidaan helposti kysellä työkaluilla kuten Solana Explorer, varmistaen että yhteystietosi ja turvallisuustietosi ovat saatavilla kaikille, jotka haluavat ilmoittaa mahdollisista ongelmista.

Parhaat käytännöt

  • Käytä linkkejä: Tiedoille, jotka todennäköisesti muuttuvat (esim. yhteystiedot), on suositeltavaa linkittää verkkosivulle sen sijaan, että ne koodattaisiin suoraan sopimukseen. Tämä välttää tarpeen päivittää ohjelmaa usein.

  • Vahvistaminen: Ennen käyttöönottoa, tarkista muoto ja sisältö käyttämällä query-security-txt -työkalua, joka voi validoida sekä lohkoketjussa olevat ohjelmat että paikalliset binääritiedostot:

query-security-txt target/bpfel-unknown-unknown/release/my_contract.so

Upottamalla turvallisuusyhteystiedot suoraan sopimukseesi, teet tutkijoille helpommaksi ottaa sinuun yhteyttä, mikä edistää parempaa turvallisuutta ja viestintää Solana-ekosysteemissä.

Tämä on esimerkki siitä, miltä security.txt näyttää Solana Explorerissa

security.txt -projektia ylläpitää Neodyme Labs

Is this page helpful?