Liquid上のスマートコントラクトで金融商品を実現
Liquid Network Blockstream Research

Liquid上のスマートコントラクトで金融商品を実現

Allen Piscitello

2021年11月のLiquidのアップグレードにて、コベナンツの単純化と改善を目的に、トランザクション内容の参照、64ビット演算など31のオペコードが追加されました。オペコードの追加で、Liquid上で金融商品を先進的なスマートコントラクトとして提供できるようになりました。これにより、トレーダーは取引の際に従来ほど第三者や取引相手を信用する必要がなくなります。

Liquid上で提供可能な金融商品の例として、以下、ノンカストディアルで部分約定も可能な指値注文と、満額の担保で裏付けされたオプション取引の2つを解説します。Blockstreamはこれらをスマートコントラクトで設計・実装することで、Liquidがビットコインの金融レイヤーとして機能することを実証します。

指値注文

指値注文は買い手もしくは売り手(メイカーと呼びます)が、希望する購入価格または売却価格を指定する注文です。別のトレーダー(テイカー)がこの指値注文を「テイク」すると取引が実行されます。通常、指値取引はメイカーとテイカーが資金を預託するカストディアルな取引所でマッチングされ、取引所の内部で決済されます。この場合、トレーダーは資金の預け先である取引所を信用しなければならず、ハッキングや内部犯行による盗難で資金を失うリスクを負います。

これまでも指値取引はLiquid上で再現できましたが、メイカーとテイカーともに常時秘密鍵をオンラインにしておく必要があったり、部分約定ができないという制限がありました。例えば、メイカーが20,000 USDtで5 L-BTCの売却を発注した場合、その指値で2 L-BTCだけ買いたいテイカーが現れても部分約定できず、メイカーが手動で注文を修正する必要がありました。秘密鍵を常時オンラインにしておけば自動化も不可能ではありませんが、複雑性が増し、セキュリティリスクが高まります。

Liquidにトランザクション内容を参照するオペコードが新たに追加されたことで、コベナンツが実現しました。コベナンツとは、トランザクションが特定条件を満たす場合のみ、その出力に送金するスマートコントラクトの一種です。上記の例でいうと、メイカーが5 L-BTCをコベナンツにロックし、1 L-BTC当たり20,000 USDtをメイカーに送ることを条件として設定すれば、5 L-BTC未満のL-BTCの売却が可能になります。また、テイクされなかったL-BTCをメイカーが回収して注文を取り消すこともできます。指値注文はテイカーが現れて取引を実行するまでブロックチェーンに記録されないため、ブロックスペースと手数料の浪費を回避できます。

入金トランザクション:アリスが指値注文のコベナンツに5 L-BTCを入金。取引トランザクション:ボブが$40,000 USDtを支払い2 L-BTC (ネットワーク手数料控除前) をコベナンツから取り出す。

オプション取引

より高度なユースケースとして、カバードコールなど原資産を担保にしたオプション取引があります。オプションのライターは、特定日(満期日)までに特定資産を特定価格で購入する権利(義務ではない)を販売し、満期日までに権利が行使されなければ、満期日以降に担保資産を回収できます。オプション取引を活用すれば、オプションの売り手は値上がりを待って売却する意図で保有する資産を希望価格で売却する契約と引き換えに収入を得たり、オプションの買い手は最小限のリスクで原資産の値上がりに賭けることができます。

指値注文と同様に、オプション取引も第三者を信用して資金を預けたり、取引相手を信用して決済を委ねる必要があります。第三者に資金を預ける場合は技術的欠陥、規制、盗難などで資金を喪失したり、凍結されたりするリスク、取引相手を信用する場合は相手が義務を履行しないリスクをトレーダーが負います。このモデルが一般的な既存金融市場は、一握りの大企業に信用が集中する、不測の事態に備えた保険が必須とされるなどの問題を抱えます。これは、仲介者が不要なスマートコントラクトで取引を実行することで解決できます。

