Confidential-Transactions
機密交易:網路如何驗證它們?
我目前正在嘗試了解機密交易的運作方式。我想我能夠遵循關於 Pedersen 承諾和範圍檢查的所有解釋,但我仍然錯過了一個難題:如果網路不知道交易金額,它如何驗證交易?不知道賬戶餘額是否充足。當傳入交易的數量被隱藏時,網路如何知道賬戶餘額?
如果有人能對此有所了解,那就太好了。
如果網路不知道交易金額,它如何驗證交易?
這正是 Pedersen 承諾允許您做的事情。
每個輸出都包含一個承諾 P(v,r) = v H + r G,其中 v 是值,r 是致盲因子。網路不知道 v 或 r,但知道 P(v,r)(以及 H 和 G,它們是常數)。
Pedersen 承諾的特性是它們在兩個論點中都是線性的。這意味著 P(v1,r1) + P(v2,r2) = P(v1+v2,r1+r2)。
對於每筆交易,網路規則要求輸出的承諾之和等於輸入所花費的輸出的承諾之和。這意味著輸出值的總和必須等於輸入值的總和,並且致盲因子的總和必須等於輸入的致盲因子的總和。
範圍證明可以防止增值溢出。
不知道賬戶餘額是否充足。
比特幣沒有“賬戶”餘額。交易通過燃燒其他交易創建的輸出來創建輸出。你的錢包顯示了你可以花費的所有輸出的總和。唯一的要求是交易在輸出中創造的數量不超過在輸入中燃燒的數量。
當傳入交易的數量被隱藏時,網路如何知道賬戶餘額?
它不能。機密交易的目的是防止網路知道任何人的餘額。唯一的必要性是個人錢包能夠確定他們能夠花費多少。在 CT 中,通過以加密形式發送該資訊以及交易以及接收方的公鑰來解決此問題。