CryptoNote inside

CryptoNote 設計哲學(Phylosophy)

CryptoNote 是一門技術,允許你創建完全匿名的加密貨幣。十多年來,我們的一些社區成員一直專註於研究與開發。我們的目標是改進當前金融衍生產品,影響當代經濟學範式。

目前我們地球上的資源分配及經濟狀態,由少數人控制。幾個世紀以來一直如此,間接使人類遭受瘟疫、戰爭和流血犧牲。儘管人類希望通過教育和國際化克服危機,但我們仍然沒有充分決定我們的生活。

然而,隨著計算機科學、數學和加密學的發展,極有可能顛覆這一現狀。加密貨幣的出現是新世界即將到來的第一個跡象。充分利用現有技術手段,大眾將制定新的透明原則,而加密演算法將其保證其進行。

通過突破性創新,鼓勵啟蒙是我們的理念。讓貧困的人員獲得財務資源,讓壓迫者獲得優質教育,飲用水和更美好生活的希望。 CryptoNote 不只是創造另一種數字貨幣。它攜帶的思想和觀念,是恢復自由及和平繁榮的第一步。

環簽名 Ring signatures: Untraceable payments

普通數字簽名(例如(EC)DSA,Schnorr等)驗證過程涉及簽名者的公開密鑰。 這是一個必要條件,因為簽名實際上證明作者擁有相應的秘密密鑰。 但並不總是充分的條件。

環形簽名[1] 是一個更複雜的方案,實際上可能需要幾個不同的公鑰進行驗證。 在簽名的情況下,我們是一群人,每個人都有自己的私鑰和公鑰。 環形簽名證明的是給定消息的簽名者是該組的成員。 普通數字簽名方案的主要區別在於,簽名者需要一個密鑰,但驗證者無法確定簽名者的確切身份。 因此,如果您遇到Alice,Bob和Carol公鑰的環簽名,您只能聲稱其中一個人是簽名人,但您無法確定具體的他或她。

這個概念可以用於通過使用環簽名中的其他成員的公鑰將數字交易發送到網路,不可追蹤,這將用於交易。 這種方法證明,交易的創建者有資格花費在交易中指定的金額,但他的身份與他在其簽名中使用的公鑰的用戶無法區分。

應該指出的是,外圍交易並不限制你自己花錢。 您的公鑰可能會出現在其他數十個環形簽名中,但只能作為混亂因素(即使您已經使用相應的秘鑰來簽署自己的交易)。 此外,即使兩個用戶創建具有相同公鑰集的環形簽名,簽名也是不同的(除非他們使用相同的私鑰)。

[1] Ronald L. Rivest, Adi Shamir, and Yael Tauman. How to leak a secret. In ASIACRYPT, pages 552–565, 2001

一次性地址 One-time keys: Unlinkable transactions

通常,當您發布公開地址時,任何人都可以檢查所有交易的收入,即使它們隱藏在環形簽名之後。 為了避免交易鏈接,您可以需要創建數百個密鑰,並將其發送給您的付款人私人,但這剝奪了您使用單個公開地址的便利。

CryptoNote 通過為每個p2p付款自動創建從單個公鑰派生的多個唯一的一次性密鑰來解決這一困境。 解決方案在於對修改過的 Diffie-Hellman交換協議[1]。 最初它允許雙方產生一個從他們的公共密鑰派生出來的公共秘密密鑰。 在我們的版本中,發件人使用接收者的公共地址(A,B)和他自己的隨機數(r)來計算支付的一次性密鑰。

發送者只能生成密鑰的公共部分,而只有接收者可以計算私人部分; 因此接收方是在交易發生後可以獲得資金的唯一接收方。 他只需要對每個交易執行單一公式檢查,以確定它是否屬於他。 這個過程涉及他的私鑰,因此沒有第三方可以執行這個檢查,並發現由發送者生成的一次性密鑰與接收者的唯一公共地址之間的鏈接。...

我們協議的一個重要部分是發送者使用隨機數據。 即使發件人和接收方對於所有交易都保持不變,這也總是導致不同的一次性密鑰(這就是為什麼密鑰稱為「一次性」)。 此外,即使這兩個人是不變的,所有的一次性鑰匙也將是絕對獨一無二的(每次交易,都會生成新的一次性地址,即使交易雙方之前已經有過交易)。

