NFT make revenue_split integer from double
This commit is contained in:
parent
5783648cfb
commit
1e1f109e7e
10 changed files with 19 additions and 21 deletions
|
|
@ -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;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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) ) }
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue