比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > 火必 > Info

比特幣不屬于任何個人 但誰在掌控 Bitcoin Core?_COIN

Author:

Time:1900/1/1 0:00:00

誰在控制BitcoinCore的GitHub信息庫,這個問題經常被人提出。但這本身就是一個轉移視線的提法,源于威權主義的觀點。顯然,這種提法不適用于BTC。

本文旨在揭示BitcoinCore如何運作,以及在更高層次上BTP本身如何發展。

本文作者為BitcoinCore開發者,由加密谷獨家編譯

BitcoinCore的歷史

BitcoinCore是開發BTP的焦點,而不是一個指揮和控制點。如果它因為任何原因不復存在,一個新的焦點就會出現——它所基于的技術通信平臺(目前是GitHub存儲庫)是一個方便而非定義/項目完整性的問題。事實上,我們已經目睹BTC發展重心改變了平臺甚至名字!

2009年初,BTC項目的源代碼只是托管在SourceForge上的一個.rar文件。早期的開發人員實際上會通過E-mail與Satoshi交換代碼補丁。

2009年10月30日,Sirius(MarttiMalmi)在SourceForge上為BTC項目創建了一個subversion存儲庫。

2011年,BTC項目從SourceForge遷移到了GitHub。

2014年,BTC項目更名為BitcoinCore。

不輕信任何人

雖然一些少數有組織的GitHub“維護者”帳戶能夠將代碼合并到主分支中,但這更像是一種“清潔工”的職位,而非掌權者。

BitcoinCore遵循最小特權原則,即如果被濫用,任何賦予個人的權力都很容易被顛覆。

PeterTodd推文:“Core對于重要的列表是公開透明的,可以簽署合并提交的PGP密鑰。”

這里要學到的教訓是:不要輕易相信GitHub!即便BitcoinCore也不知道可以更改回購的人員的完整列表,因為這可能擴展到數十名GitHub員工。”

從反抗者的角度來看,GitHub是不可信任的。任何GitHub員工都可以使用他們的管理權限將代碼注入存儲庫,而無需維護人員的同意。但GitHub攻擊者不太可能破壞BitcoinCore維護者的PGP密鑰。

BitcoinCore不是基于GitHub帳戶代碼的完整性,而是具有持續集成系統,該系統執行必須對每個合并提交簽名的可信PGP密鑰進行檢查。雖然這些密鑰與已知身份相綁定,但仍然無法確保萬無一失。密鑰可能會被泄露,除非原始密鑰持有者通知其他維護者,否則我們將無從得知。因此,提交密鑰也不能提供完美的安全性,它們只會使攻擊者更難以注入任意代碼。

數據:2023年前兩個月比特幣ATM機減少超400臺:3月1日消息,Coin ATM Radar數據顯示,在2023年的前兩個月,全球安裝的加密貨幣ATM機凈減412臺。自2014年以來,加密ATM機的總數穩步上升。在2020年12月至2022年1月的一年中,每個月安裝超過1000臺加密貨幣和比特幣ATM機。然而,熊市對其增長產生了直接影響。

2022年9月,加密ATM機總數首次出現凈下降。而2023年加密ATM安裝總量連續兩個月下降,創下新低。(Cointelegraph)[2023/3/1 12:36:25]

開啟王國的鑰匙

在撰寫本文時,這些是可信賴的PGP指紋:

71A3B16735405025D447E8F274810B012346C9A6133EAC179436F14A5CF1B794860FEB804E66932032EE5C4C3FA15CCADB46ABE529D4BCB6416F53ECB8B3F1C0E58C15DB6A81D30C3648A882F4316B9BCA03882CB1FC067B5D3ACFE4D300116E1C875A3D

這些密鑰注冊給了:

WladimirJ.vanderLaan

PieterWuille

JonasSchnelli

MarcoFalke

SamuelDobson

這是否意味著我們可以完全相信這五個人?并不是。鑰匙不是身份證明,可能落入其他人的手中。如果運行verify-commitspython腳本,你能得到什么保證呢?

