Sha256: 0c952ae87244b213c4890741da3a612cd6facc5084aca726f97b23906902f393

Contents?: true

Size: 849 Bytes

Versions: 1

Compression:

Stored size: 849 Bytes

Contents

require "bancor/version"

module Bancor
  class Protocol
    attr_reader :total_supply, :reserved_token, :price

    def initialize(eth:, rate:, crr:)
      @total_supply = eth * rate
      @reserved_token = @total_supply * crr
      @price = @reserved_token / (@total_supply * crr)
      @crr = crr
    end

    def buy(quantity)
      token = @total_supply * (((1 + (quantity / @reserved_token)) ** @crr) - 1)
      @reserved_token = @reserved_token + quantity
      @total_supply = @total_supply + token
      @price = @reserved_token / (@total_supply * @crr)
    end

    def sell(quantity)
      token = @reserved_token * (1 - ((1 - (quantity / @total_supply)) ** (1/@crr)))
      @reserved_token = @reserved_token - token
      @total_supply = @total_supply - quantity
      @price = @reserved_token / (@total_supply * @crr)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bancor-0.1.1 lib/bancor.rb