摩根大通的穩(wěn)定幣和我們常見的穩(wěn)定幣有什么不同
摩根大通發(fā)行穩(wěn)定幣一事,在圈內(nèi)引發(fā)了廣泛的討論,其中又以Maker Dao經(jīng)濟研究員兼中國區(qū)負責人潘超的《JPM Coin三部曲》討論得最為詳細深遠。近日我們有幸邀請到潘超做客碳鏈價值的「碳話」線下沙龍。在這場沙龍中,潘超分析了摩根大通的穩(wěn)定幣和我們常見的穩(wěn)定幣(如USDT)有什么不同、摩根大通可能會采取怎樣的共識機制,其主要追求的是哪些性能等問題。以下為碳鏈價值整理的演講全文:
01 摩根幣的誕生
摩根幣是什么?最簡單的說,一個摩根幣等于1美元,看起來和普通的穩(wěn)定幣一樣。但是他們面向的并不是同樣的一個市場。USDT、USDC、GUSD 屬于零售性的穩(wěn)定幣,一般用戶可以使用,投資者也可以在交易所上買到,做日常的交易,或者與法幣交換等等。但摩根幣的對象不是普通用戶,而是批發(fā)性的銀行。普通人接觸不到,也不會有任何交易所能夠上這個幣。摩根幣是用于實時大額資金結(jié)算,可以叫做清算憑證。
摩根大通的成員銀行把美元存在一個指定賬戶里,會按照1:1生成摩根幣。之后可以將摩根幣返還回去,獲得一對一的美元。這看起來和USDT的生成與贖回一樣,其實不然。如我剛剛所言,摩根幣是用于實時大額資金結(jié)算。
為什么大額實時資金結(jié)算需要一個這樣的東西?首先需要先了解資金是怎么在銀行之間轉(zhuǎn)移的。
-只有一個銀行的時候,假設兩人之間發(fā)生一筆10塊錢的交易,那么直接記錄Alice減少10塊錢,Bob增加10塊錢。
-如果有兩個銀行的時候,比如說我在工行,你在建行的話,如果說我想付給你十塊錢,我需要告訴工行說,說我要給你轉(zhuǎn)十塊錢。工行必須跟建行去達成一個協(xié)議,建立一個關系賬戶,在這個關系賬戶當中,工行和建行事先都在這一個賬戶當中先存一點錢,雙方發(fā)生交易的時候,不用在雙方之間進行一個結(jié)算,而直接在這個銀行層面就可以進行結(jié)算就可以了。
但是這樣的模式也會產(chǎn)生問題。只有兩個銀行時,關系賬戶還是比較方便,但是如果銀行的數(shù)量增加了,一個國家可能有成千上萬個銀行,那么如果每兩個銀行之間都要建立這樣的一個賬戶的話,它會是一個指數(shù)關系。
那么怎樣解決這樣一個問題?在清結(jié)算當中有兩種模式,一種叫做實時大額結(jié)算,同時還有一個叫延遲結(jié)算。對于延時結(jié)算而言,不同的銀行只負責記賬,不需要馬上進行結(jié)算。只需要去記,比如說A欠B多少錢,B欠了C多少錢,然后在一天結(jié)束的時候看一下凈額就行了。比如我們在使用微信進行一個支付的時候,它只是一個支付環(huán)節(jié),要等到一段時間的周期后才會最終在銀行層面進行結(jié)算。
但是延遲結(jié)算存在一個問題。延遲結(jié)算中交易可以進行撤回。如果對方支付一筆非常大金額,往往需要實時結(jié)算,也就是交易的最終性。因為負擔不起資金撤銷帶來的成本。銀行也存在破產(chǎn)的風險,不能在每個銀行都放置一個關系賬戶。
有一個解決方式,這種辦法就是回到最初的銀行世界,依靠一個非常大的公共賬本。這個賬本所做的事情就是負責大額的實時結(jié)算,這是為什么會存在中央銀行的原因之一。中央銀行作為一個權威,所有人都會相信這個賬本。摩根大通最早在美國就起到央行的作用,這也解釋了為什么摩根幣會出現(xiàn)。涉及到大額支付的時候,銀行A跟銀行B把摩根大通網(wǎng)絡當做一個大池子,銀行A跟銀行B都可以將自己的存款放在大池子中,然后會生成一個 1:1 的摩根幣用于即時結(jié)算。
02 摩根幣的誕生摩根幣的區(qū)塊鏈上有何不同?
那么為什么這個網(wǎng)絡需要基于區(qū)塊鏈呢?
摩根大通使用區(qū)塊鏈的原因并非因為透明性、去中心化等原因,傳統(tǒng)公鏈的特性對于摩根大通而言,反而是 Bug。
那么對于傳統(tǒng)金融機構(gòu)而言,所需要的區(qū)塊鏈賬本有什么特征呢?
第一點是隱私性。金融機構(gòu)之間需要高度隱私性。不能把所有的賬本全部都公開給大眾,否則會導致擠兌風險以及流動性風險。同時銀行也不希望讓對手銀行看見自己賬戶上的情況,并且還要保護用戶本身的財產(chǎn)信息。這一點在公鏈尤其是以太坊網(wǎng)絡,基本沒法實現(xiàn)的,因為只要打開任何以太坊瀏覽器,就可以看到賬戶所有的信息,余額多少、每一筆交易的對象。傳統(tǒng)金融機構(gòu)如果用區(qū)塊鏈研發(fā),必須要解決隱私性問題。
第二點是需要高性能的區(qū)塊鏈,雖然大額的資金轉(zhuǎn)賬對時間要求并不是那么迫切,但是現(xiàn)在每秒處理幾個交易的公鏈,很難是滿足全國性,或者大規(guī)模的金融應用。
第三點是最終性。最終性是說這筆交易從我賬戶發(fā)給你,那么我就沒法對這個交易進行更改,就像現(xiàn)金一樣。我把一百塊錢給到你,你拿走這一百塊錢,就代表交易結(jié)束。而不是可以撤回的交易,比如在微信轉(zhuǎn)賬和 Paypal 交易中,是可以撤回的。很多區(qū)塊鏈并沒有最終性,因為會出現(xiàn)分叉的概率。以太坊 The DAO 事件受到攻擊的時候,就進行了一個分叉和回滾,黑客攻擊那部分和之后的交易不被承認,而傳統(tǒng)金融機構(gòu)無法接受這件事。
03 Quorum是什么?摩根幣采用什么共識?
摩根大通銀行選擇的區(qū)塊鏈是什么?摩根大通選擇的是Quorum。
Quorum 可以說是以太坊的一個克隆,是一個準入系統(tǒng),更類似一個聯(lián)盟鏈。Quorum 通過鏈上加鏈下實現(xiàn)隱私保護,同時可以靈活的支持多種的共識機制,相對來說也具有高性能和高速度。并且抗分叉,能夠?qū)崿F(xiàn)交易最終性。
Quorum 根據(jù)以太坊客戶端 Geth 進行更新。這也就意味著以太坊上使用的合約可以直接移植到 Quorum 上,包括一些開發(fā)協(xié)議(Truffle),都可以直接部署。以太坊是目前而言最健全的公鏈,同時也經(jīng)歷了多年的攻擊以及抗攻擊,可以說是 Bulletproofed。
那么 Quorum 和以太坊有什么區(qū)別呢?
首先在交易上有區(qū)別,一筆交易在Quorum上可以選擇公開交易或者私人交易。對于公開交易來說,這筆交易是在Quorum主鏈上完成的。在這個主鏈上的節(jié)點都可以看到交易的信息,如賬戶的余額、發(fā)起方是誰、接收方是誰,和以太坊的邏輯上是一致的。如果選擇私人交易的話,就會拿到鏈下,使用獨立的服務器。
Quorum 主鏈上只存儲加密后數(shù)據(jù)的哈希值,而私有交易的數(shù)據(jù)將存儲在鏈下,通過管理理引擎(Tessera 和 Constellation)在節(jié)點共享。只有交易的相關方(以及監(jiān)管部門)才能看到交易的細節(jié),非相關方無法獲取交易細節(jié)。
但是這也會有一些問題,可能會出現(xiàn)單點故障,以及一些細節(jié)上的問題,包括監(jiān)管層面。比如央行或者一個監(jiān)管機構(gòu),一開始并不在這個私有列表里,但他突然覺得這筆交易存在問題,想去檢查這筆交易。但是因為沒法將賬戶直接加進來,所以沒法看到之前的交易信息,這從監(jiān)管層面而言不是很理想。對于摩根大通這種傳統(tǒng)機構(gòu),他首先想到的便是監(jiān)管友好。同時,這種方案無法靠區(qū)塊鏈上的共識機制解決雙花問題。
Quorum 與 Zcash 團隊合作,提供了一種鏈上的隱私方案,連接私有合約以及主鏈。合約的商業(yè)邏輯在私有合約內(nèi)部達成一致,然后在主鏈上進行清算,并以零知識證明的方式使用 z-token 作為保護隱私的橋梁。z-contract 合約會生成與主鏈資產(chǎn) 1:1 的代幣資產(chǎn) z-tokens。z-contract 也在主鏈上運行,只是其資產(chǎn)是隱蔽資產(chǎn) (Shielded Assets) 可以隱藏交易信息(發(fā)送方、接收方、資產(chǎn)數(shù)量量等)。
Quorum 既沒有采用PoW也沒有采用PoS,因為PoW和PoS都屬于Nakamoto Consensus,任何人都可以隨時加入和退出節(jié)點,這種共識機制通過節(jié)點之間某種公平的“投票”選擇記賬人。由于節(jié)點沒有身份,可以自由地創(chuàng)造,相互不信任,因此投票資源必須是稀缺的。在PoW機制下,缺資源是物理算力,而在PoS下,這種資源是經(jīng)濟權益。無需準入帶來了去中心化的制衡,但節(jié)點之間的“競爭”記賬不可避免地犧牲了速度與效率。
而且對于一個聯(lián)盟鏈或者私有平臺、金融機構(gòu)來說,是不允許任何人都可以到公鏈作為一個節(jié)點來記賬的,所以 Quorum 不會使用 Nakamoto Consensus 全局共識機制。
為了解決這些問題,Quorum 嘗試采用高性能的容錯分布式系統(tǒng) ByzanTIne Fault Tolerant (BFT),如 PoA 和 IBFT; 和容故障分布式系統(tǒng) Crash Fault Tolerant (CFT),如 RAFT。
PoA 的全稱是Proof of Authority (權威證明)。PoA 基于一組有身份的節(jié)點,輪流進行記賬。換句話說,每個節(jié)點在用自己的 身份和權威作為擔保。
每個區(qū)塊只要一個簽名確認就可以,因為只有這幾個節(jié)點,不需要與其他節(jié)點產(chǎn)生時間競爭,和中心化服務器的效率不相上下。可能會產(chǎn)生一個節(jié)點權力太大的問題,為了解決這樣的單個節(jié)點權力過大的問題,每個節(jié)點必須間隔記賬。比如說這邊有四個節(jié)點,必須在間隔兩個節(jié)點之后,才能進行下一次記賬,這個方式就是去限制單個節(jié)點的權利。Quorum最初使用的是 PoA,后來因為最終性(可以進行分叉)而不再使用PoA。摩根大通每天處理6萬億美金,如果進行了分叉,參考比特幣現(xiàn)金的分叉對整個系統(tǒng)的影響,大家就能理解摩根大通為什么不允許分叉的產(chǎn)生了,因為這會導致很多交易無效。
相對而言,Quorum支持的另外兩種共識機制RAFT和IBFT都是抗分叉的。RAFT 其實是一種已經(jīng)廣為使用的傳統(tǒng)分布式一致性協(xié)議,應用在包括 Kubernetes, Docker Swarm等容器集群管理系統(tǒng)。RAFT 對于容故障、可信節(jié)點,需要更快出塊時間和最終性的封閉聯(lián)盟非常有效。 與以太坊相比,RAFT 也有自己的節(jié)點。相對于以太坊任何節(jié)點都可以出塊, RAFT 的節(jié)點分為 Leader 、Follower 以及暫時的 Candidate。Leader 是負責生產(chǎn)區(qū)塊的唯一節(jié)點,F(xiàn)ollower 監(jiān)聽 Leader 的“心跳”,并收取 Leader 傳遞過來的區(qū)塊。接受心跳的目的是為了抗系統(tǒng)故障,如果 Follower 在其周期內(nèi)沒有收到 Leader 發(fā)來的心跳,新的節(jié)點作為 Leader 繼續(xù)出塊。
當新的交易產(chǎn)生后, Leader并不會馬上記錄到鏈上,而是等收到所有 Follower的確認回執(zhí)后,記錄并廣播一個執(zhí)行的消息,之后所有收到執(zhí)行消息的 Follower才會將區(qū)塊記錄在本地的鏈上,避免分叉,確保最終性。RAFT 機制下的默認出塊時間間隔是 50 ms,而且只有在有交易發(fā)生時才會出塊, 大大節(jié)省了儲存空間。但 RAFT 機制也有不足之處,要使其得以運轉(zhuǎn)的前提是全部節(jié)點是誠實的。 RAFT雖然可以容單點故障,但是不具備容錯,無法防止節(jié)點作惡和篡改歷史數(shù)據(jù)。
如何防止節(jié)點作惡同時又能保證效率和最終性呢?Quorum 支持了伊斯坦布爾拜占庭容錯機制。
與 RAFT完全相信 Leader 不同,IBFT 的前提是包容 1/3 不誠實節(jié)點,通過驗證者多輪投票,達到彼此一致后出塊。由于在每個區(qū)塊高度只有一個節(jié)點負責出塊,不會有分叉的風險。 賬本不可改,試圖修改歷史紀錄需要獲取所有備份節(jié)點和主節(jié)點的私鑰。與 PoW 相比,IBFT 沒有競爭機制,出塊速度更快。不過,IBFT 的劣勢也很明顯,多個驗證階段的結(jié)構(gòu)下讓消息數(shù)量與節(jié)點數(shù)量成指數(shù)級增長,因此 IBFT 的節(jié)點數(shù)不能太多,通常用作企業(yè)級和政府的網(wǎng)絡。
摩根幣到底使用的是哪一種共識機制呢?雖然摩根大通對 Quorum 網(wǎng)絡的信息十分公開, 但是并沒有公布關于摩根幣的共識機制。
從上文推斷來看,摩根幣不會選擇PoA機制,因為沒法實現(xiàn)最終性,那么只會在IBFT的跟RAFT中進行一個選擇。如果所有的節(jié)點都是摩根大通信任的伙伴,那么RAFT是不二的選擇;如果只是信任部分成員銀行,IBFT則是可行的試點。
至少在早期階段,摩根幣的對象是相對封閉的聯(lián)盟。 摩根大通的清算網(wǎng)絡可以大大增加銀行之間的網(wǎng)絡效應,而且為跨境支付提供了更加安全的合規(guī)信息交流協(xié)議。摩根幣的推出是對以太坊 ,包括區(qū)塊鏈應用落地的一個巨大推動。從技術層面,兼容以太坊合約的 Quorum網(wǎng)絡有機會在之后和已有的公共區(qū)塊鏈進行互通,在中心化與點對點的貨幣系統(tǒng)之間搭建橋梁。