NFT make revenue_split integer from double

This commit is contained in:
sierra19XX 2020-08-07 15:24:35 +00:00
parent 5783648cfb
commit 1e1f109e7e
10 changed files with 19 additions and 21 deletions

View file

@ -804,8 +804,6 @@ uint32_t database::get_gpos_current_subperiod()
const auto now = this->head_block_time(); const auto now = this->head_block_time();
auto seconds_since_period_start = now.sec_since_epoch() - period_start.sec_since_epoch(); auto seconds_since_period_start = now.sec_since_epoch() - period_start.sec_since_epoch();
FC_ASSERT(period_start <= now && now <= period_end);
// get in what sub period we are // get in what sub period we are
uint32_t current_subperiod = 0; uint32_t current_subperiod = 0;
std::list<uint32_t> period_list(number_of_subperiods); std::list<uint32_t> period_list(number_of_subperiods);
@ -927,8 +925,8 @@ void rolling_period_start(database& db)
if(now.sec_since_epoch() >= (period_start + vesting_period)) if(now.sec_since_epoch() >= (period_start + vesting_period))
{ {
// roll // roll
db.modify(db.get_global_properties(), [now](global_property_object& p) { db.modify(db.get_global_properties(), [period_start, vesting_period](global_property_object& p) {
p.parameters.extensions.value.gpos_period_start = now.sec_since_epoch(); p.parameters.extensions.value.gpos_period_start = period_start + vesting_period;
}); });
} }
} }

View file

@ -1,4 +1,4 @@
// RBAC HARDFORK Wednesday, 20-May-20 00:00:00 UTC // NFT HARDFORK Wednesday, 20-May-20 00:00:00 UTC
#ifndef HARDFORK_NFT_TIME #ifndef HARDFORK_NFT_TIME
#define HARDFORK_NFT_TIME (fc::time_point_sec( 1589932800 )) #define HARDFORK_NFT_TIME (fc::time_point_sec( 1589932800 ))
#endif #endif

View file

@ -17,7 +17,7 @@ namespace graphene { namespace chain {
std::string symbol; std::string symbol;
std::string base_uri; std::string base_uri;
optional<account_id_type> revenue_partner; optional<account_id_type> revenue_partner;
optional<double> revenue_split; optional<uint16_t> revenue_split;
bool is_transferable = false; bool is_transferable = false;
bool is_sellable = true; bool is_sellable = true;
}; };

View file

@ -18,7 +18,7 @@ namespace graphene { namespace chain {
std::string symbol; std::string symbol;
std::string base_uri; std::string base_uri;
optional<account_id_type> revenue_partner; optional<account_id_type> revenue_partner;
optional<double> revenue_split; optional<uint16_t> revenue_split;
bool is_transferable = false; bool is_transferable = false;
bool is_sellable = true; bool is_sellable = true;
@ -38,7 +38,7 @@ namespace graphene { namespace chain {
optional<std::string> symbol; optional<std::string> symbol;
optional<std::string> base_uri; optional<std::string> base_uri;
optional<account_id_type> revenue_partner; optional<account_id_type> revenue_partner;
optional<double> revenue_split; optional<uint16_t> revenue_split;
optional<bool> is_transferable; optional<bool> is_transferable;
optional<bool> is_sellable; optional<bool> is_sellable;

View file

@ -16,7 +16,7 @@ void_result nft_metadata_create_evaluator::do_evaluate( const nft_metadata_creat
FC_ASSERT((op.revenue_partner && op.revenue_split) || (!op.revenue_partner && !op.revenue_split), "NFT revenue partner info invalid"); FC_ASSERT((op.revenue_partner && op.revenue_split) || (!op.revenue_partner && !op.revenue_split), "NFT revenue partner info invalid");
if (op.revenue_partner) { if (op.revenue_partner) {
(*op.revenue_partner)(db()); (*op.revenue_partner)(db());
FC_ASSERT(*op.revenue_split >= 0.0 && *op.revenue_split <= 1.0, "Revenue split percent invalid"); FC_ASSERT(*op.revenue_split >= GRAPHENE_1_PERCENT && *op.revenue_split <= GRAPHENE_100_PERCENT, "Revenue split percent invalid");
} }
return void_result(); return void_result();
} FC_CAPTURE_AND_RETHROW( (op) ) } } FC_CAPTURE_AND_RETHROW( (op) ) }
@ -55,7 +55,7 @@ void_result nft_metadata_update_evaluator::do_evaluate( const nft_metadata_updat
FC_ASSERT((op.revenue_partner && op.revenue_split) || (!op.revenue_partner && !op.revenue_split), "NFT revenue partner info invalid"); FC_ASSERT((op.revenue_partner && op.revenue_split) || (!op.revenue_partner && !op.revenue_split), "NFT revenue partner info invalid");
if (op.revenue_partner) { if (op.revenue_partner) {
(*op.revenue_partner)(db()); (*op.revenue_partner)(db());
FC_ASSERT(*op.revenue_split >= 0.0 && *op.revenue_split <= 1.0, "Revenue split percent invalid"); FC_ASSERT(*op.revenue_split >= GRAPHENE_1_PERCENT && *op.revenue_split <= GRAPHENE_100_PERCENT, "Revenue split percent invalid");
} }
return void_result(); return void_result();
} FC_CAPTURE_AND_RETHROW( (op) ) } } FC_CAPTURE_AND_RETHROW( (op) ) }

