RubyでBancor protocolのシミュレーションをするライブラリ"Bancor"を作っています
GMOペパボ Advent Calendar 2017 - Qiitaの14日目の記事です。
Bancor protocolとは
ペパ研ブログであんちぽさんが書かれているように
Bancorプロトコルは、ある種の「準備金」のような仲介を導入することにより、トークンの流動性と取引価格発見の自動化をもたらすものです。 そのことにより、user-generated currencyと呼べるようなものすら可能にしていきます。 Bancorプロトコルのホワイトペーパーを翻訳しました - ペパボ研究所ブログ
というものです。 文章だけ読んでもなかなかイメージ出来なかったのでRubyで計算できるようにライブラリを作りはじめました。
今作っているgem
今回はBancor protocolの計算式に基いて、売り買いのシミュレーションをするgemを作りはじめました。
以下はirbで実行したログです。こんな感じでpriceを求めることが出来ます。(テストはこれから書く...)
bundle exec irb -r bancor irb(main):001:0> bp = Bancor::Protocol.new(eth: 300000, rate: 1, crr: 0.2) => #<Bancor::Protocol:0x00007fabd8a37510 @total_supply=300000, @reserved_token=60000.0, @price=1.0, @crr=0.2> irb(main):002:0> bp.buy 300 => 1.003998003989035 irb(main):003:0> bp.buy 700 => 1.0133112579155532 irb(main):004:0> bp.sell 1302 => 0.9958916677019946 irb(main):005:0> bp.buy 100 => 0.9972261505575943 irb(main):006:0> bp.total_supply => 299791.7445404769 irb(main):007:0> bp.reserved_token => 59792.033475409095 irb(main):008:0> bp.price => 0.9972261505575943
こちらの記事 qiita.com
と、Bancor protocolのホワイトペーパー日本語訳 github.com
を参考に実装しました。
おわりに
このgemを活用すればRailsでBancor protocolを使ったWebアプリを簡単に作れるかも...!? 引続き開発を進めていきます!計算式間違っているとかあったら教えてください! 明日はpurple-jwlさんです!