英文原作者:Silvio Micali
翻譯校對與補充講解:Future 小哥哥

當下區塊鏈是一個非常大的機會。今天,我們有很大的機會來重新啓動整個世界的金融系統。

數據網絡比以往任何時候都快:消息可以在幾分之一秒內傳遍全球,成本可以忽略不計。但是,錢根本不會快速流動。

簡單的金融交易可能需要數天才能完成清算和最終確定。

這個過程也很昂貴:每年浪費 5 萬億美元來處理所有類型的交易費用。全世界有 22 億人完全無法獲得現代金融服務:他們的交易規模太小而無法爲銀行帶來利潤。


有了正確的技術,我們就能做得更好。

區塊鏈承諾 TheBlockchain Promise。幾年來,開發人員和創新者已經預感到區塊鏈技術就是正確的技術;區塊鏈是實現更高效,更具包容性的金融體系的關鍵。

簡單來說,區塊鏈是一個公共賬本。它是以塊爲單位組織的一系列交易記錄,保證了三個基本屬性:

1.1 每個人都可以讀取每個塊,因此區塊也變成了常識。
2.2 每個人都可以在未來的區塊中記錄交易。
3.3 沒有人可以改變塊中的交易或塊的順序。

因此,不再讓中央機構保留一個隱藏的數據庫 (類似銀行一樣) -而不是讓交易通過祕密數據庫層來清除,我們可以擁有一個可供所有人閱讀的單一公共賬本,其中每個人都可以寫入,但沒有人可以改變所寫的內容。

有了這些屬性,區塊鏈的使用基本上是無限的。實際上,區塊鏈技術可以帶來更快,更便宜,更安全,無邊界的經濟。

一個明顯的「不可能三角問題」。到目前爲止,區塊鏈基本上仍然是有抱負的。也許今天區塊鏈的最大的期望性能來自着名的區塊鏈不可能三角。由於 2000 年的證據和計算區塊鏈項目到目前爲止的表現,這個不可能三角理論基本上表明現有的區塊鏈技術最多可以提供以下三個性能中的兩個:

  • 安全性
  • 可擴展性
  • 去中心化性

實際上,不可能三角中的確沒有太好的選擇。

如果沒有去中心化,我們仍然會一直處於今天已經存在的金融體系中:排他性和祕密性。

如果沒有安全保障,交易塊就會消失:交付貨物或服務的人可能會發現收到的貨物和服務的付款已經消失 ; 債務可能會被刪除 ; 並且公共分類賬可能被對手篡改爲自己的利益。

如果沒有可擴展性,您將只能與小型網絡進行交易 ; 你無法參與全球金融體系。任何用戶都不應該考慮妥協任何這些基本屬性。

成本,速度和安全性

可以肯定的是,安全性,可擴展性和去中心化性並不是獨立變量,而是相互關聯的變量。它們共同影響對個人和機構用戶都很重要的措施:即速度,安全性和成本。

速度不夠的區塊鏈不可能有高擴展性。但是通過增加成本來保證速度並不是解決方案:操作成本太高的區塊鏈也無法擴展。實際上,如果成本由每個人承擔,那麼就很少有人會加入區塊鏈。如果成本僅限於少數幾個實體,那麼系統將過於中心化。任何中心化的系統本質上都是不安全的,因爲更少的目標比數百萬個目標更容易攻擊。

  • 一個好消息。幸運的是,這個不可能三角問題只是對過去的描述,也是對難以一起實現所有三個屬性的建議。 Algorand 很高興能夠建立一個能夠同時提供這三種屬性的區塊鏈。
  • 區塊鏈挑戰。區塊鏈有兩種不同的需求:

1.1. 首先是使區塊鏈防篡改。這種需求已通過密碼學中最簡單和最古老的原語之一解決:單向散列函數。本質上,最新塊的散列包含在下一個塊的一部分中。所有區塊鏈都分享這種方法,所以在這方面它們都是平等的。
2.2. 第二個需求是生成新塊:如何選擇要附加到鏈的新塊。這是真正的挑戰,不同的區塊鏈有不同的方法。

