Skip to content

Commit e3fe5e0

Browse files
committed
Bugfix setting coinbase when mining
The coinbase address was not correctly receiving transaction fees when the address is passed as a kwarg to MiningChain.mine_all or .mine_block Regressions here will be caught by the soon-to-be-included tests/core/vm/test_eip1559_txn_rewards
1 parent cd5e174 commit e3fe5e0

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

eth/chains/base.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,12 @@ def import_block(self,
663663
def set_header_timestamp(self, timestamp: int) -> None:
664664
self.header = self.header.copy(timestamp=timestamp)
665665

666+
@staticmethod
667+
def _custom_header(base_header: BlockHeaderAPI, **kwargs: Any) -> BlockHeaderAPI:
668+
header_fields = {'coinbase'}
669+
header_params = {k: v for k, v in kwargs.items() if k in header_fields}
670+
return base_header.copy(**header_params)
671+
666672
def mine_all(
667673
self,
668674
transactions: Sequence[SignedTransactionAPI],
@@ -676,7 +682,8 @@ def mine_all(
676682
else:
677683
base_header = self.create_header_from_parent(parent_header)
678684

679-
vm = self.get_vm(base_header)
685+
custom_header = self._custom_header(base_header, **kwargs)
686+
vm = self.get_vm(custom_header)
680687

681688
new_header, receipts, computations = vm.apply_all_transactions(transactions, base_header)
682689
filled_block = vm.set_block_transactions(vm.get_block(), new_header, transactions, receipts)
@@ -697,7 +704,8 @@ def mine_block(self, *args: Any, **kwargs: Any) -> BlockAPI:
697704
return self.mine_block_extended(*args, **kwargs).block
698705

699706
def mine_block_extended(self, *args: Any, **kwargs: Any) -> BlockAndMetaWitness:
700-
vm = self.get_vm(self.header)
707+
custom_header = self._custom_header(self.header, **kwargs)
708+
vm = self.get_vm(custom_header)
701709
current_block = vm.get_block()
702710
mine_result = vm.mine_block(current_block, *args, **kwargs)
703711
mined_block = mine_result.block

0 commit comments

Comments
 (0)