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