python3contrib/verify-commits/verify-commits.pyUsingverify-commitsdatafrombitcoin/contrib/verify-commitsAllTree-SHA512smatchedupto309bf16257b2395ce502017be627186b749ee749Thereisavalidpathfrom“HEAD”to82bcf405f6db1d55b684a1f63a4aabad376cdad7whereallcommitsaresigned!

Verify-commits腳本是一個完整性檢查,任何開發人員都可以在他們的機器上運行。執行后,它會在自2015年12月提交82bcf405之后的每個合并提交中檢查PGP簽名。在編寫時已經超過3,400次合并。

橋水基金Ray Dalio:如果比特幣獲得成功,監管機構將會扼殺它:橋水基金Ray Dalio在紐約SALT會議表示“如果比特幣獲得成功,監管機構將會扼殺或嘗試扼殺它,因為他們有這樣的方法。”(CNBC)[2021/9/15 23:27:43]

如果腳本成功完成,它告訴我們,自那時起已經更改的每一行代碼都已通過BitcoinCore開發過程,并被具有維護者密鑰的人進行了“簽名”。雖然這無法完全保證沒有人注入惡意代碼,但會大大減少攻擊面。

什么是“維護者”,以及他們是如何實現這一角色的,這點我們稍后會深入研究。

多層防御

BitcoinCore代碼的完整性不能僅僅依賴于少數密鑰,這就是為什么存在大量其他檢查的原因。

有許多安全層來提供深度防御:

PullRequest安全性

任何人都可以通過在Bitcoin/Bitcoin上打開針對主分支的PullRequest(簡稱PR),來自由地提出代碼更改,以改進軟件。

開發人員審核PR以確保它們無害。任何人都可以自由地審查PR并提供反饋。在為BitcoinCore做出貢獻時,沒有門檻或入門測試。如果沒有人對一個PR提出合理的反對意見,那么維護者就會進行合并。

Core維護者設置pre-pushhook,以確保它們不會將未簽名的提交推送到存儲庫中。

合并提交可以選擇通過OpenTimestamps加上安全時間保障。

TravisContinuousIntegration系統會定期運行此腳本以檢查gittree的完整性,并驗證主分支中的所有提交是否都由可信的PGP密鑰進行簽名。

任何想要運行此腳本以驗證所有合并提交的PGP簽名的人都可以追溯到2015年12月。

發布安全性

Gitian確定性構建系統由多個開發人員獨立運行,目標是創建相同的二進制文件。如果有人設法創建與其他開發人員不匹配的構建,即表明引入了非確定性,則最終版本不會發生。如果存在非確定性,開發人員會追蹤出錯的地方,修復它,并構建另一個候選版本。一旦確定性構建成功,那么開發人員就會對生成的二進制文件進行簽名,從而保證文件和工具鏈不被篡改并且使用相同的源代碼。此方法將構建和分發過程作為單點故障刪除。任何具有技術技能的人都可以運行自己的構建系統。

一旦Gitian構建成功完成,并由構建者簽署,BitcoinCore維護者便會簽署一條包含每個SHA256哈希值的消息。如果你決定運行預構建的二進制文件,則可以在下載后檢查其哈希值,然后使用哈希值驗證簽名版本消息的真實性。

比特幣挖礦主機服務和硬件公司Compass賬戶被摩根大通關閉:8月19日消息,Compass Mining 是一家提供比特幣挖礦主機服務和硬件的公司,據該公司聯合創始人兼首席執行官Whit Gibbs在推特上透露,美國銀行巨頭摩根大通已經關閉了他們的賬戶。在撰寫本文時,摩根大通尚未提供任何做出該決定的合理理由證明。根據Compass Mining網站消息,他們是一家“比特幣優先”公司,以“支持算力去中心化增長”和比特幣網絡安全為目標,允許“每個人”開采 BTC。Compass Mining公司另一位總監William Foxley認為,摩根大通關閉其賬戶很可能是因為他們的比特幣商業模式。[2021/8/19 22:23:32]

