Solve a real problem for a group of real users (zero-knoledge Tech)
區塊鏈一般人所知具備三大特性:
1.去中心化
2.不可篡改
3.交易紀錄公開透明可回溯
前兩項很顯然地解決了目前許多產業面臨的第三方信任的問題,然而目前有待解決的痛點在於,企業運用區塊鏈時,並不希望所有業務、合約上鏈以後,就被公開透明的記錄在鍊上供所有人瀏覽,反而希望能夠保留前兩項特性並兼具保護隱私的功能,因此導入「零知識證明」(zero-knowledge proofs)就變得非常重要。
什麼是「零知識證明」?
理論上來說就是在不清楚實際情況的狀態下,用一些程序來證明自己是符合資格,並讓對方信服,用一句話來說明就是「我不需要洩漏任何有效資訊就能證明事情本身」,因此可以做到不需要公佈自己的資產明細,就能讓對方相信你有足夠的資產來完成這次交易…許多相似的應用場景。
「零知識證明」需要什麼特性?
- 完整性:如果陳述是真的,誠實的驗證者正確地遵循協議完成驗證,將使一個誠實的證人信服這個陳述。
- 可靠性:如果陳述是假的,不能有任何不合法的證明可以使誠實的證人信服這個陳述。
- 零知識性:如果陳述是真的,除了這個陳述之外,驗證者不會得知任何有效訊息。
「零知識證明」之中的證明程序是如何完成的?
舉幾個簡單的例子來說明:
1.今天X有一個保險箱,裡面有價值一億元的金塊,我要如何向Y證明我真的擁有保險箱的鑰匙?
A)在Y面前用鑰匙打開保險箱
B)在Y不在的情況下,X用鑰匙取出金塊,再展示金塊給Y看
A.B都能證明X是真的擁有能夠打開保險箱的鑰匙,但B能在Y沒看過鑰匙的情況之下證明X真正擁有鑰匙,B方案
就被稱為「零知識證明」
2.今天有一顆紅球、一顆綠球,X是紅綠色盲,Y能夠證明這兩顆球真的是一紅一綠嗎?
答案是可以,只需要讓X左手拿著紅球,右手拿著綠球,並在背後交換不讓Y看到,若Y能夠精準的選對原本在
右手的球現在在哪一手,多做幾次,即能在X是色盲的情況下,仍然能證明這兩顆球是一紅一綠。
3.今天有一題困難的數獨問題,X說他已經找到解答了,他如何在不讓Y知道答案的情況之下證明他真的已經
解出這題?
X只需要將空格用小方格紙填上相對應的數字蓋著放在格子上方,再請Y任意選擇一行或一列,並把小方格紙
都收在一個袋子裡,再將方格紙取出,明白數獨規則的人都知道,每一行、每一列的解答都會有1~9不重複的
數字各一個,XY只要重複幾次這項程序,就能證明X是否真的知道此題的解答。
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
以上三個例子就是「零知識證明」的簡單說明實例,若想要將零知識證明的概念導入區塊鏈,就必須將驗證的過程寫成可執行的程式碼,因此以上三個例子的方法會被轉換成數學的計算,讓電腦能透過多次的運算完成在不清楚實際情況的狀態下證明某件事。早在1985年「零知識證明」的概念就已經被提出,但是由於證明過程所需要的驗證時間與運算資源,若不能升級到只需要少量運算資源就能達到秒級別驗證,所能應用的範圍將很有限,以目前最大的智能合約平台以太坊來說,若要在以太坊的智能合約中導入零知識證明,將會大幅提升所需的運算資源,會消耗非常多的gas手續費,但若能找到可行的解決方案,「零知識證明」將會大幅提升以太坊企業級別的應用機會,可以說是未來發展非常有潛力的方向。
Zcash(ZEC)
Zcash是最早採用零知識證明的區塊鏈項目,他們使用zk-SNARK(Zero-Knowledge Succinct Non-Interactive argument of Knowledge)來證明交易是合法成立的,同時不必讓驗證者知道實際的交易發送者、接收者…的交易細節資訊,因此礦工能在不知道交易細節的狀態之下,維持交易的正確性、防止雙花的發生,來達成匿名交易的特性。
以太坊V神曾經說過:「我們實際上可以透過使用zk-SNARKs來大規模驗證,藉以擴展以太坊上的交易量,而不使用第二層擴展解決方案。」
儘管目前以太坊已經能部署運用zk-SNARKs算法的智能合約,但由於技術瓶頸仍未突破,目前所需的運算時間與運算量太大,不符成本。
目前零知識證明的技術仍在早期發展階段,Zcash採用匿名交易的數量也只佔總交易量的5%,若未來能突破技術上的瓶頸,零知識證明能解決的痛點,將使區塊鏈朝大量應用的目標往前邁進一大步。
BTC address:1NoTV9Fjr6AafitcvLGnNw9PTVsRRP9dGJ
ETH address:0x8d5F05270da470e015b67Ab5042BDbE2D2FEFB48