一個新塊應包含一組到目前爲止未出現在區塊鏈中的有效事務。問題在於,在任何時間點,兩個用戶可能已經看到相同的塊序列,但可能看到不同的新事務。情況就是如此,因爲在分佈式賬本中,每筆交易都不會通過網絡立即傳播。通常,它從每個用戶傳輸到少數其他用戶,然後將其傳輸給其他用戶,直到該交易到達所有用戶。因此,在每個時間點,由不同用戶看到的新有效交易的集合即使在它們具有顯着重疊時也可能是不同的。

總之,用戶 U 可能認爲新塊應該是 BlockU 並且用戶 V 認爲它應該是 BlockV。那麼:誰設想的區塊 Block 應該附加到鏈上呢?

之前流行的方法及其致命缺陷:

目前已經在使用多種方法來選擇下一個塊:特別是,工作量證明 PoW,委託證明 delegated proof ofstake, 以及保證金的保證證明 bonded proof of stake。然而,所有這些方法都存在以下致命缺陷:

整個系統經濟都受到了一小部分個體的擺佈。

這個缺陷是致命的,因爲它同時涉及安全行和去中心化性。讓整個經濟體的命運受到經濟體中一小部分的支配是一顆定時炸彈。

可以肯定的是,如果這些成員行爲不端,他們會降低經濟中的所有資產,包括他們的資產。但是,如果他們自己的資產只佔整個經濟體的一小部分,那麼他們也可能很容易彌補他們的損失,增加一些利潤以獲得良好的衡量標準,並對其他所有人造成巨大的損害。經濟中不應該有一小部分能夠控制整個經濟生態體系。

讓我解釋一下之前這些方法是如何產生這種缺陷的:

工作量證明 Proof-of-Work:

第一種方法是工作量證明 PoW,由 Nakamoto 用於比特幣並由許多其他區塊鏈繼承而着名。在這種方法中,用戶在很高的層次上競相解決一個非常複雜的加密難題。解決這個難題的第一個有權將下一個塊附加到鏈。工作證明存在幾個缺陷:

第一個缺陷:PoW 不能擴展。工作證明非常緩慢。比特幣的加密難題非常難以保證每 10 分鐘就找到一個解決方案,無論有多少礦工嘗試解決加密拼圖。我們可以理解昂貴和快速,但昂貴和緩慢很難理解。世界是一個大的地方,每 10 分鐘就有一塊交易是不夠的。

第二個缺陷:PoW 導致中心化的結果。工作量證明 PoW 導致了巨大的權力集中。這種集中化是 PoW 既昂貴又浪費的結果。礦工執行的計算量(即用戶試圖解決加密難題)令人震驚。今天的採礦利用專用硬件的機架和機架,並消耗大量的電力。

一名礦工贏得比賽併產生新的區塊,所有其他人的努力都被浪費了。

如果沒有比特幣目前提供的補貼,在比特幣區塊鏈上發佈單筆交易的成本約爲 20 美元。如果你想使用區塊鏈進行日常交易,比如購買一塊比薩餅,或者如果你想使用它,就可以爲那些目前沒有金融系統服務的 22 億人提供金融服務。如果她試圖用她的筆記本電腦解決加密拼圖,普通用戶會賠錢。無論輸贏,她必須支付爲筆記本電腦計算所需的電力。這個電量可能不會很大,但她獲勝的可能性非常小,以至於在期望中她會賠錢。

只有專業礦工才能獲得微薄的利潤,他們已經購買了必要的資本支出來購買機架和超專業採礦設備。因此,只有他們參與塊生成。此外,礦工與採礦池合作。

今天,比特幣的區塊鏈僅由三個採礦池和以太坊的兩個採礦池控制。如果他們如此決定,或者他們被賄賂,這些挖掘池可以重寫數據庫:他們可以擦除塊或更改塊的順序。工作證明已經將在逐漸將去中心化的系統的轉變爲極其中心化的系統。

