未验证 提交 ac0dda7f 编写于 作者: D Daniel Larimer 提交者: GitHub

Merge pull request #3103 from EOSIO/2889-remove-eosio.token-parms

Remove can_freeze,recall,whitelist from eosio.token
......@@ -14,10 +14,7 @@
"base": "",
"fields": [
{"name":"issuer", "type":"account_name"},
{"name":"maximum_supply", "type":"asset"},
{"name":"can_freeze", "type":"uint8"},
{"name":"can_recall", "type":"uint8"},
{"name":"can_whitelist", "type":"uint8"}
{"name":"maximum_supply", "type":"asset"}
]
},{
"name": "issue",
......@@ -31,9 +28,7 @@
"name": "account",
"base": "",
"fields": [
{"name":"balance", "type":"asset"},
{"name":"frozen", "type":"uint8"},
{"name":"whitelist", "type":"uint8"}
{"name":"balance", "type":"asset"}
]
},{
"name": "currency_stats",
......@@ -41,12 +36,7 @@
"fields": [
{"name":"supply", "type":"asset"},
{"name":"max_supply", "type":"asset"},
{"name":"issuer", "type":"account_name"},
{"name":"can_freeze", "type":"uint8"},
{"name":"can_recall", "type":"uint8"},
{"name":"can_whitelist", "type":"uint8"},
{"name":"is_frozen", "type":"uint8"},
{"name":"enforce_whitelist", "type":"uint8"}
{"name":"issuer", "type":"account_name"}
]
}
],
......
......@@ -8,10 +8,7 @@
namespace eosio {
void token::create( account_name issuer,
asset maximum_supply,
uint8_t issuer_can_freeze,
uint8_t issuer_can_recall,
uint8_t issuer_can_whitelist )
asset maximum_supply )
{
require_auth( _self );
......@@ -28,9 +25,6 @@ void token::create( account_name issuer,
s.supply.symbol = maximum_supply.symbol;
s.max_supply = maximum_supply;
s.issuer = issuer;
s.can_freeze = issuer_can_freeze;
s.can_recall = issuer_can_recall;
s.can_whitelist = issuer_can_whitelist;
});
}
......@@ -94,15 +88,6 @@ void token::sub_balance( account_name owner, asset value, const currency_stats&
const auto& from = from_acnts.get( value.symbol.name() );
eosio_assert( from.balance.amount >= value.amount, "overdrawn balance" );
if( has_auth( owner ) ) {
eosio_assert( !st.can_freeze || !from.frozen, "account is frozen by issuer" );
eosio_assert( !st.can_freeze || !st.is_frozen, "all transfers are frozen by issuer" );
eosio_assert( !st.enforce_whitelist || from.whitelist, "account is not white listed" );
} else if( has_auth( st.issuer ) ) {
eosio_assert( st.can_recall, "issuer may not recall token" );
} else {
eosio_assert( false, "insufficient authority" );
}
if( from.balance.amount == value.amount ) {
from_acnts.erase( from );
......@@ -118,12 +103,10 @@ void token::add_balance( account_name owner, asset value, const currency_stats&
accounts to_acnts( _self, owner );
auto to = to_acnts.find( value.symbol.name() );
if( to == to_acnts.end() ) {
eosio_assert( !st.enforce_whitelist, "can only transfer to white listed accounts" );
to_acnts.emplace( ram_payer, [&]( auto& a ){
a.balance = value;
});
} else {
eosio_assert( !st.enforce_whitelist || to->whitelist, "receiver requires whitelist by issuer" );
to_acnts.modify( to, 0, [&]( auto& a ) {
a.balance += value;
});
......
......@@ -22,11 +22,7 @@ namespace eosio {
token( account_name self ):contract(self){}
void create( account_name issuer,
asset maximum_supply,
uint8_t issuer_can_freeze,
uint8_t issuer_can_recall,
uint8_t issuer_can_whitelist );
asset maximum_supply);
void issue( account_name to, asset quantity, string memo );
......@@ -46,8 +42,6 @@ namespace eosio {
private:
struct account {
asset balance;
bool frozen = false;
bool whitelist = true;
uint64_t primary_key()const { return balance.symbol.name(); }
};
......@@ -56,11 +50,6 @@ namespace eosio {
asset supply;
asset max_supply;
account_name issuer;
bool can_freeze = true;
bool can_recall = true;
bool can_whitelist = true;
bool is_frozen = false;
bool enforce_whitelist = false;
uint64_t primary_key()const { return supply.symbol.name(); }
};
......
......@@ -153,7 +153,7 @@ struct txn_test_gen_plugin_impl {
act.account = N(eosio.token);
act.name = N(create);
act.authorization = vector<permission_level>{{newaccountC,config::active_name}};
act.data = eosio_token_serializer.variant_to_binary("create", fc::json::from_string("{\"issuer\":\"eosio.token\",\"maximum_supply\":\"1000000000.0000 CUR\", \"can_freeze\":0, \"can_recall\":0, \"can_whitelist\":0}}"));
act.data = eosio_token_serializer.variant_to_binary("create", fc::json::from_string("{\"issuer\":\"eosio.token\",\"maximum_supply\":\"1000000000.0000 CUR\"}}"));
trx.actions.push_back(act);
}
{
......
......@@ -96,10 +96,7 @@ public:
void create_currency( name contract, name manager, asset maxsupply, const private_key_type* signer = nullptr ) {
auto act = mutable_variant_object()
("issuer", manager )
("maximum_supply", maxsupply )
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0);
("maximum_supply", maxsupply );
base_tester::push_action(contract, N(create), contract, act );
}
......
......@@ -122,9 +122,6 @@ BOOST_AUTO_TEST_CASE( link_delay_direct_test ) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", eosio_token)
("maximum_supply", "9000000.0000 CUR")
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
......@@ -281,9 +278,6 @@ BOOST_AUTO_TEST_CASE(delete_auth_test) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", "eosio.token" )
("maximum_supply", "9000000.0000 CUR" )
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
// issue to account "eosio.token"
......@@ -404,9 +398,6 @@ BOOST_AUTO_TEST_CASE( link_delay_direct_parent_permission_test ) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", eosio_token)
("maximum_supply", "9000000.0000 CUR")
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
chain.push_action(N(eosio.token), name("issue"), N(eosio.token), fc::mutable_variant_object()
......@@ -551,9 +542,6 @@ BOOST_AUTO_TEST_CASE( link_delay_direct_walk_parent_permissions_test ) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", eosio_token)
("maximum_supply", "9000000.0000 CUR")
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
chain.push_action(N(eosio.token), name("issue"), N(eosio.token), fc::mutable_variant_object()
......@@ -692,9 +680,6 @@ BOOST_AUTO_TEST_CASE( link_delay_permission_change_test ) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", eosio_token )
("maximum_supply", "9000000.0000 CUR" )
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
chain.push_action(N(eosio.token), name("issue"), N(eosio.token), fc::mutable_variant_object()
......@@ -892,9 +877,6 @@ BOOST_AUTO_TEST_CASE( link_delay_permission_change_with_delay_heirarchy_test ) {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", eosio_token)
("maximum_supply", "9000000.0000 CUR" )
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
chain.push_action(N(eosio.token), name("issue"), N(eosio.token), fc::mutable_variant_object()
......@@ -1092,9 +1074,6 @@ BOOST_AUTO_TEST_CASE( link_delay_link_change_test ) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", eosio_token)
("maximum_supply", "9000000.0000 CUR" )
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
chain.push_action(N(eosio.token), name("issue"), N(eosio.token), fc::mutable_variant_object()
......@@ -1291,9 +1270,6 @@ BOOST_AUTO_TEST_CASE( link_delay_unlink_test ) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", eosio_token )
("maximum_supply", "9000000.0000 CUR" )
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
chain.push_action(N(eosio.token), name("issue"), N(eosio.token), fc::mutable_variant_object()
......@@ -1495,9 +1471,6 @@ BOOST_AUTO_TEST_CASE( link_delay_link_change_heirarchy_test ) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", eosio_token)
("maximum_supply", "9000000.0000 CUR" )
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
chain.push_action(N(eosio.token), name("issue"), N(eosio.token), fc::mutable_variant_object()
......@@ -1664,9 +1637,6 @@ BOOST_AUTO_TEST_CASE( mindelay_test ) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", eosio_token)
("maximum_supply", "9000000.0000 CUR")
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
chain.push_action(N(eosio.token), name("issue"), N(eosio.token), fc::mutable_variant_object()
......@@ -1811,9 +1781,6 @@ BOOST_AUTO_TEST_CASE( canceldelay_test ) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", eosio_token)
("maximum_supply", "9000000.0000 CUR")
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
chain.push_action(N(eosio.token), name("issue"), N(eosio.token), fc::mutable_variant_object()
......@@ -2057,9 +2024,6 @@ BOOST_AUTO_TEST_CASE( canceldelay_test2 ) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", eosio_token)
("maximum_supply", "9000000.0000 CUR")
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
chain.push_action(N(eosio.token), name("issue"), N(eosio.token), fc::mutable_variant_object()
......@@ -2326,9 +2290,6 @@ BOOST_AUTO_TEST_CASE( max_transaction_delay_execute ) { try {
chain.push_action(N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", "eosio.token" )
("maximum_supply", "9000000.0000 CUR" )
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
chain.push_action(N(eosio.token), name("issue"), N(eosio.token), fc::mutable_variant_object()
("to", "tester")
......
......@@ -238,9 +238,6 @@ BOOST_FIXTURE_TEST_CASE( dice_test, dice_tester ) try {
push_action(N(eosio.token), N(create), N(eosio.token), mvo()
("issuer", "eosio.token")
("maximum_supply", "1000000000.0000 EOS")
("can_freeze", "0")
("can_recall", "0")
("can_whitelist", "0")
);
push_action(N(eosio.token), N(issue), N(eosio.token), mvo()
......
......@@ -343,10 +343,7 @@ public:
void create_currency( name contract, name manager, asset maxsupply ) {
auto act = mutable_variant_object()
("issuer", manager )
("maximum_supply", maxsupply )
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0);
("maximum_supply", maxsupply );
base_tester::push_action(contract, N(create), contract, act );
}
......
......@@ -66,17 +66,11 @@ public:
}
action_result create( account_name issuer,
asset maximum_supply,
uint8_t issuer_can_freeze,
uint8_t issuer_can_recall,
uint8_t issuer_can_whitelist ) {
asset maximum_supply ) {
return push_action( N(eosio.token), N(create), mvo()
( "issuer", issuer)
( "maximum_supply", maximum_supply)
( "can_freeze", issuer_can_freeze)
( "can_recall", issuer_can_recall)
( "can_whitelist", issuer_can_whitelist)
);
}
......@@ -107,17 +101,12 @@ BOOST_AUTO_TEST_SUITE(eosio_token_tests)
BOOST_FIXTURE_TEST_CASE( create_tests, eosio_token_tester ) try {
auto token = create( N(alice), asset::from_string("1000.000 TKN"), false, false, false);
auto token = create( N(alice), asset::from_string("1000.000 TKN"));
auto stats = get_stats("3,TKN");
REQUIRE_MATCHING_OBJECT( stats, mvo()
("supply", "0.000 TKN")
("max_supply", "1000.000 TKN")
("issuer", "alice")
("can_freeze",0)
("can_recall",0)
("can_whitelist",0)
("is_frozen",false)
("enforce_whitelist",false)
);
produce_blocks(1);
......@@ -126,53 +115,43 @@ BOOST_FIXTURE_TEST_CASE( create_tests, eosio_token_tester ) try {
BOOST_FIXTURE_TEST_CASE( create_negative_max_supply, eosio_token_tester ) try {
BOOST_REQUIRE_EQUAL( error( "condition: assertion failed: max-supply must be positive" ),
create( N(alice), asset::from_string("-1000.000 TKN"), false, false, false)
create( N(alice), asset::from_string("-1000.000 TKN"))
);
} FC_LOG_AND_RETHROW()
BOOST_FIXTURE_TEST_CASE( symbol_already_exists, eosio_token_tester ) try {
auto token = create( N(alice), asset::from_string("100 TKN"), true, false, false);
auto token = create( N(alice), asset::from_string("100 TKN"));
auto stats = get_stats("0,TKN");
REQUIRE_MATCHING_OBJECT( stats, mvo()
("supply", "0 TKN")
("max_supply", "100 TKN")
("issuer", "alice")
("can_freeze",1)
("can_recall",0)
("can_whitelist",0)
("is_frozen",false)
("enforce_whitelist",false)
("supply", "0 TKN")
("max_supply", "100 TKN")
("issuer", "alice")
);
produce_blocks(1);
BOOST_REQUIRE_EQUAL( error( "condition: assertion failed: token with symbol already exists" ),
create( N(alice), asset::from_string("100 TKN"), true, false, false)
create( N(alice), asset::from_string("100 TKN"))
);
} FC_LOG_AND_RETHROW()
BOOST_FIXTURE_TEST_CASE( create_max_supply, eosio_token_tester ) try {
auto token = create( N(alice), asset::from_string("4611686018427387903 TKN"), true, false, false);
auto token = create( N(alice), asset::from_string("4611686018427387903 TKN"));
auto stats = get_stats("0,TKN");
REQUIRE_MATCHING_OBJECT( stats, mvo()
("supply", "0 TKN")
("max_supply", "4611686018427387903 TKN")
("issuer", "alice")
("can_freeze",1)
("can_recall",0)
("can_whitelist",0)
("is_frozen",false)
("enforce_whitelist",false)
);
produce_blocks(1);
asset max(10, symbol(SY(0, NKT)));
max.amount = 4611686018427387904;
BOOST_CHECK_EXCEPTION( create( N(alice), max, true, false, false) , asset_type_exception, [](const asset_type_exception& e) {
BOOST_CHECK_EXCEPTION( create( N(alice), max) , asset_type_exception, [](const asset_type_exception& e) {
return expect_assert_message(e, "magnitude of asset amount must be less than 2^62");
});
......@@ -181,17 +160,12 @@ BOOST_FIXTURE_TEST_CASE( create_max_supply, eosio_token_tester ) try {
BOOST_FIXTURE_TEST_CASE( create_max_decimals, eosio_token_tester ) try {
auto token = create( N(alice), asset::from_string("1.000000000000000000 TKN"), true, false, false);
auto token = create( N(alice), asset::from_string("1.000000000000000000 TKN"));
auto stats = get_stats("18,TKN");
REQUIRE_MATCHING_OBJECT( stats, mvo()
("supply", "0.000000000000000000 TKN")
("max_supply", "1.000000000000000000 TKN")
("issuer", "alice")
("can_freeze",1)
("can_recall",0)
("can_whitelist",0)
("is_frozen",false)
("enforce_whitelist",false)
);
produce_blocks(1);
......@@ -199,7 +173,7 @@ BOOST_FIXTURE_TEST_CASE( create_max_decimals, eosio_token_tester ) try {
//1.0000000000000000000 => 0x8ac7230489e80000L
max.amount = 0x8ac7230489e80000L;
BOOST_CHECK_EXCEPTION( create( N(alice), max, true, false, false) , asset_type_exception, [](const asset_type_exception& e) {
BOOST_CHECK_EXCEPTION( create( N(alice), max) , asset_type_exception, [](const asset_type_exception& e) {
return expect_assert_message(e, "magnitude of asset amount must be less than 2^62");
});
......@@ -207,7 +181,7 @@ BOOST_FIXTURE_TEST_CASE( create_max_decimals, eosio_token_tester ) try {
BOOST_FIXTURE_TEST_CASE( issue_tests, eosio_token_tester ) try {
auto token = create( N(alice), asset::from_string("1000.000 TKN"), false, false, false);
auto token = create( N(alice), asset::from_string("1000.000 TKN"));
produce_blocks(1);
issue( N(alice), N(alice), asset::from_string("500.000 TKN"), "hola" );
......@@ -217,18 +191,11 @@ BOOST_FIXTURE_TEST_CASE( issue_tests, eosio_token_tester ) try {
("supply", "500.000 TKN")
("max_supply", "1000.000 TKN")
("issuer", "alice")
("can_freeze",0)
("can_recall",0)
("can_whitelist",0)
("is_frozen",false)
("enforce_whitelist",false)
);
auto alice_balance = get_account(N(alice), "3,TKN");
REQUIRE_MATCHING_OBJECT( alice_balance, mvo()
("balance", "500.000 TKN")
("frozen", 0)
("whitelist", 1)
);
BOOST_REQUIRE_EQUAL( error( "condition: assertion failed: quantity exceeds available supply" ),
......@@ -248,7 +215,7 @@ BOOST_FIXTURE_TEST_CASE( issue_tests, eosio_token_tester ) try {
BOOST_FIXTURE_TEST_CASE( transfer_tests, eosio_token_tester ) try {
auto token = create( N(alice), asset::from_string("1000 CERO"), false, false, false);
auto token = create( N(alice), asset::from_string("1000 CERO"));
produce_blocks(1);
issue( N(alice), N(alice), asset::from_string("1000 CERO"), "hola" );
......@@ -258,18 +225,11 @@ BOOST_FIXTURE_TEST_CASE( transfer_tests, eosio_token_tester ) try {
("supply", "1000 CERO")
("max_supply", "1000 CERO")
("issuer", "alice")
("can_freeze",0)
("can_recall",0)
("can_whitelist",0)
("is_frozen",false)
("enforce_whitelist",false)
);
auto alice_balance = get_account(N(alice), "0,CERO");
REQUIRE_MATCHING_OBJECT( alice_balance, mvo()
("balance", "1000 CERO")
("frozen", 0)
("whitelist", 1)
);
transfer( N(alice), N(bob), asset::from_string("300 CERO"), "hola" );
......
......@@ -4,9 +4,6 @@
#include <eosio/chain/abi_serializer.hpp>
#include <eosio/chain/symbol.hpp>
#include <eosio.token/eosio.token.wast.hpp>
#include <eosio.token/eosio.token.abi.hpp>
#include <exchange/exchange.wast.hpp>
#include <exchange/exchange.abi.hpp>
......@@ -78,7 +75,7 @@ class exchange_tester : public TESTER {
}
asset get_balance(const account_name& account) const {
return get_currency_balance(N(eosio.token), symbol(SY(4,CUR)), account);
return get_currency_balance(N(exchange), symbol(SY(4,CUR)), account);
}
exchange_state get_market_state( account_name exchange, symbol sym ) {
......@@ -145,11 +142,6 @@ class exchange_tester : public TESTER {
FC_ASSERT( false, "unable to find loan balance" );
}
void deploy_currency( account_name ac ) {
create_account( ac );
set_code( ac, eosio_token_wast /*currency_wast*/ );
}
void deploy_exchange( account_name ac ) {
create_account( ac );
set_code( ac, exchange_wast );
......@@ -161,7 +153,7 @@ class exchange_tester : public TESTER {
("maximum_supply", maxsupply )
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
("can_whitelist", 0)
);
}
......@@ -236,20 +228,19 @@ class exchange_tester : public TESTER {
create_account( N(trader) );
deploy_exchange( N(exchange) );
deploy_currency( N(eosio.token) );
create_currency( N(eosio.token), N(eosio.token), A(1000000.00 USD) );
create_currency( N(eosio.token), N(eosio.token), A(1000000.00 BTC) );
create_currency( N(exchange), N(exchange), A(1000000.00 USD) );
create_currency( N(exchange), N(exchange), A(1000000.00 BTC) );
issue( N(eosio.token), N(eosio.token), N(dan), A(1000.00 USD) );
issue( N(eosio.token), N(eosio.token), N(dan), A(1000.00 BTC) );
issue( N(exchange), N(exchange), N(dan), A(1000.00 USD) );
issue( N(exchange), N(exchange), N(dan), A(1000.00 BTC) );
deposit( N(exchange), N(dan), extended_asset( A(500.00 USD), N(eosio.token) ) );
deposit( N(exchange), N(dan), extended_asset( A(500.00 BTC), N(eosio.token) ) );
deposit( N(exchange), N(dan), extended_asset( A(500.00 USD), N(exchange) ) );
deposit( N(exchange), N(dan), extended_asset( A(500.00 BTC), N(exchange) ) );
create_exchange( N(exchange), N(dan),
extended_asset( A(400.00 USD), N(eosio.token) ),
extended_asset( A(400.00 BTC), N(eosio.token) ),
extended_asset( A(400.00 USD), N(exchange) ),
extended_asset( A(400.00 BTC), N(exchange) ),
A(10000000.00 EXC) );
produce_block();
......@@ -263,9 +254,9 @@ BOOST_AUTO_TEST_SUITE(exchange_tests)
BOOST_AUTO_TEST_CASE( bootstrap ) try {
auto expected = asset::from_string( "1000000.0000 CUR" );
exchange_tester t;
t.create_currency( N(eosio.token), N(eosio.token), expected );
t.issue( N(eosio.token), N(eosio.token), N(eosio.token), expected );
auto actual = t.get_currency_balance(N(eosio.token), expected.get_symbol(), N(eosio.token));
t.create_currency( N(exchange), N(exchange), expected );
t.issue( N(exchange), N(exchange), N(exchange), expected );
auto actual = t.get_currency_balance(N(exchange), expected.get_symbol(), N(exchange));
BOOST_REQUIRE_EQUAL(expected, actual);
} FC_LOG_AND_RETHROW() /// test_api_bootstrap
......@@ -274,38 +265,38 @@ BOOST_AUTO_TEST_CASE( exchange_create ) try {
auto expected = asset::from_string( "1000000.0000 CUR" );
exchange_tester t;
t.issue( N(eosio.token), N(eosio.token), N(trader), A(2000.00 BTC) );
t.issue( N(eosio.token), N(eosio.token), N(trader), A(2000.00 USD) );
t.issue( N(exchange), N(exchange), N(trader), A(2000.00 BTC) );
t.issue( N(exchange), N(exchange), N(trader), A(2000.00 USD) );
t.deposit( N(exchange), N(trader), extended_asset( A(1500.00 USD), N(eosio.token) ) );
t.deposit( N(exchange), N(trader), extended_asset( A(1500.00 BTC), N(eosio.token) ) );
t.deposit( N(exchange), N(trader), extended_asset( A(1500.00 USD), N(exchange) ) );
t.deposit( N(exchange), N(trader), extended_asset( A(1500.00 BTC), N(exchange) ) );
auto trader_ex_usd = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"USD"), N(trader) );
auto trader_ex_btc = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"BTC"), N(trader) );
auto dan_ex_usd = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"USD"), N(dan) );
auto dan_ex_btc = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"BTC"), N(dan) );
auto trader_ex_usd = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"USD"), N(trader) );
auto trader_ex_btc = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"BTC"), N(trader) );
auto dan_ex_usd = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"USD"), N(dan) );
auto dan_ex_btc = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"BTC"), N(dan) );
auto dan_ex_exc = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"EXC"), N(dan) );
wdump((dan_ex_exc));
auto result = t.trade( N(exchange), N(trader), symbol(2,"EXC"),
extended_asset( A(10.00 BTC), N(eosio.token) ),
extended_asset( A(0.01 USD), N(eosio.token) ) );
extended_asset( A(10.00 BTC), N(exchange) ),
extended_asset( A(0.01 USD), N(exchange) ) );
for( const auto& at : result->action_traces )
ilog( "${s}", ("s",at.console) );
trader_ex_usd = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"USD"), N(trader) );
trader_ex_btc = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"BTC"), N(trader) );
trader_ex_usd = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"USD"), N(trader) );
trader_ex_btc = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"BTC"), N(trader) );
wdump((trader_ex_btc.quantity));
wdump((trader_ex_usd.quantity));
result = t.trade( N(exchange), N(trader), symbol(2,"EXC"),
extended_asset( A(9.75 USD), N(eosio.token) ),
extended_asset( A(0.01 BTC), N(eosio.token) ) );
extended_asset( A(9.75 USD), N(exchange) ),
extended_asset( A(0.01 BTC), N(exchange) ) );
trader_ex_usd = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"USD"), N(trader) );
trader_ex_btc = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"BTC"), N(trader) );
trader_ex_usd = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"USD"), N(trader) );
trader_ex_btc = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"BTC"), N(trader) );
for( const auto& at : result->action_traces )
ilog( "${s}", ("s",at.console) );
......@@ -326,19 +317,19 @@ BOOST_AUTO_TEST_CASE( exchange_lend ) try {
exchange_tester t;
t.create_account( N(lender) );
t.issue( N(eosio.token), N(eosio.token), N(lender), A(2000.00 BTC) );
t.issue( N(eosio.token), N(eosio.token), N(lender), A(2000.00 USD) );
t.issue( N(exchange), N(exchange), N(lender), A(2000.00 BTC) );
t.issue( N(exchange), N(exchange), N(lender), A(2000.00 USD) );
t.deposit( N(exchange), N(lender), extended_asset( A(1500.00 USD), N(eosio.token) ) );
t.deposit( N(exchange), N(lender), extended_asset( A(1500.00 BTC), N(eosio.token) ) );
t.deposit( N(exchange), N(lender), extended_asset( A(1500.00 USD), N(exchange) ) );
t.deposit( N(exchange), N(lender), extended_asset( A(1500.00 BTC), N(exchange) ) );
auto lender_ex_usd = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"USD"), N(lender) );
auto lender_ex_btc = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"BTC"), N(lender) );
auto lender_ex_usd = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"USD"), N(lender) );
auto lender_ex_btc = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"BTC"), N(lender) );
t.lend( N(exchange), N(lender), extended_asset( A(1000.00 USD), N(eosio.token) ), symbol(2,"EXC") );
t.lend( N(exchange), N(lender), extended_asset( A(1000.00 USD), N(exchange) ), symbol(2,"EXC") );
lender_ex_usd = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"USD"), N(lender) );
lender_ex_btc = t.get_exchange_balance( N(exchange), N(eosio.token), symbol(2,"BTC"), N(lender) );
lender_ex_usd = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"USD"), N(lender) );
lender_ex_btc = t.get_exchange_balance( N(exchange), N(exchange), symbol(2,"BTC"), N(lender) );
wdump((lender_ex_btc.quantity));
wdump((lender_ex_usd.quantity));
......@@ -351,7 +342,7 @@ BOOST_AUTO_TEST_CASE( exchange_lend ) try {
wdump((t.get_market_state( N(exchange), symbol(2,"EXC") ) ));
t.unlend( N(exchange), N(lender), lentshares, extended_symbol{ symbol(2,"USD"), N(eosio.token)}, symbol(2,"EXC") );
t.unlend( N(exchange), N(lender), lentshares, extended_symbol{ symbol(2,"USD"), N(exchange)}, symbol(2,"EXC") );
lentshares = t.get_lent_shares( N(exchange), symbol(2,"EXC"), N(lender), true );
wdump((lentshares));
......
......@@ -63,9 +63,6 @@ BOOST_AUTO_TEST_CASE( forking ) try {
auto cr = c.push_action( N(eosio.token), N(create), N(eosio.token), mutable_variant_object()
("issuer", "eosio" )
("maximum_supply", "10000000.0000 EOS")
("can_freeze", 0)
("can_recall", 0)
("can_whitelist", 0)
);
wdump((fc::json::to_pretty_string(cr)));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册