Privacy

是否可以使用 zkSNARKs 隱藏函式執行?

  • November 4, 2016

我讀到,通過 zCash/zkSNARK 與乙太坊的假設集成,可以隱藏發送者、接收者和交易的價值。

我的問題是是否也可以隱藏事務中發送的其他數據,例如您要執行的函式的名稱及其參數。在這種情況下,這將如何影響契約的狀態。

zkSNARKs 以零知識證明某個論點是正確的。

這裡的零知識意味著除了它是否為真之外,它不會洩露任何關於論點的資訊。舉個例子——如果你從一副牌中挑選了一張牌,我問你它是不是一顆心,你可以告訴我這是真的,而不會洩露關於這張牌的任何其他資訊(比如它是一張 A、2 等等)給我看所有不是紅心的牌。這是零知識(zkp)證明的一個例子。

在 ZCash 中,我認為 zkSNARK 證明你擁有的 ZEC 數量大於或等於你在給定交易中嘗試花費的數量。

我認為送出您呼叫函式的 zkp 不足以實際呼叫該函式。也許您可以送出由於呼叫函式而發生的狀態更改,以及證明您以合法方式呼叫合法函式並導致狀態更改的 zkSNARK?

這種情況需要你證明比“我擁有 n 個 ZEC 並且 n>k,k 是交易價值”更複雜的東西。結果表明,任何 NP 函式都可以在零知識中得到證明,我相當肯定 zkSNARK 足夠通用,這/將很快成為一種可能性。從libsnark 自述文件

計算可以表示為 NP 語句,形式如下:

  • “如果給定輸入 bar 和一些額外的輸入 qux,則 C 程序 foo 在執行時返回退出程式碼 0。”
  • “布爾電路 foo 可以通過一些輸入 qux 來滿足。”
  • “算術電路 foo 接受部分分配欄,當擴展到一些完整的分配 qux 時。”
  • “當擴展到一些完整的分配 qux 時,部分分配欄可以滿足約束 foo 的集合。”

你甚至不必集成 ZCash 和乙太坊,只需以某種方式使用 libsnark 並讓某人接受你奇怪的函式呼叫。這可能只需要大量的工作;)

引用自:https://ethereum.stackexchange.com/questions/9810