Compound,區(qū)塊鏈銀行運(yùn)作原理

Compound 是一個(gè)以太坊上的貨幣市場(chǎng),一個(gè)任何用戶、機(jī)構(gòu)和 dApps 都可以使用的鏈上賬本。它提供了存幣和借幣的功能,就像一個(gè)銀行,用戶可以存幣獲的利息收益,或進(jìn)行抵押借幣。在實(shí)現(xiàn)原理上,Compound 的帳本模型也與銀行類似,并遵循了國(guó)際會(huì)計(jì)準(zhǔn)則。

目前區(qū)塊鏈上沒有負(fù)債和信用的概念,需要超額抵押資產(chǎn)才能完成借貸行為。例如想要借出價(jià)值 100 美元的資產(chǎn) B,則需要抵押價(jià)值 150 美元的資產(chǎn) A。

要了解 Compound 實(shí)現(xiàn)原理參看第一部分“Compound 分解“,如果完全不了解 Compound,請(qǐng)參看第二部分“Compound 白皮書整理”;其他資料參看第三部分“參考“;Compound 使用教程鏈接 小課堂 | 使用 imToken 體驗(yàn)去中心化「余額寶」。

一、Compound 分解

實(shí)時(shí)結(jié)算的帳本

Compound 是一個(gè)使用智能合約實(shí)現(xiàn)的實(shí)時(shí)結(jié)算帳本。帳本能實(shí)時(shí)結(jié)算的前提是交易逐筆發(fā)生,有確定的執(zhí)行順序,交易發(fā)生時(shí)間真實(shí)可靠等。區(qū)塊鏈滿足這些特性,為帳本自動(dòng)結(jié)算提供基礎(chǔ)。

在 Compound 上,當(dāng)一個(gè)交易發(fā)生時(shí)賬本會(huì)對(duì)賬目進(jìn)行一次結(jié)算,此時(shí)結(jié)算利息會(huì)更新到賬目余額中。等到下次交易事件發(fā)生時(shí),會(huì)再次觸發(fā)這樣的結(jié)算處理并更新余額。

利率模型

一個(gè)銀行的簡(jiǎn)單模型就是通過借款產(chǎn)生營(yíng)收,營(yíng)收作為存款用戶的利息。簡(jiǎn)化 Compound 的利率模型,不設(shè)定浮動(dòng)的借款利率,不考慮盈利,只保證賬目借貸平衡,有:

借款營(yíng)收 = 存款利息
其中:
借款營(yíng)收 = 借款總額 * 借款利率 * 時(shí)間
存款利息 = 存款總額 * 存款利率 * 時(shí)間
=>
借款總額 * 借款利率 * 時(shí)間 = 存款總額 * 存款利率 * 時(shí)間
=>
借款總額 * 借款利率 = 存款總額 * 存款利率

根據(jù)公式有:

  1. 借款總額為零(沒有人進(jìn)行借款),此時(shí)沒有營(yíng)收產(chǎn)生,存款利率為零
  2. 借款總額增大,產(chǎn)生營(yíng)收增多,存款利率也會(huì)提高
  3. 借款總額不變(營(yíng)收不變),存款總額增大,存款利率降低

結(jié)論:利率隨著借款總額和存款總額的變動(dòng)而變動(dòng)。

帳本的變化

定義交易事件為:存款、提現(xiàn)、借款、還款。

如果沒有任何交易事件發(fā)生,存款總額、借款總額就不會(huì)發(fā)生變化,利率在這個(gè)段時(shí)間里也會(huì)一直保持不變。隨著交易事件的產(chǎn)生,存款/借款總額會(huì)發(fā)生變化,這會(huì)引起利率發(fā)生改變。

假定借款利率是 0.05,下面狀態(tài)圖中圓圈代表帳本和利率的狀態(tài),箭頭代表事件:

利率隨事件變化

圖中 a 狀態(tài)無借款,無營(yíng)收,存款利率為 0。事件 1.借50 發(fā)生,根據(jù)公式,可得新的存款利率為 0.025。

存款利率 =(借款總額 * 借款利率)/ 存款總額
        = (50 * 0.05)/ 100 = 0.025

事件 2、3 導(dǎo)致的帳本狀態(tài)也可以根據(jù)公式計(jì)算。

結(jié)論:交易事件引起利率變化。

營(yíng)收和時(shí)間的關(guān)系

上節(jié)的狀態(tài)變化并沒有包含結(jié)算環(huán)節(jié)。隨著時(shí)間的推移,會(huì)有營(yíng)收(利息)產(chǎn)生。

對(duì)于存款:

新的存款總額 = 存款總額 +(存款總額 * 存款利率 * 時(shí)間)

對(duì)于貸款:

新的貸款總額 = 貸款總額 +(貸款總額 * 貸款利率 * 時(shí)間)