以上所有內容都是開放源代碼,任何有技能和意愿的人都可以審核。

最后,即使完成上述所有質量檢查和完整性檢查,提交到BitcoinCore,并最終進入版本的代碼也不會被任何中心化的實體部署到節點網絡上。相反,每個節點運行者必須有意識地決定是否更新他們運行的代碼。BitcoinCore刻意沒有加入自動更新功能,因為它可能用于使用戶運行他們沒有明確選擇的代碼。

盡管BitcoinCore項目實施了所有技術安全措施,但它們也并非完美。理論上,任何代碼都有可能遭到損害。BitcoinCore代碼完整性的最后一道防線與任何其他開源項目相同:時刻保持警惕。有越多的人盯著BitcoinCore代碼,進入發布版本的惡意或缺陷代碼就越少。

代碼覆蓋范圍

BitcoinCore有許多測試代碼。有一個針對每個PR運行的集成測試套件和一個每晚在主服務器上運行的擴展測試套件。

可以通過以下方式自行檢查測試的代碼覆蓋率:

1.克隆BitcoinCore的GitHub存儲庫;

2.從源代碼安裝構建所需的依賴項;

3.運行這些命令;

4.在./total_coverage/index.html上查看報告;

或者,可以查看由MarcoFalke主持的代碼覆蓋率報告。如下圖:

代碼覆蓋率報告

代碼覆蓋率越高,意味著預期運行的確定性越高。

當涉及到共識關鍵軟件時,測試非常重要。對于特別復雜的更改,開發人員有時需要進行艱苦的變異測試。也就是說,他們通過故意破壞代碼來查看測試是否會按照預期一樣失敗。

媒體:比特幣超越黃金成為2020年迄今表現最好的資產:比特幣價格的突然飆升使其成為2020年表現最佳的資產,超過了黃金、白銀和原油。盡管今年三月比特幣價格出現嚴重崩潰,但如果比較此前四個月時間跨度的話,會發現比特幣價格其實上漲了近三分之一,而同一時期,黃金價格僅上漲13%,白銀價格下跌14%,石油價格下跌超過70%。金融服務公司IG的高級市場分析師約書亞?馬洪尼(Joshua Mahony)對《獨立報》說:“在五月份減半發生之前,比特幣價格一直在飆升,投資者急切希望看到比特幣供應緊縮所帶來的積極影響。從更廣泛的角度來看,央行寬松政策和政府債務的大幅增長確實讓許多人感到有必要尋求其他財富存儲替代資產。”(獨立報)[2020/5/2]

GregMaxwell在討論0.15版本時,對這個過程給出了一些見解:

“測試是對軟件的測試。要測試,你必須破解軟件本身。”

自由市場競爭

BitMEX曾撰寫了一篇關于BTC實現路徑生態系統的精彩文章。目前有十幾種不同的BTC實現方式,甚至會有更多的“競爭網絡”實現。這是開源的自由,任何對BitcoinCore項目不滿意的人,都可以自由地開啟他們自己的項目。他們可以從頭開始,也可以分叉Core軟件。

在撰寫本文時,有96%的BTC節點正在運行某種版本的BitcoinCore。為什么會出現這種情況?

如果切換到另一個軟件實現路徑所需的努力最小,那么是否意味著BitcoinCore在節點網絡上具有近乎壟斷的地位?畢竟,許多其他實現方法提供了與BitcoinCore兼容或高度相似的RPCAPI。

我認為,這是BitcoinCore成為開發焦點的結果。它擁有更多開發人才和時間作為支持,這意味著,BitcoinCore項目生成的代碼往往擁有最好的性能、穩健和安全。

在資金管理方面,節點運營商不會想運行次好的軟件。同時,鑒于這是一個共識軟件,BTP不具有,一個正式的規范,因為沒有人有權威制訂。因此,用焦點開發人員的實現方式或多或少都更安全。

