Confidential-Transactions

向收款人發送機密交易金額

  • October 14, 2019

在 Maxwell 提出的機密交易中,我們使用 pedersen 承諾來隱藏金額,而不是交易金額,並將範圍證明添加到交易中以防止溢出。一個輸入一個輸出C1和C2的簡單承諾如下:(為了簡單,忽略費用)

C1 = C2 => BF1*G + a*H = BF2*G + a*H 

在這個例子中BF1 = BF2顯然是因為它只有一個輸入和輸出。

發送方如何將金額和致盲因子發送給接收方?收件人可以檢查金額是否正確!我注意到 Maxwell 說他們使用 ECDH。我假設 ECDH 沒有額外的通信渠道。那麼發送者如何獲得接收者的公鑰呢?發件人是否需要在 ECDH 中顯示致盲因子和金額?

在 Elements Alpha 中,輸出“數量”由 3 條數據組成:

  • 彼得森對價值的承諾,被致盲因素蒙蔽了雙眼。
  • 範圍證明,可以公開證明該值在 [0..2^32-1] 單位 (satoshis) 範圍內,而不會透露任何有關致盲因子的資訊。
  • 發件人的 ECDH 臨時公鑰。

後者是解決方案所在。除了普通的 P2PKH 或 P2SH 數據之外,每個機密交易地址都包含一個接收者的 ECDH 公鑰(致盲密鑰)。

當發送 CT 交易時,發送者選擇一個ECDH 臨時私鑰,並將其與致盲密鑰組合以派生致盲種子。該種子用作隨機數生成器創建範圍證明的基礎。然後將臨時密鑰的公共版本寫入金額的第三個欄位。

當接收者看到這個 ECDH 臨時公鑰時,他會將其與他的私有密鑰結合起來,以派生與發送者使用的相同的種子。使用同樣的種子,他可以“展開”範圍證明,並解碼創建它時使用的秘密資訊:價值和致盲因子。實際上,範圍證明中還有另外 2 KB 的數據空間,只有接收者(或持有私有致盲密鑰的任何人)才能看到。

引用自:https://bitcoin.stackexchange.com/questions/48064