mo-fu note

研究からキックボクシングまで何でも書いていきます!

RubyでBancor protocolのシミュレーションをするライブラリ"Bancor"を作っています

GMOペパボ Advent Calendar 2017 - Qiitaの14日目の記事です。

Bancor protocolとは

ペパ研ブログであんちぽさんが書かれているように

Bancorプロトコルは、ある種の「準備金」のような仲介を導入することにより、トークンの流動性と取引価格発見の自動化をもたらすものです。 そのことにより、user-generated currencyと呼べるようなものすら可能にしていきます。 Bancorプロトコルのホワイトペーパーを翻訳しました - ペパボ研究所ブログ

というものです。 文章だけ読んでもなかなかイメージ出来なかったのでRubyで計算できるようにライブラリを作りはじめました。

rand.pepabo.com

今作っているgem

今回はBancor protocolの計算式に基いて、売り買いのシミュレーションをするgemを作りはじめました。

github.com

以下は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さんです!