View file

@ -246,11 +246,11 @@ namespace graphene
{ {
const auto &nft_obj = item(d); const auto &nft_obj = item(d);
const auto &nft_meta_obj = nft_obj.nft_metadata_id(d); const auto &nft_meta_obj = nft_obj.nft_metadata_id(d);
if (nft_meta_obj.revenue_partner && *nft_meta_obj.revenue_split > 0.0) if (nft_meta_obj.revenue_partner && *nft_meta_obj.revenue_split > 0)
{ {
const auto &rev_partner = *nft_meta_obj.revenue_partner; const auto &rev_partner = *nft_meta_obj.revenue_partner;
const auto &rev_split = *nft_meta_obj.revenue_split; const auto &rev_split = *nft_meta_obj.revenue_split;
int64_t item_fee = static_cast<int64_t>((rev_split * (*offer.bid_price).amount.value) / offer.item_ids.size()); int64_t item_fee = static_cast<int64_t>((rev_split * (*offer.bid_price).amount.value / GRAPHENE_100_PERCENT) / offer.item_ids.size());
const auto &fee_asset = asset(item_fee, (*offer.bid_price).asset_id); const auto &fee_asset = asset(item_fee, (*offer.bid_price).asset_id);
auto ret_val = fee_map.insert({rev_partner, fee_asset}); auto ret_val = fee_map.insert({rev_partner, fee_asset});
if (ret_val.second == false) if (ret_val.second == false)

View file

@ -1947,7 +1947,7 @@ class wallet_api
string symbol, string symbol,
string base_uri, string base_uri,
optional<string> revenue_partner, optional<string> revenue_partner,
optional<double> revenue_split, optional<uint16_t> revenue_split,
bool is_transferable, bool is_transferable,
bool is_sellable, bool is_sellable,
bool broadcast); bool broadcast);
@ -1972,7 +1972,7 @@ class wallet_api
optional<string> symbol, optional<string> symbol,
optional<string> base_uri, optional<string> base_uri,
optional<string> revenue_partner, optional<string> revenue_partner,
optional<double> revenue_split, optional<uint16_t> revenue_split,
optional<bool> is_transferable, optional<bool> is_transferable,
optional<bool> is_sellable, optional<bool> is_sellable,
bool broadcast); bool broadcast);

View file

