プッシュ通知

公式ページ: https://compound.finance/

Compound Protocol App: https://app.compound.finance/

Whitepaper: https://compound.finance/documents/Compound.Whitepaper.v02.pdf

Compound Protocol(以後Compound)はEthereum Mainnet上で稼働を開始したばかりのDecentralized Crypto Money Market Platformです。一般的にMoney Marketとは短期金融市場、主に1年未満の短期資金を貸し借りする為の市場となり、CompoundはそれをSmart ContractとWallet間で行うサービスという事になります。

ではTokenの貸し借りと言えば既に存在するLending系Dappsとは何が違うのでしょうか?

それはCompoundの場合では貸し借りの相手が個人同士では無く、あくまでもContract対Walletの間で貸し借りが発生するところです。そういった意味ではLending系よりMakerDAOの提供するサービスの方がより近い物と言えるでしょう。

CompoundはSeed roundでCoinbaseを含め多くのVCから合計9億円以上の出資を受けています。それだけDecentralized Crypto Money Marketへの期待が高いという事でしょうか。

それではここからCompoundの仕組みについてざっくり解説していきます。

Compoundに登場する用語解説

CompoundのApp内で使われる、または本記事の中で説明に使う用語の解説一覧です。CompoundのContractCodeやDocumentを見る方は、そこにあるパラメータの名前が異なる点にご注意下さい。文中では英語名称と日本語の両方を併用して説明します。図解では英語名称を基本的に使います。

名称 解説
WETH Wrapped EtherのTickerであり、ERC20トークンと化したEtherのペッグトークンを指します
Supply 資産の預け入れ、預金を指します
Borrow 資産の借り入れを指します。Borrowing Positionは借り入れ契約の様なものとなります
Total Supply 預け入れた資産の合計、総評価額を指します
Liquidity 預け入れた資産の総評価額のうち、担保になっていない資産を指します。Excess Liquidityとも言います
Collateral 借り入れに対する担保を指します
Interest 預け入れに対する利息を指します。MarketではSupply APRと表記されています。
Accrued Interest 借り入れに対する利子を指します。MarketではBorrow APRと表記されています。
Repay 借り入れの返済を指します
Origination Fee Borrow feeとも言い、借り入れ時に発生する手数料の様なものを指します。現状0.025%となっています。
Liquidation Discount 精算時に適用されるMarket側が買い上げる際の割引率です。
Contract Ethereum上のContractアカウント及びその中での定義内容を指します
EOA Ethereum上の通常アカウント、アドレス、Walletを指します。
Money Market Compoundの本体となる台帳とPool、Contractを指します
Price Oracle 外部から価格を取得するContractと仕組みを指します

Compoundの基本的な使い途

現状で見られる用途は下記の通りです。現状では取扱資産となるトークンは WETH、BAT、ZRX、REPの4種類のみです。またCompound上でもWalletのETHをWETHに変換してSupplyする機能を持っています。

資産の預け入れと利息獲得

Compoundを利用する場合、まずはCompoundのContractに預け入れ(Supply)をしないと始まりません。その際はContract側に直接資産を移す事になります。

預け入れのリスクが全く無いとは言いませんが、Contractの執行による出し入れしか無いと仮定すれば悪くは無いでしょうか・・・とは言え利率はCEXと比較して低めですのでこの辺りの考え方は人それぞれとなるでしょう。2018年10月2日時点ではBitfinexの利率(APR)が4.8%、Compoundの預金利息が0.07%となっていますので利率だけを見ればやはりCEX側が勝ります。ただしCompoundではLending Botも不要且つ資産の出しいれはContractのみが行いますのでこちらも独自のメリットがあるでしょう。

 

預け入れ資産を担保にした新たな資産の借り入れ

上記で預けた資産から利用可能な資産額(Liquidity)に応じた資産の借り入れ(Borrow)を行います。最高でも預け入れ資産の評価額150%に対して借り入れ100%までしか借り入れ出来ません。(例: 5WETH預け入れに対して3WETHの借り入れ) Compoundではこれを下回ると精算されてしまうので、実際にはかなり余裕を持って借り入れする必要があります。