從這個意義上說,開發焦點的代碼是最接近現有規范的代碼。

誰是Core的開發人員?

對于不熟悉BitcoinCore開發過程的人,從外部看這個項目,可能會認為Core是一個單一的實體。實際情況遠非如此!

核心貢獻者之間經常存在分歧,即使是最多產的貢獻者也編寫了大量從未合并到項目中的代碼。如果閱讀相關指南,你可能會注意到,它們相當松散——這個過程可以用“粗略的共識”來描述。

分析 | 比特幣時隔9個月內首次突破100日均線:據coindesk分析,比特幣時隔272天首次突破100日均線(價格約在3850美元),這對多頭來說是一個積極的信號,目前多頭正在測試收斂三角區間上邊界,但自去年12月20日以來,4075美元的附近一直是一個強阻力。4小時圖中,總成交量達到了10天以來的最高點。只要價格可以繼續保持當前(或更高)水平,則有望進一步上沖5000美元附近。[2019/2/19]

維護人員會考慮:一個補丁是否符合項目的一般原則?是否符合納入的最低標準?進而對貢獻者的普遍共識進行判斷。

誰是BTCCore的維護者?他們是在一段時間內做出高質量的代碼、在項目中累積了足夠的社會資本的貢獻者。

當現有的維護者們認為,某位貢獻者是在某一領域能力表現突出、可靠、積極的人選時,他們可以授予該人員GitHub帳戶提交訪問權。

首席維護者的角色負責監督和協調項目的方方面面。它是多年來自愿流傳下來的:

SatoshiNakamoto:1/3/09-2/23/11

GavinAndresen:2/23/11-4/7/14

WladimirvanderLaan:4/7/14—present

作為一個BitcoinCore維護者通常被稱為“清潔工”,因為維護者實際上沒有權力做出違背貢獻者或用戶共識的決定。然而,由于整個生態系統被外界過分關注,這個角色的工作可能相當繁重。

例如,GregoryMaxwell(格雷戈里·麥克斯韋爾)在2017年出于個人原因放棄了他的維護者角色,很可能是因為他在擴容討論期間所承受的公眾壓力。

Wladimir寫了一篇作為核心維護者的壓力的文章,其中解釋了為什么移除Gavin的提交訪問,這讓很多人感到不安。

同樣地,當JeffGarzik被從GitHub組織中移除時,他和其他人也都感到不滿,但他已經兩年沒有為Core做貢獻了。保留他GitHub帳戶對儲存庫的訪問權限,不僅對項目沒有任何好處,反而會構成安全風險,并且違反了Wladimir在他的文章中提到的最小特權原則。

其他人可能會關注Core,認為它是一個技術統治或象牙塔,讓新人很難加入。但如果你和貢獻者交談,就會發現事實并非如此。雖然多年來只有十幾個人擁有提交訪問權限,但已有數百名開發人員做出了貢獻。我自己也做了一些小貢獻。雖然我不認為自己是一個“核心”開發人員,但嚴格來說,我也是一名Core開發者。沒有人能阻止你做出貢獻!

MattCorallo推文:“2011年,作為一名不懂標記的高中生,開發者社區與我合作,讓我糟糕的補丁變得值得合并,并創造了一個偉大的學習環境。”

JohnNewbery推文:”2016年,@TheBlueMatt在@ChaincodeLabs組織了一次訪問。我一直在閱讀有關BTC的所有內容,我可以放手嘗試,但還是不敢提交PR。Matt,Alex和Suhas非常慷慨地花時間教我們關于BTC的一切,以及如何做貢獻。”

JeffRade推文:”我開始對@bitcoincoreorg進行小型提交,并且對@MarcoFalke@pwuille@orionwl@LukeDashjr和@jfnewbery加入我的PR深深感動,這真是一個熱情的項目!”

