王明生,曹鶴陽,李佩瑤
(1.中國(guó)科學(xué)院信息工程研究所信息安全國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100093;2.中國(guó)科學(xué)院大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,北京 100049)
自2008 年基于區(qū)塊鏈技術(shù)的比特幣[1]產(chǎn)生之后,去中心化“數(shù)字貨幣商品”技術(shù)及其所依托的區(qū)塊鏈技術(shù)得到了廣泛關(guān)注和迅猛發(fā)展。與此同時(shí),大量相同類型的“數(shù)字貨幣商品”隨之出現(xiàn)。區(qū)塊鏈?zhǔn)且粋€(gè)去中心化存儲(chǔ)結(jié)構(gòu),在基于區(qū)塊鏈的“數(shù)字貨幣商品”系統(tǒng)中,每一個(gè)區(qū)塊包含若干交易信息,系統(tǒng)通過共識(shí)協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)節(jié)點(diǎn)之間的數(shù)據(jù)一致,應(yīng)用密碼學(xué)工具實(shí)現(xiàn)不可篡改性和認(rèn)證性,從而實(shí)現(xiàn)“虛擬貨幣商品”系統(tǒng)的功能[2]。
在傳統(tǒng)信貸系統(tǒng)中,銀行為借貸人提供信貸服務(wù)。當(dāng)借貸人進(jìn)行借貸時(shí),借貸人向銀行發(fā)出借貸請(qǐng)求,銀行對(duì)借貸請(qǐng)求進(jìn)行響應(yīng),將貨幣轉(zhuǎn)給借貸人同時(shí)保存借貸憑證。借貸人應(yīng)按期償還貸款并支付一定利息。
有些基于區(qū)塊鏈的“數(shù)字貨幣商品”如BalanceCoin、BFEX(Banking Future Exchange),在去中心化“數(shù)字貨幣商品”的基礎(chǔ)上引入了傳統(tǒng)信貸機(jī)制,實(shí)現(xiàn)了傳統(tǒng)信貸系統(tǒng)的功能。
然而,在傳統(tǒng)信貸系統(tǒng)中,需要銀行對(duì)借貸人每次的借貸請(qǐng)求都進(jìn)行實(shí)時(shí)響應(yīng)并保存借貸憑證,因此,在傳統(tǒng)信貸系統(tǒng)中,提供借貸服務(wù)的銀行為系統(tǒng)的中心[3]。
針對(duì)以上問題,本文通過擴(kuò)展基于區(qū)塊鏈的“數(shù)字貨幣商品”的交易結(jié)構(gòu)、擴(kuò)展共識(shí)協(xié)議的功能和增加特定賬戶來構(gòu)造去中心化信貸系統(tǒng)。在去中心化信貸系統(tǒng)中,“數(shù)字貨幣商品”的擁有者可以成為擔(dān)保人,為借貸用戶提供擔(dān)保,借貸用戶的借貸過程不需要中心機(jī)構(gòu)對(duì)借貸請(qǐng)求進(jìn)行響應(yīng)與確認(rèn),從而實(shí)現(xiàn)去中心化的信貸系統(tǒng)。
在去中心化信貸系統(tǒng)中,“虛擬貨幣商品”更加便于使用和流通。對(duì)于基于區(qū)塊鏈的“數(shù)字貨幣商品”,當(dāng)未持有“虛擬貨幣商品”的新用戶需要使用“數(shù)字貨幣商品”,且具體需求量不定時(shí),需要分次進(jìn)行兌換。每次兌換均需要“虛擬貨幣商品”交易所對(duì)兌換請(qǐng)求進(jìn)行響應(yīng)。而在去中心化信貸系統(tǒng)中,未持有“虛擬貨幣商品”的新用戶可以通過借貸高效快捷地使用“數(shù)字貨幣商品”。
“虛擬貨幣商品”的一個(gè)重要功能是作為價(jià)值尺度,然而,基于區(qū)塊鏈的“數(shù)字貨幣商品”通常出現(xiàn)巨大的價(jià)值波動(dòng),而巨大的價(jià)值波動(dòng)的“虛擬貨幣商品”顯然無法作為交易的一般等價(jià)物。
針對(duì)這個(gè)問題,本文通過在去中心化信貸系統(tǒng)引入分層“虛擬貨幣商品”供應(yīng)量調(diào)節(jié)機(jī)制,實(shí)現(xiàn)了根據(jù)經(jīng)濟(jì)活動(dòng)對(duì)“虛擬貨幣量”的需求調(diào)節(jié)“虛擬貨幣商品”的供給量,從而強(qiáng)化“數(shù)字貨幣商品”作為價(jià)值尺度的能力。
近年來,出現(xiàn)了一些支持信貸功能的基于區(qū)塊鏈的“數(shù)字貨幣商品”,如BalanceCoin 通過募集“虛擬貨幣商品”后對(duì)借貸用戶進(jìn)行借貸;BFEX通過智能合約實(shí)現(xiàn)匹配借款用戶和貸款用戶,這種方式類似于P2P(peer-to-peer)網(wǎng)絡(luò)信貸平臺(tái)。然而以上的方式實(shí)現(xiàn)的信貸系統(tǒng)均需要中心機(jī)構(gòu),未能實(shí)現(xiàn)去中心化。
當(dāng)前基于區(qū)塊鏈的“數(shù)字貨幣商品”的功能的優(yōu)化工作主要包括增加鏈的結(jié)構(gòu)和擴(kuò)展共識(shí)協(xié)議。2014 年,Back 等[4]針對(duì)“數(shù)字貨幣商品”系統(tǒng)在金融領(lǐng)域需要更豐富的功能的問題,引入了側(cè)鏈(sidechain),其核心技術(shù)為雙向錨定(two-way peg)。通過在主鏈(主流“數(shù)字貨幣商品”)上錨定不同的側(cè)鏈,在側(cè)鏈上實(shí)現(xiàn)衍生功能,比如BTC Relay 將以太坊與比特幣通過雙向錨定連接起來。BTC Relay 通過使用以太坊的智能合約功能使用戶在以太坊區(qū)塊鏈上驗(yàn)證比特幣交易。以太坊應(yīng)用程序開發(fā)者可以從智能合約向BTC Relay 進(jìn)行應(yīng)用程序接口(API,application program interface)調(diào)用來驗(yàn)證比特幣的交易。多鏈技術(shù)是側(cè)鏈的進(jìn)一步擴(kuò)展,它將多條鏈連接到一起,實(shí)現(xiàn)多條鏈上資產(chǎn)的轉(zhuǎn)移、交易。從共識(shí)協(xié)議出發(fā)的工作主要包括Kiayias 等[5]提出的Ouroboros 協(xié)議,Ouroboros 協(xié)議是可證安全的基于權(quán)益證明(PoS,proof-of-stake)算法的共識(shí)協(xié)議,應(yīng)用Ouroboros 協(xié)議可以優(yōu)化基于區(qū)塊鏈的“數(shù)字貨幣商品”的功能。
本文的主要貢獻(xiàn)如下。
1)通過擴(kuò)展基于區(qū)塊鏈的“數(shù)字貨幣商品”的交易結(jié)構(gòu)、擴(kuò)展共識(shí)協(xié)議的功能和增加特定賬戶來構(gòu)造去中心化信貸系統(tǒng)。
2)基于區(qū)塊鏈的PKI(public key infrastructure)增強(qiáng)與監(jiān)督系統(tǒng)IKP(instant karma PKI)[2]中需要全局基金(GF,global fund),本文將去中心化信貸系統(tǒng)應(yīng)用到IKP 系統(tǒng)中,從而使IKP 系統(tǒng)不需要全局基金就能運(yùn)行。
3)針對(duì)基于區(qū)塊鏈的“數(shù)字貨幣商品”在“虛擬貨幣商品”供給量上難以調(diào)節(jié)的問題,基于去中心化信貸系統(tǒng)引入分層“虛擬貨幣商品”供應(yīng)量調(diào)節(jié)機(jī)制,從而精確地實(shí)現(xiàn)“虛擬貨幣商品”供應(yīng)量調(diào)節(jié)。
本節(jié)將簡(jiǎn)要介紹區(qū)塊鏈和比特幣的預(yù)備知識(shí)。特別地,將詳細(xì)描述共識(shí)機(jī)制、交易結(jié)構(gòu)和未消費(fèi)交易輸出(UTXO,unspent transaction output)模型。關(guān)于比特幣的更多細(xì)節(jié)見文獻(xiàn)[6-7]。
區(qū)塊鏈?zhǔn)怯蒆ash 連接的區(qū)塊構(gòu)成的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),每個(gè)區(qū)塊包含前一個(gè)區(qū)塊的Hash。區(qū)塊可以記錄交易、版權(quán)、財(cái)產(chǎn)等信息。區(qū)塊鏈?zhǔn)且粋€(gè)公開的、去中心化的數(shù)據(jù)庫(kù),能以一種可驗(yàn)證和永久的方式有效地記錄雙方之間的交易。本文將區(qū)塊鏈看作P2P 網(wǎng)絡(luò)中的去中心化賬本,網(wǎng)絡(luò)中的所有節(jié)點(diǎn)共同維護(hù)賬本。鏈中的每個(gè)記錄或區(qū)塊都是公開的,并且能夠抵抗數(shù)據(jù)的篡改。下面簡(jiǎn)要介紹區(qū)塊鏈所應(yīng)用的關(guān)鍵技術(shù)。
1)數(shù)字簽名
基于區(qū)塊鏈的“數(shù)字貨幣商品”系統(tǒng)應(yīng)用數(shù)字簽名實(shí)現(xiàn)交易的認(rèn)證,數(shù)字簽名的公鑰通常作為用戶的地址,當(dāng)用戶發(fā)起交易時(shí),用戶使用私鑰對(duì)交易信息進(jìn)行簽名。本文使用符號(hào)sigA(m)表示用戶A使用私鑰對(duì)消息m的簽名。
2)共識(shí)協(xié)議
區(qū)塊鏈?zhǔn)荘2P 網(wǎng)絡(luò)中的去中心化系統(tǒng),因此需要一種機(jī)制來保證網(wǎng)絡(luò)中節(jié)點(diǎn)維護(hù)數(shù)據(jù)的一致性,這種機(jī)制是共識(shí)協(xié)議。共識(shí)協(xié)議主要包括傳統(tǒng)的拜占庭容錯(cuò)算法、工作量證明(PoW,proof-of-work)算法、PoS 算法等[8]。傳統(tǒng)的拜占庭容錯(cuò)算法在安全性和去中心化方面較好,但效率較低。PoW 算法使系統(tǒng)達(dá)到共識(shí)的方式是每個(gè)參與共識(shí)的節(jié)點(diǎn)提供計(jì)算能力來嘗試解決計(jì)算問題(puzzle),成功解決計(jì)算問題的節(jié)點(diǎn)獲得記賬權(quán)并創(chuàng)建一個(gè)新的區(qū)塊,PoW 算法可以完全實(shí)現(xiàn)去中心化,但會(huì)造成能耗方面的巨大浪費(fèi)。PoS 算法通過要求節(jié)點(diǎn)證明其所持股份的所有權(quán),且系統(tǒng)中實(shí)體創(chuàng)建區(qū)塊的概率與其所持股份成正比。在系統(tǒng)中擁有更多股份的實(shí)體更愿意維護(hù)系統(tǒng)的安全性,以確保他們自己的股份不會(huì)貶值,所以PoS 算法是合理的。然而,PoS 算法在某種程度上會(huì)導(dǎo)致系統(tǒng)的中心化。其他新提出的共識(shí)機(jī)制往往是這些傳統(tǒng)機(jī)制的結(jié)合和改進(jìn)。
3)智能合約
智能合約是當(dāng)某些條件滿足、系統(tǒng)被觸發(fā)時(shí)自動(dòng)運(yùn)行的計(jì)算機(jī)程序。智能合約也可以作為常規(guī)用戶來發(fā)送和接收事務(wù),甚至控制其他智能合約。它們由系統(tǒng)的用戶(或其他智能合約)創(chuàng)建,并存儲(chǔ)在區(qū)塊鏈中[9]。智能合約中的代碼通常用某種高級(jí)語言編寫,比如Solidity 語言或Go 語言。
比特幣是區(qū)塊鏈技術(shù)最重要的應(yīng)用。比特幣是最受歡迎的去中心化“數(shù)字貨幣商品”,可以在P2P 網(wǎng)絡(luò)上從一個(gè)用戶發(fā)送到另一個(gè)用戶,而不需要“中間人”。比特幣使交易匿名,保護(hù)用戶隱私。交易是比特幣的關(guān)鍵組成部分,能實(shí)現(xiàn)比特幣的主要功能,UTXO 模型在比特幣中也發(fā)揮著關(guān)鍵作用。
1)交易
比特幣交易由一個(gè)或多個(gè)輸入和一個(gè)或多個(gè)輸出組成。當(dāng)用戶A 要向用戶B 轉(zhuǎn)入比特幣時(shí),用戶A 首先創(chuàng)建一個(gè)交易,該交易包括用戶A 未花費(fèi)交易的交易索引、轉(zhuǎn)入用戶B 的ID、轉(zhuǎn)入金額及用戶A 對(duì)交易信息的數(shù)字簽名。其中交易索引通常是交易的Hash 值。為了防止“雙重花費(fèi)(double spend)”攻擊,交易的輸入必須是未在其他交易中使用過的交易(即在UTXO 中),且輸入總額不少于輸出總額,創(chuàng)建區(qū)塊的礦工驗(yàn)證交易的合法性并將合法交易寫入?yún)^(qū)塊,此過程稱為打包上鏈。因?yàn)樵谌ブ行幕到y(tǒng)中沒有中心來維持精確的時(shí)間同步,所以通常應(yīng)用區(qū)塊數(shù)(block number)作為時(shí)間度量。
2)UTXO 模型
UTXO 是所有未經(jīng)過轉(zhuǎn)出的轉(zhuǎn)入交易所組成的集合,只有UTXO 中的交易才能作為交易的輸入[10]。當(dāng)一筆交易被礦工打包到一個(gè)新的區(qū)塊寫入?yún)^(qū)塊鏈后,則這筆交易的輸入交易將在UTXO 集合中刪除,同時(shí)將這筆交易添加到UTXO 集合中,這種方式結(jié)合共識(shí)協(xié)議便可防止“雙重花費(fèi)”。比特幣使用UTXO 模型,與之對(duì)應(yīng)的還有賬戶/余額模型、以太坊使用賬戶/余額模型。不難發(fā)現(xiàn),只需將一個(gè)用戶在UTXO 集合中的所有輸入相加便可得到這個(gè)用戶的賬戶余額。
PKI 系統(tǒng)是一種遵循標(biāo)準(zhǔn)的密鑰管理系統(tǒng),能夠?yàn)楣€密碼系統(tǒng)的用戶提供加密和數(shù)字簽名所需的密鑰和證書管理。PKI 系統(tǒng)由認(rèn)證中心(CA,certificate authority)、證書庫(kù)、證書作廢系統(tǒng)、客戶端證書處理系統(tǒng)等組成。
CA 為每個(gè)使用公開密鑰的用戶發(fā)放一個(gè)數(shù)字證書,數(shù)字證書的作用是證明證書中列出的用戶合法擁有證書中列出的公開密鑰。CA 機(jī)構(gòu)的數(shù)字簽名使攻擊者不能偽造和篡改證書。
CA 是數(shù)字證書的簽發(fā)機(jī)構(gòu),也是PKI 的核心[11]。CA 負(fù)責(zé)簽發(fā)證書、認(rèn)證證書及管理已頒發(fā)證書,制定政策和具體步驟來驗(yàn)證、識(shí)別用戶身份,并對(duì)用戶證書進(jìn)行簽名,以確保證書持有者的身份和公鑰的擁有權(quán)。
當(dāng)需要驗(yàn)證一個(gè)證書的有效性時(shí),驗(yàn)證者使用CA 的公鑰對(duì)證書上的簽名進(jìn)行驗(yàn)證,驗(yàn)證通過則該證書就被認(rèn)為是有效的[12]。
基于區(qū)塊鏈的“數(shù)字貨幣商品”系統(tǒng)有2 個(gè)特點(diǎn)。1)基于區(qū)塊鏈的“數(shù)字貨幣商品”系統(tǒng)中每個(gè)用戶都能成為“虛擬貨幣商品”的鑄造者。2)在基于區(qū)塊鏈的“數(shù)字貨幣商品”系統(tǒng)中,“虛擬貨幣商品”的銷毀可以是公開可驗(yàn)證的。事實(shí)上,如果一個(gè)賬戶的私鑰丟失,這個(gè)賬戶中的“虛擬貨幣商品”將無法被花費(fèi),那么將“虛擬貨幣商品”轉(zhuǎn)入這個(gè)賬戶,就相當(dāng)于“虛擬貨幣商品”的銷毀過程。
應(yīng)用基于區(qū)塊鏈的“數(shù)字貨幣商品”系統(tǒng)的以上特點(diǎn),去中心化信貸系統(tǒng)的設(shè)計(jì)思想如下。
1)在擔(dān)保人的擔(dān)保下,借貸人通過鑄造“虛擬貨幣商品”實(shí)現(xiàn)借貸。
2)在借貸周期內(nèi),借貸人通過銷毀“虛擬貨幣商品”實(shí)現(xiàn)還貸。
3)如果在借貸周期內(nèi)借貸人未還款,發(fā)生貸款逾期,則銷毀擔(dān)保人的一部分“虛擬貨幣商品”實(shí)現(xiàn)債權(quán)轉(zhuǎn)移。
接下來,給出去中心化信貸系統(tǒng)的總體描述。
在去中心化信貸系統(tǒng)中,擔(dān)保用戶通過向系統(tǒng)中一個(gè)具有特殊功能的賬戶轉(zhuǎn)賬來建立擔(dān)保資格,擔(dān)保用戶為借貸用戶提供擔(dān)保,當(dāng)具有擔(dān)保資格的擔(dān)保用戶為借貸用戶提供擔(dān)保之后,借貸用戶可以發(fā)起借貸交易,礦工驗(yàn)證擔(dān)保用戶的擔(dān)保資格和借貸交易的有效性,并將有效借貸交易打包上鏈之后,借貸過程完成。之后借貸用戶可以使用貸款進(jìn)行支付和流通。
在貸款周期內(nèi),借貸用戶通過向去中心信貸系統(tǒng)中一個(gè)特定的只能轉(zhuǎn)入無法轉(zhuǎn)出的賬戶轉(zhuǎn)入“虛擬貨幣商品”實(shí)現(xiàn)還貸。
當(dāng)出現(xiàn)貸款逾期,即貸款周期內(nèi)借貸用戶沒有還貸時(shí),礦工將擔(dān)保用戶的一部分“虛擬貨幣商品”轉(zhuǎn)到無法轉(zhuǎn)出的賬戶實(shí)現(xiàn)債權(quán)轉(zhuǎn)移,并得到一筆費(fèi)用作為發(fā)現(xiàn)逾期貸款的獎(jiǎng)勵(lì)。
以上為去中心化信貸系統(tǒng)的設(shè)計(jì)思想,值得注意的是,去中心化信貸系統(tǒng)的構(gòu)造通過擴(kuò)展區(qū)塊鏈的共識(shí)協(xié)議實(shí)現(xiàn),而這種擴(kuò)展方式不依賴于特定的共識(shí)算法,可以在任何底層共識(shí)協(xié)議上實(shí)現(xiàn)。
接下來,定義去中心化信貸系統(tǒng)的交易結(jié)構(gòu)和實(shí)現(xiàn)特殊功能的賬戶,然后詳細(xì)給出去中心化信貸系統(tǒng)的構(gòu)造。
去中心化信貸系統(tǒng)由普通交易和借貸交易2 種不同類型的交易組成。普通交易可以表示為
其中,y為輸入交易Ty的交易索引,該符號(hào)表示用戶A 向用戶B 轉(zhuǎn)入數(shù)量為v的“虛擬貨幣商品”。
借貸交易具有不同的結(jié)構(gòu),可表示為
其中,A 為擔(dān)保用戶,B 為借貸用戶,u為借貸數(shù)額,z為輸入交易Tz的交易索引,st 為區(qū)塊數(shù),表示擔(dān)保有效期。
與比特幣系統(tǒng)中的UTXO 類似,定義所有未被償還的借貸交易所組成的集合為未被償還的借貸交易集合(UPL,unpayback loan)。
為實(shí)現(xiàn)去中心化信貸系統(tǒng),有2 個(gè)需要解決的主要問題:擔(dān)保用戶如何建立擔(dān)保資格和借貸用戶如何還款。針對(duì)這2 個(gè)問題,本文在去中心化信貸系統(tǒng)中引入抵押賬戶(MA,mortgage account)和黑洞賬戶(BA,black-hole account)。
抵押賬戶為系統(tǒng)中的一個(gè)特殊賬戶,這個(gè)賬戶沒有私鑰,只有當(dāng)特定情況滿足時(shí),才能發(fā)起抵押賬戶向其他賬戶轉(zhuǎn)賬的交易。擔(dān)保用戶A 通過發(fā)起一筆普通交易來建立擔(dān)保資格,此交易被稱為擔(dān)保交易,定義所有有效擔(dān)保交易構(gòu)成的集合為有效擔(dān)保交易集合(VMT,valid mortgage transaction)。當(dāng)擔(dān)保交易被礦工打包上鏈之后,擔(dān)保用戶A 可以為借貸用戶B 提供擔(dān)保。
在比特幣系統(tǒng)中,如果一個(gè)賬戶的私鑰丟失,那么該賬戶中的“虛擬貨幣商品”將無法被花費(fèi)。BA 為系統(tǒng)中的一個(gè)特殊賬戶,此賬戶只可以轉(zhuǎn)入,不可以轉(zhuǎn)出,即轉(zhuǎn)入BA 的“虛擬貨幣商品”將無法被花費(fèi)。借貸用戶B 的還貸過程為發(fā)起交易向BA 轉(zhuǎn)入“虛擬貨幣商品”,當(dāng)這筆還貸交易被寫入?yún)^(qū)塊鏈之后,還貸過程完成,同時(shí)借貸用戶B 的借貸交易將被移出UPL。
去中心化信貸系統(tǒng)由4 個(gè)部分組成:抵押、借貸、按期還貸和逾期貸款。下面給出系統(tǒng)的詳細(xì)描述。
1)抵押
對(duì)于擔(dān)保用戶 A,首先 A 發(fā)起普通交易來建立擔(dān)保資格。當(dāng)該普通交易被礦工打包上鏈,并將其存入VMT 中,此時(shí)擔(dān)保資格建立完成。需要注意的是,此交易不放入U(xiǎn)TXO 中。
擔(dān)保用戶A 為借貸用戶B 提供擔(dān)保,其過程為生成簽名sigA(p,B,s,sti),其中p為擔(dān)保交易的交易索引,s為用戶B 的貸款額度,sti為擔(dān)保有效期,即B 的借貸交易只能被寫入?yún)^(qū)塊數(shù)小于或等于sti的區(qū)塊。
2)借貸
當(dāng)用戶B 進(jìn)行借貸時(shí),B 發(fā)起借貸交易
礦工對(duì)借貸交易的有效性進(jìn)行驗(yàn)證,驗(yàn)證算法如下。
① 驗(yàn)證sigA(p,B,s,sti),sigB(p,s',sti)。
② 驗(yàn)證擔(dān)保交易p在VMT 中且sti>st,其中st 為當(dāng)前區(qū)塊數(shù)。
③ 計(jì)算UPL 中擔(dān)保交易p所擔(dān)保的借貸交易的借貸數(shù)額的總和v0,驗(yàn)證條件v0+s'<v。
④計(jì)算UPL 中用戶B 所有的借貸交易的借貸數(shù)額的總和s0,驗(yàn)證條件s0+s'<s。
若以上條件均滿足,返回借貸交易有效的驗(yàn)證結(jié)果。
礦工將有效借貸交易打包上鏈,同時(shí)將這個(gè)交易存入U(xiǎn)TXO 和UPL 中,借貸過程完成。借貸用戶B便可使用貸款發(fā)起普通交易向其他用戶進(jìn)行轉(zhuǎn)賬。設(shè)借貸交易的交易索引為q,用戶B 使用借貸交易p向用戶C 轉(zhuǎn)賬的交易為
抵押與借貸過程如圖1 所示。注:在系統(tǒng)的實(shí)現(xiàn)中為避免重放攻擊,應(yīng)在交易的簽名中加入時(shí)間戳,此處為了簡(jiǎn)潔予以省略。
圖1 抵押與借貸過程
3)按期還貸
首先在系統(tǒng)中設(shè)置統(tǒng)一借貸期限的上限r(nóng)0。設(shè)用戶B的借貸交易p,B,s',sigA(p,B,si,sti),sigB(p,s',sti)|的交易索引為q,借款交易所在區(qū)塊的區(qū)塊數(shù)為 st1。
若當(dāng)前區(qū)塊數(shù) st<st1+r0,則借款交易未逾期,否則為逾期借款交易。當(dāng)用戶B 發(fā)起還款時(shí),B 發(fā)起交易
礦工檢查借款交易q是否逾期,若借款交易未逾期,則將此交易打包上鏈,同時(shí)將借貸交易q移出UPL,還貸過程完成。
4)逾期貸款
如果借款用戶未在還貸期限內(nèi)還貸,即st ≥st1+r0,則貸款逾期。此時(shí)將由發(fā)現(xiàn)逾期貸款的礦工,從抵押賬戶進(jìn)行扣款,具體過程如下。
對(duì)于逾期貸款,設(shè)借貸交易的交易索引為q,借貸數(shù)額為s,借貸交易的擔(dān)保交易的交易索引為p。礦工C發(fā)起普通交易為
其中,s1+s2=s,s2為礦工發(fā)現(xiàn)逾期貸款的獎(jiǎng)勵(lì)。逾期貸款的處理過程如圖2 所示。
圖2 逾期貸款的處理過程
礦工驗(yàn)證以下條件。
①擔(dān)保交易p在UPL 中擔(dān)保所有借貸交易中沒有未逾期交易。
②計(jì)算擔(dān)保交易p擔(dān)保的所有逾期借貸交易借貸數(shù)額的總和v0,驗(yàn)證v0=v-v'。
若以上條件均滿足,則將此交易上鏈,同時(shí)將擔(dān)保交易移出VMT。
綜上,只有在貸款逾期時(shí)和擔(dān)保用戶撤回?fù)?dān)保金時(shí),才能發(fā)起從MA 轉(zhuǎn)出的交易。
以上為去中心化信貸系統(tǒng)的詳細(xì)描述,在實(shí)現(xiàn)時(shí),還有許多實(shí)現(xiàn)細(xì)節(jié)需要補(bǔ)充。
在系統(tǒng)中,擔(dān)保用戶為借貸用戶提供擔(dān)保,借貸用戶借貸的計(jì)費(fèi)規(guī)則由擔(dān)保用戶制定,擔(dān)保用戶可將計(jì)費(fèi)規(guī)則通過智能合約寫入?yún)^(qū)塊鏈中,通過調(diào)用智能合約來計(jì)算借貸用戶所需向擔(dān)保用戶支付的費(fèi)用。
對(duì)于逾期貸款,擔(dān)保用戶的一部分擔(dān)保金被轉(zhuǎn)入黑洞賬戶,從而發(fā)生了債權(quán)轉(zhuǎn)移,逾期的借貸交易將作為擔(dān)保用戶的債權(quán)憑證。
IKP 系統(tǒng)由Matsumoto 等[2]提出,它是一種基于區(qū)塊鏈的PKI 增強(qiáng)機(jī)制,通過智能合約對(duì)證書CA 的錯(cuò)誤行為自動(dòng)響應(yīng),并為那些幫助檢測(cè)錯(cuò)誤行為的人提供激勵(lì)。IKP 系統(tǒng)的去中心化和智能合約系統(tǒng)允許任何人公開地參與對(duì)CA 行為的檢測(cè)。IKP 系統(tǒng)的總體架構(gòu)如圖3 所示。
IKP 是標(biāo)準(zhǔn)TLS(tansport layer security)體系結(jié)構(gòu)的擴(kuò)展,它引入了2 個(gè)新實(shí)體:IKP 權(quán)威機(jī)構(gòu)和探測(cè)器。IKP 權(quán)威機(jī)構(gòu)負(fù)責(zé)IKP 的核心功能,具體包括維護(hù)CA 的信息、存儲(chǔ)域證書策略(DCP,domain certificate policie)和響應(yīng)策略(RP,reaction policie)。DCP 和RP 由智能合約實(shí)現(xiàn),域證書策略由域提出,可以用于計(jì)算性地確定一個(gè)給定的證書對(duì)某一個(gè)域是否被授權(quán);RP 由CA 提出,在一個(gè)未授權(quán)的證書被發(fā)現(xiàn)時(shí)自動(dòng)觸發(fā)。IKP 權(quán)威機(jī)構(gòu)中還有一個(gè)全局基金,負(fù)責(zé)響應(yīng)IKP 系統(tǒng)中的賠償。探測(cè)器監(jiān)視CA 頒發(fā)的證書,并報(bào)告它們認(rèn)為未經(jīng)授權(quán)的任何證書,如果報(bào)告是正確的,它們將獲得金錢的獎(jiǎng)勵(lì)。系統(tǒng)中的任何實(shí)體都可以作為探測(cè)器,包括CA、域和客戶端。
IKP 中的操作包括如下幾項(xiàng)。
圖3 IKP 的總體架構(gòu)
1)CA 注冊(cè):CA 在IKP 權(quán)威機(jī)構(gòu)中注冊(cè)自己的信息,包括標(biāo)識(shí)符、金融賬戶信息、一個(gè)或多個(gè)公鑰和一個(gè)更新策略。
2)域注冊(cè):域向IKP 權(quán)威機(jī)構(gòu)注冊(cè)DCP。具體地說,域注冊(cè)其域名系統(tǒng)(DNS,domain name system)名稱、一個(gè)或多個(gè)公鑰、金融賬戶信息和一個(gè)檢查程序,該檢查程序決定給定的證書對(duì)這個(gè)域是否授權(quán)。
3)發(fā)行RP:一個(gè)注冊(cè)過的域與一個(gè)注冊(cè)過的CA 商談RP 的條款,包括域名、CA 標(biāo)識(shí)符、有效期、對(duì)域的DCP 的引用,以及包含響應(yīng)CA 不當(dāng)行為所觸發(fā)的支付的響應(yīng)程序。域向CA 支付費(fèi)用來購(gòu)買一個(gè)RP,保障自己不受未授權(quán)證書的危害,一旦購(gòu)買過RP 的域接收到不符合自己的DCP 的證書,這個(gè)證書將被認(rèn)定為未授權(quán)證書,這會(huì)觸發(fā)RP,啟動(dòng)相應(yīng)的賠償行為。
4)發(fā)行證書:CA 向域發(fā)送證書。
5)錯(cuò)誤行為報(bào)告:探測(cè)器向IKP 權(quán)威機(jī)構(gòu)發(fā)送CA 錯(cuò)誤行為的證據(jù),同時(shí)附上自己的賬戶信息用來接收獎(jiǎng)勵(lì)。為了防止探測(cè)器不斷產(chǎn)生錯(cuò)誤行為報(bào)告,每發(fā)送一個(gè)錯(cuò)誤報(bào)告,就要支付報(bào)告費(fèi)。
6)響應(yīng):IKP 權(quán)威機(jī)構(gòu)收到報(bào)告后認(rèn)定這個(gè)報(bào)告是否正確,如果報(bào)告正確,那么CA 確實(shí)有不符合相應(yīng)域的DCP 的錯(cuò)誤行為,則觸發(fā)該域的RP 對(duì)域進(jìn)行賠償,該RP 執(zhí)行指定的交易,向相應(yīng)的CA、域、探測(cè)器支付指定好的金額。
值得注意的是,CA 在注冊(cè)時(shí)會(huì)向全局基金支付一筆費(fèi)用,相當(dāng)于它的保證金,之后IKP 系統(tǒng)中的所有轉(zhuǎn)賬交易都是轉(zhuǎn)入全局基金或從全局基金轉(zhuǎn)出的,這樣就需要全局基金賬戶的管理者對(duì)IKP系統(tǒng)中的請(qǐng)求進(jìn)行實(shí)時(shí)響應(yīng)。
接下來,將去中心化信貸系統(tǒng)引入IKP 系統(tǒng)中,從而實(shí)現(xiàn)不需要全局基金賬戶的IKP 系統(tǒng)。
1)設(shè)CA 為系統(tǒng)中CA 的賬戶,初始化RP 的過程為CA 發(fā)起擔(dān)保交易
設(shè)擔(dān)保交易的交易索引為p,系統(tǒng)中購(gòu)買RP的域?yàn)?B1,B2,…,Bn。
2)當(dāng)擔(dān)保交易被礦工打包上鏈之后,CA 為購(gòu)買RP的域B1,B2,…,Bn生成n個(gè)簽名sigA(p,Bi,si,sti),i=1,2,…,n。其中,si為DCP所確定的賠償額度,sti為RP的有效期。
3)當(dāng)探測(cè)器D 發(fā)現(xiàn)CA 的錯(cuò)誤行為時(shí),將錯(cuò)誤行為報(bào)告給IKP 權(quán)威機(jī)構(gòu),IKP 權(quán)威機(jī)構(gòu)對(duì)錯(cuò)誤行為進(jìn)行認(rèn)定,生成錯(cuò)誤行為證據(jù)w,并對(duì)證據(jù)簽名。然后將w和 sigIKP(w)發(fā)送給 B1,B2,…,Bn。
4)Bi使用證據(jù)w生成借貸交易
礦工對(duì)借貸交易的有效性進(jìn)行驗(yàn)證,驗(yàn)證算法如下。
① 驗(yàn)證簽名sigA(p,B,si,sti)和sigIKP(w)。
② 驗(yàn)證擔(dān)保交易p在VMT 中且sti> st,其中st 為當(dāng)前區(qū)塊數(shù)。
若以上條件均滿足,返回借貸交易有效的驗(yàn)證結(jié)果。礦工將有效借貸交易打包上鏈完成賠償過程。
5)通過去中心化信貸系統(tǒng)中的逾期貸款過程完成CA 對(duì)域的賠償。
6)若CA 在RP 有效期內(nèi)未出現(xiàn)錯(cuò)誤行為,則可通過交易撤回?fù)?dān)保金。
以比特幣為代表的基于區(qū)塊鏈的“數(shù)字貨幣商品”的一個(gè)顯著特征就是“虛擬貨幣商品”總量固定,系統(tǒng)通過調(diào)節(jié)共識(shí)算法的參數(shù)(如工作量證明中的難度值)來調(diào)節(jié)一個(gè)時(shí)間段內(nèi)的“虛擬貨幣商品”供應(yīng)量,但是這樣的調(diào)節(jié)機(jī)制會(huì)帶來2 個(gè)問題,具體如下。
1)如果一種“虛擬貨幣商品”的總量固定,從長(zhǎng)期的角度看一定會(huì)帶來通貨緊縮[13]。因?yàn)椤疤摂M貨幣商品”總量恒定,系統(tǒng)中的用戶會(huì)更傾向于將這樣的“虛擬貨幣商品”用作儲(chǔ)值工具,而不是流通手段,會(huì)導(dǎo)致市場(chǎng)上流通的“虛擬貨幣商品”減少,進(jìn)一步導(dǎo)致通貨緊縮。而“虛擬貨幣商品”制度建立的初衷并不是讓持有“虛擬貨幣商品”的人變得更加富有,而是讓交易和流通等經(jīng)濟(jì)活動(dòng)更加便利。
2)通過調(diào)節(jié)共識(shí)算法參數(shù)來調(diào)節(jié)一段時(shí)間內(nèi)新“虛擬貨幣商品”的產(chǎn)生量很難實(shí)現(xiàn)精確和有效[14]。以比特幣為例,比特幣需要根據(jù)所有參與的礦工的計(jì)算能力來調(diào)節(jié)工作量證明的難度值,首先,礦工的計(jì)算能力的估計(jì)并不能做到完全準(zhǔn)確,其次,這樣的調(diào)節(jié)方式對(duì)“虛擬貨幣商品”供應(yīng)量的影響具有一定的滯后性。
針對(duì)現(xiàn)有“加密貨幣商品”系統(tǒng)中這樣的問題,接下來,在去中心化信貸系統(tǒng)引入分層“虛擬貨幣商品”供應(yīng)量調(diào)節(jié)機(jī)制。
去中心化信貸系統(tǒng)模型中,引入第一級(jí)調(diào)節(jié)用戶{A1,A2,…,Ai},對(duì)應(yīng)現(xiàn)實(shí)經(jīng)濟(jì)系統(tǒng)中的政府機(jī)構(gòu)。第二級(jí)調(diào)節(jié)用戶 {B1,B2,…,Bs},對(duì)應(yīng)現(xiàn)實(shí)經(jīng)濟(jì)系統(tǒng)中的各大銀行。
在去中心化信貸系統(tǒng)中,擔(dān)保交易所擔(dān)保的借貸交易的借貸額度的總和小于或等于擔(dān)保交易轉(zhuǎn)入抵押賬戶MA 的額度。分層“虛擬貨幣商品”供應(yīng)量調(diào)節(jié)機(jī)制通過允許第一級(jí)調(diào)節(jié)用戶超額擔(dān)保,第二級(jí)調(diào)節(jié)用戶的借貸無時(shí)間期限來實(shí)現(xiàn)“虛擬貨幣商品”供應(yīng)量的增加。即當(dāng)系統(tǒng)需要增加“虛擬貨幣商品”供應(yīng)量時(shí),首先確定一組系統(tǒng)參數(shù)((s1,v1),(s2,v2),…,(st,vt)),在實(shí)際應(yīng)用中,這組參數(shù)可以由經(jīng)濟(jì)系統(tǒng)中的變量(如生產(chǎn)總量、消費(fèi)量等)來確定。其中(si,vi)表示用戶Ai發(fā)起的數(shù)額為si的擔(dān)保交易可以擔(dān)保第二級(jí)調(diào)節(jié)用戶{B1,B2,…,Bs}發(fā)起總額小于si+vi的借貸交易,表示系統(tǒng)通過分層調(diào)節(jié)機(jī)制增加的貨幣量的最大值。 設(shè) Ai的擔(dān)保交易的交易索引為p,其中Ai為Bj生成簽名sigA(p,Bj,uj)。
Bj發(fā)起借貸交易
礦工對(duì)借貸交易的有效性進(jìn)行驗(yàn)證,驗(yàn)證算法如下。
2)驗(yàn)證擔(dān)保交易p在VMT 中且計(jì)算UPL 中擔(dān)保交易p所擔(dān)保的借貸交易的借貸數(shù)額的總和v0,驗(yàn)證條件v0+u<si+vi。
3)計(jì)算UPL中用戶B所有的借貸交易的借貸數(shù)額的總和s0,驗(yàn)證條件s0+u<uj。
若以上條件均滿足,返回借貸交易有效。
不難驗(yàn)證,系統(tǒng)通過分級(jí)調(diào)節(jié)機(jī)制所增加的“虛擬貨幣商品”供應(yīng)量由{A1,A2,…,At}和{B1,B2,…,Bs}共同決定,且總量小于或等于
本文提出了去中心化信貸系統(tǒng),并給出了其構(gòu)造應(yīng)用。首先,通過擴(kuò)展基于區(qū)塊鏈的“數(shù)字貨幣商品”的交易結(jié)構(gòu),引入特殊賬戶并擴(kuò)展共識(shí)協(xié)議實(shí)現(xiàn)了去中心化信貸系統(tǒng),實(shí)現(xiàn)“虛擬貨幣商品”的持有者可以為借貸用戶提供擔(dān)保,借貸用戶可以通過借貸交易使用“虛擬貨幣商品”進(jìn)行交易,且借貸用戶的還貸過程以及貸款逾期均能通過協(xié)議處理,從而使“數(shù)字貨幣商品”作為流通手段更加高效便捷。
對(duì)于基于區(qū)塊鏈的PKI 增強(qiáng)機(jī)制IKP 系統(tǒng),系統(tǒng)中的所有轉(zhuǎn)賬交易都是轉(zhuǎn)入全局基金或從全局基金轉(zhuǎn)出的,這樣就需要全局基金賬戶的管理者對(duì)IKP系統(tǒng)中的請(qǐng)求進(jìn)行實(shí)時(shí)響應(yīng)。本文通過將去中心化信貸系統(tǒng)引入IKP 系統(tǒng),實(shí)現(xiàn)IKP 系統(tǒng)在使用時(shí)不需要全局基金。針對(duì)基于區(qū)塊鏈的“數(shù)字貨幣商品”的價(jià)格浮動(dòng)劇烈和“虛擬貨幣商品”供應(yīng)量不易控制的問題,本文在去中心化信貸系統(tǒng)中引入分層調(diào)節(jié)機(jī)制,實(shí)現(xiàn)對(duì)“虛擬貨幣商品”供應(yīng)量的調(diào)節(jié)。
對(duì)于去中心化信貸系統(tǒng),其中還有許多實(shí)現(xiàn)細(xì)節(jié)部分需要進(jìn)一步確定與優(yōu)化,比如擔(dān)保用戶提供擔(dān)保的費(fèi)用設(shè)置,借貸用戶的信用評(píng)估方法。另外,可將普通交易與借貸交易通過側(cè)鏈技術(shù)分別放入2條區(qū)塊鏈中,從而提高交易的效率。