早在2016年,比特幣開(kāi)發(fā)就成為了整個(gè)開(kāi)源社區(qū)的一個(gè)模式,它集成了Gitian building——一個(gè)計(jì)算機(jī)中的計(jì)算機(jī)框架。它允許開(kāi)發(fā)者以更透明的方式
早在2016年,比特幣開(kāi)發(fā)就成為了整個(gè)開(kāi)源社區(qū)的一個(gè)模式,它集成了Gitian building——一個(gè)“計(jì)算機(jī)中的計(jì)算機(jī)”框架。它允許開(kāi)發(fā)者以更透明的方式驗(yàn)證二進(jìn)制計(jì)算機(jī)文件。但隨著Guix最近的合并,該協(xié)議的工作變得更加免信任。Guix支持確定性和可引導(dǎo)的Bitcoin Core的開(kāi)發(fā)。
盡管過(guò)程相當(dāng)復(fù)雜,而且主要涉及開(kāi)發(fā)者,但比特幣的組成的兩個(gè)問(wèn)題涉及信任和語(yǔ)言,這對(duì)所有人來(lái)說(shuō)都很重要。任何計(jì)算機(jī)科學(xué)的速成課程都會(huì)告訴你,計(jì)算機(jī)接收二進(jìn)制指令(“1”和“0”),但人類必須用他們能夠理解的邏輯編程語(yǔ)言編寫。編碼部分完成后,指令需要編譯成計(jì)算機(jī)能夠理解的語(yǔ)言。當(dāng)開(kāi)發(fā)人員需要共享生成的二進(jìn)制文件時(shí),他們必須對(duì)彼此有一定程度的信任。除非這個(gè)過(guò)程涉及額外的驗(yàn)證步驟,否則都很費(fèi)時(shí)。
作為一種去中心化的協(xié)議,比特幣需要更加謹(jǐn)慎和更多的關(guān)注。如果二進(jìn)制文件中碰巧有一個(gè)微小的第三方更改(例如惡意的黑客攻擊),并且在開(kāi)發(fā)人員之間交換,那么新版本的客戶端可能會(huì)出現(xiàn)bug和副作用,導(dǎo)致大量資金損失。除非建立適當(dāng)?shù)尿?yàn)證過(guò)程,否則這個(gè)問(wèn)題很容易成為單點(diǎn)故障。
Gitian 與 Guix
讓所有開(kāi)發(fā)人員將運(yùn)行相同的代碼并比較二進(jìn)制文件的想法是不現(xiàn)實(shí)的,因?yàn)橄到y(tǒng)架構(gòu)、操作系統(tǒng)甚至編譯時(shí)間等變量上的差異(即使是很小的差異)可能會(huì)提供不同的結(jié)果。因此,為了解決這個(gè)問(wèn)題,一個(gè)化名為Dev Random的開(kāi)發(fā)者設(shè)計(jì)出了Gitian。
正如Bitcoin Magazine的技術(shù)向作家Aaron van Wirdum所描述的一樣,Gitian是“計(jì)算機(jī)中的計(jì)算機(jī)”,它提供了一個(gè)虛擬空間,二進(jìn)制文件可以在沒(méi)有變量差異的情況下編譯。無(wú)論使用哪種設(shè)備或操作系統(tǒng),結(jié)果都是相同的。
然而,這個(gè)過(guò)程并不能滿足Bitcoin Core開(kāi)發(fā)者們的需求,因?yàn)樗^(guò)于依賴Ubuntu操作系統(tǒng)了。這種依賴本身可能成為一個(gè)故障點(diǎn),驗(yàn)證過(guò)程需要更多的透明性和可審核性。
正如Chaincode Labs開(kāi)發(fā)工程師Carl Dong告訴Bitcoin Magazine的那樣,“標(biāo)準(zhǔn)化的環(huán)境嚴(yán)重依賴于Ubuntu,而且這樣會(huì)有些盲目。事實(shí)上,我們構(gòu)建環(huán)境的方式是從Ubuntu下載不可審計(jì)的、不透明的二進(jìn)制文件(換句話說(shuō),“可信的二進(jìn)制文件”),這會(huì)讓我們面臨第三方的風(fēng)險(xiǎn)。不難想象,攻擊者可以通過(guò)入侵Ubuntu的基礎(chǔ)設(shè)施(或者,僅僅通過(guò)混入U(xiǎn)buntu工作團(tuán)隊(duì)里)來(lái)污染所有的Bitcoin Core發(fā)布的可執(zhí)行程序的。”
Dong負(fù)責(zé)的工作就是引入Guix。這是一個(gè)二進(jìn)制驗(yàn)證系統(tǒng),可以讓開(kāi)發(fā)者在無(wú)需信任的環(huán)境下進(jìn)行開(kāi)發(fā),并最終完全取代Gitian。
他說(shuō),“Guix允許我們以一種方式來(lái)構(gòu)建開(kāi)發(fā)環(huán)境,在這種方式中,我們只需要依賴于一組大量減少的可信二進(jìn)制文件。大部分環(huán)境都是由一個(gè)微小的二進(jìn)制種子構(gòu)建而成的,而這個(gè)構(gòu)建過(guò)程更具可審核性。”
此外,信任最小化實(shí)現(xiàn)(于2019年7月12日并入比特幣核心)旨在消除第三方風(fēng)險(xiǎn)。Dong認(rèn)為這是一種更簡(jiǎn)單、更少平臺(tái)特異性的方法來(lái)處理Bitcoin Core的安全隱患。在未來(lái),Guix還將允許開(kāi)發(fā)者在不同的CPU架構(gòu)上進(jìn)行構(gòu)建,并生成可重復(fù)執(zhí)行的代碼。這些特性對(duì)于透明和合乎道德的開(kāi)發(fā)是必不可少的,它們還將使二進(jìn)制文件的交換變得更快、更有效。
誠(chéng)然,Dong的靈感來(lái)自于Gitian。然而,就算兩者都沒(méi)有發(fā)展空間,Guix也將成為替代品。
Dong說(shuō)道:“我將Guix整合到比特幣核心的工作當(dāng)然受到了Gitian的啟發(fā),但它們之間并不能互相補(bǔ)充。我預(yù)計(jì),一旦對(duì)OS X和Windows目標(biāo)的交叉編譯支持完成后,Gitian就會(huì)退出市場(chǎng)。”
Guix與普通比特幣用戶
如果說(shuō)Guix是由開(kāi)發(fā)者創(chuàng)建的工具,并且是為他們自己交換編譯后的二進(jìn)制文件而設(shè)計(jì)的,那么普通用戶為什么要關(guān)心它呢?實(shí)際上,它也消除了普通用戶對(duì)Bitcoin Core客戶端下載的數(shù)據(jù)的信任顧慮。盡管可能性很小,但惡意的第三方(如釣魚(yú)網(wǎng)站)可能會(huì)在這一過(guò)程中進(jìn)行干預(yù),在缺乏適當(dāng)?shù)尿?yàn)證框架的情況下,竊取你的比特幣。Guix所遵循的正是根植于比特幣文化中的“無(wú)需信任”的理念。
Dong表示,“Guix允許用戶驗(yàn)證他們下載的比特幣核心客戶端與比特幣核心開(kāi)發(fā)者編寫的代碼是否完全一致。它減少了針對(duì)將代碼庫(kù)轉(zhuǎn)換為發(fā)布客戶端的可執(zhí)行文件方式的攻擊。”
盡管Guix對(duì)開(kāi)發(fā)人員而言有更明確的需求,但如果用戶選擇謹(jǐn)慎使用所運(yùn)行的軟件,Guix也是用戶可能需要并希望用到的工具。
到目前為止,Guix只適用于Ubuntu版本。Dong樂(lè)觀地估計(jì),Windows和Mac OS版本將在2019年底發(fā)布。本著比特幣的謹(jǐn)慎精神,他還附加了一條“當(dāng)它完成并經(jīng)過(guò)徹底測(cè)試”的條款,即優(yōu)先級(jí)最高的是健壯性,所以我們可以期待它的測(cè)試版早日上線。(Vlad Costea)
關(guān)鍵詞: Gitian building 計(jì)算機(jī)文件