また、当然ながら借り入れ資産には利子が発生しますし利率は預け入れの利息より高くなります。

借り入れた資産は自分のWalletに移動されて通常の資産と同様に売却や利用が可能です。借り入れ資産の値下がりを見込むのであれば、借り入れからの売却→値下がり後買い戻しと返却という手動ショートが可能という事です。

もう一つの特徴としてCompoundには板取引の様な概念が無く、尚且価格は外部を参照する為に価格を動かす事なく一気に大量のショートポジションを持てます。

 

利用する際の注意点、または押さえておくべきポイントのまとめ
  • 預け入れの際はCompoundのContract側に資産を完全に預ける形になる
  • Gasが必要なTransactionはSupply、Withdraw、Borrowのみ
  • 利息を得るには預けておくだけ良く、貸出の手続きは不要(Lending BotやAPI不要のLending)
  • 預け入れ資産の総評価額に応じて借り入れ可能額が決まる(預け入れ資産が担保として機能、総額の3分の2まで借り入れ可能)
  • 借り入れの際は手数料として0.025%追加で借り入れが行われる(例: 1WETH借りた場合、実際には1.00025の借り入れが行われる)、また借り入れ中は利子が発生する
  • 担保となる預け入れ資産は借り入れ資産の150%以上をキープしなくてはならず、150%を切ると精算されてしまう(よって借り入れを限度額ギリギリで行う事は推奨されない)
  • 借り入れ資産は自分のWalletに移されて自由に扱う事が出来る
  • 借り入れるトークンは預け入れたトークンとは無関係に選択可能だが、返済は借り入れと同一トークンの必要がある
  • 利息と利子、借り入れ手数料のレート、他マーケット情報はhttps://app.compound.finance/#Markets から参照可能

Compoundのアーキテクチャ

それではCompoundがどういう形で動いているかWPGitの情報を元に組み立ててみましょう。

参照元https://github.com/compound-finance/compound-money-market/blob/master/docs/CompoundProtocol.pdf

CompoundのContractは合計三種類です。

Money Market https://etherscan.io/address/0x3FDA67f7583380E67ef93072294a7fAc882FD7E7

Interest Rate Model https://etherscan.io/address/0xd25c029a607ee888bdbdbe054515e25ec6f3fff9

Price Oracle https://etherscan.io/address/0x1bee451812e0d7013aa152f885c5b6c529e46c72

ほぼ名前そのままの役割ですが、コアとなるのはMoney Market Contractです。これがLedgerを持ちPoolとなるWalletを持っています。預け入れた資産は全てここに入っています(ただしETHは0)。

Ledger上でユーザのWallet(EOA)に紐付けられた情報がブロック毎に更新されPrice Oracle Contractから価格情報を、Interest Rate Model Contractから利率をそれぞれベースにして連動と反映を行う様なイメージかと思います。殆どの処理はMoney Market内部で行われる為、最初の署名を除けばSupplyBorrowRepayをする時のみTransactionGasが発生します。CompoundではInterestAccrued Interestの様な細かい残高変更が頻繁に発生する為、またLiquidateも即座に行う為、こういった構造にしたと考えられます。

下記はWalletとCompoundの接続や構造を表す図です(ただし公式の図面が無い為、Documentを元に作成した再現イメージの様なものとなります)

Supply(預け入れ)

EOA側からMoney MarketSupplyとしてDepositされた分がAccountSupplyに加算され、総評価額がLiquidityとして常にPrice Oracleを参照して決定、更新されます。Supplyがある限り、Ledger上でAccountSupplyInterestが加算され続けていく事になります。

Withdraw(引き出し)

Money MarketのAccountが持つSupplyに応じたWithdrawが可能です。

Borrow(借り入れ)

AccountのLiquidity(SupplyPriceにより算出)に応じた枠内でBorrow可能となります。LiquiditySupplyの総評価額であり、それをベースに行うBorrowはトークンの種類に制限がありません。WETHを預けてBATとWETHをBorrowという事も可能です。