コベナンツでオプションを実装する

オプション契約には2種類のポジションがあります。原資産を特定価格で購入するオプションを売るグランターと、その権利の買い手であるグランティーです。どちらのポジションも二次市場で取引できます。Liquidでの実装では、グランターとグランティーというポジションはそれぞれGrantor Token、OptionTokenで表します。

オプション契約では以下の値を定義します:

  • Collateral asset - メイカーが売りに出す資産 [1]
  • Settlement asset - テイカーがメイカーへの支払いに使う資産
  • Strike price - 権利行使時にCollateral Asset単位ごとに支払うSettlement Assetの数量
  • Contract size - Collateral Assetの取引最小単位で、取引数量はこの整数倍とする必要がある
  • Exercise start date - オプションの権利行使が可能になる日付
  • Exercise expiry date - グランターが担保を回収できる日付

Options Lifecycle

定義

オプション契約の売り手は上記のパラメータを設定し、Option TokenおよびGrantor Tokenを発行する準備を行います。この時点では、どちらのトークンもまだ発行されず、担保資産もロックされません。Liquid上でのトークン発行は、Reissuance Tokensという関連アセットを発行するトランザクションで使用する特殊アセットを介して行われるためです。定義のプロセスを経て、Option Token GeneratorとGrantor Token Generatorという2種類のReissuance Tokensが生成されます。これらのトークンは、Collateral Covenantと呼ばれるコベナンツに担保資産がロックされるとトークン生成機能が有効化されるコベナンツにロックされます。

入金

オプション契約のCollateral Covenantに資産を送ることでオプション取引が開始されます。Collateral Covenantに資産をロックしたユーザーは、担保資産相当のOption TokenとGrantor Tokenを生成できます。例えば、Contract SizeがL-BTC 1M satsの契約に100M satsを入金した場合、Option TokenとGrantor Tokenをそれぞれ100枚生成できます。その後、ユーザーは自分が取りたいポジションとは反対のポジションを表すトークンを売却します(マーケットメイキングが目的であれば両方売却することも考えられます)。

取り消し

オプション契約のポジションを取り消したい場合は、Option TokenとGrantor Tokenの両方をバーンすることでContract Size相当分の担保を回収できます。損益を確定したいが取引相手が見つからない時などに使えます。

満期

オプション契約が満期を迎えたとき、Grantor Tokenの保有者はトークンをバーンすることでロックされた担保を引き出すことができます。Collateral Covenantにより、担保はオプションの権利失効後まで引き出せません。バーンするトークンの枚数に応じたContract Size分の担保をCollateral Covenantから引き出せます。

権利行使

Option Tokenの保有者が権利を行使したい場合、トークンをバーンしてSettlement CovenantにStrike Priceを支払えば、Contract Size分の担保を受け取ることができます。このコベナンツは、Grantor Tokenの所有者がグランティーによる行使時の支払いを受け取るためのものです。

決済の申請

Grantor Tokenの所有者はトークンをバーンすることで、Settlement Covenantからオプションを行使したユーザーが支払ったSettlement Assetを受け取ることができます。

オプション取引のホワイトペーパーを読む

技術詳細に関心がある方はSanket Kanjalkar氏、Andrew Poelstra氏、そして私が執筆、リリースしたホワイトペーパー"Non-Custodial Options using Elements"をご覧ください。LiquidコミュニティのTelegramでは、質問やフィードバックを常に受け付けています。

今回紹介した仕組みを利用して、皆様がご自身でLiquid上のオプション契約を作成するためのリファレンス実装を数週間後に公開する予定です。Liquidの新たなユースケースを作る上で、本記事が刺激になれば幸いです。


[1]L-BTCのコールオプションの場合、Collateral AssetはL-BTCとなり、L-BTCのプットオプションの場合、Collateral AssetはL-USDとなります。両者は市場では別々の機能を果たしますが、技術的には同等のものです。

If you have specific preferences, please, mark the topic(s) you would like to read: