Monero.門羅幣 隱匿交易的基礎介紹
今天要來簡單介紹一下,門羅幣是怎麼達到匿名交易的。本篇文章會牽涉到橢圓曲線的原理,如果不懂,可以先參考「 加密技术核心算法之安全快捷的ECC算法 」。簡單來說就是要知道這樣的關係: p = k*G , p :公鑰 k :私鑰 G :曲線上的基準點 門羅隱匿交易包含了三個技術: Ring Signature(環簽章) , Ring Confidential Transactions (RingCT, 環保密交易) 跟 Stealth Address(隱匿位址) 。在 Digital Asset Research 的文章 中這張圖解釋了各個技術所使用的地方,本篇文章,就是要介紹這三個技術。 source: https://medium.com/digitalassetresearch/monero-becomes-bulletproof-f98c6408babf 在介紹之前,先了解門羅鏈有些基本概念。在門羅中有兩把key(其實是4把,因為各有私鑰跟公鑰),一把是 view key 另一把是 spend key 。顧名思義,一把是拿來看的自己餘額的(在鏈上找 隱匿位址 ),一把是拿來花的(做 環簽章 )。由spend key可以產生 key image ( 金鑰映像 ),用來做預防雙花的證明,有點像zcash的nullifier。 Ring Signature (環簽章) 環簽章有點像混幣,就是把好幾筆交易混在一起,不過還是有差異,可以參考「 What are the technical advantages of Ring Signatures (CryptoNote) compared to CoinJoin? 」 那實際上怎麼做呢?! 假設一個初始值v,跟一串隨機數$(y_1, y_2, ..., y_n)$,然後把v跟隨機數經由$E_k$做加密,再把加密過的值跟下一個隨機數做運算(xor)再加密,如:$E_k(y_{n-1} {\oplus} E_k(y_n{\oplus}v))$,所以函數如下 $$C_{k,v}(y...