隱私計算主要解決區(qū)塊鏈在面臨復(fù)雜業(yè)務(wù)場景中,對原始數(shù)據(jù)外發(fā)進行可用不可見的隱私保護,當前隱私計算主要包含可信執(zhí)行環(huán)境(TEE)、同態(tài)加密(HE)、安全多方計算(MPC)和零知識證明(ZKP)四種技術(shù)方案。
隱私計算與區(qū)塊鏈的結(jié)合,不但能夠提供數(shù)據(jù)隱私保護,還能解決區(qū)塊鏈性能瓶頸,已經(jīng)成為區(qū)塊鏈落地商用的重點研究方向,在未來隱私計算也將同區(qū)塊鏈一樣成為通用的信息基礎(chǔ)設(shè)施。
Trias中的隱私賬戶設(shè)計
Trias的隱私賬戶在設(shè)計上采用了面向賬戶和UTXO兩種模式,以賬戶制為核心實現(xiàn)復(fù)雜業(yè)務(wù)的需求,以UTXO支持更高的隱私需求和潛在的擴展性需求。
當前很多主流的區(qū)塊鏈項目賬戶在具體使用的時候,都會強調(diào)自己的交易非常安全,但實際上每個賬號的具體操作和使用全世界的鏈上參與者都能看見,這就給鏈上交易帶來一定的隱患。
Trias在實現(xiàn)目標的時候不但能很好的體驗到區(qū)塊鏈上去中心化匿名應(yīng)用的好處,也能最大限度的保護使用者的隱私,不讓與本次交易無關(guān)的人覺察自己資產(chǎn)的動向。
1. 兼容兩種賬戶
這里簡要介紹一下賬戶(Account)和UTXO兩種模型的區(qū)別。
賬戶模型很容易理解,我們?nèi)粘J褂玫你y行卡、支付寶、微信錢包等支付方式都是基于賬戶模型設(shè)計的。每人的賬戶中都有一個余額作為狀態(tài),即當前余額是記錄在某個地方的,這種設(shè)計即被稱為賬戶模型,比如我們的銀行卡余額就被記錄在銀行的數(shù)據(jù)庫中。
UTXO模型是比特幣獨創(chuàng)的價值轉(zhuǎn)移基本單元。其核心設(shè)計思路是無狀態(tài),即只記錄交易變更事件,而不記錄交易的最終狀態(tài)。區(qū)塊鏈系統(tǒng)只處理交易,而清算余額等過程,則交由節(jié)點自行處理。
綜合來看,兩種機制各有優(yōu)劣。目前比特幣采用UTXO,以太坊選用的是Account。
UTXO:原理簡單、易于擴展、高度并行、隱匿性強。
Account:易于理解、節(jié)省空間、易于實現(xiàn)、模式成熟。
涉及到賬戶相關(guān)的各種操作,如賬戶注冊、管理秘鑰、權(quán)限變化等,每個賬戶有三套秘鑰,一套支持面向賬戶機制的操作,一套面向UTXO機制使用,一套用于表明賬戶所屬,極端情況下可用于賬戶找回(冷備份)。
2. 交易隱私支持
Trias支持采用UTXO的方式進行轉(zhuǎn)賬交易,同時支持采用隱藏地址和零知識證明的方法進行匿名轉(zhuǎn)賬。
我們先說隱藏地址。在UTXO的工作模式下,假如A賬戶向B賬戶進行轉(zhuǎn)賬。A賬戶會通過B賬戶的公鑰產(chǎn)生一個臨時地址,并把資產(chǎn)轉(zhuǎn)移到對應(yīng)的臨時地址中去。在收款的過程中,B賬戶需要歷遍所有的有效交易,并通過私鑰和交易隨機數(shù)來判斷收款人是否是自身。
其過程如下:A賬戶向B賬戶轉(zhuǎn)賬,B賬戶有兩對橢圓曲線算法公私鑰對,(m,M),(n,N),其指定橢圓曲線的公共參數(shù)為G:
通過上述流程計算出臨時地址P,A轉(zhuǎn)賬至P中并公開R。而B賬戶通過R計算出對應(yīng)的隱藏收款中的私鑰。如此,既實現(xiàn)了轉(zhuǎn)賬收款的全過程,有保護了A賬戶的隱私信息。
而零知識證明作為近年來頗為火熱的技術(shù),受到了國內(nèi)外學術(shù)界的廣泛探討和研究。什么是零知識證明呢?舉一個例子,有一個環(huán)形走廊,出口與入口在一個位置,中間被一道上了鎖的門隔斷, B聲稱他有鑰匙,那么A如何在不拿到鑰匙的情況下知道B真的有鑰匙。這時,A只需要看到B從入口進入,并從出口走出,這樣A便可以相信B持有門的鑰匙這一事實。
零知識證明指的是一方向另一方陳述一件事是正確的,而不透露出該陳述之外的任何信息。證明者不直接告訴你答案,而是采用另一種表達方式來讓向你證明,直到你認為對方確實知道答案為止。在Trias中,零知識證明主要由zkSNARK算法所實現(xiàn)。