人們最難以理解的事情之一似乎是,BTC發展的焦點并不僅僅是BitcoinCoreGitHub賬戶定義的結構。雖然BitcoinCore有一些結構(它使用中心化的通信渠道來進行協調),但項目本身不受任何參與者的控制——即使是那些升級了GitHub存儲庫特權的參與者也不行。

雖然從技術上講,維護人員組織內部可能會發生“政變”,并有可能劫持GitHub存儲庫,審查持不同意見的開發人員,甚至可能搶奪“BitcoinCore”的品牌名稱,但結果是BitcoinCore將不再是開發的重點。反對維護者行為的開發人員只需將代碼分叉,并將工作轉移到BitcoinCore維護者沒有管理權限的另一個存儲庫。

即使沒有“政變”,如果一個有爭議的變更以某種方式進入Core,部分開發人員會將軟件分叉,刪除這個變更,并將其提供給用戶使用。你可能會說,這正是AmaurySechet分叉BitcoinCore,并刪除隔離見證,創建比特幣ABC時所發生的事情。或者,如果Core拒絕一些人想要的提議的變更,開發人員可以分叉,再添加這些變更。這種情況發生過很多次,例如:

MikeHearn用forkedCore創建了BitcoinXT

AndrewStone創立了Core,創建了BitcoinUnlimited

JeffGarzik用forkCore創建了BTC1

分叉代碼很容易。轉移BTC發展的焦點卻很困難的——你必須說服貢獻者,他們最好把時間花在另一個項目上。

JamesLopp推文:”我不對任何人、任何比特幣開發團隊效忠。我的意圖是運行最能保護我財務主權的代碼。”

很難說服公眾。用戶不會盲目地追隨BitcoinCore的變化,這是一種自我強化的信念,因為如果用戶不參與共識過程,并意識到自己的選擇,他們就會把部分權力拱手讓給開發者。

然而,用戶在2017年的UASF(UserActivatedSoftFork)運動中,實行了他們的權利。一位化名shaolinfry的BTC開發者提出了BIP148,這個提案將迫使礦工在8月1日左右激活隔離見證。

然而,由于BIP148爭議太大,無法被BitcoinCore采納,所以shaolinfry將Core進行了分叉,并提供了“BitcoinUASF”軟件。這個軟件實現獲得了不小的吸引力,并且創造了充分的壓力來說服礦工在BIP148截止日期之前采用BIP91來激活fork。

在我看來,最好的BitcoinCore貢獻者是那些充分實行主權的人。例如JohnNewbery,盡管他沒有編寫包含這個特定共識錯誤的代碼,但是他認為自己有責任仔細地檢查來阻止它被合并,并且在編寫測試時發現這個錯誤的代碼。

JohnNewbery推文:”我為CVE-2018-17144的錯誤全權負責。錯誤的代碼被合并是不對的。由于沒有徹底地審查共識變更,整個社區搞砸了它,開發人員需要注意!這是大家的責任。”

我們都是Satoshi(中本聰)!

為BitcoinCore做貢獻

雖然有足夠的資源可以幫助有抱負的開發人員,但為Core做貢獻仍舊讓人感到畏懼。你可以從JimmySong寫的指導說明“AGentleIntroductiontoBitcoinCoreDevelopment”入手。

Core開發人員EricLombrozo還撰寫了一篇文章“TheBitcoinCoreMergeProcess”,了解如何在Core存儲庫中進行更改。

此外,AlexB.撰寫了一篇關于BTC開發理念的優秀文章“TheTaoofBitcoinDevelopment”,任何想要成為貢獻者的人都可以通過閱讀它來節省大量時間。

具體的示例可能會有所幫助。在寫這篇文章時,我嘗試在我的機器上運行verify-commits.py腳本,以便審核GitHub提交歷史記錄的完整性,但遇到了困難。