假設(shè)借款利率 5% 為日利率(明顯是高利貸,但便于計(jì)算),疊加時(shí)間后進(jìn)行結(jié)算的狀態(tài)圖如下:

營(yíng)收和時(shí)間

黃色箭頭代表上一狀態(tài)的持續(xù)時(shí)間,當(dāng)事件發(fā)生后,狀態(tài)更新并進(jìn)入下一個(gè)時(shí)間段。

可以看出,考慮營(yíng)收和時(shí)間的關(guān)系后,利率的變化變得更加復(fù)雜,但計(jì)算過程仍然清晰。

狀態(tài) a 持續(xù)了 1 天,由于借款為 0,存款利率為 0,發(fā)生事件 1 進(jìn)行結(jié)算后存款沒有產(chǎn)生變化,事件 1 增加了借款總額。重新計(jì)算利率可以得到新的存款利率 0.025。

事件 2 觸發(fā),狀態(tài) b 持續(xù)了 2 天,在進(jìn)行結(jié)算時(shí),可以推算出新的存款和借款總額:

## 結(jié)算
新的存款總額 = 100 +(100 * 0.025 * 2)= 105
新的借款總額 = 50 +(50 * 0.05 * 2) = 55

結(jié)算后,存款總額再增加事件 2 存入的 50,結(jié)果為 105 + 50 = 155。根據(jù)存款總額 155 和借款總額 55 計(jì)算出新的存款利率為 0.01774。

事件 3 觸發(fā),狀態(tài) c 持續(xù)了 1 天:

## 結(jié)算
新的存款總額 = 155 +(155 * 0.01774 * 1) = 157.75
新的借款總額 = 55 + (55 * 0.05 * 1) = 57.75

由于還款為 20,此時(shí)借款總額是 57.75 - 20 = 37.75。重新計(jì)算出存款利率為 0.012。

結(jié)論:交易事件發(fā)生時(shí)進(jìn)行結(jié)算,結(jié)算結(jié)束后按事件調(diào)整余額并引起利率變化。

每一筆明細(xì)帳

上述過程已經(jīng)具有一定的復(fù)雜性,但由事件觸發(fā)狀態(tài)變化這個(gè)過程是很明確的。在實(shí)際生產(chǎn)中,存款和借款總額并不是由一個(gè)單一賬戶產(chǎn)生的,而是由無數(shù)的小賬目匯聚而成的。比如 Alice 存入 50,Bob 存入了 30,存款總額是 80。這里就產(chǎn)生了更多問題,由于 Alice 和 Bob 的存款時(shí)間不同,它們的利率也不一樣。借款也與之類似。因此每一筆帳都要單獨(dú)進(jìn)行結(jié)算,它們的利率根據(jù)總帳額度的變化而變化。

明細(xì)帳

我們把狀態(tài) a 的存款總額 100 歸為其他存款。在 2 天后,Alice 存入 50,結(jié)算后其他存款更新為 105。Alice 的存款增加了存款總額,使總額增長(zhǎng)到 155,最終存款利率計(jì)算為 0.01774。

1 天后,Bob 也存入 50,此時(shí) Alice 存款和其他存款以 0.01774 利率進(jìn)行結(jié)算。結(jié)算結(jié)果如狀態(tài) c 所示。

通過上述分析,可以發(fā)現(xiàn)每次事件產(chǎn)生,需要對(duì)每一筆明細(xì)帳進(jìn)行結(jié)算。這樣隨著存款/借款的用戶增多,賬目會(huì)越來越多,每次結(jié)算的計(jì)算量也會(huì)越來越大。不過細(xì)心觀察可以發(fā)現(xiàn),只要記錄了歷史利率,事件發(fā)生不需要對(duì)所有賬戶結(jié)算。我們直接根據(jù)各明細(xì)帳的初始的狀態(tài)計(jì)算圖中狀態(tài) c:

其他存款 = 100 +(100 * 0.025 * 2)+((100 +(100 * 0.025 * 2))* 0.01774 * 1)
Alice存款 = 50 + (50 * 0.01774 * 1)
Bob存款 = 50

其中 100 是其他存款的初始額度,50 是 Alice存款的初始額度。0.025 是第一期利率,0.01774 是第二期利率??梢钥闯?,只要有歷史利率就可以通過迭代運(yùn)算計(jì)算出每個(gè)明細(xì)賬戶的當(dāng)前余額。所以在進(jìn)行結(jié)算操作時(shí)只需要對(duì)事件操作的明細(xì)帳進(jìn)行結(jié)算,其他賬戶可以暫時(shí)不用結(jié)算,直到它們被操作時(shí)再計(jì)算即可。

結(jié)論:每次結(jié)算只需要計(jì)算余額受影響的明細(xì)帳,并更新總帳。其他賬目可以等到被操作時(shí)再進(jìn)行計(jì)算。

