Blocknet 如何保護支付隱私

· 6 分鐘閱讀

本文比 Blocknet 是什麼?中的隱私概述更深入,逐層介紹 Blocknet 交易中的每一項隱私保護:它隱藏了什麼、如何運作,以及下次你發送或接收 BNT 時這代表什麼。

Blocknet 如何保護支付隱私?

簡短回答

Blocknet 以涵蓋 16 個輸出的 CLSAG 環簽章隱藏發送方,以一次性隱身地址隱藏接收方,以 Pedersen 承諾與 Bulletproofs 範圍證明隱藏金額。Dandelion++ 中繼隱藏交易最初進入網路的位置,每個輸出都附帶 128 位元組的加密備註。這一切都是強制的,沒有透明模式。

Blocknet 使用與 Monero 同一類久經驗證的密碼學:環簽章、隱身地址與 Bulletproofs 範圍證明,建構在 Curve25519 之上的 Ristretto 群上。在此基礎上,它還加入了以名稱付款與加密備註。每一層保護支付的不同部分,合在一起,讓檢視區塊鏈的人幾乎找不到可用的線索。

環簽章隱藏付款人

當你花費幣時,你的錢包會為一組 16 個輸出簽章:其中一個是你擁有的輸出,另外 15 個是從鏈上選取的誘餌。這個簽章是 CLSAG 環簽章。任何人都能驗證環中有一個成員簽了章,但簽章不會透露是哪一個。

環大小由共識強制執行。每個輸入都必須恰好包含 16 個環成員,且每個成員都必須是鏈上既有的真實輸出,網路會拒絕任何不符合的交易。由於網路上每個輸入的環大小都相同,環大小無法用來區分某筆交易或建構它的錢包。守護程式的程式碼固定環大小,「以防止可變環大小造成的資訊洩漏」。

為了防止同一筆幣被花費兩次,每個輸入還帶有一個金鑰映像。它對應被花費的真實輸出且獨一無二,但不會透露是環中的哪個成員。如果同一個金鑰映像再次出現,網路會將該交易視為雙重支付而拒絕。

隱身地址隱藏收款人

一個 Blocknet 地址包含兩把公鑰:花費金鑰與檢視金鑰。當有人付款給你時,對方的錢包會把你的公鑰與一個新的隨機數結合,產生一個只用於該輸出的一次性地址。你公開的地址從不出現在鏈上。

你的錢包用你的私有檢視金鑰掃描新交易,找出屬於你的輸出,之後再用花費金鑰花費它們。付給同一個地址的十筆款項會落到十個互不相關的一次性地址上,因此旁觀者既無法統計一個地址收到多少,也無法判斷兩筆支付是否付給同一個人。

Blocknet ID 名稱也是如此。像 @name 這樣的短名稱本來就是公開的,因為付款人要在 blocknet.id 上查詢它才能付款給你。付給它的款項仍然會落到全新的一次性地址上,所以這個名稱不會透露你收到了什麼。

Blocknet 如何隱藏交易金額?

金額以 Pedersen 承諾的形式儲存。承諾可以鎖定一個數字而不顯示它,而且承諾之間可以相加。這樣每個節點都能驗證一筆交易的輸入等於輸出加手續費,卻不知道其中任何一個金額。

單靠承諾可能隱藏一個負數金額,進而憑空造出幣來。因此每個輸出都附帶一個 Bulletproofs 範圍證明,證明其金額位於從零開始的 64 位元範圍內。這個證明讓每個節點確信金額有效,除此之外不透露任何資訊。

接收方仍然看得到真實金額。對方的錢包以找到該輸出時所用的同一把共享金鑰還原金額,因此金額只有參與這筆支付的兩個人看得到。

Dandelion++ 隱藏交易的來源

如果一個節點把自己的交易同時廣播給所有對等節點,監看大量節點的人就可能根據誰最先收到來推測交易來自哪裡。Blocknet 使用 Dandelion++ 中繼交易來防止這一點。

新交易先沿著一條「莖」傳遞,每次只從一個節點傳給下一個節點。每一跳都有 90% 的機率繼續沿莖傳遞;否則它會「擴散」(fluff),從那個節點開始傳遍整個網路。等到大多數節點看到這筆交易時,它看起來來自一個可能離你很多跳之外的節點。莖路由每 10 分鐘重新調整一次。

誰能讀取 Blocknet 備註?

每個輸出都帶有一則 128 位元組的加密備註,最多可寫 124 位元組文字。它以發送方與接收方為該輸出共享的同一把金鑰加密,所以只有你們兩人能讀取。你可以用它寫發票號碼、訂單編號,或給收款人的簡短留言。加密備註指南介紹了如何加上備註,以及在哪裡查看你收到的備註。

