Skip to content

Commit 72d1ba0

Browse files
committed
Apply deterministic virtual_op numbering rule
bitshares/bitshares-core#1675
1 parent e9674a0 commit 72d1ba0

File tree

4 files changed

+13
-3
lines changed

4 files changed

+13
-3
lines changed

libraries/chain/db_block.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,12 @@ void database::_apply_block( const signed_block& next_block )
552552
const auto& dynamic_global_props = get_dynamic_global_properties();
553553
bool maint_needed = (dynamic_global_props.next_maintenance_time <= next_block.timestamp);
554554

555+
// trx_in_block starts from 0.
556+
// For real operations which are explicitly included in a transaction, op_in_trx starts from 0, virtual_op is 0.
557+
// For virtual operations that are derived directly from a real operation,
558+
// use the real operation's (block_num,trx_in_block,op_in_trx), virtual_op starts from 1.
559+
// For virtual operations created after processed all transactions,
560+
// trx_in_block = the_block.trsanctions.size(), op_in_trx is 0, virtual_op starts from 0.
555561
_current_block_num = next_block_num;
556562
_current_trx_in_block = 0;
557563

@@ -569,6 +575,9 @@ void database::_apply_block( const signed_block& next_block )
569575
++_current_trx_in_block;
570576
}
571577

578+
_current_op_in_trx = 0;
579+
_current_virtual_op = 0;
580+
572581
const uint32_t missed = update_witness_missed_blocks( next_block );
573582
update_global_dynamic_data( next_block, missed );
574583
update_signing_witness(signing_witness, next_block);
@@ -671,6 +680,7 @@ processed_transaction database::_apply_transaction(const signed_transaction& trx
671680
_current_op_in_trx = 0;
672681
for( const auto& op : ptrx.operations )
673682
{
683+
_current_virtual_op = 0;
674684
eval_state.operation_results.emplace_back(apply_operation(eval_state, op));
675685
++_current_op_in_trx;
676686
}

libraries/chain/include/graphene/chain/config.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@
121121
#define GRAPHENE_RECENTLY_MISSED_COUNT_INCREMENT 4
122122
#define GRAPHENE_RECENTLY_MISSED_COUNT_DECREMENT 3
123123

124-
#define GRAPHENE_CURRENT_DB_VERSION "20190219"
124+
#define GRAPHENE_CURRENT_DB_VERSION "20190324"
125125

126126
#define GRAPHENE_IRREVERSIBLE_THRESHOLD (70 * GRAPHENE_1_PERCENT)
127127

libraries/chain/include/graphene/chain/database.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ namespace graphene { namespace chain {
534534
uint32_t _current_block_num = 0;
535535
uint16_t _current_trx_in_block = 0;
536536
uint16_t _current_op_in_trx = 0;
537-
uint16_t _current_virtual_op = 0;
537+
uint32_t _current_virtual_op = 0;
538538

539539
vector<uint64_t> _vote_tally_buffer;
540540
vector<uint64_t> _witness_count_histogram_buffer;

libraries/chain/include/graphene/chain/operation_history_object.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ namespace graphene { namespace chain {
6161
/** the operation within the transaction */
6262
uint16_t op_in_trx = 0;
6363
/** any virtual operations implied by operation in block */
64-
uint16_t virtual_op = 0;
64+
uint32_t virtual_op = 0;
6565
};
6666

6767
/**

0 commit comments

Comments
 (0)