diff --git a/libraries/chain/db_management.cpp b/libraries/chain/db_management.cpp index 9abca707..f528b7c9 100644 --- a/libraries/chain/db_management.cpp +++ b/libraries/chain/db_management.cpp @@ -108,18 +108,21 @@ void database::reindex(fc::path data_dir, const genesis_state_type& initial_allo skip_transaction_dupe_check | skip_tapos_check | skip_witness_schedule_check | - skip_authority_check); + skip_authority_check | + skip_btc_tx_sending); else apply_block(*block, skip_witness_signature | skip_transaction_signatures | skip_transaction_dupe_check | skip_tapos_check | skip_witness_schedule_check | - skip_authority_check); + skip_authority_check | + skip_btc_tx_sending); } if (!_slow_replays) _undo_db.enable(); auto end = fc::time_point::now(); + restore_bitcoin_transaction_status(); ilog( "Done reindexing, elapsed time: ${t} sec", ("t",double((end-start).count())/1000000.0 ) ); } FC_CAPTURE_AND_RETHROW( (data_dir) ) } diff --git a/libraries/chain/db_sidechain.cpp b/libraries/chain/db_sidechain.cpp index 52083a6b..c7446b9f 100644 --- a/libraries/chain/db_sidechain.cpp +++ b/libraries/chain/db_sidechain.cpp @@ -378,4 +378,17 @@ fc::optional database::create_bitcoin_revert_proposals( const witness return fc::optional(); } + +void database::restore_bitcoin_transaction_status() +{ + const auto& btc_tx_idx = get_index_type().indices().get(); + for( const auto& bto : btc_tx_idx ) { + std::set valid_vins; + for( const auto& v : bto.transaction.vin ) { + valid_vins.insert( v.prevout.hash ); + } + bitcoin_confirmations.insert( bitcoin_transaction_confirmations( bto.transaction.get_txid(), valid_vins ) ); + } +} + } } \ No newline at end of file diff --git a/libraries/chain/include/graphene/chain/database.hpp b/libraries/chain/include/graphene/chain/database.hpp index 9ef282b7..c9b5c511 100644 --- a/libraries/chain/include/graphene/chain/database.hpp +++ b/libraries/chain/include/graphene/chain/database.hpp @@ -565,6 +565,8 @@ namespace graphene { namespace chain { private: + void restore_bitcoin_transaction_status(); // db_sidechain + vector< processed_transaction > _pending_tx; fork_database _fork_db; diff --git a/libraries/chain/include/graphene/chain/protocol/bitcoin_transaction.hpp b/libraries/chain/include/graphene/chain/protocol/bitcoin_transaction.hpp index a9852c7f..9115f415 100644 --- a/libraries/chain/include/graphene/chain/protocol/bitcoin_transaction.hpp +++ b/libraries/chain/include/graphene/chain/protocol/bitcoin_transaction.hpp @@ -86,7 +86,7 @@ namespace graphene { namespace chain { } } // graphene::chain FC_REFLECT( graphene::chain::bitcoin_transaction_send_operation::fee_parameters_type, (fee)(price_per_kbyte) ) -FC_REFLECT( graphene::chain::bitcoin_transaction_send_operation, (fee)(payer)(vins)(vouts)(transaction)(fee_for_size) ) +FC_REFLECT( graphene::chain::bitcoin_transaction_send_operation, (fee)(payer)(pw_vin)(vins)(vouts)(transaction)(fee_for_size) ) FC_REFLECT( graphene::chain::bitcoin_transaction_sign_operation::fee_parameters_type, (fee)(price_per_kbyte) ) FC_REFLECT( graphene::chain::bitcoin_transaction_sign_operation, (fee)(payer)(proposal_id)(signatures) )