5#include <eosio/asset.hpp>
40 real_type E = -R * (ONE - pow(ONE + T / C, F));
41 int64_t issued = int64_t(E);
46 return asset(issued,
supply.symbol);
50 eosio::check(in.symbol ==
supply.symbol,
"unexpected asset symbol input");
64 real_type T = C * (std::pow(ONE + E / R, F) - ONE);
65 int64_t out = int64_t(T);
67 supply.amount -= in.amount;
70 return asset(out, c.
balance.symbol);
73 asset
convert(asset from,
const symbol &to) {
74 auto sell_symbol = from.symbol;
75 auto ex_symbol =
supply.symbol;
76 auto base_symbol = base.
balance.symbol;
77 auto quote_symbol = quote.
balance.symbol;
84 if (sell_symbol != ex_symbol) {
85 if (sell_symbol == base_symbol) {
86 from = convert_to_exchange(base, from);
87 }
else if (sell_symbol == quote_symbol) {
88 from = convert_to_exchange(quote, from);
90 eosio::check(
false,
"invalid sell");
93 if (to == base_symbol) {
94 from = convert_from_exchange(base, from);
95 }
else if (to == quote_symbol) {
96 from = convert_from_exchange(quote, from);
98 eosio::check(
false,
"invalid conversion");
102 if (to != from.symbol)
103 return convert(from, to);
118 ram_price.amount = (ram_price.amount * 200 + 199) / 199;
static constexpr eosio::symbol _ramcore_symbol
Definition: consts.hpp:219
static constexpr eosio::name _system
Definition: consts.hpp:158
static constexpr eosio::symbol RAM_symbol
Definition: consts.hpp:218
static constexpr eosio::symbol _root_symbol
Definition: consts.hpp:209
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:7
eosio::multi_index<"rammarket"_n, exchange_state > rammarket
Definition: rammarket.hpp:111
double real_type
Definition: rammarket.hpp:11
eosio::asset determine_ram_price(uint32_t bytes)
Definition: rammarket.hpp:113
Definition: rammarket.hpp:21
double weight
Definition: rammarket.hpp:23
asset balance
Definition: rammarket.hpp:22
Definition: rammarket.hpp:18
uint64_t primary_key() const
Definition: rammarket.hpp:31
connector quote
Definition: rammarket.hpp:29
asset supply
Definition: rammarket.hpp:19
connector base
Definition: rammarket.hpp:28
asset convert_to_exchange(connector &c, asset in)
Definition: rammarket.hpp:33
asset convert(asset from, const symbol &to)
Definition: rammarket.hpp:73
asset convert_from_exchange(connector &c, asset in)
Definition: rammarket.hpp:49