go-ethereum/core
Pratik Patil c59bb6ef16
Added unit tests for MV HashMap (#492)
* Create MVHashMap and use it StateDB

* Parallel state processor

* Move fee burning and tipping out of state transition to reduce read/write dependencies between transactions

* Re-execute parallel tasks when there is a read in coinbase or burn address

* Block-stm optimization

Added tests for executor and two major improvements:

1. Add a dependency map during execution. This will prevent aborted tasks from being sent for execution immedaitely after failure.
2. Change the key of MVHashMap from string to a byte array. This will reduce time to convert byte slices to strings.

* Remove cache from executor test

* added mvhashmap unit tests (with  as key)

* Shard mvhashmap to reduce the time spent in global mutex

* Skip applying intermediate states

* Dependency improvement

* added test for status

* Create MVHashMap and use it StateDB

* Parallel state processor

* Move fee burning and tipping out of state transition to reduce read/write dependencies between transactions

* Re-execute parallel tasks when there is a read in coinbase or burn address

* Txn prioritizer implemented using mutex map (#487)

* basic txn prioritizer implemented using mutex map

* Re-execute parallel tasks when there is a read in coinbase or burn address

* Re-execute parallel tasks when there is a read in coinbase or burn address

* using *sync.RWMutex{} in mutexMap

Co-authored-by: Jerry <jerrycgh@gmail.com>

* added getReadMap and getWriteMap (#473)

* Block-stm optimization

Added tests for executor and some improvements:

1. Add a dependency map during execution. This will prevent aborted tasks from being sent for execution immedaitely after failure.
2. Change the key of MVHashMap from string to a byte array. This will reduce time to convert byte slices to strings.
3. Use sync.Map to reduce the time spent in global mutex.
4. Skip applying intermediate states.
5. Estimate dependency when an execution fails without dependency information.
6. Divide execution task queue into two separate queues. One for relatively certain transactions, and the other for speculative future transactions.
7. Setting dependencies of Txs coming from the same sender before starting parallel execution.
8. Process results in their semantic order (transaction index) instead of the order when they arrive. Replace result channel with a priority queue.

* Do not write entire objects directly when applying write set in blockstm

* fixed a small bug in the Report function (#530)

* linters

Co-authored-by: Jerry <jerrycgh@gmail.com>
2022-10-07 09:14:18 +05:30
..
allocs fix typo 2021-09-23 10:56:17 +05:30
asm V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
beacon V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
blockstm Added unit tests for MV HashMap (#492) 2022-10-07 09:14:18 +05:30
bloombits all: fix some go-critic linter warnings (#23709) 2021-10-13 17:31:02 +02:00
forkid V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
rawdb Reciept e2e test (#431) 2022-07-14 19:28:56 +03:00
state Refactor blockstm executor 2022-09-29 23:05:09 -07:00
tests RFC35/Common Ancestor: Modifying the forkchoice rule (#425) 2022-07-15 10:37:35 +05:30
types V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
vm V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
.gitignore Renamed chain => core 2014-12-04 10:28:02 +01:00
bench_test.go RFC35/Common Ancestor: Modifying the forkchoice rule (#425) 2022-07-15 10:37:35 +05:30
block_validator.go cmd, core, eth, miner: deprecate miner.gastarget flag (#23213) 2021-08-10 11:28:33 +03:00
block_validator_test.go RFC35/Common Ancestor: Modifying the forkchoice rule (#425) 2022-07-15 10:37:35 +05:30
blockchain.go Recognize bad transactions and break loop in blockstm executor 2022-09-29 23:05:09 -07:00
blockchain_bor_test.go RFC35/Common Ancestor: Modifying the forkchoice rule (#425) 2022-07-15 10:37:35 +05:30
blockchain_insert.go V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
blockchain_reader.go Prepare Bor package for testing (#416) 2022-06-08 16:39:30 +03:00
blockchain_test.go RFC35/Common Ancestor: Modifying the forkchoice rule (#425) 2022-07-15 10:37:35 +05:30
blocks.go use go-ethereum for better forked-bor release 2020-11-13 09:21:48 +05:30
bloom_indexer.go eth: move eth.Config to a common package (#22205) 2021-02-05 13:51:15 +01:00
bor_blockchain.go fix: conflict 2020-12-05 19:57:46 +05:30
bor_events.go fixes 2021-12-06 14:25:33 +05:30
bor_fee_log.go fee change 2021-08-19 18:40:18 +05:30
chain_indexer.go all: make logs a bit easier on the eye to digest (#22665) 2021-04-15 20:35:00 +03:00
chain_indexer_test.go core: fix potential race in chainIndexerTest (#22346) 2021-03-19 13:32:57 +01:00
chain_makers.go Prepare Bor package for testing (#416) 2022-06-08 16:39:30 +03:00
chain_makers_test.go RFC35/Common Ancestor: Modifying the forkchoice rule (#425) 2022-07-15 10:37:35 +05:30
dao_test.go RFC35/Common Ancestor: Modifying the forkchoice rule (#425) 2022-07-15 10:37:35 +05:30
error.go V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
events.go Minor Refactor 2021-12-03 17:28:53 +05:30
evm.go V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
forkchoice.go Crypto-secure package with math/rand interface (#509) 2022-09-14 14:54:43 +03:00
forkchoice_test.go RFC35/Common Ancestor: Modifying the forkchoice rule (#425) 2022-07-15 10:37:35 +05:30
gaspool.go miner: avoid unnecessary work (#15883) 2018-01-15 12:57:06 +02:00
gen_genesis.go core: change baseFee into baseFeePerGas in genesis json 2021-06-14 14:04:44 +02:00
gen_genesis_account.go tests: update for London (#22976) 2021-06-07 14:37:56 +02:00
genesis.go V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
genesis_alloc.go V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
genesis_test.go RFC35/Common Ancestor: Modifying the forkchoice rule (#425) 2022-07-15 10:37:35 +05:30
headerchain.go RFC35/Common Ancestor: Modifying the forkchoice rule (#425) 2022-07-15 10:37:35 +05:30
headerchain_test.go RFC35/Common Ancestor: Modifying the forkchoice rule (#425) 2022-07-15 10:37:35 +05:30
mkalloc.go all: add go:build lines (#23468) 2021-08-25 18:46:29 +02:00
parallel_state_processor.go Add ability to calculate the longest execution path in a block 2022-10-05 11:37:46 -07:00
rlp_test.go V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
state_prefetcher.go all: removed blockhash from statedb (#23126) 2021-06-30 15:17:01 +02:00
state_processor.go all: removed blockhash from statedb (#23126) 2021-06-30 15:17:01 +02:00
state_processor_test.go Recognize bad transactions and break loop in blockstm executor 2022-09-29 23:05:09 -07:00
state_transition.go added getReadMap and getWriteMap (#473) 2022-09-28 16:12:20 -07:00
tx_cacher.go use go-ethereum for better forked-bor release 2020-11-13 09:21:48 +05:30
tx_journal.go core: transaction journal should not be executable (#23090) 2021-06-23 07:29:20 +03:00
tx_list.go V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
tx_list_test.go V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
tx_noncer.go V0.2.16 candidate (#373) 2022-05-06 12:31:48 +02:00
tx_pool.go linters 2022-09-05 11:51:18 +04:00
tx_pool_test.go linters 2022-09-05 11:51:18 +04:00
types.go use go-ethereum for better forked-bor release 2020-11-13 09:21:48 +05:30