【讀書心得】精通門羅幣:隱私科技的偉大結晶

前言:在加密貨幣(如BTC/ETH)的世界中,人們所謂的半匿名通常只是指涉『收發地址和個人身份』沒有被連結: 帳本上金流和收發方地址一直都是透明,只要有心人開始進行分析比對(如查到我的ETH 地址是kowei.accepte.eth),那所謂的鏈上隱私將不復存在,即使透過大量創建地址和混幣器的幫助,這也是治標不治本無法讓人獲得完全的鏈上隱私,基於隱私就是自由的重要構成,我們要如何才能獲得完全的隱私?
在本篇網誌中,我要和大家分享自己閱讀「精通門羅幣(mastering monero)」所學,在閱讀本書之前我知道XMR/門羅幣是最適合用CPU挖礦的專案(註ㄧ),即使自己真的持有一點XMR(推薦台灣礦池),也從未對其精妙的隱私科技有深入的研究.整本「公開的帳本」居然可以隱匿「收發方地址與交易金額」感覺就是過於科幻.重點是這樣的隱私不是選擇、而是所有人在使用門羅的強制要求.而我閱讀本書和沈澱思考後,我會認為門羅是一個已經成功、接近完成品的卓越專案(註二),他沒有豐富的智能合約、沒有staking 或是其他複雜的功能

門羅只專注在一件事情並且成為偉大的存在:賦予每個人隱私交易的可能

註一:因為他們認為去中心化的挖礦是為持系統健康的重要面向,在成功對抗Asic的同時副作用是殭屍網路和駭客通常也喜歡挾持電腦挖門羅.對於挖礦而言門羅保有尾端發行這個特徵,總量發行完畢會還會每年通膨1%左右,確保系統不會只依賴手續費而存在

註二:我不認為BTC長期會存在、ETH距離成品也還有不知道幾年的時間,DASH/ZCASH/PIVX在門羅面前不是半成品就是次殘品…

門羅幣的特徵

  • 去中心化的網路:除了每半年更新挖礦演算法貼合CPU對抗ASIC、讓每個人都能參與挖礦維護系統安全避免算力被壟斷外,門羅官方錢包也會鼓勵大家自己經營一個節點,只需要下載官方錢包後選擇自有節點,整個區塊鏈60GB就會同步到你的硬碟.
  • 安全性:即使你不經營自有節點、或是使用行動錢包,每個參與者都可以驗證所有的交易有效性而無需相信節點(隱私科技的細節下談)
  • 隱私性:門羅幣的整個帳本都不可見:從寄方簽章、收方地址和金額大小通通不可見(但是可被驗證),未來甚至會有自己的隱私網路,連IP保護都能夠透過門羅科技.
  • 不可區分性(Fungibility/indistinguishablity):因為具有隱私性的緣故,所以門羅幣有個特色就是所有的門羅幣都是一樣的,不會說有些門羅因為參與洗錢或是犯罪而被追蹤標記,導致被黑名單後價值耗損,一個門羅就是價值一個門羅!

門羅幣的隱私科技概述

在介紹門羅幣的隱私科技細節之前,我想先提醒大家門羅幣每個帳戶會有四把金鑰,最根本的是private spend key(又稱為seed,代表帳戶的所有權),可以從中計算出剩下三把鑰匙:private view key、public spend key、public view key(後兩者是地址的構成重要成分).

mm-c03i01 monero tech

我用「精通門羅」圖3-1來說明(source

  • ㄧ次性地址(隱藏收款方地址的方式):寄送方透過自己的private spend key加上收款方公開地址上的public spend key、public view key生成一次性地址,只有這個一次性地址會被記錄在區塊鏈上而門羅公開收款地址並不會(註四),收款方透過private view key 和 public spend key 可以檢查整個區塊鏈是不是有人寄錢給自己,門羅允許使用private view key 建立僅供瀏覽入帳金流的錢包,方便收款方向他人證明自己有收到錢(如教會公廟或是募資專案捐款計畫),這樣的設定是不僅「不能花錢」也是「不能看到花錢紀錄」,為了確保整個帳本的金流隱私這是一個特殊設計而絕對不是缺陷.

註四:雖然公開收款地址不會被紀錄在區塊鏈上,卻可能被網路上的使用者紀錄和分享,所以更安全的收款方式是每次用 private spend key 產生出全新的子地址(subaddresses)來收款,所有子地址的收款可以用同樣的private view key 看到所以對於使用者而言是可以增加隱私的方法

  • 環狀簽名(隱藏真實寄送方):當寄送方要對發送訊息做數位簽章的時候,就從區塊鏈上把之前別人的一次性地址public key 給抄下來(目前是環的大小是十一組簽名,所以要抄十組),透過自己公鑰k0和訊息產生亂碼a1,然後用a1和某組public key (k1)和亂數r1產生a2,周而復只直到透過a10、k10 和 r10 產生 a11,重點是最後要選取 r11讓「a11、k0和r11」產生a1.最後會在區塊鏈上的只有其中一個亂碼如a7和亂數(r1-r11),每個人都可以驗證整個環狀簽名中有一部分是真正的簽發者簽發的(用私鑰p0給訊息數位簽章),但卻不知道到底是誰(註五).

註五:為了避免有人重複簽發同一筆支出,會額外再鏈上紀錄一筆key image,這個紀錄會和實際花錢的寄送方資金來源相關:透過源自同來源資金的交易紀錄會產生一樣的key image 來避免double spending attack.

  • RingCT(隱藏金流大小):這分成兩部分,範圍證明(證明寄送者發出的金額大於零)和全同態加密(在加密的情況下進行計算,證明交易之前的總門羅和交易之後的總門羅數字相等).門羅一個重要的升級『防彈協議bulletproof』,就是大幅度降低同態加密的證明大小和複雜度(證明長度會隨著資金來源數目而上升),原本可能是7KB/14KB線性增加,現在已經是2KB/2.5KB對數增加
  • Kovri(I2P-zero):門羅幣自帶的網路通訊層,讓大家用錢包轉帳的時候不用開vpn或洋蔥也能保持網路身份的隱私性,已經在指令錢包(CLI錢包)供大家使用了,希望之後可以推廣到GUI(圖性化介面)錢包,現在也有蒲公英計畫正在完備IP和門羅交易的去連結化.
  • OpenAlias: 像是以太坊命名網路一樣的應用,讓人們可以去中心化的幫自己的公開自己取名(如 donate.getmonero.org),這種人類可讀地址的因為需要自備DNS地址所以使用者較為稀少,希望哪天可以降低使用門檻.

仍在進行的隱私科技開發

  • 開源硬體錢包:顧名思義就是門羅專案除了和著名硬體錢包如Ledger Nano 整合外,也希望可以設計出完全開源和安全的硬體錢包

在本篇文章中我精簡的介紹了門羅的特徵和科技,希望能夠說服大家這是去中心化帳本中真正落落地的偉大存在,如果你喜歡本文覺得有幫助的話請歡迎分享、轉發、留言、拍手讚賞、甚至捐款(我是有收門羅的XD)

%d bloggers like this: