5#include <eosio/asset.hpp>
7#include "../consts.hpp"
42 real_type E = -R * (ONE - pow(ONE + T / C, F));
43 int64_t issued = int64_t(E);
48 return asset(issued,
supply.symbol);
52 eosio::check(in.symbol ==
supply.symbol,
"unexpected asset symbol input");
66 real_type T = C * (std::pow(ONE + E / R, F) - ONE);
67 int64_t out = int64_t(T);
69 supply.amount -= in.amount;
72 return asset(out, c.
balance.symbol);
75 asset
convert(asset from,
const symbol &to) {
76 auto sell_symbol = from.symbol;
77 auto ex_symbol =
supply.symbol;
78 auto base_symbol = base.
balance.symbol;
79 auto quote_symbol = quote.
balance.symbol;
86 if (sell_symbol != ex_symbol) {
87 if (sell_symbol == base_symbol) {
88 from = convert_to_exchange(base, from);
89 }
else if (sell_symbol == quote_symbol) {
90 from = convert_to_exchange(quote, from);
92 eosio::check(
false,
"invalid sell");
95 if (to == base_symbol) {
96 from = convert_from_exchange(base, from);
97 }
else if (to == quote_symbol) {
98 from = convert_from_exchange(quote, from);
100 eosio::check(
false,
"invalid conversion");
104 if (to != from.symbol)
105 return convert(from, to);
120 ram_price.amount = (ram_price.amount * 200 + 199) / 199;
static constexpr eosio::symbol _ramcore_symbol
Definition: consts.hpp:218
static constexpr eosio::name _system
Definition: consts.hpp:158
static constexpr eosio::symbol RAM_symbol
Definition: consts.hpp:217
static constexpr eosio::symbol _root_symbol
Definition: consts.hpp:208
contract
Definition: eosio.msig_tests.cpp:977
balance
Definition: eosio.token_tests.cpp:226
supply
Definition: eosio.token_tests.cpp:150
Definition: eosio.msig.hpp:34
Definition: rammarket.hpp:9
eosio::multi_index<"rammarket"_n, exchange_state > rammarket
Definition: rammarket.hpp:113
double real_type
Definition: rammarket.hpp:13
eosio::asset determine_ram_price(uint32_t bytes)
Definition: rammarket.hpp:115
Definition: rammarket.hpp:23
double weight
Definition: rammarket.hpp:25
asset balance
Definition: rammarket.hpp:24
Definition: rammarket.hpp:20
uint64_t primary_key() const
Definition: rammarket.hpp:33
connector quote
Definition: rammarket.hpp:31
asset supply
Definition: rammarket.hpp:21
connector base
Definition: rammarket.hpp:30
asset convert_to_exchange(connector &c, asset in)
Definition: rammarket.hpp:35
asset convert(asset from, const symbol &to)
Definition: rammarket.hpp:75
asset convert_from_exchange(connector &c, asset in)
Definition: rammarket.hpp:51