Borrowした資産はEOA側で受け取り、売却や使用等、自由に扱う事が出来ますが、PositionにはAccrued Interestが課されます。

Repay(返済)

RepayはBorrowしたものと同じ種類のトークンである必要があります。

Liquidate(精算)

Money Marketでは各AccountBorrowing Positionに対して毎ブロック確認を行います。そしてAccountLiquidityPosition150%を下回った場合には精算が執行されます。自分のSupplyが担保となり、Borrowing Positionがクローズされた上でSupplyから精算に必要な分がLiquidation Discount適用レートでCompound側へ引き渡される事になります。

Positionを持つとCompound上で状態を確認出来る様になります。下記の画像にあるExcess Liquidityを確認してPositionには余裕を持ちましょう。

総括

Compoundは預け入れによる利息の獲得と、預け入れた資産を担保にした融資を可能にする銀行の様なプラットフォームと言えるかもしれません。

冒頭でも述べた通り貸し借りを求めるユーザの仲介を行うのではなく、あくまでも預け入れと貸し借りの相手はCompoundMoney Market Contractとなります。

Dhrama Protocolも一見似ていますが、Dharmaは手動で貸し出す分散型レンディングプラットフォームで、Compoundは皆で預けて皆で収益を受け取る分散型銀行とも言えます。

これは個人的な想像ですが例えば・・・今後App側の開発が進んで引き出しや借り入れに別の認証を噛ませる様な事が出来れば、まさに銀行の様に機能するかもしれません。個人でWalletを管理するよりも預けた上で別の認証を組み合わせてWallet+外部の認証というセキュリティの組み合わせが出来たら格段に扱い易いと言えるでしょう。

独自トークンも不要且つLending Botを使わずとも利息が得られるのですから、そこも評価出来る点です。

Marketに担保を預けて融資を得るモデルとしてはMakerDAOが提供するプラットフォームもCompoundと少し似ているのですが、UIや仕組みとしては格段にこちらの方が扱いやすいです。とは言えあちらは精算の閾値も低いですし、Daiが発行出来るというメリットもありますので共存していくのではないでしょうか。

もう一つの比較対象としてdYdXというサービスがリリースされました。こちらはCompoundの様な手動ショートではなく、SETH(Short Ethereum)というトークンを売買可能です。現時点ではSETHの売買のみ可能ですが、将来的にはLendingやBorrowが出来るプラットフォームになる模様です。

分散型銀行と既存の銀行

以下はCompoundを”分散型銀行”として解釈した場合の話です。

基本的なところで言えば銀行は預金者のお金を預かってそれを運用する事で利益を出す機関でありシステムかと考えられます。 既存の銀行は預かりにしろ運用にしろ、人やシステムが関係しますし担保の基準も様々である為、人やシステム等の運用コストが大きく、融資に関するリスクとリターンも振れ幅が大きくなるでしょう。

しかし分散型銀行であるCompoundはContract上で稼働するシステムなので直接的な人的コスト、店舗やクラウド、サーバの様な物理、システム的なコストがかかりません。 融資には必ず特定の担保が必要であり、精算もContractが行う為に基本的に貸し倒れも殆ど発生しないでしょう。 そして融資によって得られた金利は預金者へ公平に分配されます。  

以上の様な理屈としては分散型銀行はかなり理想的に見えてしまいますが、実際には管理者不在のContract有りきである故にトラブル対処やサポート等についてはフレキシブルな対応が望めないでしょう。 既存の銀行では個人のセキュリティ的な過失による損害も銀行が補填するケースが多い様ですが、当然ながらそれもこちらでは望めません。

それでもこうした選択肢があるという事はとても良いのでは無いでしょうか。少なくとも透明性のある金利が適用されますし、突然引き出し制限が課される様な事も無いでしょう。 公平性や透明性を望む人は分散型銀行を、管理者やサポートを望む人は既存の銀行を利用すれば良いのです。

運営者情報

様々な知見をお持ちの方々に、ハイクォリティな記事を書いていただくメディアサイト

Twitter:@Stir_Lab

 

運営元

 

Twitterでフォローしよう

おすすめの記事