無論你寫滿一則備註還是什麼都不寫,備註的大小始終相同。備註較短或為空時,錢包會在加密前以隨機資料填滿剩餘部分,因此帶備註的輸出與不帶備註的輸出看起來完全一樣。備註從不顯眼,其他人甚至無法分辨哪些支付帶有留言。

Blocknet 的隱私是可選的嗎?

簡短回答

不是。Blocknet 的隱私是強制的。交易格式沒有透明模式,共識要求每個輸入都帶有恰好 16 個成員的環,因此每一筆支付都會使用環簽章、隱身地址、隱藏金額與加密備註。由於沒有人能選擇退出,私密支付與鏈上其他每一筆支付看起來都一樣。

當隱私只是一個選項時,開啟它的人會形成一個更容易被辨識出來的小群體。在 Blocknet 上,每筆交易都以同樣的方式建構,因此每一筆都混在其他所有交易之中,你也永遠不必記得要去保護某一筆支付。

付款時這代表什麼

當你向一個地址或 @name 發送 BNT 時,錢包會替你完成每一步,無需開啟任何設定:

  1. 從鏈上選取 15 個誘餌,以 16 個成員的環為你的輸入簽章。
  2. 為接收方產生一個全新的一次性地址。
  3. 對金額做出承諾並附上範圍證明。
  4. 加密你的備註;如果你不寫備註,就加密隨機填充資料。
  5. 把交易交給 Dandelion++ 中繼。

檢視區塊鏈的人看到的是:每個輸入都指向 16 個可能的輸出,輸出發往從未出現過的一次性地址,金額的位置是承諾,備註欄位則是看似隨機的位元組。你付款的對象則會在自己的錢包裡看到這筆款項、金額與你的留言。

如果你想賺到第一筆 BNT,可以用自己的電腦挖礦。依照挖礦指南操作,幾分鐘就能讓 seine 在 bntpool.com 上執行,並且可以直接挖到你的地址或 @name。

Faraday 升級之後的變化

根據 blocknetcrypto.com,Blocknet 計畫進行名為 Faraday 的網路升級,預計在 2027-02-16 前後啟用。網站列出了兩項將進一步加強隱私的變化:

網站也表示,Faraday 不會帶來新幣,也不會重新啟動,你的歷史紀錄會保留。設計、測試與對抗性審查正在進行中,日期是計畫日期而非最終日期,請關注 blocknetcrypto.com 取得最新消息。

常見問題

Blocknet 預設就是私密的嗎?

是的。每一筆 Blocknet 交易都使用涵蓋 16 個輸出的環簽章,為每個收款方產生一次性隱身地址,以 Bulletproofs 範圍證明隱藏金額,並在每個輸出上附帶 128 位元組的加密備註。交易格式沒有透明模式,所以既沒有需要開啟的設定,也沒有任何支付能略過這些保護。

Blocknet 的環大小是多少?

Blocknet 交易中的每個輸入都使用恰好 16 個輸出的 CLSAG 環簽章:真實輸出加上從鏈上選取的 15 個誘餌。共識會拒絕其他任何大小,而且每個環成員都必須是鏈上既有的真實輸出。由於每個輸入的環大小都相同,環大小永遠無法用來區分出某個錢包。

誰能讀取 Blocknet 備註?

只有發送方與接收方。每則備註都以雙方錢包為該輸出共享的金鑰加密,在鏈上始終恰好佔用 128 位元組,最多可寫 124 位元組文字。較短或空白的備註會以隨機資料填充,因此其他人無法分辨哪些支付帶有備註。

別人看得到我的 Blocknet 地址收到多少錢嗎?

看不到。每一筆付給你地址的款項都會落到一個全新的一次性隱身地址上,因此這些支付無法歸到你公開的地址底下。金額以 Pedersen 承諾加範圍證明的形式儲存,鏈上從不顯示每個輸出的金額。只有你的錢包能用你的私有檢視金鑰找到並加總你收到的款項。

Blocknet 使用的密碼學和 Monero 一樣嗎?

Blocknet 使用與 Monero 同一類久經驗證的密碼學:環大小為 16 的 CLSAG 環簽章、一次性隱身地址、搭配 Bulletproofs 範圍證明的 Pedersen 承諾,以及 Dandelion++ 交易中繼。在此基礎上,它還透過 Blocknet ID 短名稱支援以名稱付款,並在每個輸出上附帶 128 位元組的加密備註。