示例#1
0
def test_curve():
    curve = PriceSupplyCurve(factor=0.0001, base_price=5)
    assert curve.supply(0) == 0
    assert curve.price(0) == curve.b
    assert curve.supply_at_price(curve.b) == 0, curve.supply_at_price(curve.b)
    assert curve.reserve_at_price(curve.b) == 0
    assert curve.reserve(0) == 0

    supply = 1000000
    price = curve.price(supply)
    assert curve.supply_at_price(price) == supply
    reserve = curve.reserve(supply)
    assert curve.reserve_at_price(price) == reserve
    num = 1000
    value = curve.cost(supply, num)
    assert value > 0
    xassert(num, curve.issued(supply, value))
    num = -1000
    value = curve.cost(supply, num)
    assert value < 0
    assert num == curve.issued(supply, value)
    assert -curve.cost(supply, -1) < curve.cost(supply, 1)  # bid < ask
    mktcap = supply * price
    supply2 = curve.supply_at_mktcap(mktcap)
    assert supply == supply2

    # test mktcap
    p = 100
    s = curve.supply_at_price(p)
    assert curve.price(s) == p
    m = p * s
    assert m == curve.mktcap(s)
    assert curve.supply_at_mktcap(m) == s
示例#2
0
def test_auction_raw():
    curve = PriceSupplyCurve(factor=0.0001, base_price=5)
    auction = Auction(factor=10**5, const=10**3)
    beneficiary = Beneficiary(issuance_fraction=0)
    ct = Mint(curve, beneficiary, auction)
    assert ct._notional_supply == 0

    # buy tokens
    num = 1
    tcost = curve.cost(ct._arithmetic_supply, num)
    cost = ct._sale_cost(num)
    assert cost == tcost
    sold = ct.create(cost)
    assert sold == num and num == ct.token.supply

    # sell tokens
    pcost = ct._purchase_cost(num)
    xassert(pcost, cost)
    received = ct.destroy(num)
    xassert(received, pcost)