[1] Whitfield Diffie and Martin Hellman. New directions in cryptography. IEEE Transactions on Information Theory 22 (6): 644–654, 1976.

雙花問題的解決 Double-spending proof

完全匿名是否會產生雙花問題,發送方將同一款項花費了多次?當然不是這樣的,這與任何支付系統原則都不相容,問題可以解決如下:

環簽名實際上是一類具有不同特徵的密碼演算法。CryptoNote 使用修改過的「可追溯環簽」[1]。事實上,我們將可追溯性轉化為可鏈接性。該屬性限制簽名者的匿名性,如下所示:如果他使用相同的私鑰創建了多個環形簽名(外部公鑰的集合是無關緊要的),這些簽名將鏈接在一起,這表示雙重花費嘗試。

為了支持可鏈接性,CryptoNote 在簽名時引入了一個由用戶創建的特殊標記,我們稱之為密鑰鏡像。秘鑰的密碼單向函數的值,在數學上它實際上是這個密鑰鏡像。單向性意味著只給出密鑰鏡像是不可能逆推出私鑰的。另一方面,在計算上不可能發現碰撞(兩個不同的私鑰,其具有相同的密鑰鏡像)。使用任何公式,除了指定的公式,將導致無法驗證的簽名。所有考慮的事情,密鑰鏡像是不可避免的,明確的,而且是私鑰的匿名標記。

所有用戶保留所使用的密鑰鏡像(與所有有效交易的歷史相比,它需要不大的存儲量),並立即拒絕具有重複密鑰映像的任何新的環簽名。 它不會識別不正常行為的用戶,但它不會阻止由於惡意的意圖或軟體錯誤導致的雙重支出嘗試。

[1] Eiichiro Fujisaki and Koutarou Suzuki. Traceable ring signature. In Public Key Cryptography, pages 181–200, 2007.

抵抗區塊鏈交易數據分析 CryptoNote blockchain analysis resistance

有很多學術論文致力於分析比特幣區塊鏈。作者跟蹤貨幣流動,識別硬幣的所有者,確定錢包餘額等。進行此類分析的能力是由於地址之間的所有交易都是透明的:交易中的每個輸入都是唯一的輸出。此外,用戶經常重複使用舊地址,多次接收和發送貨幣,這簡化了分析師的工作。它會無意中發生:如果您有公共地址(例如捐款),那麼您一定會在許多輸入和交易中使用這個地址。

CryptoNote 旨在減輕與密鑰重用和單輸入到單輸出跟蹤相關的風險。付款的每個地址都是唯一的一次性密鑰,從發送方和收件人的數據派生。它可能出現兩次256位哈希衝突的概率。一旦您在輸入中使用環形簽名,就會產生不確定性:哪個輸出已經花費了?

嘗試繪製邊緣上的輸出和交易中的地址的圖形,將會獲得一個樹:沒有任何周期的圖形(因為沒有使用鍵/地址兩次)。此外,有數十億可能的圖形,因為每個環形簽名都會產生歧義。因此,您不能確定哪個可能的發件人的交易路徑來到地址。根據環的大小,您可以從「一分之二」到「一千」中猜到。每次下一次交易都會增加熵,並為分析師帶來額外的障礙。

標準的 CryptoNote 交易(Standard CryptoNote transaction)

標準的 CryptoNote 交易是由白皮書中涵蓋的以下順序生成的。

鮑勃決定花費一個輸出,發送到一次性公鑰。 他需要 Extra(1),TxOutNumber(2)和他的賬戶私鑰(3)來生成他的一次性私鑰(4)。

當向 Carol 發送交易時,Bob 會隨機生成其 Extra 值(5)。 他使用 Extra(6),TxOutNumber(7)和 Carol 的賬戶公鑰(8)獲取她的輸出公鑰(9)。

在輸入Bob中,將外部鍵(10)中的鏈接隱藏到他的輸出。 為了防止雙重花銷,他還包含從他的一次性私鑰(11)派生的密鑰鏡像。

