比特幣核心的歷史
比特幣核心是比特幣協議開發的焦點,而非命令與控制點。倘若因為什么原因,這個焦點停止存在了,就會有一個新的焦點冒出來。比特幣核心依賴的基礎——技術交流平臺,是因為便利而存在的,不是因為定義/項目的完整性而存在的。現實中,比特幣的開發焦點已經更換了平臺,甚至更換了名稱!2009年初,比特幣項目的源代碼只是一個rar壓縮包,存在SourceForge服務器上。早期的開發者會用電郵跟中本聰交換代碼補丁。2009年10月30日,Sirius在SourceForge網站上創建了一個subversion代碼倉庫。2011年,比特幣項目從SourceForge遷移到GitHub。2014年,比特幣項目更名“BitcoinCore”。不相信任何人
GitHub的組織層面上,確實有不多幾個“維護人員”的賬戶,能夠將代碼合并到“主分支”;然而這種地位不是權力的象征,只是類似“看守”的身份。試想,若是不論張三李四都能把代碼合并到主分支,很快就會變成“廚子多了做壞了湯”的結果。比特幣核心遵守“最小特權原則”,也就是任何人只要濫用權力,就會被輕易推翻。
從對抗角度來看,GitHub是不能被信任的。GitHub任何員工都可以運用管理特權,將代碼注入代碼倉庫,無需經過維護人員的同意。但是,GitHub的攻擊者卻幾乎不可能損害比特幣核心維護人員的PGP密鑰BitcoinCore并沒有將代碼的完整性建立在GitHub賬戶上,他們有一個連續的集成系統,執行那些受信任的PGP密鑰的校驗;這些密鑰必須簽署每一份“合并提交”。這些密鑰的確跟身份已知的某些人相關,但依然不能擔保情況永遠會這樣而不變——某個密鑰可能會受到損害,我們也不會知道密鑰受到損害,除非原始的密鑰主人通知了其他的維護人員。如此一來,“提交密鑰”也就不提供完美的安全保護,只是讓攻擊者插入“任意代碼”的難度提高了。通向王國的密鑰
我寫這篇文章的時候,受信任的PGP指紋如下:71A3B16735405025D447E8F274810B012346C9A6133EAC179436F14A5CF1B794860FEB804E66932032EE5C4C3FA15CCADB46ABE529D4BCB6416F53ECB8B3F1C0E58C15DB6A81D30C3648A882F4316B9BCA03882CB1FC067B5D3ACFE4D300116E1C875A3D這些指紋注冊到:WladimirJ.vanderLaan<laanwj@protonmail.com>PieterWuille<pieter.wuille@gmail.com>JonasSchnelli<dev@jonasschnelli.ch>MarcoFalke<marco.falke@tum.de>SamuelDobson<dobsonsa68@gmail.com>這是否意味著我們就相信這五個人呢?不太對。密鑰不是身份的證明;這些密鑰有可能落到別人手中。我要是運行了verify-commits的python腳本,我有什么保證呢?python3contrib/verify-commits/verify-commits.py使用來自bitcoin/contrib/verify-commits的verify-commits數據所有Tree-SHA512s都匹配到309bf16257b2395ce502017be627186b749ee749有一條從“HEAD”到82bcf405f6db1d55b684a1f63a4aabad376cdad7的有效路徑,其中所有提交都已簽名!verify-commits腳本是一種完整性校驗,隨便什么開發者都能將其在自家機器上運行。執行的時候,腳本會校驗每一份合并提交的PGP簽名。從2015年12月第一次提交82bcf405開始,到我寫這篇文章為止,共有3,400多份合并提交。如果腳本成功完成,它告訴我們自那時以來已經更改的每一行代碼都已通過比特幣核心開發過程并由具有維護者密鑰的人“簽字”。當然,這還不足以百分百確認不會有人插入惡意代碼;但這一措施確實能減少大規模攻擊的可能性。那么,維護人員又是什么人?他們怎么獲得這個身份?我們稍后會深入研究。 多層安全系統
Scam Sniffer:1小時前有人因ERC20網絡釣魚損失約20萬美元USDC,幾個小時內已有70多筆交易被盜:金色財經報道, Scam Sniffer發布推文警告稱,1小時前有人因ERC20許可網絡釣魚損失約20萬美元USDC,過去幾個小時內已有 70 多筆交易被盜,可能發生了黑客攻擊。[2023/8/12 16:21:26]
比特幣核心代碼的完整性不能僅僅依賴于少數加密密鑰,這就是為什么存在大量其他檢查的原因。這里有許多安全層來提供深度防御:Pull請求安全1、不論什么人都有權提議改動節點,以改進軟件。其方法是開啟一個針對bitcoin/bitcoin上主分支的“拉取請求”。2、開發者們會評估各個拉取請求,確保這些請求不是有害的。不論是誰,都有權評估各個拉取請求,并提供反饋。只要是為了比特幣核心作出貢獻,就沒有“看門人”或者“入學考試”篩選合格的貢獻者。如果某個拉取請求發展到這樣一種地步,并沒有合理的反對意見反對它合并到主分支,那就會有一個維護人員執行合并。3、Core維護者會設定預push鉤,以確保不會有人把未經簽字確認的“提交”“推入”代碼倉庫。4、各項“合并提交”,會通過OpenTimestamps協議,安全地打上時間戳。打戳行為是可選的,不是必要的。5、“Travis持續集成系統”將定期運行這個腳本,以檢查gittree的完整性,而且驗證所有主分支上的“提交”都已經由某一個受信任的PGP密鑰簽了名。6、不論是誰,只要想運行,就可以運行這個腳本,以驗證從2015年12月開始的一切“合并提交”上的PGP簽名。我在寫這篇文章的時候,就運行了這個腳本,在我的筆電上25分鐘就運行完了。發布安全1、“Gitian確定性構建系統”是一種編譯解決方案。這系統由多個開發者獨立運行,目標是創建相同的二進制文件。假設某人成功創建了一個不符合其他開發者的構建系統,就表示引入了“非確定性”,于是“最終發行”就不會發生。如果存在非確定性,開發者就會追蹤哪里出了問題,修復問題,再構建另外一種發行候選版本。一旦“確定性構建”成功,開發者就會對生成的二進制文件進行簽名,確保這些二進制文件和工具鏈都沒有受到損害,而且使用了相同的源。這個辦法避免了讓構建和分配流程變成一種“單點故障”。任何具有技術的人都可以運行自己的構建系統。操作說明在這里:https://github.com/bitcoin-core/docs/blob/master/gitian-building.md2、一旦Gitian構建成功完成并由構建者簽名,就會有一個BitcoinCore的維護者,用每個構建的SHA256哈希值,給一條信息進行PGP簽名。如果你決定運行預先構建的二進制文件,就可以先下載,然后驗證它的哈希值;然后使用哈希值驗證簽名版本消息的真實性。這里是操作說明:https://bitcoincore.org/en/download/3、以上這些全都是開源的,可審計的;任何人只要有技術,有意愿,都可以執行。4、最后,即使在進行了以上一切的質量與完整性檢查之后,提交到BitcoinCore并最后成功發布的代碼依然不會被任何中心化的組織部署到節點網絡上。相反,每個節點操作員必須有意識地決定更新他們運行的代碼。BitcoinCore故意沒有設置自動更新功能,讓用戶可自行決定需要運行什么版本的代碼,否則這個系統就可能被操縱。盡管比特幣核心有了一切技術上的安全手段,然而這些手段沒有一種是完美的,也全都有理論上被損害的可能性。比特幣核心代碼完整性的最后一道防線,與任何其他開源項目的最后一道防線是一樣的——時刻保持警惕!關注比特幣核心代碼的眼睛越多,惡意代碼或者有缺陷代碼,就越難以進入發布階段。代碼覆蓋率
加密貨幣硬件生產商Fabric Cryptography完成600萬美元融資:7月25日消息,加密貨幣硬件生產商Fabric Cryptography宣布完成600萬美元pre-seed輪融資,Metaplanet領投,Nil Foundation、Inflection、Novawulf和Era參投,該公司聯合創始人兼首席執行官Michael Gao拒絕提供本輪融資的估值信息,僅透露其正在設計的芯片確已經收到了一份價值5000萬美元的訂單并與一家潛在買家簽署了價值約1億美元的交易意向書。
據悉,上周Fabric Cryptography還與ZK技術開發商Nil基金會達成合作擬推出用于加密和外包證明生成的去中心化市場。[2023/7/26 15:58:30]
BitcoinCore有很多測試代碼,其中包括一個完整性測試組件,可以用來測試所有PR;還有一種擴展測試套件,可以每晚在主分支上運行。你可以自行檢查各種測試的代碼覆蓋率,方法是:克隆一個比特幣核心GitHub代碼倉庫;安裝所需的從源代碼構建的依賴項;運行這些命令;在./total_coverage/index.html查看報告。除此以外,你還可以查看比特幣軟件維護者MarcoFalke主持的的覆蓋率報告,地址是https://drahtbot.github.io/reports/coverage/bitcoin/bitcoin/master/total.coverage/index.html
代碼覆蓋率水平越高,意味著代碼按照預期執行功能的確定性也越高。若想在關鍵的軟件上達成共識,測試就是一件大事。對于某些特別復雜的改動,開發者有時候要進行痛苦的“變異測試”,也就是故意破壞密碼,看看各個測試有沒有按照預期而失敗。比特幣開發者GregMaxwell比特幣核心0.15發布的時候,專門討論過這種變異測試:“測試是軟件的測試,但怎么對測試進行測試?就是用軟件。為了對測試進行測試,必須破壞軟件。”自由市場競爭
比特幣期貨平臺BitMEX寫過一篇名為《與比特幣核心競爭》的文章,論述各種“比特幣部署”的生態系統,這篇文章非常棒。當前,比特幣的“兼容部署”有十幾種,甚至還有更多的“競爭網絡”部署。這就是“開源”的自由:只要哪個人對比特幣核心項目的做法有所不滿,就可以建立自己的項目。他們可以從零開始,也可以選擇去分叉Core軟件。在我寫作本文時,96%的比特幣節點是運行BitcoinCore軟件的。為什么會是這樣?倘若某人切換到另一種軟件部署只需要極小的努力,那么比特幣核心為什么又會在節點網絡中處于類似壟斷的狀態?畢竟,很多其他部署,所提供的RPCAPI,都與比特幣核心兼容,或者起碼也跟比特幣核心高度相似。
加密藝術家NessGraphics的NFT項目完成超2萬枚鑄造共募集1404枚ETH:1月30日,據相關頁面信息,加密藝術家 NessGraphics.eth 的 NFT 項目“M0N3Y PR1NT3R G0 BRRRRRR”昨日在 NFT 平臺 Manifold.xyz 上啟動,目前已完成 20357 枚鑄造,按照 0.069 ETH 的鑄造價格計算總計募集 1404.6 ETH,約合 220 萬美元。
“BRRRRRR”是 NessGraphics.eth 推出的 Open Editon NFT 藝術作品,Open Edition NFT 沒有明確供應量上限,用戶可以在特定時間范圍內鑄造盡可能多的 Token,與其他開放版本 NFT 項目一樣,“BRRRRRR”將采用銷毀機制,每次銷毀需要 5 個 Token,用戶可以銷毀“海報”版本 NFT 來獲得級別更高的“動畫”版本 NFT。[2023/1/30 11:36:44]
我相信,這是因為BitcoinCore成為了開發的焦點。Core擁有數量級更多的開發人才和開發時間的支持,這意味著BitcoinCore項目的代碼往往是性能最高、最安全和最穩健的。在有限的資金下,節點運營商只想運行最好的軟件,不想運行質量第二的軟件。此外,考慮到BitcoinCore是一種共識軟件,比特幣協議不具有并且也不能具有正式的規范,所以使用焦點實現會更為安全。因為假設你運行的是其他版本的軟件,對于網絡的大多數節點而言,你的節點可能就是一個bug。從這個意義上來講,開發焦點的代碼就成了現實中最接近規范的東西了。誰是比特幣核心開發者?
那些不熟悉比特幣核心開發過程的人,可能會從外部觀察這個項目,認為“Core”是一個大一統的實體。大錯特錯!核心貢獻者之間常有分歧,而且就算那些最多產的貢獻者,也寫了很多代碼,從沒有合并入核心項目。你看看“貢獻者”的指導方針,就可能會注意到,這方針的原則寬松得很,最多也只能說成一種“大略的共識”。維護人員會考慮,某個補丁是否符合項目的一般原則,是否符合“納入”的最低標準。維護人員會判斷各位貢獻者的一般共識。維護人員都是誰呢?他們是一些特殊的貢獻者。他們已經通過較長時間的高質量的貢獻,在項目內部構建了足夠的社會資本。現有的維護人員團體,只要認為某個貢獻者已經在某特定領域展示了能力、可靠性、動機,有資格當上維護人員,就會把“提交的訪問權”授予這位貢獻者的GitHub賬戶。“維護人員領導”的作用,是監管項目的一切方面,并負責協調各次代碼發布。這幾年來,“維護人員領導”的頭銜自愿更替了幾次:中本聰:2009/1/3-2011/2/23GavinAndresen:2011/2/23-2014/4/7WladimirvanderLaan:2014/4/7-現在比特幣核心維護人員的職責,經常被人比作“看門人”,因為維護人員實際上并沒有權力作出決定,反對貢獻者或者用戶的集體共識。不過,這一職責的任務卻可能相當繁重,因為大生態系統會特別注意這一職責。比如,2017年,GregoryMaxwell就因為個人原因而辭去了維護人員的職務,很可能是因為公開辯論升級,面臨的輿論壓力太大了。Wladimir寫了一篇有深意的帖子,說的就是擔任維護人員壓力多么大,還說了為什么應該取消Gavin的提交權限,這帖子讓很多人很不高興。還有一個類似的情況:GitHub組織曾經開除了JeffGarzik,Jeff和其他人都非常惱火。但是,Jeff的錯誤在于,他整整兩年沒有為核心作出貢獻了。組織再繼續讓Jeff的GitHub賬戶擁有代碼倉庫的寫入權限,對項目也沒有好處了,反而憑空增加了安全風險,也違反了“最小特權原則”。這原則,Wladimir在帖子里專門提到了。還有其他人可能會觀察Core,認為Core是一個技術官僚群體,或是象牙塔,很難讓新的參與者加入進來。然而,只要你跟那些貢獻者真正交流過,就會發現不是這樣。這幾年確實只有少數幾個人擁有提交權限,但卻有數百名開發者已經作出了貢獻。我自己也作了幾個小貢獻,雖然我不自認為是“核心開發者”,從技術上卻算是一名核心開發者。誰也不能不讓你作出貢獻!
Animoca Brands旗下Mocaverse NFT將于1月12日快照:1月11日消息,Animoca Brands旗下NFT系列Mocaverse NFT快照時間為北京時間1月12日21:00,將確認最終資格和Realm Ticket分配,用戶需通過注冊成為Mocalist成員并持有Animoca NFT或代幣有資格獲得Realm Ticket。此外,完成快照且符合條件的持有者可于1月13日訪問mocaverse.xyz獲得“Realm Ticket”NFT空投。
據悉,Mocaverse是Animoca Brands官方發布的最新NFT系列,旨在加強旗下投資組合中Web3社區和元宇宙項目的聯系,總計8,888枚。[2023/1/11 11:06:36]
最難以讓人們理解的,似乎是這樣一個問題:比特幣開發的關注點,并不僅僅是由比特幣核心GitHub賬戶定義的那個結構。確實,比特幣核心是有一種結構的,但項目本身卻不受任何參與者控制,甚至不受那些對GitHub代碼倉庫有高級特權的人控制。從技術上說,確實有可能讓一群維護人員發動“政變”,黑進GitHub代碼倉庫,審查那些異議開發者,甚至還能保持“比特幣核心”這個品牌名稱;但結果就會是,比特幣核心不再成為開發關注點了。這種政變萬一真的出現了,那些不同意維護人員的開發者,就會直接讓代碼分叉,把自己的工作換到另一個代碼倉庫,換到比特幣核心維護人員沒有管理權限的地方。就算不是真正的“政變”,如果核心真的發生了有爭議的變化,還是會有一些開發者將軟件分叉,除掉那個有爭議的變化,然后對用戶發布。歷史上,AmaurySechet曾經讓比特幣核心分叉,在功能上除掉了“隔離見證”,創造了BitcoinABC。你可以認為,當時發生的就是這種情況。另外,如果某些人提議作出某些變化,而核心否決了這些提議的變化,開發者也可以將核心分叉,加上這些變化。歷史上這種事情發生了很多次,例如:MikeHearn將核心分叉,創造了BitcoinXTAndrewStone將核心分叉,創造了BitcoinUnlimitedJeffGarzik將核心分叉,創造了BTC1將代碼分叉容易,可是改變比特幣開發的焦點就難了。你必須說服貢獻者:“你們的時間最好能花在我這個不一樣的項目上!”
你也很難說服許多人,讓他們相信,用戶們并不盲目跟從BitcoinCoire作出的各種變化。這可能是一個自我強化的信念,因為如果用戶不通過保持對選項的了解來參與共識的過程,他們就會把部分權力讓給開發人員。不過,2017年,用戶的權力已經通過“用戶激活軟分叉”運動得到了行使。當時,有個比特幣的匿名開發者,用假名“shaolinfry”提出BIP148,強迫礦工在8月1日前后要出現“區塊高度”時激活“隔離見證”功能。但是,BIP148的爭議實在太大,比特幣核心無法采用。于是,shaolinfry將核心分叉,發行了軟件BitcoinUASF。這一軟件部署獲得了非凡的“牽引力”,而且似乎創造了足夠的壓力,能讓礦工采用BIP91,從而在BIP148截止日期之前激活分叉。我個人認為,最好的BitcoinCore貢獻者,是那些踐行了極端所有權的人。舉個典型例子:下圖中這個特定的共識bug所在的代碼,雖然并不是貢獻者JohnNewbery自己寫出來的,但他認為自己沒有認真檢查,而讓這bug代碼合并了;事后在寫測試案例的時候,也沒有查出來,所以自己要承擔責任。
MetisDAO 基金會宣布啟動“Metis Marathon”建設者激勵計劃:7月28日消息,MetisDAO 基金會宣布“Metis Marathon”啟動為期 26 周的建設者激勵計劃。該計劃的首位參賽者是 Sushiswap,未來幾周內會宣布另兩個參與協議。除此外,其它參與的小型、中型和大型協議都可能受到獎勵,并有機會申請贈款和資助。
MetisDAO 表示,此舉旨在激勵 Metis 生態系統的發展,除了引入 一些 TVL 頭部的 DeFi 協議外 ,還將通過直接激勵 Metis 中具有創新性的原生 DApp 來拓展生態。[2022/7/28 2:43:10]
我們都是中本聰。為BitcoinCore做出貢獻
雖然有足夠的資源可以幫助那些有抱負的開發者,但是邁出第一步為Core做貢獻,依然可能讓人望而生畏。此處可以找到貢獻的指導方針:https://bitcoincore.org/en/faq/contributing-code/但我更推薦從JimmySong寫的簡易入門開始:https://medium.com/m/global-identity?redirectUrl=https%3A%2F%2Fbitcointechtalk.com%2Fa-gentle-introduction-to-bitcoin-core-development-fdc95eaee6b8此外,核心開發者EricLombrozo也寫了一篇文章,方便人們理解核心代碼倉庫里的種種變化:https://medium.com/@elombrozo/the-bitcoin-core-merge-process-74687a09d81d還有一個特殊案例可能對你有用:在撰寫本文時,為了審計GitHub提交歷史的完整性,我在我的機器上運行verify-commit.py腳本;這個運行過程,正好遇到了一些困難。為了不讓以后的開發者遇到同樣難題,我開啟了一個“pull請求”用來改進存檔過程。為了防止未來的開發人員不得不處理這些問題,我打開了一個pull請求來改進文檔。從PR歷史中可以看出,4個不同的開發人員就如何改進我的pull請求提出了建議。這包括使用不同的wiki標記,簡化的bash命令,以及可以在verify-commit.py腳本中使用的新參數。我同意所有的建議都是有道理的,所以我把它們合并到我的代碼中,并推送了一個更新版的pull請求。此時,參與審查的開發人員承認,他們發現PR是可以接受的,維護人員MarcoFalke將其標記為包含在0.18版本中。幾天過去了,開發人員沒有異議,代碼被維護人員SamuelDobson合并到了Core軟件當中。誰在控制比特幣?
多年來我反復說過,想要完全理解作為“體系”的比特幣,幾乎是不可能的。比特幣協議的定義,就好比語言的定義一樣。語言是人類自發產生的,對于詞義的共識,是有機的、生活中的共識,而不是讓詞典決定意義。詞典的作用是描述一種語言的客觀現象,而不是給語言下定義;同樣,比特幣的部署,也是用代碼描述比特幣的語言。不可能強迫任何人同意某詞典對某詞的定義,也不可能強迫任何人同意某特定比特幣部署里的代碼。言語不受民主體制的管轄,比特幣也不受民主體制的管轄。你可能會聽說人們提到一些概念,如礦工、節點、開發者、用戶投票等等;卻沒有這樣的機制,可以促成任何種類的“多數人投票”,強迫少數異議人士接受那些自己反對的變化。比特幣是一種無政府主義,沒有統治者,但依然有著規矩。規矩由網絡中每一個參與者定義,由每一個參與者強制執行。比特幣協議本身的各種變化,一般通過“比特幣改進提議”的流程實現。不過,哪怕這個提議,也只是一種推薦的操作方式,并不能強迫任何人遵守。只是一種相對規范的途徑,想要通過同行評審,構建共識的辦法來引導實現一種變化。我知道,要解釋這一切很困難,要明白也很困難。但是,這就是比特幣“抗脆弱性”的關鍵方面。如果有了“單點控制”,也就成了“單點故障”。如果那些有權有勢的機構受到比特幣帶來的威脅,他們就會充分利用這一點對比特幣進行攻擊。最終,每一個節點運營商都會自我治理,方法就是確保網絡中其他所有人都不會破壞自己認可的規矩。這種安全模型,就是比特幣自下而上治理的基礎。沒有人控制比特幣。也沒有人控制比特幣開發的焦點。
Tags:比特幣COIBITCOIN閃電比特幣跟閃電網絡是一樣嗎LoyalCoinbitflyer官方下載appDomain Coin
編者按:本文來自區塊律動BlockBeats,作者:區塊律動BlockBeats0x28,星球日報經授權發布.
1900/1/1 0:00:00編者按:本文來自藍狐筆記,本文作者:TheElementGroup,文章來源:medium.com,翻譯:Sien,Odaily星球日報經授權轉載.
1900/1/1 0:00:00時間過得真快,距離芝加哥期權交易所(CBOE)推出XBT期貨合約、以及芝加哥商品交易所推出比特幣衍生品已經過去整整一年時間了.
1900/1/1 0:00:00本文來自:白話區塊鏈,作者:Peter,星球日報經授權轉發。今天來談談以太坊背后的男人——VitalikButerin,江湖上人稱V神,小神童.
1900/1/1 0:00:0011月23日,在由上海市科學技術委員會、上海市科學技術協會、上海市楊浦區人民政府指導,上海市科技創業中心、上海市楊浦區科學技術委員會、國家技術轉移東部中心主辦的上海區塊鏈技術協會啟動儀式暨首屆長.
1900/1/1 0:00:00本文來自:碳鏈價值,作者:自由斗士RichardHeart;MIT畢業生、BCH支持者RhettCreighton,翻譯:FloodedStrand,星球日報經授權轉發.
1900/1/1 0:00:00