為了便于未來的開發人員規避這些問題,我打開了一個PR來改進文檔。從PR歷史中可以看出,有4位不同的開發人員提出了如何改進PR的建議。這包括使用不同的wiki標記到簡化的bash命令,以及可以在verify-commits.py腳本中使用的新參數。我認為所有的建議都很合理,所以我將它們合并到我的代碼中,并為我的PR推送了更新版本。在那時,參與審查的開發人員承認可他們發現PR,維護者MarcoFalke將其標記為包含在0.18版本中。經過幾天的努力,開發人員沒有反對意見,代碼被維護者SamuelDobson合并到了Core中。

總結:沒有人能夠掌控BTC

正如飽受爭議的那樣,把BTC理解為一個系統是不可能的。對BTP的定義(控制),就如同對語言的定義。語言是自然產生的,對詞匯含義的共識是有機的,而不是由字典決定的。就像字典描述一種語言的現象而不是定義它,BTC的實現方式也用代碼描述了BTC的語言。沒有人被迫同意字典中給出的定義,同樣,也沒有人被迫運行BTC實現方式或認同這一過程中的代碼。

語言不受民主支配,BTC也不受民主管理。雖然你可能會聽到人們提到礦工、節點、開發人員或用戶“投票”,但是,沒有任何一種機制能夠讓多數人迫使持不同意見的少數人接受他們不同意的變更。簡言之,BTC是無政府狀態——沒有統治者,但也不是沒有規則。規則由網絡上的各個參與者定義和執行。

對BTP本身的更改通常是通過BTC改進提案流程進行的,即使這只是一個推薦的最佳實踐,也不能強迫任何人遵循它。它只是一種更正式的方式,試圖通過同行審查和建立共識的過程來指導變革。

BTC抗脆弱性的一個重要方面——如果只有一個單一的控制點,那么它也是一個單一的故障點,會被強大實體所利用。最終,每個節點運行者通過確保網絡上沒有其他人違反它們達成一致的規則來管理自己。這種安全模型是BTC自下而上治理的基礎。

沒有人掌控BTC。沒有人掌控BTC開發的焦點。

-END-

JamesonLopp作者

DUANNIYI翻譯

SonnySun編輯

Roy排版

Tags:ORECOREOINCOINZCore FinanceFecore Financecointiger交易所下載Vites Coin

火必
領先的加密公司、DeFi機構、金融科技如何構建不同的社區_區塊鏈

前言:DeFi是金融發展的新階段。它發展還很早期,但它對未來的金融會產生重大影響。就社區參與方面,它跟傳統的銀行和金融科技會有什么不同?它有哪些優勢和不足?本文作者是StevenEhrlich,

1900/1/1 0:00:00
什么是區塊鏈最長鏈?_比特幣

比特幣白皮書規定,節點永遠認為最長鏈是正確的區塊鏈,并將持續在它上面延長。所有礦工都在最長鏈上挖礦,有利于區塊鏈賬本的唯一性。如果給你轉賬的比特幣交易不記錄在最長鏈上,你將有可能面臨財產損失.

1900/1/1 0:00:00
Kraken is listing Cosmos (ATOM)_AND

WearepleasedtoannouncethatKrakenwilllistCosmos(ATOM).

1900/1/1 0:00:00
多空雙爆,USDT再上風口浪尖_BTC

今天封面是《戴皇冠的人魚》,亞瑟.拉科姆。大餅昨天在5400美元企穩后,一度小幅爬升至5550美元附近,奈何Tether再次爆雷,空軍借機突襲,發動了久違的攻擊.

1900/1/1 0:00:00
龍網學院專題講座——NULS POC共識機制_NEX

龍網學院專題講座——NULSPOC共識機制 2019-04-17 親愛的用戶: POC:信用共識機制,由NULS團隊首創并運用,共識機制為:節點信用達標的情況下,鎖定一定保證金即可加入共識.

1900/1/1 0:00:00
LBank Solar 系列「Mars」項目 MAI 認購結果公布_LBA

尊敬的LBank用戶: LBankSolar系列「Mars」項目MAI于2019年4月29日19:30開始認購下單,2小時內下單同等對待,總共有7,622人下單,下單總價值超過11,507.

1900/1/1 0:00:00
ads