Tilbage i 2016 blev Bitcoin-udviklingen en model for hele open source-samfundet med integrationen af Gitian-bygningen – en “computer inden for en computer” -ramme, der lader udviklere kontrollere binære computerfiler på en mere gennemsigtig måde. Men med nylig sammenlægning af Guix, som understøtter deterministisk og bootstrappable Bitcoin Core builds, er arbejdet med protokollen blevet endnu mere tillidsfuld.
Selvom den involverede proces er ret sofistikeret og for det meste vedrører udviklere, involverer de to spørgsmål, der står på spil, tillid og sprog – komponenter af Bitcoin, der betyder noget for os alle. Som ethvert nedbrudskurs i datalogi fortæller dig, modtager computere instruktioner i binære filer (“ener” og “nuller”), men mennesker skal skrive på et programmeringssprog, der er logisk og forståeligt for dem. Når kodningsdelen er afsluttet, skal instruktionerne kompileres til den slags sprog, som computere kan forstå. Og når udviklere har brug for at dele de resulterende binære filer, er der en vis tillid, som de skal have til hinanden (medmindre processen involverer ekstra trin til verifikation, som er tidskrævende).
Som en decentral protokol kræver Bitcoin ekstra opmærksomhed og forsigtighed. Hvis der tilfældigvis er en lille ændring fra tredjepart (som f.eks. En ondskabsfuld hacking) i binærfilerne, som udveksles mellem udviklere, kan den nye version af klienten muligvis have fejl og bivirkninger, der fører til massive tab af midler . Medmindre der etableres en ordentlig verificeringsproces, kan dette problem let blive et enkelt fejlpunkt.
Gitian og Guix
Ideen om, at alle udviklere vil køre den samme kode og sammenligne binære filer, er urealistisk, da forskelle – endda små forskelle – i variabler som systemarkitektur, operativsystemet og endda kompileringstid kan give forskellige resultater. Derfor, for at tackle dette problem, en pseudonym udvikler, der går under navnet Dev tilfældigt oprettede Gitian.
Som beskrevet af Bitcoin Magazins Aaron van Wirdum, er Gitian en “computer i en computer”, der giver et virtuelt rum, hvor binære filer kan kompileres uden variabler. Uanset hvilken enhed eller hvilket operativsystem der bruges til processen, er resultaterne garanteret at være de samme.
Proceduren er dog ikke tilstrækkelig til behovene hos Bitcoin Core-udviklere, da den er afhængig for meget af Ubuntu-operativsystemet. Denne afhængighed kan i og for sig blive et fiasko, og verificeringsprocessen kræver mere gennemsigtighed og auditabilitet.
Som ingeniør af Chaincode Labs Carl Dong fortalte Bitcoin Magazine, ”Det standardiserede miljø afhænger stærkt og noget blindt af Ubuntu. Faktisk var den måde, hvorpå vi konstruerede miljøet, ved at downloade uhørbare, uigennemsigtige binære filer (med andre ord ‘pålidelige binære filer’) fra Ubuntu og udsætte os for tredjepartsrisiko. Man kunne forestille sig, hvordan en angriber kan forgifte alle Bitcoin Core-frigivelseskørbare filer gennem en indtrængen i Ubuntus infrastruktur (eller måske bare ved at arbejde der). “
Dong er ansvarlig for introduktionen af Guix, et binært verifikationssystem, der gør udviklingen mere tillidsfuld og er indstillet til helt at erstatte Gitian.
”Guix giver os mulighed for at konstruere miljøet på en måde, hvor vi stoler på et stærkt reduceret sæt pålidelige binære filer,” sagde han. “Det meste af miljøet er konstrueret ved at bygge fra et lille binært frø, og denne byggeproces er meget mere auditiv.”
Desuden implementeres tillidsminimering (hvilken blev fusioneret til Bitcoin Core den 12. juli 2019) sigter mod at eliminere tredjepartsrisiko. Dong anser det for at være en enklere og mindre platformsspecifik tilgang til at arbejde på Bitcoin Core. I fremtiden vil Guix også give udviklere mulighed for at bygge videre på forskellige CPU-arkitekturer og producere reproducerbare eksekverbare filer over tid. Disse funktioner er vigtige for gennemsigtig og etisk udvikling, og de vil også gøre udvekslingen af binære filer hurtigere og mere effektiv.
Ganske vist har Dong hentet inspiration fra Gitianers intentioner og arkitektur. Ikke desto mindre er der ikke plads til begge dele, og Guix er indstillet til at blive en erstatning.
“Mit arbejde med at integrere Guix i Bitcoin Core tog bestemt inspiration fra Gitian, men de supplerer ikke hinanden meget,” sagde Dong. “Jeg forventer, at når krydskompileringsstøtten til OS X- og Windows-mål er færdig, bliver Gitian pensioneret.”
Guix og den gennemsnitlige Bitcoin-bruger
Hvis Guix er et værktøj, der er oprettet af udviklere og til deres egen udveksling af kompilerede binære filer, hvorfor skulle den gennemsnitlige bruger så pleje? Nå eliminerer det også tilliden til de data, der downloades til Bitcoin Core-klienten. Selvom oddsene er ret små, kan ondsindede tredjeparter som phishing-websteder muligvis gribe ind under processen og i mangel af en ordentlig verifikationsramme stjæle din bitcoin. Guix følger nøjagtigt filosofien om “ikke tillid, verificer”, der er dybt forankret i Bitcoin-kulturen.
Ifølge Dong giver “Guix brugerne mulighed for at kontrollere, at den Bitcoin Core-klient, de downloader, svarer nøjagtigt til den kode, som Bitcoin Core-udviklere skriver. Det mindsker angreb, der er målrettet mod den måde, hvorpå vi omdanner vores codebase til de klientekspørbare filer, vi frigiver. ”
På trods af det klare fokus på udviklernes behov er Guix også noget, som brugerne muligvis har brug for og vil bruge, hvis de vælger at være forsigtige med den software, de kører..
På pressetid er Guix kun tilgængelig til Ubuntu-builds. Dog estimerer Dong, at Windows- og Mac OS-versionerne vil blive frigivet “optimistisk” inden udgangen af 2019. I den ægte konservative ånd af Bitcoin er en “når den er afsluttet og grundigt testet” -klausul vedhæftet, så vi skal ikke holde vores ånde for deadlines, når den klare prioritet er robusthed.