diff --git a/eth/vm/base.py b/eth/vm/base.py index ef94791c49..b43d97ddf8 100644 --- a/eth/vm/base.py +++ b/eth/vm/base.py @@ -477,7 +477,7 @@ def previous_hashes(self) -> Optional[Iterable[Hash32]]: # Transactions # def create_transaction(self, *args: Any, **kwargs: Any) -> SignedTransactionAPI: - return self.get_transaction_class()(*args, **kwargs) + return self.get_transaction_class().new_transaction(*args, **kwargs) @classmethod def create_unsigned_transaction(cls, diff --git a/eth/vm/forks/berlin/transactions.py b/eth/vm/forks/berlin/transactions.py index a39d6b4314..c3ab93c3a2 100644 --- a/eth/vm/forks/berlin/transactions.py +++ b/eth/vm/forks/berlin/transactions.py @@ -24,16 +24,7 @@ class BerlinLegacyTransaction(MuirGlacierTransaction): - @classmethod - def create_unsigned_transaction(cls, - *, - nonce: int, - gas_price: int, - gas: int, - to: Address, - value: int, - data: bytes) -> 'BerlinUnsignedLegacyTransaction': - return BerlinUnsignedLegacyTransaction(nonce, gas_price, gas, to, value, data) + pass class BerlinUnsignedLegacyTransaction(MuirGlacierUnsignedTransaction): @@ -105,3 +96,18 @@ def serialize(cls, obj: Any) -> bytes: except ObjectSerializationError: pass raise ValidationError(f"Unrecognized transaction type in {obj!r}") + + @classmethod + def create_unsigned_transaction(cls, + *, + nonce: int, + gas_price: int, + gas: int, + to: Address, + value: int, + data: bytes) -> 'BerlinUnsignedLegacyTransaction': + return BerlinUnsignedLegacyTransaction(nonce, gas_price, gas, to, value, data) + + @classmethod + def new_transaction(cls, *args, **kwargs): + return BerlinLegacyTransaction(*args, **kwargs) diff --git a/eth/vm/forks/frontier/transactions.py b/eth/vm/forks/frontier/transactions.py index 4bfbd70148..fcbed9486c 100644 --- a/eth/vm/forks/frontier/transactions.py +++ b/eth/vm/forks/frontier/transactions.py @@ -112,6 +112,10 @@ def create_unsigned_transaction(cls, data: bytes) -> 'FrontierUnsignedTransaction': return FrontierUnsignedTransaction(nonce, gas_price, gas, to, value, data) + @classmethod + def new_transaction(cls, *args, **kwargs): + return cls(*args, **kwargs) + class FrontierUnsignedTransaction(BaseUnsignedTransaction):