Bancorの状態方程式と価格決定方程式
Bancorは対スマートコントラクトでトークンの売買ができる仕組みです。DEXが分散型取引所だとすればBancorは分散型販売所でしょうか。
そんなBancorですが、2日前に盗難事件に遭いました。
この事件を受けてDEXが本当に非中央集権的なのか考えさせられるのは良い流れですね。 onlyOwner のような関数を全て無くせば良いんでしょうけど運用することを考えるとどうしてもそういうことは言えませんね。逆に問題があった時に停止措置が取れなかったとしても世間様からなにか言われることでしょう。
Bancor、盗難後の対応で非中央集権性に疑念浮上 | ビットコインの最新情報 BTCN|ビットコインニュース
ところで、Bancorの中核をなす概念として以下の式があります。
(ちなみにBancorに慣れていない人はこの記事を読むのがオススメです )
この式はトークンの価格が準備金の残高を総発行量にCW(connector weight)という定数をかけた値で決まることを表しています。しかしこの式から直接トークンを売買する時の価格が計算できるかというとそうではありません。なぜならトークンの売買を行うと準備金残高も総発行量も変化してしまうので単純な計算ができないからです。
この式は昔に物理で習った理想気体の状態方程式のようなもので、ある時点で系の状態を観測した時に成り立っているべき関係式を表しています。ではここから売買の時に必要な価格はどうやって計算したら良いかというと、まず簡単のために状態方程式の変数の名前を変えて
と表すことにします。ユーザーが(Supplyの微小変化量)の量だけトークンを買うとすると、ユーザーはだけお金が必要になります。このお金は準備金の増加量に一致するので、
が成り立ちます。ここで状態方程式よりと表せるので、両辺の微小変化量を取ると
となり、先程の式と比べると
つまり、
となり、両辺をCで割ると
となります。ここでとおいて上式を変形していくと、
ここでトークンを買う直前の価格を、総発行量をと置くと
となります。この式はトークンを購入するに従って変化する価格と総発行量の間に常に成り立ってる関係式です。
この式から、トークンを新たにだけ購入するのに必要な金額は、
となり、この積分を計算すると、
となることがわかります。これを逆に解けば金額を払った時に購入できるトークンの量を計算することもできますね。
以上の議論はFormulas for Bancor systemという論文に載っているので気になる人はチェックしてみてください。