nft_lottery3 - revert the db apis
This commit is contained in:
parent
2107f34f09
commit
001a58155a
4 changed files with 9 additions and 9 deletions
|
|
@ -252,7 +252,7 @@ map< account_id_type, vector< uint16_t > > asset_object::distribute_winners_part
|
|||
structurized_participants.emplace( holder, vector< uint16_t >() );
|
||||
}
|
||||
uint64_t jackpot = get_id()( db ).dynamic_data( db ).current_supply.value * lottery_options->ticket_price.amount.value;
|
||||
auto winner_numbers = db.get_winner_numbers( get_id().instance.value, holders.size(), lottery_options->winning_tickets.size() );
|
||||
auto winner_numbers = db.get_winner_numbers( get_id(), holders.size(), lottery_options->winning_tickets.size() );
|
||||
|
||||
auto& tickets( lottery_options->winning_tickets );
|
||||
|
||||
|
|
|
|||
|
|
@ -109,17 +109,17 @@ uint32_t database::last_non_undoable_block_num() const
|
|||
return head_block_num() - _undo_db.size();
|
||||
}
|
||||
|
||||
std::vector<uint32_t> database::get_seeds( uint32_t instance_value, uint8_t count_winners ) const
|
||||
std::vector<uint32_t> database::get_seeds( asset_id_type for_asset, uint8_t count_winners ) const
|
||||
{
|
||||
FC_ASSERT( count_winners <= 64 );
|
||||
std::string salted_string = std::string(_random_number_generator._seed) + std::to_string(instance_value);
|
||||
std::string salted_string = std::string(_random_number_generator._seed) + std::to_string(for_asset.instance.value);
|
||||
uint32_t* seeds = (uint32_t*)(fc::sha256::hash(salted_string)._hash);
|
||||
|
||||
std::vector<uint32_t> result;
|
||||
result.reserve(64);
|
||||
|
||||
for( int s = 0; s < 8; ++s ) {
|
||||
uint32_t* sub_seeds = ( uint32_t* ) fc::sha256::hash( std::to_string( seeds[s] ) + std::to_string( instance_value ) )._hash;
|
||||
uint32_t* sub_seeds = ( uint32_t* ) fc::sha256::hash( std::to_string( seeds[s] ) + std::to_string( for_asset.instance.value ) )._hash;
|
||||
for( int ss = 0; ss < 8; ++ss ) {
|
||||
result.push_back(sub_seeds[ss]);
|
||||
}
|
||||
|
|
@ -127,14 +127,14 @@ std::vector<uint32_t> database::get_seeds( uint32_t instance_value, uint8_t coun
|
|||
return result;
|
||||
}
|
||||
|
||||
const std::vector<uint32_t> database::get_winner_numbers( uint32_t instance_value, uint32_t count_members, uint8_t count_winners ) const
|
||||
const std::vector<uint32_t> database::get_winner_numbers( asset_id_type for_asset, uint32_t count_members, uint8_t count_winners ) const
|
||||
{
|
||||
std::vector<uint32_t> result;
|
||||
if( count_members < count_winners ) count_winners = count_members;
|
||||
if( count_winners == 0 ) return result;
|
||||
result.reserve(count_winners);
|
||||
|
||||
auto seeds = get_seeds(instance_value, count_winners);
|
||||
auto seeds = get_seeds(for_asset, count_winners);
|
||||
|
||||
for (auto current_seed = seeds.begin(); current_seed != seeds.end(); ++current_seed) {
|
||||
uint8_t winner_num = *current_seed % count_members;
|
||||
|
|
|
|||
|
|
@ -279,8 +279,8 @@ namespace graphene { namespace chain {
|
|||
const node_property_object& get_node_properties()const;
|
||||
const fee_schedule& current_fee_schedule()const;
|
||||
const account_statistics_object& get_account_stats_by_owner( account_id_type owner )const;
|
||||
const std::vector<uint32_t> get_winner_numbers( uint32_t instance_value, uint32_t count_members, uint8_t count_winners ) const;
|
||||
std::vector<uint32_t> get_seeds( uint32_t instance_value, uint8_t count_winners )const;
|
||||
const std::vector<uint32_t> get_winner_numbers( asset_id_type for_asset, uint32_t count_members, uint8_t count_winners ) const;
|
||||
std::vector<uint32_t> get_seeds( asset_id_type for_asset, uint8_t count_winners )const;
|
||||
uint64_t get_random_bits( uint64_t bound );
|
||||
const witness_schedule_object& get_witness_schedule_object()const;
|
||||
bool item_locked(const nft_id_type& item)const;
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ namespace graphene
|
|||
structurized_participants.emplace(holder, vector<uint16_t>());
|
||||
}
|
||||
uint64_t jackpot = lottery_data->jackpot.amount.value;
|
||||
auto winner_numbers = db.get_winner_numbers(get_id().instance.value, holders.size(), lottery_options.winning_tickets.size());
|
||||
auto winner_numbers = db.get_winner_numbers(id, holders.size(), lottery_options.winning_tickets.size());
|
||||
|
||||
auto &tickets(lottery_options.winning_tickets);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue