Lumino 交易壓縮協(xié)議(LTCP),這是根鏈(RSK)鏈下支付網(wǎng)絡(luò) Lumino 網(wǎng)絡(luò)的關(guān)鍵部分。相同的區(qū)塊空間下,LTCP 協(xié)議可以使鏈上的交易量比傳統(tǒng)的區(qū)塊交易量變得更大。 LTCP 協(xié)議是對 RSK 平臺的改進,將能使網(wǎng)絡(luò)達到 2000 筆交易/秒。不過,LTCP 也可以以一個軟分叉的方式部署到比特幣網(wǎng)絡(luò),屆時比特幣的吞吐量將可以增加到 100 筆/秒,甚至更多,這取決于使用模式。LTCP 協(xié)議可以使 Lumino 網(wǎng)絡(luò)滿足 10 億用戶的需求。
前言
正如網(wǎng)絡(luò)處理信息一樣,比特幣和加密貨幣是構(gòu)建一種新型網(wǎng)絡(luò)的基石,一種不僅可以適用于知識共享,還有可以用于價值交換的網(wǎng)絡(luò)。這種價值的形式可能是產(chǎn)權(quán)、股票、貨幣或者其他代幣,例如自治組織的投票權(quán)。價值互聯(lián)網(wǎng)的誕生和智能手機的不斷普及可能會使普惠金融成為現(xiàn)實。但是這項技術(shù)要覆蓋到數(shù)十億的人,它需要是便宜的和去中心化的。RSK 平臺是一個去中心化的比特幣側(cè)鏈。RSK 價值互聯(lián)網(wǎng)技術(shù)的構(gòu)想包括多重協(xié)議層,每層協(xié)議解決不同的價值轉(zhuǎn)移需求,共同形成一種連貫而且有彈性的協(xié)議棧。本文將介紹 Lumino 交易壓縮協(xié)議,RSK 協(xié)議棧的關(guān)鍵部分。
引言
加密貨幣或者去中心化數(shù)字現(xiàn)金領(lǐng)域正處于起步階段。2009 年之前,大多數(shù)人嘗試創(chuàng)建需要信任第三方的數(shù)字貨幣。所有的數(shù)字貨幣支付網(wǎng)絡(luò)也都是中心化的。2008 年,(中本聰)發(fā)明了第一個去中心化加密貨幣和支付網(wǎng)絡(luò),接著第二年推出這種加密數(shù)字貨幣。但是,比特幣的去中心化和抗審查性是對可擴展性進行折衷。 人們發(fā)明了各種各樣的技術(shù),例如致密區(qū)塊(compact blocks)、更好的路由、區(qū)塊頭先行傳播、概率驗證、欺詐證明、區(qū)塊鏈裁減、分片和支付通道等等。閃電網(wǎng)絡(luò)是致力于改善區(qū)塊鏈這一進程中的爭吵的最高潮。閃電網(wǎng)絡(luò)承諾減少每個網(wǎng)絡(luò)節(jié)點所需的資源,并實現(xiàn)更大的網(wǎng)絡(luò)吞吐量。但是,為了覆蓋數(shù)十億用戶,閃電網(wǎng)絡(luò)需要進行大量的鏈上交易。每當一個中心出現(xiàn)問題或者當一方消失的時候,這樣的情況就會發(fā)生。此外,用戶需要經(jīng)常給他們的支付通道補充余額,這就需要更多的鏈上交易。假設(shè)每個用戶每個月都使用一個主要的支付通道,那么每個通道每個月也需要結(jié)算,并且要求不會出現(xiàn)重大問題的節(jié)點,比特幣吞吐量將能夠容納 200 萬用戶使用支付通道。本文提出的 LCTP 協(xié)議可以只占用區(qū)塊 5 字節(jié)的空間來完成余額更新,將能夠容納 10 億用戶使用 RSK 平臺。
我們的貢獻
RSK 平臺遵循與以太坊類似的分類賬結(jié)構(gòu):網(wǎng)絡(luò)建立在賬戶的基礎(chǔ)上而不是 UTXOs。每個用戶控制著一個或者多個賬戶。每個賬戶有一個 ECDSA 數(shù)字簽名方案生成的私鑰。公鑰則被映射為更短的 RSK 地址。交易可從賬戶扣除資金,并將其轉(zhuǎn)到其他賬戶或者智能合約上。每筆交易都會進行簽名,ECDSA 公鑰恢復(fù)程序?qū)暮灻刑崛∞D(zhuǎn)出資金的賬戶信息。
在本文中,我們介紹了一種可以處理更大交易量而所占存儲空間小得多的交易壓縮技術(shù)。我們還介紹了 Lumino 網(wǎng)絡(luò)的基礎(chǔ),一種類似閃電網(wǎng)絡(luò)、使用 LTCP 協(xié)議的 RSK 平臺網(wǎng)絡(luò)擴展。
Lumino 交易壓縮協(xié)議(LTCP)
Lumino 壓縮背后創(chuàng)新性洞察力是對所選字段的深度壓縮(delta compression),所選字段是來自前一筆引用交易和之前交易的簽名集合。深度壓縮是通過允許每一筆交易關(guān)聯(lián)到相同所有者的前一筆交易,以相同所有者的前一筆交易作為模板。任何可以被覆蓋和未修改的字段都進行完整復(fù)制。使用 LTCP 協(xié)議的交易包含幾個字段,有些字段是可選的,有些字段是持久性的。持久行意味著他們將永遠成為區(qū)塊鏈的一部分,而非持久性的字段可能會也可能不會成為區(qū)塊鏈的一部分,這取決與未來的交易。以下是用戶提供的交易字段:
● 隨機數(shù):一個隨機數(shù) [如果重復(fù),將變成持久性的字段]
● seqNum:一個序列號 [可選,持久性]
● 金額:轉(zhuǎn)賬金額 [可選,持久性]
● 接收者:接收者的地址 [可選,持久性]
● deltaTxNonce:該值將指定引用交易的隨機數(shù)進行深度壓縮。[可選,持久性]。如果丟失,將指定前一個交易的隨機數(shù)。
● gasPrice(或者手續(xù)費):需要支付的手續(xù)費金額 [可選,持久性]
● gasLimit:最大執(zhí)行步數(shù) [可選,持久性]
● 數(shù)據(jù):發(fā)送給接收者的任意用戶數(shù)據(jù)(主要用于智能合約)[可選,持久性]一筆交易的持久性字段集合被稱為持久性交易信息(PTI)。添加到 PTI 的一個另外自動計算的字段,即清單索引。這是一串分配給每個新賬號的遞增序列號。實際簽名的不是用戶提供的交易數(shù)據(jù),而是擁有附加信息的混合記錄,稱為 SigRec。SigRec 包含所有的字段,加上附加字段:
● prevTx:前一筆源自相同賬戶的交易的 SigRec 哈希值。
SigRec 包含按照固定順序排列的所有字段。要對一筆交易進行簽名,就要對它相應(yīng)的 SigRec進行哈希,再用發(fā)送者賬戶相對應(yīng)的 ECDSA 私鑰對哈希摘要進行簽名。金額是一個大整數(shù),用以 10 為底數(shù)的指數(shù)(5bits)和尾數(shù)(bits 的數(shù)量是變量)表示,這樣可以使壓縮率更高。一個 4 字節(jié)的清單索引可以支持十多億個賬戶。還可以使用較短的字段替換清單索引,使用密致、可變長度的正數(shù)來表示相同賬戶的交易區(qū)塊中 block number delta 和交易指數(shù)。例如,如果前一個區(qū)塊的第二個區(qū)塊就是先前的區(qū)塊,則值(-1,2)將解碼引用,占用的空間將不超過 2 個字節(jié)。
如果滿足標準條件(足夠的資金,良好的格式等)加上序列號的額外條件,則接受交易,這可以允許 Lumino 網(wǎng)絡(luò)更換交易。用戶提供的字段中丟失的交易字段將與 delta 交易的字段一起復(fù)制。接受交易的具體條件如下:
● 隨機數(shù)必須大于或等于該賬戶前一筆打包到區(qū)塊中的交易隨機數(shù)。
● 如果隨機數(shù)相等,則 seqNum 值必須大于前一個 seqNum 值。
● 如果隨機數(shù)相等,它將被包含到 PTI 中以進行廣播。
● 如果存在,deltaTxNonce 必須以小于 D 值的距離指定一筆交易。(D 是指代不同區(qū)塊高度之間的差值)
● prevTx = 哈希(prevSigRec),其中 prevSigRec 是前一筆交易的 SigRec
● 來源賬戶必須有足夠的資金用于支付
● 深度壓縮鏈的區(qū)塊距離必須低于或者等于 M。
區(qū)塊格式
一個 Lumino 區(qū)塊存儲兩個 Merkle 樹(或者 Merkle Tries)。第一個樹包含所有 PTIs。第二個樹包含所有的交易 ID。交易 ID 將構(gòu)建成簽名的 SigRec 哈希值。第二個樹在概念上類似于隔離見證樹,因此我們將呼吁所有字段加上見證部分的簽名。
處理
交易的證明部分 T 存儲在區(qū)塊中時,我們稱 T 是持久性的。只有交易 T 中的 PTI 是存儲在區(qū)塊中,但是 PTI 的 T 是通過 prevTx references 進行引用的,prevTx references 則緊跟著最好區(qū)塊鏈上的持久性交易 T2,而 T2 是處于低于 M-T 值得區(qū)塊距離,我們就說交易 T 是docked??梢蕴幚硪还P docked 交易的證明部分,只需要保留 PTI。注意,一筆持久性的交易可以這樣停止并 docked。
驗證區(qū)塊
除了標準的區(qū)塊驗證規(guī)則之外(難度、父母塊等)如果一個區(qū)塊包含至少一筆既不被 docked也不持久的交易,那么這個區(qū)塊將被視為是無效的。
如果一個區(qū)塊包含一筆持久性的交易 T,交易 T 的簽名驗證失敗,那么這個區(qū)塊是無效的。但是,如果一個區(qū)塊包含一筆 docked 交易,這筆交易的簽名驗證失敗,這個區(qū)塊就是有效的,因為節(jié)點沒有存儲證明信息的義務(wù)。這意味著,如果他們可以提供在隨后的區(qū)塊中 dock以往的無效交易的正確交易簽名集合,礦工可以創(chuàng)建一個包含“無效”交易的區(qū)塊。
當然,沒有完整節(jié)點會接受一個包含無效交易的區(qū)塊,因此這些惡意礦工需要構(gòu)建一條私有鏈,然后公布這條鏈。但是完整節(jié)點必須小心那些之前被區(qū)塊鏈拒絕接受的區(qū)塊,因為如果這些無效簽名被有效區(qū)塊確認的話,可能會被再次接受。因此最好緩存被拒絕區(qū)塊的時間記錄,這些記錄列出了需要 docked 的無效區(qū)塊。
必須永遠存儲第一筆交易的簽名(隨機數(shù)=0),以設(shè)置發(fā)送者的賬戶地址,這些是通過簽名恢復(fù)程序暗含在簽名中的。下圖是一個進行了深度壓縮的交易鏈示例,例如在一個鏈上支付通道中:
支付通道雙方可以利用交易壓縮進入鏈上交易通道。發(fā)送者向接收者發(fā)送一筆支付交易,然后將接收者的字段從交易中刪除。如果 gasPrice 沒有改變,那么隨后每個壓縮交易的都將是這個金額??偟膩碚f,金額要求不超過 4 個字節(jié)。
區(qū)塊鏈同步
同步區(qū)塊鏈和 LTCP 交易包括兩個階段。無論一個節(jié)點什么時候接受一個區(qū)塊,它必須驗證這個區(qū)塊,并找出見證部分是否為無效的或者已丟失。如果所接受的區(qū)塊很舊,那么節(jié)點可以請求之后的區(qū)塊,直到所有無效或者丟失證明信息的區(qū)塊都被有效區(qū)塊所覆蓋,無效區(qū)塊都變得無關(guān)緊要。如果仍舊無法提供某些必要的證明信息,那么這條有疑問的分支鏈將不能成為最好的分支鏈。如果接受的區(qū)塊是新的,那么節(jié)點將請求這個區(qū)塊提供所有的見證信息。
其他強化功能
Lumino 網(wǎng)絡(luò)是使用 LTCP 協(xié)議的類似閃電網(wǎng)絡(luò)的網(wǎng)絡(luò)。因為閃電網(wǎng)絡(luò)要求預(yù)先鎖定資金,并由兩個簽名控制,所以我們需要一種由兩個簽名控制的新型賬戶。一個可能性是通過公鑰恢復(fù)協(xié)議傳遞兩個交易簽名,而他們的公鑰則在哈希之前以特定的順序級聯(lián)在一起,以獲得該賬戶的地址。
另一種方法是創(chuàng)建一種可以附加到合約上的新型代碼“簽名驗證代碼”,這種代碼允許進行合約交易,手續(xù)費將從合約中扣除,而無需涉及到第二個“源自”ECDSA 的賬戶。源自智能合約的交易需要提供一個發(fā)送者字段。智能合約的第一筆交易(隨機數(shù)=0)不需要永久性存儲簽名,因為在驗證簽名代碼中明確指定了他們的公鑰。
在這兩種情況下,賬戶是一個持有鎖定資金的智能合約。這允許智能合約賬戶進行結(jié)算,因此在包含下一個結(jié)算之后就可以對其簽名進行處理,將結(jié)算的存儲空間減少為 6 個字節(jié),這取決于智能合約如何編碼和壓縮余額。使用相同隨機數(shù)值的 SeqNum 字段可以更新通道余額,但是舊交易無法替代新交易。這是必要的,以避免當隨機數(shù)相同的時候,之前的交易阻止之后的交易打包到區(qū)塊中。另一種選擇是允許交易隨機數(shù)系列存在差距,但是可能會導(dǎo)致礦工漏掉交易,并使智能合約的可預(yù)見性復(fù)雜化。
使用軟分叉將 Lumino 部署到比特幣網(wǎng)絡(luò)
Lumino 網(wǎng)絡(luò)是為了使區(qū)塊鏈在分類賬的基礎(chǔ)上擁有更快的區(qū)塊率(fast block rates)和更多的賬戶而設(shè)計的。為了使用軟分叉將 Lumino 網(wǎng)絡(luò)部署到比特幣網(wǎng)絡(luò)上,我們需要模擬一個基于分類賬的賬戶:我們需要以一個擴展區(qū)塊作為側(cè)鏈的形式來嵌入比特幣區(qū)塊,以此來創(chuàng)建一個賬戶地址空間。每個賬戶在主鏈上創(chuàng)建一個 exodus 地址。這個 exodus 地址是在軟分叉之前任何人都可以花費的地址和軟分叉后特殊的地址。例如,它可以是 push-onlyscriptPub“ 《Lumino-tag》《Lumino-address》”。為了加載帶有比特幣的 Lumino 賬戶,這些比特幣需要先發(fā)送到一個 Lumino 地址,這些比特幣將存放在這個地址,直到有人通過提供 Lumino 地址的簽名,從相同的任何人都可花費的地址上通過一筆特定的交易發(fā)送回來。一旦資金在 Lumino 網(wǎng)絡(luò)上,他們就可以使用 Lumino 交易或者共享 Lumino 支付通道。但是,Lumino 支付確認仍然受到比特幣 10 分鐘出塊時間的限制。為了通過 Lumino 所需的字節(jié)擴展比特幣頭部,字節(jié)可以存儲在 coinbase 交易的 OP_RETURN 輸出中。
使用軟分叉實施 Lumino 網(wǎng)絡(luò)還需要一個嵌入到每個區(qū)塊來描述賬戶變動(或者交易收據(jù))的已驗證樹,以允許 SPV 節(jié)點檢測區(qū)塊,而無需處理 LTCP 交易。
通過比特幣軟分叉部署 LTCP 的擴展性
如果 M 等于一年的區(qū)塊量,并且我們假設(shè)用戶每天進行兩次付款,則每年進行 730 次付款。
假如 D 等于 10 筆交易。所有這些交易都可以壓縮。一個比較符合實際的假設(shè)是,10%的交易發(fā)到隨機地址,而剩下 90%將會周期性發(fā)到 73 個不同的地址。
隨機支付的 10%將占據(jù)鏈上空間 20(接收者)+4(數(shù)額)+上一個交易鏈接(3 字節(jié))=27字節(jié),總共 2Kbytes。
90%周期性支付將占據(jù)鏈上空間金額(總共 4 字節(jié)),加上 73 個地址(1.5 字節(jié))。
我們假設(shè)在 D 深度限制內(nèi)可以使用所有 delta references。因此,730 筆交易將占據(jù) 7.5字節(jié),或者每筆交易 10 個字節(jié)。但是,在線的完整節(jié)點仍然需要處理所有交易并進行存儲。
最后,使用軟分叉將 Lumino 部署到比特幣網(wǎng)絡(luò)并不會節(jié)省見證字段(Segwit)空間,因為Lumino exodus 地址是一個任何人都可以花費的輸出,消耗此輸出的交易將指定一個空腳本。
擴展性
要了解 Lumino 可以服務(wù)多少用戶,處理多少筆交易/秒,我們必須分析 M 和 D 的值可能是多少。
我們應(yīng)該限制 M 值,以減少對區(qū)塊頭的需求。對于以區(qū)塊鏈為基礎(chǔ)的工作證明,這通常不是問題,因為每個區(qū)塊都帶有工作證明,我們可以通過向無效區(qū)塊(包含沒有簽名的交易)添加大量的確認來發(fā)起拒絕服務(wù)攻擊。我們可以將 M 值設(shè)置為 1 年的區(qū)塊量。
必須選擇 D 值,以便節(jié)點可以存儲每個源賬戶的最后一個 D PTI, 那些交易可以快速持久地進行存儲(就像 RAM 或者 SSD)。假設(shè) D=10,如果平均 PTI 是 20 字節(jié),那么每個源賬戶占200 字節(jié)的空間。假設(shè) LTCP 協(xié)議占用 SSD 10GB 的空間進行臨時存儲,那么網(wǎng)絡(luò)可以處理 5億用戶(這個數(shù)字并沒有考慮 Lumino 網(wǎng)絡(luò),僅僅是區(qū)塊鏈層。)
但是,為了減少區(qū)塊鏈重組之后同步所需的時間,節(jié)點可以在最后的 B 區(qū)塊中存儲完整交易(例如,B=20),那么節(jié)點需要緩存 60MB 的交易,這是可以忽略不計的。礦工存儲完整交易的時間可以更長些,例如一個月,以允許長時間分裂后進行網(wǎng)絡(luò)重組。
假設(shè)互聯(lián)網(wǎng)連接可以進行 0.5 Mbyte/秒的傳輸(4 Mbit/秒, 42.5 GBytes/天)1,假設(shè)區(qū)塊使用“密致區(qū)塊”或者類似區(qū)塊 1 壓縮技術(shù)進行傳播,則節(jié)點使用全帶寬達到 7000 筆/秒。使用三分之一寬帶似乎對于家庭電腦來說是合理的,速度將達到 2300 筆/秒。如果每個用戶進行兩筆支付,那么網(wǎng)絡(luò)將可以服務(wù) 1 億用戶。
現(xiàn)代家庭電腦的 CPU 每秒可以驗證 8000 筆 ECDSA 簽名,因此 CPU 并不是瓶頸。作為比較,如果比特幣使用相同的帶寬,比特幣區(qū)塊將是 100 Mbytes,比特幣吞吐量約為550 筆/秒。但是比特幣區(qū)塊鏈所占的空間將是 Lumino 網(wǎng)絡(luò)的 40 倍,大約能處理四分之一的交易量。
總結(jié)
Lumino 交易壓縮是區(qū)塊鏈實現(xiàn)高壓縮比的一個替代方案。交易壓縮意味著重復(fù)使用數(shù)據(jù),這意味著作折衷,更高的壓縮率需要減少隱私。但是,折衷的選擇權(quán)在用戶的手中。雖然LTCP 協(xié)議可以壓縮存儲空間,但是存在資源瓶頸:帶寬使用率,以及在較小程度上的 CPU使用率。但是如果節(jié)點只接受或者驗證 LTCP 交易,他們就可以輕易發(fā)現(xiàn)包含無效驗證數(shù)據(jù)的交易,因為 LTCP 交易允許短欺詐證明,可以進行分片。
LTCP 形成 RSK 鏈下支付網(wǎng)路 Lumino 網(wǎng)絡(luò)的交易層,使 Lumino 網(wǎng)絡(luò)可以滿足 10 億 RSK 用戶的需求。
評論
查看更多