Added is_max_vouts check for PW before bitcoin transaction creatation

This commit is contained in:
Alexander Suslikov 2019-02-12 12:33:29 +03:00 committed by Anzhy Cherrnyavski
parent a229d0acc4
commit b27656d2c9
6 changed files with 9 additions and 9 deletions

View file

@ -232,10 +232,10 @@
#define SIDECHAIN_SYMBOL "pBTC"
#define SIDECHAIN_PRECISION_DIGITS 8
#define SIDECHAIN_MAX_SHARE_SUPPLY int64_t(21000000ll * 100000000ll)
#define SIDECHAIN_NUMBER_INVALID_KEYS 5
#define SIDECHAIN_NUMBER_INVALID_KEYS 5
#define SIDECHAIN_DEFAULT_NUMBER_SIG_MULTISIG 5
#define SIDECHAIN_DEFAULT_NUMBER_OF_CONFIRMATIONS 6
#define SIDECHAIN_DEFAULT_MAX_UNCONFIRMED_VINS 25
#define SIDECHAIN_DEFAULT_MAX_UNCONFIRMED_VOUTS 25
#define SIDECHAIN_DEFAULT_MAX_CONDENSING_TX_VINS 5
#define SIDECHAIN_DEFAULT_MAX_CONDENSING_TX_VOUTS 5
#define SIDECHAIN_DEFAULT_PERCENT_PAYMENT_TO_WITNESSES (GRAPHENE_1_PERCENT/10)

View file

@ -17,7 +17,7 @@ class primary_wallet_vout_manager
public:
primary_wallet_vout_manager( graphene::chain::database& _db ) : db( _db ) {}
bool is_reach_max_unconfirmaed_vout() const;
bool is_max_vouts() const;
fc::optional< primary_wallet_vout_object > get_latest_unused_vout() const;

View file

@ -7,7 +7,7 @@ namespace sidechain {
struct sidechain_parameters_extension {
uint8_t maximum_condensing_tx_vins = SIDECHAIN_DEFAULT_MAX_CONDENSING_TX_VINS;
uint8_t maximum_condensing_tx_vouts = SIDECHAIN_DEFAULT_MAX_CONDENSING_TX_VOUTS;
uint8_t maxmum_unconfirmed_vins = SIDECHAIN_DEFAULT_MAX_UNCONFIRMED_VINS;
uint8_t maximum_unconfirmed_vouts = SIDECHAIN_DEFAULT_MAX_UNCONFIRMED_VOUTS;
uint16_t percent_payment_to_witnesses = SIDECHAIN_DEFAULT_PERCENT_PAYMENT_TO_WITNESSES;
uint8_t multisig_sigs_num = SIDECHAIN_DEFAULT_NUMBER_SIG_MULTISIG;
uint8_t confirmations_num = SIDECHAIN_DEFAULT_NUMBER_OF_CONFIRMATIONS;
@ -21,7 +21,7 @@ namespace sidechain {
FC_REFLECT( sidechain::sidechain_parameters_extension,
(maximum_condensing_tx_vins)
(maximum_condensing_tx_vouts)
(maxmum_unconfirmed_vins)
(maximum_unconfirmed_vouts)
(percent_payment_to_witnesses)
(multisig_sigs_num)
(confirmations_num)

View file

@ -62,7 +62,7 @@ std::vector<uint64_t> input_withdrawal_info::get_amounts( const std::vector<info
fc::optional<info_for_vin> input_withdrawal_info::get_info_for_pw_vin()
{
fc::optional< primary_wallet_vout_object > vout = db.pw_vout_manager.get_latest_unused_vout();
if( !vout.valid() ) {
if( !vout.valid() || db.pw_vout_manager.is_max_vouts() ) {
return fc::optional<info_for_vin>();
}

View file

@ -6,10 +6,10 @@
namespace sidechain {
bool primary_wallet_vout_manager::is_reach_max_unconfirmaed_vout() const
bool primary_wallet_vout_manager::is_max_vouts() const
{
const auto& PW_vout_idx = db.get_index_type<graphene::chain::primary_wallet_vout_index>().indices().get< graphene::chain::by_id >();
return !( PW_vout_idx.size() < db.get_sidechain_params().maxmum_unconfirmed_vins );
return !( ( PW_vout_idx.size() - 1 ) <= db.get_sidechain_params().maximum_unconfirmed_vouts );
}
fc::optional< primary_wallet_vout_object > primary_wallet_vout_manager::get_latest_unused_vout() const

View file

@ -35,7 +35,7 @@ BOOST_AUTO_TEST_CASE( check_max_pw_vout_objects )
create_primary_wallet_vouts( pw_vout_manager, db, 24 );
BOOST_CHECK( idx.size() == 25 );
BOOST_CHECK( pw_vout_manager.is_reach_max_unconfirmaed_vout() == true );
BOOST_CHECK( pw_vout_manager.is_max_vouts() == true );
}
BOOST_AUTO_TEST_CASE( check_pw_vout_objects_chain )