應用密碼學
Pedersen 承諾
Pedersen 承諾把一個值藏進單一個橢圓曲線點裡,同時讓你能對隱藏的值做算術——把兩個承諾相加,就得到對其和的承諾。這種加法同態正是機密交易的密碼學核心。
在橢圓曲線上選兩個獨立的生成點 G 與 H,挑選方式須使無人知道它們之間的離散對數關係。要以隨機致盲因子 r 對值 v 承諾,計算 C = v·H + r·G。此方案是完美隱藏——對任何 v 都存在一個 r 使 C 等於任意點,因此即使對計算力無限的對手,C 也不洩漏任何資訊——並且是計算性約束,因為要把 C 開成不同的 v' 需要解出 H 相對於 G 的離散對數。
同態是其超能力:C(v1, r1) + C(v2, r2) = C(v1 + v2, r1 + r2)。在機密交易(Monero、Mimblewimble、Liquid)中,這能在不揭露任何個別金額的情況下,證明輸入減去輸出之和為零——沒有憑空生出貨幣:驗證者只需檢查輸入與輸出承諾是否平衡成一個對零的承諾。再搭配範圍證明(如 Bulletproofs)排除負值作弊,就得到完整的金額隱私。Pedersen 向量承諾也出現在數個零知識證明系統的內部。
C = v*H + r*G ; C(v1,r1) + C(v2,r2) = C(v1+v2, r1+r2)
Pedersen 是完美隱藏但僅計算性約束——與雜湊承諾恰好相反的取捨。若離散對數假設哪天被攻破,舊承諾可能被悄悄重開以隱匿地增發;而雜湊承諾則反過來,面臨被解除隱藏的風險。
另見