Tillbaka 2016 blev utvecklingen av Bitcoin en modell för hela öppen källkodsgrupp med integrationen av Gitian-byggnaden – en “dator inom en dator” ram som låter utvecklare verifiera binära datorfiler på ett mer transparent sätt. Men med nyligen sammanslagning av Guix, som stöder deterministiska och bootstrappable Bitcoin Core-byggnader har arbetet med protokollet blivit ännu mer pålitligt.
Även om den inblandade processen är ganska sofistikerad och mestadels berör utvecklare, handlar de två frågorna om tillit och språk – komponenter i Bitcoin som betyder något för oss alla. Som alla kraschkurser inom datavetenskap kommer att berätta för dig, får datorer instruktioner i binärer (“enor” och “nollor”), men människor måste skriva på ett programmeringsspråk som är logiskt och begripligt för dem. När kodningsdelen är klar måste instruktionerna sammanställas till det språk som datorer kan förstå. Och när utvecklare behöver dela de resulterande binärfilerna finns det en viss tillit som de måste ha till varandra (såvida inte processen kräver extra steg för verifiering, vilket är tidskrävande).
Som ett decentraliserat protokoll kräver Bitcoin extra uppmärksamhet och försiktighet. Om det råkar vara en liten förändring från tredje part (till exempel en ondskapsfull hacking) i binärfilerna, som byts mellan utvecklare, kan den nya versionen av klienten ha fel och biverkningar som leder till massiva förluster av medel . Om inte en korrekt verifieringsprocess upprättas kan denna fråga lätt bli en enda felpunkt.
Gitian och Guix
Tanken att alla utvecklare skulle köra samma kod och jämföra binärfiler är orealistisk, eftersom skillnader – även små skillnader – i variabler som systemarkitektur, operativsystem och till och med kompileringstid kan ge olika resultat. Därför, för att ta itu med denna fråga, en pseudonym utvecklare som går under namnet Dev slumpmässigt skapade Gitian.
Som beskrivs av Bitcoin Magazine Aaron van Wirdum är Gitian en “dator i en dator” som ger ett virtuellt utrymme där binärfiler kan sammanställas utan variabler. Oavsett vilken enhet eller vilket operativsystem som används för processen garanteras resultaten alltid samma.
Förfarandet är dock inte tillräckligt för Bitcoin Core-utvecklarnas behov, eftersom det förlitar sig för mycket på Ubuntu-operativsystemet. Detta beroende i och för sig kan bli ett misslyckande, och verifieringsprocessen kräver mer öppenhet och granskbarhet.
Som Chaincode Labs-ingenjör Carl Dong sa till Bitcoin Magazine, ”Den standardiserade miljön beror starkt och något blindt på Ubuntu. I själva verket var sättet vi konstruerade miljön på genom att ladda ner icke-granskningsbara, ogenomskinliga binärer (med andra ord ‘betrodda binärer’) från Ubuntu och utsätta oss för risker från tredje part. Man kan föreställa sig hur en angripare kan förgifta alla Bitcoin Core-release-körbara filer genom ett intrång i Ubuntus infrastruktur (eller kanske helt enkelt genom att arbeta där). “
Dong ansvarar för införandet av Guix, ett binärt verifieringssystem som gör utvecklingen mer tillförlitlig och är inställd på att helt ersätta Gitian.
“Guix tillåter oss att konstruera miljön på ett sätt där vi förlitar oss på en kraftigt reducerad uppsättning betrodda binärer,” sa han. “Det mesta av miljön är konstruerad genom att bygga från ett litet binärt frö, och denna byggprocess är mycket mer granskbar.”
Dessutom implementeras förtroendeminimering (vilken slogs samman till Bitcoin Core den 12 juli 2019) syftar till att eliminera tredjepartsrisk. Dong anser att det är ett enklare och mindre plattformsspecifikt tillvägagångssätt för att arbeta med Bitcoin Core. I framtiden kommer Guix också att tillåta utvecklare att bygga på olika CPU-arkitekturer och producera reproducerbara körbara filer över tiden. Dessa funktioner är väsentliga för en transparent och etisk utveckling, och de kommer också att göra utbytet av binära filer snabbare och mer effektivt.
Visserligen har Dong hämtat inspiration från Gitianers avsikter och arkitektur. Ändå finns det inget utrymme för båda, och Guix kommer att bli ersättare.
“Mitt arbete med att integrera Guix i Bitcoin Core tog verkligen inspiration från Gitian, men de kompletterar inte varandra mycket”, sa Dong. “Jag förväntar mig att när krysssamlingsstödet för OS X- och Windows-mål är klart kommer Gitian att gå i pension.”
Guix och den genomsnittliga Bitcoin-användaren
Om Guix är ett verktyg som skapats av utvecklare och för deras eget utbyte av sammanställda binärer, varför skulle då den genomsnittliga användaren bry sig? Det eliminerar också förtroendet för de data som laddas ner för Bitcoin Core-klienten. Även om oddsen är ganska små, kan illvilliga tredje parter som nätfiskewebbplatser ingripa under processen och, i avsaknad av en ordentlig verifieringsram, stjäla din bitcoin. Guix följer exakt filosofin “lita inte på, verifiera” som är djupt rotad i Bitcoin-kulturen.
Enligt Dong, “Guix tillåter användare att verifiera att Bitcoin Core-klienten de laddar ner motsvarar exakt den kod som Bitcoin Core-utvecklare skriver. Det mildrar attacker som är inriktade på hur vi gör vår kodbas till de klientkörbara filer vi släpper. ”
Trots det tydliga fokuset på utvecklarnas behov är Guix också något som användare kan behöva och vill använda om de väljer att vara försiktiga med programvaran de kör.
Vid presstid är Guix endast tillgängligt för Ubuntu-byggnader. Dong uppskattar dock att Windows- och Mac OS-versionerna kommer att släppas “optimistiskt” i slutet av 2019. I den verkliga konservativa andan av Bitcoin bifogas en “när den är klar och noggrant testad” -klausul, så vi ska inte hålla vår andedräkt för deadlines när den tydliga prioriteten är robusthet.