總結(jié)

我們討論了 Compound 的帳本原理,沒有對(duì) Compound 的抵押、價(jià)格預(yù)言機(jī)和“壞賬”清算進(jìn)行詳細(xì)討論。不過有了賬本模型,其他部分也很容易。所謂 A 資產(chǎn)的抵押,實(shí)際上是將 A 資產(chǎn)存入智能合約,此時(shí)就可以借出 B、C、D…的資產(chǎn)(A 是超額抵押,借出價(jià)值必須低于 A 的價(jià)值)。價(jià)格預(yù)言機(jī)會(huì)時(shí)時(shí)更新 A、B、C、D…資產(chǎn)的價(jià)格,在抵押資產(chǎn)價(jià)值降低,達(dá)到一個(gè)風(fēng)險(xiǎn)閥值時(shí)(仍然沒有低于借出資產(chǎn)的價(jià)值),將 A “拍賣”,此時(shí)拍賣價(jià)格比市場(chǎng)價(jià)格更加優(yōu)惠,自動(dòng)償還了借出資產(chǎn)。

以上模型可以完全移植到區(qū)塊鏈中,當(dāng)我們對(duì)智能合約發(fā)起一筆交易事件就會(huì)觸發(fā)結(jié)算處理,并更新利率。這些過程完全自動(dòng)化。

Compound 的本質(zhì)是將一套傳統(tǒng)的會(huì)計(jì)模型復(fù)制到區(qū)塊鏈中,使會(huì)計(jì)賬本能進(jìn)行實(shí)時(shí)結(jié)算。得益于此,存款/借款所需要簽署的法律文件和手續(xù),都被隱式的囊括在智能合約中。人們無需再進(jìn)行任何協(xié)商,只需要輕點(diǎn)幾下就可以使用該項(xiàng)服務(wù)。同時(shí),它被部署在去中化的網(wǎng)絡(luò)上,成為沒有地域性、自由開放的合約協(xié)議。只要遵循了合約的規(guī)則,任何人、任何機(jī)構(gòu)都能無區(qū)別的使用這項(xiàng)低摩擦的金融服務(wù)。

不過,在區(qū)塊鏈上或許并不需要使用傳統(tǒng)會(huì)計(jì)模型處理賬務(wù),我們有更多可行方案和更簡(jiǎn)潔的數(shù)學(xué)模型實(shí)現(xiàn)像 Compound 一樣的金融服務(wù)。毋庸置疑,這些“未來”的金融服務(wù)會(huì)快速發(fā)展,構(gòu)筑一個(gè)新世紀(jì)。

二、Compound 白皮書整理

基礎(chǔ)特性

  • 資金池
  • 基于供需法則,由算法生成利率
  • 浮動(dòng)利率,無需協(xié)商
  • 完全透明的代幣余額信息,記錄所有歷史利率

存幣

  • 匯聚用戶的代幣
  • 實(shí)時(shí)提現(xiàn)
  • 利息實(shí)時(shí)支付
用例
  • 用戶進(jìn)行存款,低風(fēng)險(xiǎn)獲得利息收入
  • dApp 應(yīng)用程序、機(jī)構(gòu)和交易所的代幣增值

借幣

  • 需要超額抵押
  • 無期限限制
風(fēng)險(xiǎn)控制
  • 借出代幣價(jià)值超過安全抵押率時(shí),抵押會(huì)優(yōu)于市場(chǎng)利率進(jìn)行清算,鼓勵(lì)套利者進(jìn)行套利,降低風(fēng)險(xiǎn)
用例
  • 快速借 utility token 進(jìn)行使用。隨時(shí)可借,無需等待(exchange 需要等待吃單)。
  • 用戶抵押持有的組合資產(chǎn)(多種代幣)借出 ETH,進(jìn)行 ICO 等投資。
  • 做空

賬務(wù)系統(tǒng)

現(xiàn)金 + 借款 = 存款 + 抵押資產(chǎn)

遵循國(guó)際會(huì)計(jì)準(zhǔn)則:

事件
存入代幣 現(xiàn)金 供給
提取代幣 供給 現(xiàn)金
借出代幣 借款 現(xiàn)金
償還代幣 現(xiàn)金 借款
清算(借款人) 供給(抵押) 借款(資產(chǎn))
清算(清算人) 現(xiàn)金(資產(chǎn)) 供給(抵押)
利率增長(zhǎng)(供給) 抵押凈值 供給
利率增長(zhǎng)(貸) 借款 抵押凈值

利率模型

U = 借款 /( 現(xiàn)金 + 借款 )
借款利率 = 10% + U * 30%
存款利率 = 借款利率 * U *( 1 - S )

三、參考

Compound Whitepaper

Compound Protocol Specification

小課堂 | 使用 imToken 體驗(yàn)去中心化「余額寶」

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容