📜 [專欄新文章] 區塊鏈權益證明(PoS)的去中心化難題:主觀性與遠程攻擊
✍️ Ping Chen
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
相較於工作量證明(PoW)的客觀、直覺、易於驗證,權益證明因為仰賴過去的狀態做為共識基礎,存在「正確性」環環相扣的問題。
工作量證明 vs 權益證明
工作量證明做為比特幣發明之初就存在的共識機制,最大的優點就是簡單:礦工需要算一百兆次,驗證只需要驗算正確的那一次,易守難攻,但缺點也很明顯,挖礦的無意義運算很浪費資源。
權益證明捨棄低效率的挖礦猜數字遊戲,改用投票表決的方式產生共識,任何持幣超過一定數量的人都可以參與投票,票多者勝。
易驗證的安全性沈澱
相較於權益證明,驗證需要有「過去每個人的持幣量」的先備知識,工作量證明簡單粗暴,你不需要知道幣的分佈、全局狀態、過去的任何一筆交易,只要看區塊頭就知道合法,所以如果你有天不小心在路邊撿到兩條鏈,沒什麼好猶豫的,更長、累積工作量更多的鏈就是對。
基於物理法則,工作量證明區塊鏈上的交易,在被礦工打包後,不只安全,隨著未來有更多區塊接在後面,這個區塊被回溯的機率就越來越低,也就是交易「沈澱」到更深、更安全的地方。所以我們常看到交易所和商家會有「n 個區塊」的確認等待設計,就是要等款項變得更像是不會跑掉。
區塊鏈的最終性
權益證明區塊鏈不存在安全沈澱的效應,因為「區塊 X 的正確性」仰賴「區塊 X-1 的正確性」,又仰賴 X-2, X-3, …,所以如果你對整條區塊鏈的狀態(誰有多少幣)一無所知,那往前給你再多證據也未必能說服你,畢竟偽造區塊,也就是狀態轉移,的成本非常非常低。
然而,權益證明的支持者會告訴你,我們有最終性(finality)這個工作量證明沒有的超讚的東西。也就是說,如果你確信區塊 X-1 是對的,那當區塊 X 產生的瞬間,它對你而言就永遠是對的,根本不需要等什麼沈澱。
理由很簡單,因為工作量證明的潛在礦工是未知、是無限多的,很難知道現在世界上有多少能挖礦的設備,這甚至超越時間跨度,也就是未來的算力也可能回來挖現在的區塊,所以僅管越來越安全,卻永遠不可能確信 100% 不被反轉。如果有外星人掏出一台異次元電腦,瞬間做了超越全地球電腦運算力的工作量,那區塊鏈上的任何交易,都是有可能被逆轉的。
這時候,權益證明的有限礦工就顯得很重要了。對於「區塊 X 是否正確」問題,有投票權的母體僅是「所有在區塊 X-1 有持幣的人」,而當這群人當中的 2/3 已經投票(且保證不會跑票),那區塊 X 就永遠地敲定了。
主觀性
回到「你有天不小心在路邊撿到兩條鏈」的情境,這對專業節點/礦工來說當然不是問題,他們隨時都在同步新區塊,總是能根據共識規則選邊站。但業餘使用者難免會離線一段很長的時間再回來。有天當你連上網,卻發現有兩組人傳給你兩條完全不同的鏈,在權益證明的情境下,你是沒辦法馬上知道該選哪一邊的,甚至可以說,即便你補足了離線期間的每個區塊,這兩條鏈誰好誰壞仍然是憑感覺,看你相信誰,也就是「主觀」的。
要克服主觀性對業餘節點近用區塊鏈的威脅,唯一的辦法是每個區塊產出時都立刻達到最終性(不可分叉),但這等同於要求「每一個礦工」都「永遠活躍在線上」且「知道狀態和每一筆交易」並「隨時投票表態」,這樣的標準太嚴苛,很容易讓新區塊難產,甚至整個鏈停滯,實務上不可行。
遠程攻擊
共識演算法的設計中,最重要的指標就是「抗惡意行為」的程度。工作量證明的術語「51% 攻擊」指的是:這個區塊鏈能容忍一些壞人存在,只要他們掌握的算力不超過整個系統的一半就沒關係。
對於攻擊發起者,我們只能假設他不要太強;對於其他誠實中立(共識系統中不存在善良的概念)的參與者,我們則希望透過經濟機制的設計,引導他們做出促進共識收斂的行為。
在工作量證明系統分叉時,礦工選擇在較短鏈上挖礦是不划算的,因為挖礦獎勵可能會消失,平白浪費算力。而權益證明的礦工因為不用真的用設備耗很多電做運算,同時在兩個分叉上押寶理論上是可行的,但如果每個礦工都這樣做,分叉就永遠不會收斂。為了強迫礦工選擇,我們會懲罰在同個區塊高度的不同區塊都投票的人,減少挖礦獎勵,甚至沒收資金。
可以說,權益證明在處理分叉上更強而有力。工作量證明的礦工如果兩邊挖礦,頂多沒賺到錢;權益證明礦工兩邊挖的話非但不會賺,甚至會損失本金,嚇阻力顯然大上許多。但是當攻擊目標是遙遠的過去時,權益證明卻比工作量證明脆弱,甚至可以說是束手無策。
如前所述,工作量證明的區塊鏈擁有不斷沈澱的安全性,惡意攻擊最近的區塊或許可行,但要惡意攻擊一年前的區塊,必須要重做一年份的工作量,成本超級高,也很容易被發現。相較之下,權益證明區塊鏈的記帳不需要物理性的消耗設備和電力,攻擊一分鐘的區塊和一年前的區塊的成本相差無幾。
想像某人在一年前秘密地掌握了大多數的幣(投票權),並且在一年間表現正常,從不作惡,然後慢慢的賣幣退場。但就在完全脫手後,他忽然從一年前那個他佔有過半投票權的時間點,瞬間偽造了整年份的歷史,一個完全由他一手偽造的分叉鏈。對不知情的節點而言,這條鏈完全合法,對其他節點而言,就算想懲罰他(他確實有重複投票),他在主鏈上也已經沒有幣可以被罰了,這就是所謂的遠程攻擊(long range attack)。
看啊,是ICBM! Photo by Maciej Ruminkiewicz on Unsplash
緩解主觀性與遠程攻擊的方案
對工作量證明鏈而言,礦工和持幣者是脫鉤的,權益證明則否。權益證明的問題,基本上就是共識機制和區塊鏈狀態高度耦合的後遺症,衍生出的包括共識有效性、活性、輕節點實作等等的問題得靠額外的機制處理。
鏈外共識
一種簡單有效的方法是定期發布區塊鏈的里程碑(milestone),這種方法對工作量證明和權益證明都適用。比方說,聖人明君,偉大全能的以太坊創辦人 Vitalik,可以固定在他的 Twitter 上發布整數區塊的 block hash,告訴大家第九百萬塊就是 0x388f34dd9....d8e142960e3不會錯,甚至直接更新節點實作,把里程碑寫死在程式碼裡面,就可以有效引導新加入的節點不會走到壞人的鏈上,可以稱作 PoS + PoR (reputation) 的共識機制。
合併工作量證明
另一種方法是合併使用兩種共識機制,比方說原本 2018 要上線但忽然被整組砍掉的 Casper FFG,就計畫要在原有的 ETH 1.0 鏈上疊加一層由智慧合約實作的權益證明。也就是出塊仍然由原本的礦工負責,再讓持幣者投票做雙重驗證,礦工不再只跟隨最長鏈,而是要同時考慮這個鏈是否違反投票結果。既可以享有最終性,也能累積工作量避免遠程攻擊。
不過後來以太坊開發者的大頭們決定放棄上這版,改直接推出一步到位的 PoS + sharding 的真・ETH 2.0。在這個版本中預計也有合併工作量證明,但不是本來的雙軌制,而是用一種叫 VDF 的特殊演算法 + 專用硬體,同時提供工作量和重要的鏈上隨機數產生器(RNG)。
VDF (verifiable delay function) 和本來的挖礦有些許不同,它雖然也有計算困難驗證容易的特性,但並不能靠堆疊礦機來平行加速,而是要用由某幾家硬體廠商聯合開發的可信機器,保證計算的耗時總是在某個範圍內,從而提供近似工作量證明的客觀性和安全沈澱。
中心化
這題會考,旁邊畫五顆星星
回到權益證明高度耦合區塊鏈狀態的問題,這本質上是「自己證明自己對」的困境。實務上為了能運作,為了避免來自一年前礦工的超時空打擊,勢必得比工作量證明多出更多需要信任的環節:要相信節點實作給的信任根(像是 genesis block)、要相信別的節點提供的狀態、要相信驗證者和出塊礦工不會作惡或聯合審查。
實務上,為了確保可用性和活性,接受一些程度不一的中心化妥協方案在所難免,差別只在於你更願意相信社群大神的信譽還是硬體廠商不會偷做改良設備的職業操守。但話說回來,工作量證明也有自己的中心化議題,大礦池、ASIC 廠商壟斷等等,不會有系統能保證完全的去中心化,只能在已知可用的幾個方案裡面,盡量挑選比較好的,穩定中求進步了。
最近大手筆用了好多錢註冊更短的 ENS
ping.eth
歡迎順手抖內幫補血😢
區塊鏈權益證明(PoS)的去中心化難題:主觀性與遠程攻擊 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有1部Youtube影片,追蹤數超過13萬的網紅暗網仔出街,也在其Youtube影片中提到,#暗網仔返香港 會員: https://www.youtube.com/channel/UC8vabPSRIBpwSJEMAPCnzVQ/join Instagram: https://www.instagram.com/dw_kid12/ Facebook: https://www.face...
「pow() function」的推薦目錄:
pow() function 在 Taipei Ethereum Meetup Facebook 的精選貼文
📜 [專欄新文章] ELI5! 區塊鏈到底在幹嘛?
✍️ Juin Chiu
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
用生活化的例子輕鬆學會區塊鏈技術的重要概念
前言
我們熟知的世界正在慢慢地被區塊鏈技術瓦解與重建。不論背景,有愈來愈多人想對區塊鏈技術一探究竟,或許更進一步成為從業者、貢獻者或佈道者。
不幸的是,初學者若想學習區塊鏈技術,第一個問題可能會是高學習門檻,這是因為目前在各種主流平台上所流傳的區塊鏈知識或資源,都不免會大量使用艱澀的術語,長久以來便塑造出區塊鏈高大上的距離感,好似區塊鏈是只專屬於一小群駭客或者專業人士才能理解的技術。然而這是不準確的,事實上,區塊鏈技術中許多概念都能用一般常識理解,頂多只需要國小數學。
本文中,筆者將化繁為簡,試著把區塊鏈技術中的每個元素都使用生活化的例子比擬,讓區塊鏈愛好者與初學者不需用到密碼學/經濟學/資訊科學,也能領會區塊鏈技術的精髓之處。
本文將提及的概念如下:
什麼是帳本?
什麼是交易?
為什麼需要區塊?
有哪些共識機制?
區塊鏈安全嗎?
智能合約如何運作?
以下正文開始:
區塊鏈:一個公平的記錄系統
簡單來說,區塊鏈技術旨在打造一個去中心化的(Decentralized)狀態紀錄系統,更準確一點:區塊鏈技術旨在打造是一個追求真正「公平」的系統。
區塊鏈實現公平的關鍵在於:它完全仰賴自然法則運作,只透過一系列精細的規則就能保證系統的正確,這打破了人類社會一直以來的仰賴的中心化系統,使促成不平等的最大因素不復存在。
區塊鏈技術可以打造出具世界規模的去中心化運算平台,由數千甚至數萬個參與者共同維護狀態並提供計算資源。如果這個運算平台是應用在貨幣與資產的場景中,那麼這個平台可被稱為分散式帳本。
在接下來的段落,筆者將用一個例子展示一個極度精簡、只用紙跟筆的就可以運作的分散式帳本。在這個例子中,一群學生可以使用區塊鏈技術發行屬於他們自己的虛擬幣:「考卷幣」(Exam Paper Coin, EPC)。
考卷幣:使用區塊鏈技術發行的虛擬幣
考卷幣(EPC)是一種使用區塊鏈技術發行的虛擬幣,並存在於分散式帳本中。它的用途是為考卷加分,這將會吸引想考高分或者擔心被當的人學生持有。為什麼 EPC 只能被稱作虛擬幣,而不被稱作密碼貨幣?這是因為 EPC 的發行不會使用任何有關密碼學的技術,因此 EPC 嚴格來說不是密碼貨幣。
在分散式帳本被創建之初,沒有任何人擁有 EPC ,那麼 EPC 是怎麼「鑄造」與分配的?至少可以肯定的是,EPC 不能憑空產生,否則所有參與者就能不斷製造 EPC,使分散式帳本崩潰。事實上,EPC 的價值奠基於參與者的「付出」。
分散式帳本中最重要的角色非記帳者莫屬。每當記帳者成功完成工作,它便可以獲得固定數量的 EPC 作為報酬。於是,分散式帳本中的 EPC 便如此逐步地被鑄造出來。將 EPC 賦予具有貢獻的記帳者除了能夠公平分配 EPC,同時也是一種激勵機制(Incentivizing Mechanism),提供參與者維護帳本的動機。
那麼每個人所具有的 EPC 是怎麼記錄在帳本中的?
帳本: EPC 都要記錄下來
帳本即為依時間順序與特定格式記錄價值的系統。在分散式帳本中,每一批紀錄都會由某一個特定的「記帳者」維護,而記帳者會以特定的規則從所有的參與者中選出,因此分散式帳本是具有多個「記帳者」的系統。
為了確保能公平選出 EPC 的所有記帳者,分散式帳本不會使用任何記帳者的個人資訊,例如姓名、電話,做為帳本上的識別。記帳者可以自由地使用假名(Pseudonym)作為帳本上唯一的識別(Identifier),或者稱為地址(Address)。所以王小庭同學可以使用 Alice 這個假名,而且如果王小庭同學喜歡的話,他也可以同時使用 Bob 這個假名。
EPC 使用如下的格式記錄每個地址幣的數量:
Alice 100 EPCBob 0 EPCCharlie 0 EPCDavid 0 EPCEva 0 EPC
多數區塊鏈稱其識別為地址(Address),其為非對稱密碼學中公鑰(Public Key)的雜湊值(Hash)。地址具有統一的格式,例如以太坊的地址為長度 160 位元的 16 進位數字。
交易:把我的 EPC 轉移給別人
EPC 是可以轉移的,現在 Alice 可以將它持有的 100 EPC 中的 60 EPC 轉移給 Bob,以幫助 Bob 在下一次考試中免於被當。這樣的轉幣紀錄稱為交易(Transaction, Tx),可以如下表示:
Tx1
60 EPC, from [Alice] to [Bob]
而這筆交易會由 Alice 以上述格式記在紙條上,以 Tx1 表示。
簽章:讓參與者的所有動作都不可抵賴
EPC 的每個參與者的每個行為,例如交易,都必須附帶簽章(Signature),證明「這個動作確實是由我本人發起的」,簽署者不可抵賴,任何沒有附帶簽名的動作都是不被承認的。一個附帶簽名的交易紙條會像這樣:
Tx1
60 EPC, from [Alice] to [Bob], ALICE
簽章分為簽署(Sign)及驗證(Verify)兩個動作。驗證即是確認簽章是否確實是由行為發起者所簽署。在這個例子中,僅用一個簡單的驗證:若簽章與識別相符,則驗證成功。例如 Tx1 中,簽名 ALICE 確實與交易發起者 Alice 相符,因此驗證成功。
簽章就是區塊鏈的數位簽章(Digital Signature),其使用私鑰(Private Key)簽署,公鑰(Public Key)驗證,非常難以偽造。
訊息的散佈:怎麼讓所有參與者都收到訊息?
由於 Tx1 是由 Alice 發起的,因此 Alice 將於它自己的帳本記下這筆交易,接著 Alice 必須把這筆交易的內容也轉達所有的參與者,讓所有參與者皆具有所有的交易內容。
EPC 的參與者們不以口語,而是以傳紙條的方式互相交換訊息。紙條要如何有效率地傳播訊息給所有在教室中的參與者呢?可以使用「一傳十、十傳百」的策略。也就是:一次傳 10 張紙條給自己周圍的參與者,參與者收到後再抄寫 10 次後傳給周圍尚未收到該紀錄的其他參與者,逐步將訊息擴散致所有參與者。
這樣的傳播策略正如同流言被散佈的方式,因此也被稱為流言散佈協定(Gossip Protocol)。紙條傳播的網路就是對等網路(Peer-to-peer Network),紙條就是對等網路的封包(Packet)。關於對等網路的介紹,可以參考筆者日前的撰文:
隱私、區塊鏈與洋蔥路由
區塊:記錄一段時間內的交易順序
經過一段時間之後,每個 EPC 參與者手上都會有許多來自別的參與者的紙條,每張紙條都記載著不同的交易。在理想狀況下,如果所有參與者收到紙條的順序都相同,且每個參與者都收到了所有紙條,則所有參與者的帳本上的狀態,也就是餘額,都會相同。然而,若採用上述的訊息散佈策略,會發生兩種情況:每個參與者收到紙條的順序會不同,或者某些紙條可能會被遺漏。這些情況都會讓每個參與者的帳本產生差異,使帳本不可靠。而一個不可靠的帳本,不能作為貨幣發行的工具。
有沒有辦法能使所有 EPC 參與者用相同的交易順序記帳呢?這便是區塊鏈技術的奧秘之處。
為此,我們需要使用一個精心設計的結構:區塊(Block)。每個參與者皆會將一段時間內收到的交易紙條的編號,依照自己的順序寫在另一張紙條上,這張紙條就是區塊紙條,簡稱區塊,產出區塊的參與者則稱為區塊生產者。收到區塊紙條的其他參與者便會知道區塊生產者在這段時間內的交易順序。
為了要讓所有帳本都具有一致的狀態,EPC 的所有參與者必須要選出其中一個區塊作為所有參與者的共識(Consensus)。所有參與者都必須要遵照共識區塊的交易順序來更新自己的帳本,而這個區塊生產者就是記帳者。由於記帳者可以獲得報酬,因此在利益的驅使下,所有參與者都會努力生產區塊以爭取記帳權。
值得注意的是,每個區塊當中都會記錄前一個已達成共識的區塊的編號。例如接下來的範例,Bk15 的前一個已達成共識的區塊為 Bk3:
Bk15
Last Block: Bk3
Height: 15
Transactions:- Tx1- Tx5- Tx4- Tx10- Tx7- Tx13
Nonce: 1
Signature: CHARLIE
由於每個新的共識區塊都會指向前一個共識區塊,如此便會形成一條長鏈般的結構,已形成共識的區塊接成一條鏈,這就是區塊鏈(Blockchain)名稱的由來。
而當 EPC 參與者在收取共識的區塊後,將按照共識依序為每個交易內容進行帳本餘額的轉換。如此,所有的帳本都將具有一致的狀態。
依據特定輸入及轉換函數(Transition Function)執行狀態更新的系統,稱為狀態機複製(State Machine Replication)
摘要:濃縮紙條上的訊息
在介紹達成共識的方法前,筆者要先來介紹一個樸實無華但重要的概念:摘要(Digest),其顧名思義就是一段內容經過消化的產物。假設有一種摘要產生器,這個機器可以放入一張紙條,然後透過 3 個步驟計算出紙條的摘要。
摘要產生器將記載訊息的紙條切成一條一條固定寬度的細長條狀紙帶,如下圖:
2. 將這些紙帶依照順序接成一個長條紙帶。紙帶上有字跡的黑色部分與沒字跡的白色部分會出現不規則相間,測量每個黑色區塊之間相鄰的距離,如下圖:
3. 每段距離的數字相乘後的數字就是這個紙條的摘要(Digest)。
每個 EPC 參與者都會有一台摘要產生器,而它需要上緊發條才能開始工作,且每計算完一張紙條便須重新上一次發條。
摘要的計算雖然簡單,卻具有一些很有用的特性:
首先,摘要會隨著紙條內容的變動而更動。只要更動了任何一點紙條內容,例如區塊的交易順序,或者流水號(Nonce),都會使摘要改變。因此一個附上摘要的紙條,可以讓收到紙條的人在收到後再自行計算一次摘要並比對兩者,以驗證紙條的內容是否被修改過。因此,摘要是可驗證的(Verifiable)。
若想在不更動摘要的情況下同時變動紙條內容,只能不斷嘗試用不同內容產生摘要,直到發生碰撞(Collision) — 意即兩個不同內容的紙條出現相同摘要。
其次,摘要也是單向的:一個紙條很容易產出摘要,但摘要很難還原出原本的紙條內容。這也代表摘要是隨機且難以預測的,因此摘要可以作為一種亂數(Random Number)來源。
正式的區塊鏈使用更難預測且更不易碰撞的的密碼雜湊函數(Cryptograpgic Hash Function)產生訊息摘要。
理解關於區塊鏈技術的基本要件後,接下來就來看看區塊鏈技術的精妙之處:共識機制。
共識機制:如何達成共識?
在區塊鏈技術中,大致上有兩種方式可以產生共識:抽彩(Lottery)或表決(Vote),它們各自有不同特性,每一種分散式帳本都會使用其中之一作為共識機制。
抽彩
在抽彩機制中,唯有摘要小於門檻值的「合法」區塊才會被所有參與者收受。然而,區塊生產者無法預測摘要,且可驗證的摘要使區塊生產者難以作弊。因此若想生產數字小於門檻值的摘要,區塊生產者必須不斷改動區塊內容,例如流水號或者交易順序,直到找到摘要小於門檻值的區塊,就像抽彩一樣。只有合法的區塊才會被區塊生產者散佈給其他 EPC 參與者。
在這樣的規則下,可能會同時出現多個合法區塊。還記得區塊鏈中「鏈」的部分嗎?當收受多個低於門檻的區塊時,該選哪個區塊作為上一個區塊呢?這裡我們可以用一些簡單的規則來做抉擇:選擇合法區塊中高度(Height)最高的區塊,若高度一樣則選擇摘要數字較低的區塊。
區塊紙條的摘要就是正式區塊鏈中的區塊雜湊值。在正式的區塊鏈中,門檻值愈低,困難度(Difficulty)也愈高。區塊的選擇規則也稱為分岔選擇規則(Fork Choice Rule),使用可驗證的亂數作為共識的做法又稱為中本共識(Nakamoto Consensus)。
表決
有別於複雜的抽彩,表決機制相當直觀:所有參與者針對某個預先選出的領袖(Leader)的提案(Proposal),也就是區塊,進行投票。領袖是怎麼選出的?一個直覺的做法是按照假名的順序,按照 Alice / Bob / Charlie 的順序,所有參與者輪流擔任領袖。
所有參與者在收到提案後,可以選擇同意或反對這個區塊的內容,若同意的話,則將自己對提案的同意票記在紙條上,並將這個投票紙條散佈給所有其他參與者。若多數的參與者同意了提案,則所有參與者皆須認定該提案為共識。
然而,表決機制雖然直觀,卻不如抽彩具有可驗證性,參與者若想作弊則相對容易:例如,參與者可以重複投票,或者串通其他參與者一起不投票,以破壞帳本;另一方面,表決比抽彩來得有效率,因其不需要所有參與者都費功去製造可能將不被收受的區塊。
拜占庭錯誤(Byzantine Fault)特指這些不在預期內的行為,表決機制事實上也就是拜占庭容錯(Byzantine-fault-tolerant, BFT)演算法。PBFT 家族的協定是目前拜占庭容錯演算法的主流,然而其至多只能容忍不超過參與者總數一半的拜占庭錯誤。若想了解更多 PBFT 的細節,可以參考筆者日前的撰文:
若想搞懂區塊鏈就不能忽視的經典:PBFT
女巫:如何避免帳本被單一個體掌控?
上文提到:為了保證公平的記帳權,帳本上的識別都是假名,如上文提及,Alice 跟 Bob 實際上都是由同一個參與者王小庭所控制,其他參與者不僅難以得知,而且王小庭喜歡的話,他愛用幾個假名就用幾個假名 — 掌控多個假名的王小庭就成為了「女巫」(Sybil)。
不論是採取何種共識機制,女巫的存在都會破壞分散式帳本的安全性:
在抽彩機制中,如果多數的參與者皆由女巫控制,則女巫有很大的機會可以無視規則,不需抽彩便竄改帳本。
在表決機制中,如果由女巫控制的參與者可以集體進行不在預期內的行為,例如重複投票或者不投票。
因此,抵抗女巫對於分散式帳本的安全至關重要。對此,一個直覺的思路是:讓每個假名的行為都必須付出有限的資源,例如錢跟力。因此有兩種方式可以抵抗女巫:要嘛出錢,要嘛出力。
出力:在抽彩機制中,每個合法區塊的生產都必須附有低於門檻的摘要,而摘要的計算需要參與者出力不斷地重上發條。
出錢:在表決機制中,抵押一定數量 EPC 的參與者才能獲選為領袖被生產提案,且若違反規則,參與者的押金將會被沒收。
出力即是工作證明(Proof of Work, PoW);出錢即是權益證明(Proof of Stake, PoS),抵抗女巫的機制稱為抗女巫機制(Sybil-control Mechanism)。
合約:進行條件式的交易
回顧一下本文開頭所提:區塊鏈技術可以用來打造去中心化的運算平台,它可以用以記錄任何資訊,不止餘額,例如一段合約(Contract)。合約就是指一段會依據不同條件而達成不同執行結果的語句。例如:
CheckAndPay
給定 A、B 兩個假名,若 A 的餘額大於/等於 30 EPC,則 A 支付 20 EPC 給 B ,否則 A 不支付任何 EPC。
這個合約就可以被記錄在帳本中:
Alice 100 EPCBob 0 EPCCharlie 0 EPCDavid 0 EPCEva 0 EPCCheckAndPay "給定 A、B 兩個假名,若 A 的餘額大於/等於 30 EPC,則 A 支付 20 EPC 給 B ,否則 A 不支付任何 EPC。"
之後 Alice 就可以發起像這樣的交易:
Tx 99
CheckAndPay, {[Alice], [Bob]}, ALICE
如此,若 Alice 的 EPC 餘額不足 30 EPC 則不會支付 Bob。
觸發合約的 Tx 99 ,它的執行過程比較煩瑣:執行 Tx 99 的參與者首先會從帳本中尋找 CheckAndPay 的合約內容,並從 Tx 99 中取出合約需要的輸入:A 與 B,接著參與者再解讀合約的語句,依照條件進行帳本的狀態轉換。其中,為了使參與者能解讀合約,合約需用所有參與者皆能看懂的語言書寫。
合約又稱智能合約(Smart Contract)。正式的區塊鏈使用虛擬機(Virtual Machine)來解讀與執行合約。事實上,智能合約能做的事情非常多,這使具有智能合約功能的分散式帳本得以成為去中心化的運算平台,例如以太坊(Ethereum)。
總結: 分散式帳本究竟是一個怎樣的系統?
如果以上環節皆運作順利,那麼便能成功只用紙筆便發行了專由學生使用的貨幣。最後再次強調一次:這是一個為了便於使初學者掌握核心觀念而極度簡化的例子。正式運行的區塊鏈,例如以太坊,其實際運作遠遠複雜得多。
還有一些比較進階的概念,雖然礙於篇幅未在此文章提及,但部分主題筆者曾撰文介紹:
可擴展性(Scalability):第二層方案(Layer 2)與分片(Sharding)
隱私(Privacy)與匿名(Anonymity)
共識機制的安全性(Safety)與活躍性(Liveness)
最後,如果日後朋友/家人問起「什麼是區塊鏈」時,我想你會知道如何解釋了:)
ELI5! 區塊鏈到底在幹嘛? was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
pow() function 在 TheChency Facebook 的最讚貼文
pow() function 在 暗網仔出街 Youtube 的最佳貼文
#暗網仔返香港
會員: https://www.youtube.com/channel/UC8vabPSRIBpwSJEMAPCnzVQ/join
Instagram: https://www.instagram.com/dw_kid12/
Facebook: https://www.facebook.com/deepwebkid/?modal=admin_todo_tour
訂閱: https://www.youtube.com/channel/UCKC6E5s6CMT5sVBInKBbPDQ?sub_confirmation=1
暗網? 陰謀論?: https://www.youtube.com/watch?v=W5RVLpFkAKQ&list=PLGzW5EwcApFuqKoowMHS9v8W34vIPyrtk
鬼故事: https://www.youtube.com/watch?v=H4rmkFI1ik0&list=PLglqLngY6gv5BCwaoP-q6DOwUmw1lIusF
我的100K成長故事: https://www.youtube.com/watch?v=Kdhtp6A6YJE
破解Kate yup事件是假的! 不是綁架! 不要被騙! (Facebook上的證據): https://www.youtube.com/watch?v=2NJVt56ORWo&t=2s
曼德拉效應: https://www.youtube.com/watch?v=OMutzRIE_uE&list=PLglqLngY6gv5BCwaoP-q6DOwUmw1lIusF&index=17&t=5s
深刻個人經歷: https://www.youtube.com/watch?v=4Roa6Vs1qWc&list=PLglqLngY6gv4mm_doLUUJx4zq5KvLJ2VE
爲何是亞洲人才會載口罩 | 口罩的歴史
今天有好多問題要解答.
為何我會在 ‘暗網仔出街’ 而不是 暗網仔2.0出片呢? 因為2.0下一條影片會有sponsor, 所以他們在做最後的部分.
如果大家想幫助我的 #暗網仔返香港’ 大行動等我書展可以返來香港見大家, 請之後去看那條2.0和我們今天這條影片.
多個外國網上文章標題是: “why people in Asian countries wear masks...” “...why Asians wear surgical masks in public” 作為一個北美州生活20多年的我, 經歷過2003年Sars後看到外國人/亞洲人這一點的分別.
先要了解口罩有3 大種類.
最有效是這種respirator口罩, 通常是前線醫護人員使用的.
Surgical mask: 一種20世紀中期生產給手術室醫生防止他們感染病人.
Cloth masks- 這種口罩是19世紀末醫護人員常用. 現在還有第三世界國家會用, 但不是太有效.
今天focus去講第二種surgical mask. 載口罩能對實物作出保護, 阻止病毒粒子進入呼吸道, 亦保護嘴角邊空氣流出.
1897年法國外科醫生Paul Berger巴黎si手術是第一次採用surgical mask的記錄.
“載口罩” 的習慣亞洲的起點居功於日本1918至1920年對抗來自歐洲的spanish flu. 當年該病毒非常利害. 全球死亡率高達2000萬至4000萬人. 亞洲最cham是印度, 沒了國家總人口的5%.
1923年 ‘関東大地震’ 1950年代第二次世界大戰後日本industrialization令到 ‘口罩’ 這樣東西變成文化一部份. 冬天時日本人也會載口罩.
其實也不難想像的. 日本是很講禮節的一個國家. 平時病了也會選擇載口罩.
近年日本用戶一年花在口罩的錢超過2億美元.
近年日本年青人也把口罩變成潮流, 台灣跟這個風也佷強大. 中國fashion week ‘smog couture’ 更用了最大型facemask走fashion show.
所以 ‘口罩’ 在亞裔地區變成日常用品只證明日本真是帶領潮流的地方嗎?
其實另一説法是根深tuy goo於中國醫suet.
中醫所謂的 ‘外邪’ 分開6淫的: 風, 寒, 暑, 濕, 燥, 熱. 而 ‘風邪’ 是六淫之首. 頭暈, 汗出, 惡風, 等等gam yuek我們身體的症狀也是因 ‘風’ 已起的.
而韓國一個民間傳說是開著風sin睡覺會殺死人的. 所以可知道 ‘風’ 被視為多麼危險. 而用口罩保護自己口鼻不准風去進入傷害自己.
就是因為這樣吧!
Finish影片之前我想分享一個我看到美國財經網Business insider説載口罩未別是最好方法.
“Surgical masks are typically more useful to people who are already sick because it prevents them from spreading an infection to others”
“Small infection droplets cannot be filtered by the surgical masks” Hyo-Jick Choi, assistant to professor of chemical and materials engineering at the university of Alberta said.
這個很重要!
“Surgical masks do not have the function to kill the virus,” 話病毒可以在口罩上生存數小時至一星期.
“That means wearing a mask with virus particles for too long could actually put you and others at risk”
但有辨法的!
“The world health privatization prioritizes several safety measures over wearing masks, washing your hands frequently, using and discarding tissues when you sneeze or cough, and maintaining a 3-foot distance from people.”
所以這些事比載口罩更有效. 那爲什麼很多人會花很長時間排隊買口罩. 這個...會不會真的只是已變成習慣呢?
#暗網仔返香港
pow() function 在 Python pow() function | math module | mathematical functions 的必吃
In this video, learn about the pow() function of the Python math module with an example. Python Full Course (English): ... ... <看更多>