最後,Bob使用他的一次性私鑰(12),所有的公鑰(13)和密鑰映像(14)來簽署交易。 他將結果的環簽名附加到交易結束(15)。

調整自適應 Adaptive limits

分散支付系統不能依賴於單個人的決策,即使這個人是核心開發者。代碼中的硬常數和魔術數字阻止了系統的演變,因此應該被消除(或者至少被削減到最低限度)。每個關鍵限制(如最大塊大小或最小費用金額)應根據系統以前的狀態計算得出。因此,它總是自適應地自主地改變,允許網路自己開發。

CryptoNote具有以下參數,可自動為每個新塊調整:

1)難度。我們的演算法的總體思路是總結節點在最後720個塊中執行的所有工作,並將其除以它們花費的時間來完成它。工作的度量是每個塊的相應難度值。時間計算如下:將所有720個時間戳(排除和所有離群值的20%)排序。其餘600個值的範圍是對應於80%的相應塊的時間。

2)最大塊大小。令MN為最後N個塊大小的中值。那麼接受塊大小的「限制」是2 * MN。它避免了塊狀膨脹,但仍然允許極限隨時間緩慢增長。交易大小不需要明確限制,它被塊的大小限制。

平緩釋放 Smooth emission

所有數字硬幣總量的上限也是數字:

MSupply = 2^{64} ? 1

這僅僅是基於實施限制的自然限制,而不是像「N幣對每個人都應該足夠」這樣的直覺。 為了使排放過程更流暢 CryptoNote 使用以下公式來獲得積分獎勵:

BaseReward = (MSupply ? A) >> 18

其中 A 是先前產生的貨幣量。 它給了貨幣供應的可預測的增長,沒有任何斷點。

平等的挖礦權利 Egalitarian proof of work

工作量證明機制實際上是一個投票制度。用戶投票選擇正確的交易順序,以實現協議中的新功能和誠實的貨幣供應分配。因此,在表決過程中,所有參與者都有相同的投票權。 CryptoNote 使平等的平均工作定價功能完美適用於普通PC。它採用內置的CPU指令,這些指令在專用設備或具有低延遲的快速內存片上設備上實現非常困難且太昂貴。

我們提出了一個新的內存限制演算法,用於工作定價功能。它依賴於隨機訪問緩慢的內存並強調延遲依賴性。與scrypt相反,每個新的塊(長度為64個位元組)取決於所有先前的塊。因此,假設的「記憶保護」應該以指數級增加他的計算速度。

我們的演算法需要大約2 Mb每個實例,原因如下:

1.它適合現代處理器的L3緩存(每核心),這幾年應該成為主流;

2. 一兆位元組的內部存儲器對現代ASIC管道來說幾乎是不可接受的尺寸;

3. GPU可能會運行數百個並發實例,但是其他方面卻受到限制:GDDR5 內存比 CPU L3 緩存慢,並且其帶寬顯著,而不是隨機訪問速度。

4. 暫存器的顯著擴展將需要迭代次數的增加,這又意味著總體時間增加。在無信任的p2p網路中的「重」呼叫可能會導致嚴重的漏洞,因為節點有義務檢查每個新的塊的工作證明。如果一個節點在每個哈希評估中花費相當多的時間,那麼可以通過大量具有任意工作數據(隨機數值)的假對象來輕易地DDoS。

符合我們命題的工作證明演算法之一是 CryptoNight,由 Bytecoin 開發人員與我們的團隊合作創建。它旨在使 CPU 和 GPU 挖掘大致相同的效率,並限制 ASIC 礦機挖礦。

> 本文翻譯編輯人員公眾號:Cryptocurrency,既關心技術,又關心投資。歡迎加我好友,與我交流…


推薦閱讀:

MonweoV(XMV)將 1:10 硬分叉門羅幣,快來領糖果
快速了解門羅幣(Monero)的各項參數規格,看這一篇就夠了
門羅幣硬分叉即將到來,4月6日 Lithium Luna 版本發布!
門羅幣(Monero)研究實驗室報告整理 -- 看不懂論文,就看簡述

TAG:門羅幣 | 虛擬貨幣 |