第三個缺陷:Proof-of-Work 並不安全。
正如我們所說,任何偏中心化的區塊鏈,無論是設計還是事實上,都是不安全的。但是,工作量證明還存在其他漏洞,並且特別容易受到網絡攻擊。區塊鏈最終是通信協議,並且任何這樣的協議在底層通信網絡上執行。因此,攻擊者可以攻擊協議,例如,通過發送與規定的消息不同的消息(或通信網絡本身),例如,通過干擾路由器,電纜等。

PoW 工作量證明的不確定性可能被低估了,因爲目前分析區塊鏈安全性的方法存在缺陷。此分析通常僅關注協議攻擊,忽略網絡攻擊,尤其是在工作量證明的情況下,可能是致命的。

例如,在工作證明區塊鏈中,能夠將通信網絡劃分一兩個小時的對手可以雙重花費而不受懲罰。在成功的分區攻擊中,攻擊者阻止屬於一組用戶 A 的用戶發送的消息到達單獨的集合 B 中的用戶,反之亦然。網絡分區並沒有引起太多關注,因爲它被認爲太昂貴而不實用。但是,一旦收益足夠高,網絡攻擊的成本可能是合理的。一個真正無國界的經濟可能會花費數萬億美元。如果一個對手非法獲得數十億美元,他可能願意“投資”數百萬美元。

第四個缺陷:分叉。工作量證明的另一個缺點是不可避免地存在分叉。每當兩個或更多用戶在幾秒內解決加密謎題時,鏈就會分支,因爲用戶現在可能會看到下一個塊的多個候選者。Fork 可能會繼續存在一段時間,並且所有分支甚至可以通過添加新塊來延長。但最終,除了一個分支之外的所有分支都將死亡,死亡分支中的所有分塊都將消失。

分叉是一個不受歡迎的,不確定性和延遲的來源。如果向您支付的款項出現在添加到鏈中的最新區塊中,您就不能認爲自己已付款並運送貨物。這是因爲某些分支可能會克服當前的鏈條,並且您的區塊可能最終處於死分支並消失。在考慮自己付費之前,您需要等待一系列的塊添加到您的付款中,以便最大限度地減少軟叉出現的可能性,並且包含您的付款的塊將最終出現在死分支上。

你要等多久?有些人建議在您之後添加六個塊以確保您的塊將保留在鏈上。其他人建議等待更長時間,如果向您支付的款項相當大。因此,而不是等待十分鐘,對交易的最終結果有合理的信心,實際上你必須等待數小時。

有些人建議使加密拼圖更容易,以加快認證過程,例如通過每分鐘而不是每 10 分鐘找到一個解決方案。然而,通過這樣做,在兩秒內獲得兩個解決方案的概率顯着增加。該系統可以應對偶爾的軟分叉,但不能使用非常頻繁的分叉。費用,緩慢的速度和不確定性確實是工作證明 POW 方法的主要缺陷,但與其致命的缺陷相比,它們顯得蒼白無力。

工作證明中的致命缺陷。回想一下已經討論過的致命缺陷:整個經濟受到經濟的一小部分的支配。在工作證明中,經濟的這一小部分是礦工所擁有的。由於礦工只擁有工作證明區塊鏈中的一小部分資金,因此該連鎖店並不安全。

委託權益證明 Delegated Proof-of-Stake:

一種不同的方法是委託權益證明(PoS)。這是一個非常簡單的想法。社區授權一些特殊用戶,即代表,至少在一段時間內選擇下一個區塊。(例如,在 EOS 中,代表人數爲 21.)因此,DPoS 從一開始就是集中化的。希望所選代表誠實地開始。但是,依靠需要長期保持誠實的節點是有風險的。我們再一次認爲整個經濟都受到經濟的一小部分的支配。

實際上,在 DPoS 區塊鏈中,代表們可能擁有系統中總資金的一小部分,但是當且僅當大多數代表誠實值得信任時,整個區塊鏈纔是安全的。