@ -6372,7 +6372,7 @@ signed_transaction wallet_api::nft_metadata_create(string owner_account_id_or_na
string symbol, string symbol,
string base_uri, string base_uri,
optional<string> revenue_partner, optional<string> revenue_partner,
optional<double> revenue_split, optional<uint16_t> revenue_split,
bool is_transferable, bool is_transferable,
bool is_sellable, bool is_sellable,
bool broadcast) bool broadcast)
@ -6388,7 +6388,7 @@ signed_transaction wallet_api::nft_metadata_create(string owner_account_id_or_na
{ {
account_object partner_account = my->get_account(*revenue_partner); account_object partner_account = my->get_account(*revenue_partner);
op.revenue_partner = partner_account.id; op.revenue_partner = partner_account.id;
double rev_split = 0.0; uint16_t rev_split = 0;
if( revenue_split ) if( revenue_split )
{ {
rev_split = *revenue_split; rev_split = *revenue_split;
@ -6412,7 +6412,7 @@ signed_transaction wallet_api::nft_metadata_update(string owner_account_id_or_na
optional<string> symbol, optional<string> symbol,
optional<string> base_uri, optional<string> base_uri,
optional<string> revenue_partner, optional<string> revenue_partner,
optional<double> revenue_split, optional<uint16_t> revenue_split,
optional<bool> is_transferable, optional<bool> is_transferable,
optional<bool> is_sellable, optional<bool> is_sellable,
bool broadcast) bool broadcast)
@ -6429,7 +6429,7 @@ signed_transaction wallet_api::nft_metadata_update(string owner_account_id_or_na
{ {
account_object partner_account = my->get_account(*revenue_partner); account_object partner_account = my->get_account(*revenue_partner);
op.revenue_partner = partner_account.id; op.revenue_partner = partner_account.id;
double rev_split = 0.0; uint16_t rev_split = 0;
if( revenue_split ) if( revenue_split )
{ {
rev_split = *revenue_split; rev_split = *revenue_split;

View file

@ -630,6 +630,7 @@ BOOST_AUTO_TEST_CASE( voting )
generate_blocks( HARDFORK_GPOS_TIME ); generate_blocks( HARDFORK_GPOS_TIME );
generate_block(); generate_block();
auto now = HARDFORK_GPOS_TIME;
const auto& core = asset_id_type()(db); const auto& core = asset_id_type()(db);
// send some asset to alice and bob // send some asset to alice and bob
@ -651,7 +652,6 @@ BOOST_AUTO_TEST_CASE( voting )
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_period_start(), HARDFORK_GPOS_TIME.sec_since_epoch()); BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_period_start(), HARDFORK_GPOS_TIME.sec_since_epoch());
// update default gpos for test speed // update default gpos for test speed
auto now = db.head_block_time();
// 5184000 = 60x60x24x60 = 60 days // 5184000 = 60x60x24x60 = 60 days
// 864000 = 60x60x24x10 = 10 days // 864000 = 60x60x24x10 = 10 days
update_gpos_global(5184000, 864000, now); update_gpos_global(5184000, 864000, now);
@ -754,7 +754,7 @@ BOOST_AUTO_TEST_CASE( voting )
advance_x_maint(5); advance_x_maint(5);
// a new GPOS period is in but vote from user is before the start. Whoever votes in 6th sub-period, votes will carry // a new GPOS period is in but vote from user is before the start. Whoever votes in 6th sub-period, votes will carry
now = db.head_block_time(); now = db.head_block_time();
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_period_start(), now.sec_since_epoch()); BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_period_start(), HARDFORK_GPOS_TIME.sec_since_epoch() + db.get_global_properties().parameters.gpos_period());
generate_block(); generate_block();

View file

@ -34,7 +34,7 @@ BOOST_AUTO_TEST_CASE(nft_metadata_create_test)
op.symbol = "NFT"; op.symbol = "NFT";
op.base_uri = "http://nft.example.com"; op.base_uri = "http://nft.example.com";
op.revenue_partner = mdowner_id; op.revenue_partner = mdowner_id;
op.revenue_split = 0.1; op.revenue_split = 1000;
trx.operations.push_back(op); trx.operations.push_back(op);
sign(trx, mdowner_private_key); sign(trx, mdowner_private_key);