2009 年,中本聰提出比特幣的概念,自那以后,比特幣已迅速在主流應用和商業用途中傳播開來,成為首個吸引大量用戶的數字貨幣,是數字貨幣史上的里程碑。不過從完成交易的角度來看比特幣接收的情形,我們可以發現一個重要問題,就是比特幣區塊確認交易的時間過長,而傳統的支付公司已找出使買賣雙方實現比特幣交易零確認的解決方案,但這一解決方案通常是要在協議之外采用可信賴的第三方完成交易。
比特幣提供匿名交易,實現發送者和接受者之間一對一交易的關系,并能永遠記錄全網發生過的交易。比特幣只提供低層次的隱私保護,這點在學術界眾所周知,盡管有此不足,許多人仍然相信區塊鏈記錄的轉賬歷史。
基于中本聰成果,MomoCash 是以保護隱私為要旨的加密數字貨幣。我們在比特幣概念的基礎上進行了一系列的改進,由此誕生出一個去中心化的和具備良好匿名性的加密數字貨幣,它支持防篡改的即時交易,又有能為 MomoCash 網絡提供服務獎勵制的點對點次級網絡。
主節點網絡
全節點是運行在 p2p 網絡上的服務器,讓小節點使用它們來接受來自全網的動態變化。這些全節點需要顯著的流量和要消耗大量成本的其它資源,由此在一段時間內會觀察到比特幣網絡上的這些節點數量呈現穩步下降的趨勢,使區塊廣播的時間需要額外增加 40 秒。為解決這問題,提出了許多方案,例如引入微軟研究的新獎勵計劃和 Bitnodes 激勵計劃。這些節點對網絡的健康而言十分重要,它們能讓客戶端同步和通過全網快速廣播信息。我們提議增加次級網絡,名為MomoCash 主節點網絡。這些節點將具有高可用性,而且在為網絡提供符合一定要求的服務后能夠得到主節點服務獎勵。
1、主節點獎勵計劃——成本和獎勵
比特幣網絡全節點銳減的主要原因是缺乏對運行節點的獎勵。隨著時間的推移,全網接入的用戶會更多,對帶寬的需求會更高,對節點運行者的資金需求也更多,結果使運行全節點的成本提高。考慮到成本的上升,節點運行者必須要降低他們的運行成本或者運行輕客戶端,但這樣完全不利于網絡健康。
正如比特幣網絡一樣,主節點是全節點,但不同的是主節點必須對全網提供一定的服務,并需要一定量的押金才能加入。押金不會丟失,在主節點運行時也是安全的。這可讓投資者為全網提供服務的同時,賺取一定的投資收益,減少了價格的波動性。
運行一個主節點,需要存儲 1000MOC。當主節點生效時,它可為全網的客戶端提供服務,并以利息的形式獲取獎勵。這就使得用戶為這項服務投資,但同時得到一定的回報。主節點獲取的收益是來自同一個礦池,大約有 45%的區塊獎勵納入到這個計劃中。
考慮到主節點獎勵計劃的獎勵率是固定的百分比,還有主節點網絡節點存在波動的事實,預計主節點獎勵會根據當前生效的主節點總數作出變化。通過以下的計算公式可計算出運行主節點一整天的收益:
n: 運行者控制的主節點數
t: 主節點的總數
r: 當前的區塊獎勵(當前平均獎勵是 5MOC)
b: 平均每天的區塊數,當前 MOC 網絡每天區塊通常是 576 個
a: 主節點的平均獎勵(平均每個區塊獎勵的 45%)
運行主節點的收益公式:
(式子中的變量與上述相同)
運行主節點需要成本,這在網絡上創建了生效節點的硬限制和軟限制。目前有10 萬 MOC 流通,只有 30 個節點可能可以在網絡上運行。軟限制由配置節點所花的成本和平臺的滯留量所致,因為 MOC 是流通的貨幣,而不僅僅是為投資所用。
2. 確定順序
使用特定的確定算法創建主節點的偽隨機排序。使用為每個區塊設計的工作量證明機制的哈希算法,挖礦網絡可以提供支持這個排序的安全性。
選擇主節點的代碼:
示例代碼還可以進一步擴展為主節點排序,“第二”,“第三”和“第四”個主節點的計算依此類推。
3、 非信任制的 Quorum
當前 MOC 網絡大約具有 30 個生效的主節點,而需要 1000 MOC 擔保才可成為一個生效的主節點。我們創建了一個系統,其中沒有一人能控制整個主節點網絡。例如,如果有人想控制 50%的主節點網絡,他們將不得不從公開市場上購買 3萬個 MOC。這將極大提高幣價,所以獲得如此多 MOC 是不可能的。
在擁有主節點網絡和擔保條件的前提下,我們以非信任制的方式使用該次級網絡進行高度敏感的任務,其中沒人能控制網絡的演變結果。從總池中選擇 N 個偽隨機主節點來執行相同的任務,這些節點可以充當裁判,過程無需整個網絡的參與。
例如,一個非信任制的 Quorum 發現 InstantSend,InstantSend 會使用 Quorum確認交易和鎖定輸入。
另一個例子是,非信任制的 Quorum 可以利用主節點網絡作為金融市場的去中心化預言者,這讓實現去中心化的合同成為可能。例如蘋果公司的股價在 2016 年12 月 31 日超過 300 美元的話,就提交公約 A,否則提交公約 B。
4、角色和服務量證明機制
主節點可以向網絡提供任意的額外服務。正如在概念中指出,我們的成功應用是PrivateSend(匿名發送)和 InstantSend(即時支付)。使用我們稱之為“服務量證明”的機制,可以要求這些節點處于在線狀態,即使在正確的區塊高度上也要作出響應。
惡意者也可以運行主節點,但不會對網絡提供任何實質性的服務。為了減少這些人使用系統做出對自己節點有利事情的概率,必須 ping 剩余網絡以確保它們保持活躍。這項工作通過主節點網絡在每個區塊選擇 2 個 Quorum 來完成。Quorum A檢查 Quorum B 每個區塊的服務。Quorum A 是與當前區塊哈希最接近的節點,而Quorum B 是遠離所說區塊哈希最遠的節點。
主節點 A(1)檢查主節點 B(2300) 主節點 A(2)檢查主節點 B(2299) 主節點 A(3)檢查主節點 B(2298)
檢查網絡就是要驗證節點是生效的,這由主節點自身完成。全網區塊的 1%會受到檢查。這使整個網絡在一天中會被檢查大約 6 次。為了保持這個系統是非信任制的,我們使用 Quorum 系統中隨機選擇節點,但我們最少也需要六次檢查來排查一個惡意節點。
為達到欺騙系統的目的,攻擊者需要在一輪中被選中六次。否則,欺騙的目的就被系統發現,使其不會得逞,其它節點也是這樣。
表 1 在服務性證明機制失衡的情況下,一個獨立的主節點欺騙系統的概率n:攻擊者控制的主節點數 t:全網主節點總數 r:區塊鏈深度 基于 Quorum 系統,主節點的選擇是偽隨機的。
5. 主節點協議
主節點使用一系列擴展協議在全網進行廣播,包括主節點消息 announce 機制和主節點消息 ping 機制。這兩類機制用來確認全網節點處于生效狀態,除了它們,執行服務量證明機制需求的還有 PrivateSend 和 InstantSend。
在錢包中發送 1000MOC 到特定地址,就激活代碼自然生成能在全網進行廣播的主節點, 隨之次級私鑰生成,它是用來對其它所有信息進行簽名,另外在運行單機模式時還可用來完全鎖定錢包。
在兩***立的機器上使用次級私鑰讓冷模式成為可能。主要的“熱”客戶端對1000 MOC 的輸入進行簽名,此過程包含使用二級私鑰對信息進行簽名。 之后,“冷”客戶端能發現包含次級私鑰的信息并將主節點激活。這讓“熱”客戶端失效(客戶端關閉),這樣攻擊者訪問激活后的主節點也不可能獲得竊取其中的1000MOC。
主節點開始運行時,會向全網發送“主節點廣播”信息,包含有:
信息:(1000MOC 輸入,可訪問的 IP 地址,簽名,簽名時間,含有 1000MOC 的公鑰,次級公鑰,用于捐贈的公鑰,捐贈的百分比)此后每隔 15 分鐘,一條 ping 信息會對外發送,證明節點生效中。
信息:(1000MOC 的輸入,簽名(使用次級私鑰),簽名時間)隨著時間的推移,網絡會移除失效的節點,讓該節點不再被客戶端利用或再用于支付。節點也可以不停地 ping 網絡,但如果它們的端口不打開,最終會被標記為失效狀態,不再用于支付。
6. 主節點列表的廣播
進入 MOC 網絡的新客戶端必須發現當前全網活躍的主節點,這樣才可以使用它們的服務。一旦它們加入網狀網絡,它們的節點就會收到請求主節點列表的指令。
設置緩存的目的是讓客戶端記錄主節點及其當前狀態,因此當客戶端重新啟動時,他們只需簡單加載該文件,不需重新請求主節點的完整列表。
7. 使用挖礦進行支付和強制規定
為了確保每個主節點都獲得應有的區塊獎勵,網絡必須強制每個區塊支付獎勵給正確的主節點。如果礦工不愿意的話,他們的區塊必須被網絡拒絕,否則作弊就會產生。
我們提出一個策略,就是一個主節點代表一個 Quorum,選擇其中優勝的主節點然后廣播它們的信息。信息得到 N 次廣播后,會選擇同一目標接收者,這樣達成共識后選中的區塊要對該主節點支付獎勵。
在網上挖礦時,礦池(礦池的作用是將單獨的礦工整合起來)使用 RPC API 接口獲取生成有關區塊的信息。為了向主節點支付獎勵,必須添加次級接收者到GetBlockTemplate 來擴展接口。礦池之后廣播自己的成功開采的區塊,使自己和主節點之間保持同步。
匿名支付
我們相信,為了能在客戶端提高強度保護用戶隱私,實現標準的非信任制是很重要的。例如 electrum,Android 和 iPhone 這些客戶端,也會直接嵌入相同的匿名層和很好利用協議擴展性。這讓用戶使用堅實穩固的系統匿名發送資金時有著相同的體驗。
PrivateSend 是 CoinJoin(提供匿名技術的軟件)的改進和擴展版本。除了擁有 CoinJoin 的核心理念,我們還進行一系列的改進,例如去中心化、使用鏈接實現強匿名、相同面值和被動先進的混幣技術。
在提高隱私和加密數字貨幣的可互換性時,最大的挑戰是,無法做到加密整個區塊鏈。在以比特幣為基礎的加密數字貨幣體系內,能看到哪些輸出是沒發送,哪些是已發送,通常將其稱為 UTXO,全稱是未使用交易輸出。這讓每個用戶在公共帳本中都可充當誠實交易保證者的角色。比特幣的協議是在不依賴第三方參與的前提下設計的,沒有第三方的參與,仍能通過公共區塊鏈隨時讀取用戶信息實現審計是至關重要的。我們的目標是在不失去這些要素的前提下提高保密性和可互換性,我們堅信這是創建成功數字貨幣的關鍵。
使用數字貨幣范圍內去中心化的混幣服務,我們能讓貨幣本身具備完全可互換的能力。可互換性是金錢的屬性,決定貨幣的各單位要保持平等。當你以通貨的形式接收資金時,資金不應該保留之前用戶的使用記錄,或者用戶能很輕易地與之前的使用歷史撇清開來,從而做到所有貨幣是平等的。與此同時,任何用戶在不影響他人隱私的情況下,保證公共賬本的每筆交易都是誠實的。
為了提高可互換性和保持公共區塊鏈的誠實性,我們提議使用先進的非信任制去中心化混幣技術,為了保持通貨的可互換性,這項服務直接整合到這個貨幣體系中,對于每個用戶而言都可容易和安全使用。
1. Coinjoin 通過賬戶可追蹤資金流向
一個簡單的策略是在現有的比特幣基礎上整合 Coinjoin,就是單純將交易合并在一起。通過追蹤聯合交易的用戶資金流向就會將用戶的身份暴露出來。
圖 2:例如將 2 個用戶的交易整合為 Coinjoin 交易
在這項交易里,0.05 個比特幣使用混幣技術對外發送,為了追蹤這筆資金的來源,僅需要把右邊的數額加起來再和左邊的數額匹配就可得知。
重新組合交易
0.05+0.0499+0.0001(fee) = 0.10BTC.
0.0499+0.05940182+0.0001(fee) = 0.10940182BTC.
隨著更多用戶加入到混幣的過程中,獲得結果的難度會以指數級增長。然而,在以后某個時間點結果還是可以被追蹤出來,匿名性失效。
2. 直接鏈接和中繼鏈接
在 Coinjoin 其它實現的應用里,用戶先把資金匿名化,最后把交易發送到知道發送者身份的平臺或個體,這點是有可能實現的。但這打破了匿名性,能讓其它人往前追蹤用戶的交易,我們稱這類型的攻擊為“中繼鏈接”。
圖 3: 中繼轉換鏈接
在這個例子中,Alice 匿名發送 1.2BTC,分別以 1BTC 和 0.2BTC 對外輸出,然后從 1BTC 的輸出中再對外輸出 0.7BTC,剩余 0.3BTC,這 0.3BTC 輸出發送到可識別對象去,但實質上 Alice 已經將 0.7BTC 成功匿名發送出去。
為了確定匿名交易的發送者身份,要從“交換交易”環節開始,通過區塊鏈往前追溯,直至找到“Alice 匿名發送 0.7 個 BTC”。一旦找到的話,你會發現那是你的用戶最近匿名購買了東西,從而看透這個匿名交易。我們稱這種類型的攻擊為“中介轉換鏈接”。
圖 4:中介轉換鏈接
在第二個例子中,Alice 在 coinbase 處花費了 1.2BTC,然后將這數額匿名化再以 1BTC 輸出。接著,她又花費 1BTC,剩余 0.3BTC 再結合之前的 0.2BTC,組成為 0.5BTC 對外輸出。
結合匿名交易和 CoinJoin 交易,將前后的整個交易歷史整理一遍,從而可徹底看穿這個匿名功能。
3. 增強的隱私和 DOS 防護
多方的交易可以合并為一個交易,PrivateSend 很好地利用了這點,它將多方的資金合并在一起對外發送,這樣一旦整合后就無法再次拆分。考慮到PrivateSend 交易是專門為用戶支付設置的,這個系統是高度安全防盜竊,用戶的貨幣是十分安全的。目前,使用 PrivateSend 的混幣技術至少需要 3 方參與。
三個用戶的資金合并到一個共同交易,用戶會以新的打亂過的形式對外輸出資金。
為了從整體上增強系統的隱私性,我們提以使用 0.1MOC,1MOC,10MOC 和 100MOC的相同面值。在每輪混幣過程中,所有用戶應該以相同面值的形式輸入和輸出資金。除了使用相同面值外,交易手續費會被移除,而且所有交易會分解成分散的、獨立的、前后沒有關聯的小交易。
接下是應對可能的 DOS 攻擊,我們提議所有用戶在加入時把交易以押金的形式提交到礦池去,交易最后還是輸出到用戶,同時又可向礦工支付一筆高的報酬。也就是說,用戶向混幣池提高請求時,交易一開始就要提供押金。如果某個時候用戶不合作了,例如拒絕簽名,押金交易會自動在全網廣播,若要在匿名網絡上進行持續攻擊,所付出的代價是極其高昂的。
4. 被動的資金和區塊鏈匿名
PrivateSend 每輪的混幣限制為 1000MOC,并多輪混幣才能匿名混合相當數量的資金。為了讓用戶體驗方便和攻擊變得困難,PrivateSend 以被動的模式運行。同時設定時間間隔,用戶的客戶端要通過主節點連接其它客戶端。一旦進入主節點,用戶要求需要匿名的面值數額會在全網依次排隊廣播,但是沒有信息會將用戶的身份暴露出來。
每輪的 PrivateSend 過程可視為增強用戶資金匿名性的獨立事件,然而每輪只限制 3 個參與者,因此觀察者有三分之一的機會追蹤交易,為了提高匿名的質量,會采用鏈接的方法,將資金通過多個主節點依次發送出去。
5. 安全性考慮
由于交易合并在一起,主節點在用戶資金流過時有可能進行“窺探”。由于每個主節點都被要求持有 1000 MOC 和用戶選用隨機主節點來部署他們的資金,所以“窺探”的影響性不大。通過區塊鏈追蹤交易的概率計算如下所示。
n: 攻擊者控制總的節點數 t: 全網主節點總數 r: 區塊鏈深度 主節點的選
擇是隨機的
考慮到 MOC 的有限供應(此時此刻撰寫白皮書時有 530 萬個 MOC 在流通)和市場上低的流動性,在一次攻擊中控制如此之多的主節點是不可能的。
通過遮掩主節點上發生的交易來擴展系統,也會大大提高系統的安全性。
6. 使用中繼系統遮掩主節點
在4 一節,我們描述了使用 PrivateSend 多輪混幣技術追蹤單一交易的概率。這可以進一步通過遮掩主節點加以強化,使他們不能看到用戶輸入/輸出方向。要做到這一點,我們提出一個簡單的可讓用戶保護自己的身份的中繼系統。
我們不讓用戶向礦池直接提交輸入和輸出的交易,而是讓他們從全網隨機選擇主節點然后要求它將輸入/輸出/的簽名中繼傳輸到目標主節點。這意味著,主節點將接收 N 次的輸入/輸出和 N 組簽名。每輪混幣只為其中一個用戶服務,但主節點無法知道究竟是哪個用戶。
使用 InstantSend 進行即時交易
使用主節點的 Quorum,用戶能夠發送和接收即時不可逆轉交易。一旦 Quorum 形成,該交易的輸入被鎖定到對應的特定交易去,而目前全網交易鎖定的時間是大約 4 秒。如果在主節點網絡達成鎖定的共識,所有與之沖突的交易和區塊將被永遠拒絕,除非它們能匹配當時鎖定的交易對應 ID。
這將允許商家在現實商業中使用移動設備來替換傳統 POS 機器,用戶可像使用傳統紙幣一樣快速進行面對面的非商業交易。這過程是沒有中心權威的干預。此功能的廣泛綜述可以在 InstantSend 白皮書中找到。
其他改進
1.Neoscrypt 算法
采用的挖礦算法是 Neoscrypt 算法。它是一款新的專為普通計算機硬件設計的內存密集型加密算法。 Neoscrypt 算法的主要作用是防礦機, 它是一種主要基于 Salsa20 和 ChaCha20 算法,采用串聯或并聯運行模式。Neoscrypt 算法可以采用 CPU\GPU 挖礦,不僅支持 AMD 顯卡,而且對 Nvidia 顯卡也很友好。當ASIC 突破此算法后,MomoCash 將采用改進升級 POW 算法。
跨鏈哈希運算的另一個好處是高端的 CPU 有著跟同級 GPU 接近的平均回報。GPU消耗的功率已有 30-50%的下降,比大多數加密數字貨幣使用的 Scrypt 算法的功率少得多。
在密碼學中,密鑰導出函數(KDF)使用偽隨機函數從秘密值(eg.主密鑰)導出一個或多個密鑰。KDF 可用于將密鑰擴展到更長的密鑰或獲得所需格式的密鑰(eg.將作為 Diffie-Hellman 密鑰交換的結果的組元素轉換為用于 AES 的對稱密鑰)。密鑰加密哈希函數是用于密鑰推導的偽隨機函數的流行示例。密鑰導出函數通常與非秘密參數一起使用,以從公共秘密值導出一個或多個密鑰。這樣的使用可以防止獲得派生密鑰的攻擊者學習關于輸入秘密值或任何其他導出密鑰的有用信息;也可以使用 KDF 來確保派生密鑰具有其他期望的屬性,諸如在某些特定加密系統中避免“弱密鑰”。KDFs 最常見的用途是將密碼散列的方法來密碼驗證,我們將非秘密參數稱之為 salt。KDFs 也通常用作多方密鑰協商協議的組成部分,這些關鍵推導函數的示例包括 KDF1 和 ANSI X9.42 中的類似功能。特別的,基于 HMAC 的提取和擴展密鑰導出功能(HKDF) 是一種簡單的基于 HMAC的 KDF,可用作各種協議和應用暴力攻擊的難度隨著迭代次數的增加而增加。迭代計數的實際限制是用戶不愿容忍登錄計算機或看到解密消息的可察覺延遲。使用 salt 可以防止攻擊者預先計算派生密鑰的字典。類似的,當下還有另一種方法叫做密鑰強化(key strengthening),使用隨機鹽擴展鍵,但是不像密鑰延伸一樣可以安全地刪除 salt。這將強制攻擊者和合法用戶對 salt 值執行強力搜索。
2. 挖礦供應
MOC 采用另一種可降低挖礦引起的通脹的方法,就是每年的供應進行 7%的減產,這不同于其它數字貨幣的減半。另外,每個區塊的供應量與全網的礦工數直接相關,更多礦工的參與意味著更少的挖礦獎勵。
MOC 的開取計劃會在本世紀持續,慢慢直至到下世紀中葉,最終在 2150 年左右挖礦才會停止。
結論
本文介紹各種旨在提高比特幣協議的概念,這對于普通用戶來說意味著,有更好的隱私性、可互換性、更少的價格波動和全網更快的信息廣播。這一切都是通過使用 two-tier 激勵模型,而不是借用其它數字貨幣如比特幣現有的single-tier 模型來實現。使用這個可替代的網絡設計讓添加更多類型的服務成為可能,例如去中心化的混幣技術、即時交易和使用主節點 quorum 的去中心化預言。
評論
查看更多