其他安全問題。即使假設有一個鐵定的保證,所有代表將永遠保持誠實,他們也很容易受到攻擊。特別是,它們可能會因 denial of
service (DoS)攻擊而被打倒。在這樣的攻擊中,攻擊者用數以萬計的垃圾郵件轟炸他選擇的任何用戶,導致該不幸用戶的緩衝區溢出。

如果超級節點受到如此轟炸,他將無法履行其職責,即將新的有效交易整理到下一個區塊。

區塊鏈將陷入停頓。DoS 攻擊非常便宜,可以立即安裝,不僅可以對付 21 人,甚至可以對付 1000 人。由於超級節點已經是衆所周知的,即使他們只持續一天或一小時或一分鐘,一個高級的對手也可能會通過快速的 DoS 攻擊擊倒所有超級節點。

質押權以證明 Bonded Proof-of-Stake

BPoS 允許 20 個用戶,200 個用戶,儘可能多的人願意將一些錢放在桌面上,即一個 Bond,這是一個他們無法再觸摸它的紐帶。這些節點就是我們所有人選擇的代表我們出塊的用戶。如果他們行爲不端,他們的錢就會被沒收。

這種方法有效嗎?

讓我問一個更簡單的問題:你有多少可支配收入可以質押?答案是非常少的一部分。因此,Bonded-PoS 不僅使其成爲可能,而且實際上使得擁有大筆資金的大盜賊很容易將不成比例的錢進行質押,僅用於控制區塊鏈。

但那又怎麼樣?

如果他們行爲不端,就會失去質押的錢呀。

但是,真正去中心化的,可擴展且安全的區塊鏈應能保護數萬億美元的資產。由於行爲不端,惡意用戶將賺取數十億美元。既然如此,你認爲他可能會被沒收幾百萬美元嗎?這只是做生意的代價,相比較而言這是一個很小的代價。再一次,在 Bonded-PoS 中,我們也有同樣的致命缺陷:整個經濟受到經濟的一小部分的支配。事實上,在一個受保護的 PoS 中,這個經濟體的一小部分由(所有者)“把錢質押的人”組成。

總之,先前的方法存在幾個缺點。我們需要更好的設計。


Algorand 的邏輯和純粹的股權證明 Pure Proof-of-Stake。

Algorand 的邏輯很簡單:它將整個經濟的安全與大多數經濟體的誠實聯繫起來,並使一小部分經濟體無法控制整個經濟的命運。

Algorand 基於新的 Proof-of-Stake:PurePoS。從本質上講,Pure PoS 並不會因爲害怕罰款而試圖讓用戶保持誠實。更確切地說,它使的那些壞人想通過少量錢作弊是不可能的,但通過大量金錢作弊又是十分愚蠢的。

在 Algorand,沒有永遠被質押的 Money。所有的錢總是應該存在的地方:在你的錢包裏,正在準備花的錢,或在 Algorand 區塊鏈爲你提供的各種金融工具中。當你考慮系統中的所有資金時,無論它在哪裏,當大部分資金都在誠實用戶的手中時,整個系統就是安全的。

正如我們所說,一小部分資金的所有者不可能損害整個系統,而且大多數資金的所有者行爲不端以使自己的資產貶值將是十分愚蠢的。

例如,在 PoW 或 BPoS 中,少數用戶可以阻止其他用戶進行交易。在 Algorand,只有大部分資金的所有者才能阻止其他用戶進行交易。但如果他們這樣做,貨幣的聲譽將受到極大的損害,貨幣將不再被普遍接受,其購買力將大大降低。對於大多數資金的所有者來說,這並不是一個好的結果。


實行 PurePoS。

現在讓我們看看 Algorand 如何使用 PurePoS 來選擇下一個塊。

還記得不可能三角問題嗎?我們希望塊生成同時具有可擴展性,安全性和去中心化性。

在 Algorand 的一個非常高的層次上,一個新的區塊分爲兩個階段建造:

  • 在第一階段,隨機選擇一個 Token,其所有者是建議下一個塊的用戶。
  • 在第二階段,從當前系統中的所有令牌中選擇 1000 個 Token。

