Automated Price Reserve の導入

Anton Buenavista
Kyber Network
Published in
8 min readJan 23, 2019

Kyberのリザーブネットワークをさらに拡大するために、新たなリザーブタイプであるAutomated Price Reserve(APR)を開発しました。これは主に大量のトークンを保有するトークンチームなどを対象としますが、特にメンテナンスに技術リソースは必要ありません。 この記事では、APRの作成プロセス、その仕様、その背景にある動機、および流動性ネットワークの現状について説明します。

仕組み

Automated Price Reserveは、事前定義されたKyberのスマートコントラクトを使用し、自動で交換レートを提供します。 トークン価格はETHやトークンの在庫とトレード結果に基づいて変更されます。

デプロイ時に初期設定された価格からスタートし、それは最初の取引が開始されるまで変更されません。 ETH価格およびマーケット状況に応じて(たとえば、ユーザーのほとんどが買うのみであったり、ユーザーのほとんどが売るのみである場合)、ETHまたはトークンの在庫をリザーブに補充する必要があります。

以下の図にて、取引が発生したときにトークンの価格がどのように変化するか、およびリザーブに預けられている初期のETHおよびトークン在庫がいかに影響を与えるかを示します。

図1: 関連パラメーターを含む価格関数は、トレード発生時の在庫変化に基づく価格変化を表しています。

Automated Price Reserveを作成するプロセス

APRの作成は簡単な3ステップのプロセスです。 まず、KyberReserve.solとLiquidityConversionRates.sol のスマートコントラクトをブロックチェーンにデプロイする必要があります。 次に、リザーブマネージャが最初のETHとトークン在庫をリザーブコントラクトに格納します。 最後に、リザーブマネージャは、LiquidityConversionRatesコントラクトの関数setLiquidityParams()を呼び出して流動性パラメータを設定します。 その後、リザーブは在庫がなくなるまでマーケットメイクができるようになります。 setLiquidityParams()の呼び出しは、リザーブのデプロイ時に1回、その後はリザーブ内の在庫が補充されるたびに実行する必要があります。

リザーブマネージャが決定するべきものは、APRの初期の流動性パラメータのみです。 具体的には、以下の情報を考慮する必要があります。:

1. 流動性率

2. 初期の Ether量

3. 初期のトークン量

4. 最初のトークン価格

5. 価格決定要素の最大値と最小値

6. 一回のトレード売買量の最大値と最小値

7. 手数料比率

これらの情報は setLiquidityParams() 関数に渡すパラメータを計算するために利用されます。

パラメータの説明

パラメータは以下のようになります。:

function setLiquidityParams(uint _rInFp, uint _pMinInFp, uint _numFpBits, uint _maxCapBuyInWei, uint _maxCapSellInWei, uint _feeInBps, uint _maxTokenToEthRateInPrecision, uint _minTokenToEthRateInPrecision)

パラメータの一覧には、注意する点がいくつかあります。 まず、一部のパラメータには InFp サフィックスが付きます。 InFpは数式の精度を表します。 これは設定可能ですが、2 ^ 40が推奨値です。

r は流動性であり、ETHとトークン在庫が1ETH相当の量で上下するごとに価格変動するベーシスポイント または100の単位となります。r が0.01の場合、価格は1%変化します。 r は、コントラクトに入金された初期ETHとトークンの金額、および希望する最小/最大の価格比を考慮して計算されます。 rが小さいほど、流動性を高めるためにETHとトークンの在庫量が必要になります。

最小値と最大値の比率については、0.5:2.0の比率から始めることをお勧めします。 これは、ETHに対するトークン価格が最大100%の増加または50%の減少に対応するだけの在庫が十分であることを示しています。

以下は 0.00004258 ETH のトークン価格で例示した表です。

セットアップ・ガイド

Automated Price Reserveの導入およびテストに関するより詳細なガイドについては、Kyberのドキュメントページをご覧ください。 ご意見やご質問がある場合は、Kyber Developerテレグラムグループにお問い合わせください。

APR導入の動機

最初のリザーブタイプである Fed Price Reserve により、ネットワークの流動性を高めるための手段を提供しました。保有するトークンによりエコシステムの流動性を高めたい主体は、リザーブを完全にオンチェーンで管理しながら実行可能です。 ただし、Fed Price Reserveの管理は比較的覚えやすいものの、価格情報を提供するためのオフチェーンサーバーやスクリプトの開発、実行、および保守する必要から生じるリソースコストが伴います。

Fed Price Reserve とは異なり、APRは最重要事項としてメンテナンスの簡単さを考慮して設計されています。 APRは完全にオンチェーンで交換レートを計算することができます。 これにより、リザーブマネージャは上記のようなリソースコストを負担する必要がありません。ただし、リザーブマネージャはスマートコントラクトで事前定義されたアルゴリズムに依存しているため、価格設定アルゴリズムを大きく制御できません。 APRのもう1つのトレードオフは、自動化されたマーケットメーキングを実行するために、ETHとトークンの初期在庫が必要であることと、それに伴う財務コストです。 さらに、1つのAPRは1つのトークンしかサポートできません。 別のトークンをサポートする場合は、別のAPRを展開する必要があります。

APRはまた、これまで中央集権型でも分散型の取引所でも困難であった、新しく作成されたトークンの価格発見ができるよう設計されています。 買い手と売り手の相互作用を通じて、ある時点での市場の状況に基づいて推定価格が発見されます。

共用流動性プールの成長

将来的に Automated Price Reserve は、エコシステムに流動性を提供するための選択肢の1つになります。 流動性プロバイダは、より高い柔軟性と管理のために伝統的な Fed Price Reserve を選択するか、あるいは管理の容易さと少ないコストを優先して APR を使用することもできます。

BigBomはAPRを利用した最初のプロジェクトです。 他にも、Midas Protocol、Distributed Credit Chain、Dether、The Abyssなど、他のいくつかのプロジェクトがAPRを展開し、運用およびサポートを続けています。 それを合わせて、ネットワーク内には合計16のリザーブがあります。

今後の流動性プロバイダとの継続的な協力を通じ、エコシステム内の共用流動性プールをさらに拡大することを目指しています。 流動性が増すごとに、異なるインターフェース間でよりシームレスな交換が可能になるため、分散型アプリケーションが普及しやすくなります。 新しい流動性プロバイダが、APRを使用してネットワークの流動性を高めることを楽しみにしています。

Kyber Network について

Kyberのオンチェーン流動性プロトコルを使えば、いかなるアプリケーションにも分散型トークン交換機能を統合させることができます。エコシステム内の全てのプレイヤー間で、シームレスな価値の交換を促進します。このプロトコルを使うことで、開発者は瞬時のトークン交換を実装した、革新的な決済フローとアプリケーションを開発できます。ERC20決済はもちろん、金融DAppsにも活用可能で、あらゆるトークンがどこででも活用可能な世界の構築をサポートします。

Telegram group: https://telegram.me/kyberJapanese
Reddit: https://www.reddit.com/r/kybernetwork/
Twitter: https://twitter.com/kybernetwork_JP/
Website: https://kyber.network/

--

--