這 1000 個 Token 的所有者被選爲第 2 階段委員會的一部分,該委員會批准第一個用戶提出的區塊。


因此,委員會的一些成員可以被選擇兩次或更多次,通常是 k 次,在這種情況下,該成員將在委員會中擁有 k 票以批准下一個區塊。

爲什麼第二階段是必要的?

在任何社會中,區塊鏈也不例外,總有一小部分壞人被發現 ; 比如 1%。也許 2%。如果一個人不幸生活在一個非常危險的社會中,那麼 10%的人可能是壞人。也許甚至 20%!但在任何社會中,不良行爲者都不會佔多數 ;
否則,就沒有社會。只要大多數成員遵守規定的規則,就會存在一個穩定和諧的社會。

假設 Algorand 中 10%的代幣屬於不誠實的人。然後,十分之一,在階段 1 中選擇以提議塊的用戶可能是壞演員。因此,他可以告訴一些用戶該塊是 X 而其他用戶該塊是 Y 等等,從而產生關於區塊鏈是什麼的不同意見。

階段 2 消除了這個問題。實際上,如果你選擇隨機的 1000 個代幣,當最多 10%的代幣是不誠實的手牌時,大多數所選硬幣屬於不良參與者的概率,即委員會大多數投票是糟糕的演員的概率是如此之低,以至於可以忽略不計。

假設,這一次,你沒有被選中提議一個塊。也沒有被選中成爲批准擬議區塊的委員會成員。但是你看到給定的 B 區塊已經獲得委員會 700 票的批准。然後,你將會知道 B 的確是下一個塊。


一個關鍵問題。 在這種高級描述中,自然會出現幾個問題。讓我們從最明顯的一個開始:誰來進行隨機選擇委員會?

假設我告訴你我做了。那麼你可能會說“這是有史以來最中心化的系統,而你就是它的中心!”假設我告訴你所有用戶都在討論,直到他們就成千上萬的委員會成員達成一致意見,然後他們同意這個問題。那麼你可能會告訴我,人性就是這樣,一輩子時間都不足以選擇我們需要的千名委員會成員。

Algorand 採取非正統的方式:委員會成員選擇自己。

你可能會想“什麼?這是一個糟糕的主意!因爲如果我是一個壞演員,我會選擇自己成爲這個委員會的成員。接下來。那之後 ……“但不是那麼快。

要想屬於委員會,你的一枚硬幣必須獨立贏得這個機會,加密地公平的彩票,你可以在你自己的計算機隱私中獨立運行 -也就是說,不與任何其他人交談。而且由於彩票是加密公平的,你不能改變被選中的機會。(即使是擁有巨大計算資源的民族國家,也無法增加被選中的概率。)

爲了在例如 10,000,000,000 個令牌中選擇 1,000 個隨機令牌,每個令牌以概率 1,000 /10,000,000,000 被選擇,即概率爲 1 萬分之一。

因此,一旦用戶看到提議的塊,她就會問自己:我可以成爲選擇批准一個區塊的委員會的成員嗎?


我將獲得多少票?

爲了回答這些問題,她在她的筆記本電腦上爲她擁有的每一個代幣運行加密抽獎。(如果用戶有 n 個令牌,額外的算法技術基本上允許她運行一個單整張彩票而不是 n 個單獨的彩票!)一旦用戶運行她的抽獎,就會出現兩種情況之一。

要麼她的所有代幣都沒有贏得彩票,在這種情況下,無論她對該區塊表達何種意見都將被忽略。或者其中一些 k>1 的代幣贏得了彩票,在這種情況下,她獲得了一張中獎彩票,即一個簡短的證明,即每個人都可以很容易地證明她在委員會中有 k 票。在後一種情況下,她通過網絡傳播(i)證明她有 k 票的中獎票和(ii)她對該票的意見。

解決區塊鏈不可能三角!讓我爭辯說,這個初版的方法是終於!可以同時可擴展,安全和去中心化。

1. 可擴展性。

用戶運行自己的彩票需要多長時間?無論她有多少令牌,大約爲一微秒。那確實超級快。(此外,所有彩票都是相互獨立運行的,因此任何用戶都不必等待其他用戶完成彩票運行。)

一旦被選中,每個成員就向網絡傳播單個,短且立即計算的消息。因此,無論系統中有多少用戶,需要傳播的最大消息數爲 1000 條短消息。這可擴展嗎?是 !

2. 安全性。

現在我們來安全。假設我是一個非常強大的對手,能夠隨時隨地腐蝕用戶。顯然,我想腐敗委員會的成員,但我有一個問題:我不知道他們是誰。之所以如此,是因爲委員會成員是通過祕密運行,加密公平的個人彩票來選出的。

因此,只有他們知道自己是誰,直到他們通過網絡傳播他們的獲獎門票和他們對該區塊的意見的那一刻。

只有在那個時候,我才能瞭解委員會成員是誰,縱使我有超能力,我可以立即腐蝕整個委員會。但那又怎麼樣?在這個時候再腐蝕他們爲時已晚。

無論委員會成員如何說,他們已經說過了,他們的獲獎票和關於該區塊的上下意見在整個網絡中傳播。我沒有權力將他們的信息放回瓶中,而不是政府有權將維基解密病毒傳播的信息放回瓶中。

換句話說,Algorand方法是安全的,因爲事先,對手不知道誰會腐敗,而且當他做的時候,腐敗是無用的。

與此相反,擁有一個固定的 1000 強委員會。如前所述,即使委員會繼續執政一分鐘,它也很容易受到 DoS 攻擊。如果委員會繼續執政的時間更長,比如一週,那麼成員甚至可能通過賄賂等傳統方式在現實世界中被腐化。然而,在 Algorand 的情況下,人們不會知道對誰進行 DoS 攻擊,一旦委員會發言,DoS 攻擊就沒用了。

3. 去中心化性。

最後,我們來到了去中心化性。是否有少數用戶負責選擇下一個區塊?不是,沒有。也沒有一個固定的,1000 強的委員會負責批准該塊。這一次,委員會被隨機(並祕密)選中。下一次,將隨機(和祕密)選擇一個不同的委員會。每個人都有機會參與新區塊的生成。

Algorand 是一個不會分叉的鏈。

Algorand 技術的另一個優勢是其鏈永遠不會分叉。這是因爲只有一個區塊可以具有所需的委員會投票門檻。因此,在 Algorand 所有交易都是最終的。一旦出現一個塊,您就可以指望它永遠是鏈條的一部分。如果新區塊包含向您支付的款項,您可以認爲自己已付款並立即發送貨物。

金融世界已經有了自己的風險,並且沒有必要用“阻止消失”的額外不確定性來加重它。順便說一下,當我說 Algorand 的鏈永遠不會分叉時,我其實有點撒謊。實際上,分叉可能出現在 Algorand,但它們非常罕見。在 Algorand 中分叉的概率按設計爲 10⁻¹⁸(10 的負十八次冪)。這種可能性似乎是一種極低極其奇怪的選擇,但它實際上有一個自然的解釋。物理學家告訴我們,10¹⁸(十的十八次冪)恰好是從大爆炸到現在的秒數。

換句話說,如果你產生一個塊,順便說一句非常好的剪輯,你可能會看到一個軟叉,但你必須等待宇宙的生命週期才能看到它。

以上內容就是對 Algorand 項目的通俗易懂的講解,希望能夠幫助到您。

相關具體的開發者與 SDK 鏈接如下:

GoSDK: https://github.com/algorand/go-algorand-sdk

JavaScript SDK: https://github.com/algorand/js-algorand-sdk

測試網申請鏈接:https://www.algorand.com/apply-testnet

Github 存儲庫鏈接:https://github.com/algorand/js-algorand-sdk

開發者網址:https://developer.algorand.org/docs/javascript-sdk

聯繫方式:https://www.algorand.com/contact