Skip to content
Merged
Show file tree
Hide file tree
Changes from 107 commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
3bd4a8d
Define Optimism Deposit transaction
emlautarom1 Aug 8, 2024
f46bf79
Cleanup existing `TxDecoder`
emlautarom1 Aug 8, 2024
ed2bbab
Missing assignment
emlautarom1 Aug 9, 2024
6ed28c8
Renaming
emlautarom1 Aug 9, 2024
f1ca0f5
Individual tx decoders
emlautarom1 Aug 9, 2024
6432a36
Remove intermediate interface
emlautarom1 Aug 9, 2024
d2499e9
Implement `AbstractTxDecoder`
emlautarom1 Aug 9, 2024
2716de6
Implement `AbstractTxDecoder`
emlautarom1 Aug 9, 2024
9bc577f
Implement `AbstractTxDecoder`
emlautarom1 Aug 9, 2024
03d2826
Implement `AbstractTxDecoder`
emlautarom1 Aug 9, 2024
4b3b3e7
Remove unused code
emlautarom1 Aug 9, 2024
c6bb66f
Implement `AbstractTxDecoder`
emlautarom1 Aug 9, 2024
57da69d
Add `Encode` to API
emlautarom1 Aug 9, 2024
be62cc0
Implement `Encode`
emlautarom1 Aug 9, 2024
5cf9633
Implement `Encode`
emlautarom1 Aug 9, 2024
502b313
Implement `Encode`
emlautarom1 Aug 9, 2024
1a38696
Implement `Encode`
emlautarom1 Aug 9, 2024
89045c7
Implement `Encode`
emlautarom1 Aug 9, 2024
0966cfa
Implement `Encode`
emlautarom1 Aug 9, 2024
fa51ef6
Reduce interface signature
emlautarom1 Aug 9, 2024
8f9188c
Remove encode dead code
emlautarom1 Aug 9, 2024
5d14c62
Add `GetLength` to API
emlautarom1 Aug 9, 2024
288de2c
Base `TxDecoder` implementing `IRlpStreamDecoder<Transaction>`
emlautarom1 Aug 9, 2024
5ce978b
Remove unused imports
emlautarom1 Aug 9, 2024
380eca9
Add `IRlpValueDecoder<Transaction>` impl
emlautarom1 Aug 9, 2024
16284c3
Implement ref `Decode`
emlautarom1 Aug 9, 2024
3904d06
Remove redundant code
emlautarom1 Aug 9, 2024
806830f
Implement `ref Decode`
emlautarom1 Aug 9, 2024
45bf28b
Remove unused code
emlautarom1 Aug 9, 2024
fabdcf0
Renaming
emlautarom1 Aug 9, 2024
fc9246a
Implement `ref Decode`
emlautarom1 Aug 9, 2024
93123d5
Implement `ref Decode`
emlautarom1 Aug 9, 2024
7aef17e
Implement `ref Decode`
emlautarom1 Aug 9, 2024
0f7dd60
Code cleanup
emlautarom1 Aug 9, 2024
bd9f0cf
Add `Rlp Encode(...)`
emlautarom1 Aug 9, 2024
39fd942
Add `SignatureBuilder`
emlautarom1 Aug 12, 2024
bb91078
Remove duplicated code
emlautarom1 Aug 12, 2024
85032e4
To file scoped namespace
emlautarom1 Aug 12, 2024
57cc72f
Remove `Rlp Encode(...)` method
emlautarom1 Aug 12, 2024
7e5ecd0
Reduce type switches
emlautarom1 Aug 12, 2024
da8d5fb
Refactor code
emlautarom1 Aug 12, 2024
fb2d5e2
Remove unused code
emlautarom1 Aug 12, 2024
0c0cf74
Simplify content length calculation
emlautarom1 Aug 12, 2024
afde273
Simplify content length calculation
emlautarom1 Aug 12, 2024
0f04a96
Remove unused method
emlautarom1 Aug 12, 2024
33c8515
Internal method renaming
emlautarom1 Aug 12, 2024
e90e628
Formatting
emlautarom1 Aug 12, 2024
9dffba1
Code refactor
emlautarom1 Aug 12, 2024
e7e89a8
Add `Rlp EncodeTx(...)`
emlautarom1 Aug 13, 2024
d266e3a
Implement `Rlp EncodeTx(...)` in all
emlautarom1 Aug 13, 2024
734ad27
Use primary constructor parameter
emlautarom1 Aug 13, 2024
cffa123
Make nullable parameter
emlautarom1 Aug 13, 2024
d875802
Make primary constructor
emlautarom1 Aug 13, 2024
ab76d62
Add overload to `Encode`
emlautarom1 Aug 13, 2024
143e84d
Make singleton instances static
emlautarom1 Aug 13, 2024
9a45130
Add default RlpBehaviors
emlautarom1 Aug 13, 2024
a1ea7e0
Fix infinite recursion
emlautarom1 Aug 13, 2024
55503ed
Remove unused params
emlautarom1 Aug 13, 2024
967c9ad
Default to legacy
emlautarom1 Aug 13, 2024
48fefeb
Add TODO regarding Legacy check
emlautarom1 Aug 13, 2024
fda0ae3
Fix incorrect type check
emlautarom1 Aug 13, 2024
e6b9f7b
Remove DepositTransaction subtype
emlautarom1 Aug 13, 2024
c47fc90
Fix incorrect conditional merge
emlautarom1 Aug 13, 2024
1e4eb4e
Formatting
emlautarom1 Aug 13, 2024
e28018a
Automated refactor and code cleanup
emlautarom1 Aug 13, 2024
be9e489
Starting from scratch
emlautarom1 Aug 13, 2024
4363a6e
Inline `DecodeTxTypeAndGetSequence`
emlautarom1 Aug 13, 2024
7534a39
Cleanup flag checking
emlautarom1 Aug 13, 2024
544bdc4
Reorder public methods
emlautarom1 Aug 13, 2024
fba000d
Reorder TxType initialization in `ref Decode`
emlautarom1 Aug 13, 2024
5875eb3
Add `ref Decode` method to `ITxDecoder` interface
emlautarom1 Aug 14, 2024
5780c19
Implement `ref Decode`
emlautarom1 Aug 14, 2024
7f5e34e
Dispatch to appropriate `ITxDecoder` in `ref Decode`
emlautarom1 Aug 14, 2024
5dcc43a
Remove unused code
emlautarom1 Aug 14, 2024
3c136cd
Add `EncodeTx` to `ITxDecoder`
emlautarom1 Aug 14, 2024
18b0ef5
Implement `EncodeTx`
emlautarom1 Aug 14, 2024
9a0069a
Dispatch `EncodeTx` to appropriate `ITxDecoder`
emlautarom1 Aug 14, 2024
f118008
Remove invalid `TxType` test
emlautarom1 Aug 14, 2024
44a84ae
Remove unused code
emlautarom1 Aug 14, 2024
e99d627
Add `int GetLength` to `ITxDecoder`
emlautarom1 Aug 14, 2024
c546250
Implement `int GetLength`
emlautarom1 Aug 14, 2024
ba65b9f
Dispatch to appropriate decoder
emlautarom1 Aug 14, 2024
972fdaa
Add `int GetTxLength` to `ITxDecoder`
emlautarom1 Aug 14, 2024
a4787a3
Implement `int GetTxLength`
emlautarom1 Aug 14, 2024
c58ae73
Dispatch to correct decoder
emlautarom1 Aug 14, 2024
63e95fe
Remove unused code
emlautarom1 Aug 14, 2024
4fbea8a
Merge `GetLength` and `GetTxLength`
emlautarom1 Aug 14, 2024
e42c558
Method rename
emlautarom1 Aug 14, 2024
ab78b21
Merge `GetLength` and `GetTxLength`
emlautarom1 Aug 14, 2024
9d0f35c
Method renaming
emlautarom1 Aug 14, 2024
08f7648
Param renaming
emlautarom1 Aug 14, 2024
f198b9c
Avoid infinite recursion
emlautarom1 Aug 14, 2024
dadec17
Remove default params
emlautarom1 Aug 14, 2024
99fd76a
Prefer `[]` instead of `TryGet`
emlautarom1 Aug 14, 2024
c5aead7
Renaming and parameter reordering
emlautarom1 Aug 14, 2024
22e5891
Param renaming
emlautarom1 Aug 14, 2024
18afa9b
Param and variable renaming and reordering
emlautarom1 Aug 14, 2024
1753ced
Param and var renaming and reordering
emlautarom1 Aug 14, 2024
e3a0941
Method and param renaming and reordering
emlautarom1 Aug 14, 2024
a72fa67
Method, param and var renaming and reordering
emlautarom1 Aug 14, 2024
4c1d0e1
Use `SignatureBuilder`
emlautarom1 Aug 15, 2024
6615d63
Use `SignatureBuilder`
emlautarom1 Aug 15, 2024
496bd1b
Remove redundant param
emlautarom1 Aug 15, 2024
f10fd4b
Remove const true
emlautarom1 Aug 15, 2024
0f9d0f0
Parametrize `new Transaction()`
emlautarom1 Aug 15, 2024
f29e0e6
Configure transaction factory
emlautarom1 Aug 15, 2024
faf37e4
Lift constant to interface
emlautarom1 Aug 15, 2024
f98acc6
Delete `TxFeature`
emlautarom1 Aug 15, 2024
6e83af8
Whitespace
emlautarom1 Aug 15, 2024
a6bfbb0
Delete old abstract class
emlautarom1 Aug 15, 2024
be50fda
Use the appropriate `TxType` directly
emlautarom1 Aug 15, 2024
402ce57
Whitespace
emlautarom1 Aug 15, 2024
fe87d31
Remove nullability
emlautarom1 Aug 15, 2024
4b48dc2
Merge branch 'master' into refactor/tx-decoder
emlautarom1 Aug 15, 2024
82d7b1f
Remove `lazyHash`
emlautarom1 Aug 16, 2024
04dd9ea
Remove `new` from `TxDecoder`
emlautarom1 Aug 16, 2024
acaf5a5
Merge branch 'master' into refactor/tx-decoder
emlautarom1 Aug 16, 2024
62a1e4e
Merge branch 'master' into refactor/tx-decoder
emlautarom1 Aug 28, 2024
87fdec0
Refactor decoders to class hierarchy (#7354)
LukaszRozmej Sep 2, 2024
600b16a
Merge branch 'master' into refactor/tx-decoder
emlautarom1 Sep 2, 2024
4a92361
Remove const from interface
emlautarom1 Sep 2, 2024
3647549
Merge branch 'master' into refactor/tx-decoder
emlautarom1 Sep 3, 2024
1a60acd
Merge branch 'master' into refactor/tx-decoder
emlautarom1 Sep 3, 2024
19ed1f9
fix exceptions Rlpn unsupported tx type in rlp
LukaszRozmej Sep 4, 2024
35175fa
better message
LukaszRozmej Sep 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,6 @@ public bool Before_eip_2930_has_to_be_legacy_tx(TxType txType, bool eip2930)
[TestCase(TxType.AccessList, true, false, ExpectedResult = true)]
[TestCase(TxType.EIP1559, true, false, ExpectedResult = false)]
[TestCase(TxType.EIP1559, true, true, ExpectedResult = true)]
[TestCase((TxType)100, true, false, ExpectedResult = false)]
Comment thread
LukaszRozmej marked this conversation as resolved.
public bool Before_eip_1559_has_to_be_legacy_or_access_list_tx(TxType txType, bool eip2930, bool eip1559)
{
byte[] sigData = new byte[65];
Expand Down
8 changes: 8 additions & 0 deletions src/Nethermind/Nethermind.Core/TxFeature.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Nethermind.Core;

public sealed class TxFeature
{
public static readonly TxFeature AccessList = new();
public static readonly TxFeature EIP1559 = new();
public static readonly TxFeature Blob = new();
}
Original file line number Diff line number Diff line change
Expand Up @@ -335,11 +335,11 @@ public async Task TestTwoTransaction_SameContract_WithBlockImprovement()
{
string tx1Hex =
"0x02f91adc83aa36a70184b2d05e00850e7e2cc28c831d6d968080b91a7f60806040523480156200001157600080fd5b5060405162001a5f38038062001a5f8339810160408190526200003491620000a1565b6200003f3362000051565b6200004a8162000051565b50620000d3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000b457600080fd5b81516001600160a01b0381168114620000cc57600080fd5b9392505050565b61197c80620000e36000396000f3fe60806040526004361061010e5760003560e01c8063860f7cda116100a557806399a88ec411610074578063b794726211610059578063b794726214610329578063f2fde38b14610364578063f3b7dead1461038457600080fd5b806399a88ec4146102e95780639b2ea4bd1461030957600080fd5b8063860f7cda1461026b5780638d52d4a01461028b5780638da5cb5b146102ab5780639623609d146102d657600080fd5b80633ab76e9f116100e15780633ab76e9f146101cc5780636bd9f516146101f9578063715018a6146102365780637eff275e1461024b57600080fd5b80630652b57a1461011357806307c8f7b014610135578063204e1c7a14610155578063238181ae1461019f575b600080fd5b34801561011f57600080fd5b5061013361012e3660046111f9565b6103a4565b005b34801561014157600080fd5b50610133610150366004611216565b6103f3565b34801561016157600080fd5b506101756101703660046111f9565b610445565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101ab57600080fd5b506101bf6101ba3660046111f9565b61066b565b60405161019691906112ae565b3480156101d857600080fd5b506003546101759073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020557600080fd5b506102296102143660046111f9565b60016020526000908152604090205460ff1681565b60405161019691906112f0565b34801561024257600080fd5b50610133610705565b34801561025757600080fd5b50610133610266366004611331565b610719565b34801561027757600080fd5b5061013361028636600461148c565b6108cc565b34801561029757600080fd5b506101336102a63660046114dc565b610903565b3480156102b757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610175565b6101336102e436600461150e565b610977565b3480156102f557600080fd5b50610133610304366004611331565b610b8e565b34801561031557600080fd5b50610133610324366004611584565b610e1e565b34801561033557600080fd5b5060035474010000000000000000000000000000000000000000900460ff166040519015158152602001610196565b34801561037057600080fd5b5061013361037f3660046111f9565b610eb4565b34801561039057600080fd5b5061017561039f3660046111f9565b610f6b565b6103ac6110e1565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6103fb6110e1565b6003805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff1681816002811115610481576104816112c1565b036104fc578273ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f591906115cb565b9392505050565b6001816002811115610510576105106112c1565b03610560578273ffffffffffffffffffffffffffffffffffffffff1663aaf10f426040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b6002816002811115610574576105746112c1565b036105fe5760035473ffffffffffffffffffffffffffffffffffffffff8481166000908152600260205260409081902090517fbf40fac1000000000000000000000000000000000000000000000000000000008152919092169163bf40fac1916105e19190600401611635565b602060405180830381865afa1580156104d1573d6000803e3d6000fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f50726f787941646d696e3a20756e6b6e6f776e2070726f78792074797065000060448201526064015b60405180910390fd5b50919050565b60026020526000908152604090208054610684906115e8565b80601f01602080910402602001604051908101604052809291908181526020018280546106b0906115e8565b80156106fd5780601f106106d2576101008083540402835291602001916106fd565b820191906000526020600020905b8154815290600101906020018083116106e057829003601f168201915b505050505081565b61070d6110e1565b6107176000611162565b565b6107216110e1565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205460ff169081600281111561075d5761075d6112c1565b036107e9576040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152841690638f283970906024015b600060405180830381600087803b1580156107cc57600080fd5b505af11580156107e0573d6000803e3d6000fd5b50505050505050565b60018160028111156107fd576107fd6112c1565b03610856576040517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906313af4035906024016107b2565b600281600281111561086a5761086a6112c1565b036105fe576003546040517ff2fde38b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529091169063f2fde38b906024016107b2565b505050565b6108d46110e1565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604090206108c78282611724565b61090b6110e1565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160208190526040909120805483927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169083600281111561096e5761096e6112c1565b02179055505050565b61097f6110e1565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081205460ff16908160028111156109bb576109bb6112c1565b03610a81576040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690634f1ef286903490610a16908790879060040161183e565b60006040518083038185885af1158015610a34573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a7b9190810190611875565b50610b88565b610a8b8484610b8e565b60008473ffffffffffffffffffffffffffffffffffffffff163484604051610ab391906118ec565b60006040518083038185875af1925050503d8060008114610af0576040519150601f19603f3d011682016040523d82523d6000602084013e610af5565b606091505b5050905080610b86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f50726f787941646d696e3a2063616c6c20746f2070726f78792061667465722060448201527f75706772616465206661696c6564000000000000000000000000000000000000606482015260840161065c565b505b50505050565b610b966110e1565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081205460ff1690816002811115610bd257610bd26112c1565b03610c2b576040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152841690633659cfe6906024016107b2565b6001816002811115610c3f57610c3f6112c1565b03610cbe576040517f9b0b0fda0000000000000000000000000000000000000000000000000000000081527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152841690639b0b0fda906044016107b2565b6002816002811115610cd257610cd26112c1565b03610e165773ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604081208054610d07906115e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610d33906115e8565b8015610d805780601f10610d5557610100808354040283529160200191610d80565b820191906000526020600020905b815481529060010190602001808311610d6357829003601f168201915b50506003546040517f9b2ea4bd00000000000000000000000000000000000000000000000000000000815294955073ffffffffffffffffffffffffffffffffffffffff1693639b2ea4bd9350610dde92508591508790600401611908565b600060405180830381600087803b158015610df857600080fd5b505af1158015610e0c573d6000803e3d6000fd5b5050505050505050565b6108c7611940565b610e266110e1565b6003546040517f9b2ea4bd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690639b2ea4bd90610e7e9085908590600401611908565b600060405180830381600087803b158015610e9857600080fd5b505af1158015610eac573d6000803e3d6000fd5b505050505050565b610ebc6110e1565b73ffffffffffffffffffffffffffffffffffffffff8116610f5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161065c565b610f6881611162565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205460ff1681816002811115610fa757610fa76112c1565b03610ff7578273ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b600181600281111561100b5761100b6112c1565b0361105b578273ffffffffffffffffffffffffffffffffffffffff1663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b600281600281111561106f5761106f6112c1565b036105fe57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d1573d6000803e3d6000fd5b60005473ffffffffffffffffffffffffffffffffffffffff163314610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065c565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f6857600080fd5b60006020828403121561120b57600080fd5b81356104f5816111d7565b60006020828403121561122857600080fd5b813580151581146104f557600080fd5b60005b8381101561125357818101518382015260200161123b565b83811115610b885750506000910152565b6000815180845261127c816020860160208601611238565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104f56020830184611264565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061132b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561134457600080fd5b823561134f816111d7565b9150602083013561135f816111d7565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156113e0576113e061136a565b604052919050565b600067ffffffffffffffff8211156114025761140261136a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600061144161143c846113e8565b611399565b905082815283838301111561145557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261147d57600080fd5b6104f58383356020850161142e565b6000806040838503121561149f57600080fd5b82356114aa816111d7565b9150602083013567ffffffffffffffff8111156114c657600080fd5b6114d28582860161146c565b9150509250929050565b600080604083850312156114ef57600080fd5b82356114fa816111d7565b915060208301356003811061135f57600080fd5b60008060006060848603121561152357600080fd5b833561152e816111d7565b9250602084013561153e816111d7565b9150604084013567ffffffffffffffff81111561155a57600080fd5b8401601f8101861361156b57600080fd5b61157a8682356020840161142e565b9150509250925092565b6000806040838503121561159757600080fd5b823567ffffffffffffffff8111156115ae57600080fd5b6115ba8582860161146c565b925050602083013561135f816111d7565b6000602082840312156115dd57600080fd5b81516104f5816111d7565b600181811c908216806115fc57607f821691505b602082108103610665577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000602080835260008454611649816115e8565b8084870152604060018084166000811461166a57600181146116a2576116d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a01528284151560051b8a010195506116d0565b896000528660002060005b858110156116c85781548b82018601529083019088016116ad565b8a0184019650505b509398975050505050505050565b601f8211156108c757600081815260208120601f850160051c810160208610156117055750805b601f850160051c820191505b81811015610eac57828155600101611711565b815167ffffffffffffffff81111561173e5761173e61136a565b6117528161174c84546115e8565b846116de565b602080601f8311600181146117a5576000841561176f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610eac565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156117f2578886015182559484019460019091019084016117d3565b508582101561182e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061186d6040830184611264565b949350505050565b60006020828403121561188757600080fd5b815167ffffffffffffffff81111561189e57600080fd5b8201601f810184136118af57600080fd5b80516118bd61143c826113e8565b8181528560208385010111156118d257600080fd5b6118e3826020830160208601611238565b95945050505050565b600082516118fe818460208701611238565b9190910192915050565b60408152600061191b6040830185611264565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea164736f6c634300080f000a000000000000000000000000bc2fd1637c49839adb7bb57f9851eae3194a90f7c001a0679d6e22b738ede7fc2b3e93b95719539f297f4c7a9a2e4f5ad93b479254f3daa0595015bcc1435e0872b59a2a8f697322aa5cea9c40cdacf4e8d664d96cd1f59b";
Transaction tx1 = TxDecoder.Instance.Decode(new RlpStream(Bytes.FromHexString(tx1Hex)), RlpBehaviors.SkipTypedWrapping)!;
Transaction tx1 = new TxDecoder().Decode(new RlpStream(Bytes.FromHexString(tx1Hex)), RlpBehaviors.SkipTypedWrapping)!;

string tx2Hex =
"0x02f89383aa36a70284b2d05e00850e7e2cc28c830106fc94785ea063ece4493f7995da4f9ef3661cac2da9c380a40652b57a0000000000000000000000008d1b673b7db916f3d9a59bbf997dda34ea69243ac001a0e6a2c179857e74052fc12a4441f317671bc4fbdda56f6466d2fa1a190b7cf326a05434bec9eb23531ce0186a64b1e7fca6ef13486c0b8196a52762bf48dc3ed798";
Transaction tx2 = TxDecoder.Instance.Decode(new RlpStream(Bytes.FromHexString(tx2Hex)), RlpBehaviors.SkipTypedWrapping)!;
Transaction tx2 = new TxDecoder().Decode(new RlpStream(Bytes.FromHexString(tx2Hex)), RlpBehaviors.SkipTypedWrapping)!;

using SemaphoreSlim blockImprovementLock = new(0);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ protected override TransactionResult BuyGas(Transaction tx, BlockHeader header,

UInt256 senderBalance = WorldState.GetBalance(tx.SenderAddress!);

if (tx.IsDeposit() && !tx.IsOPSystemTransaction && senderBalance < tx.Value)
if (tx.IsDeposit() && !tx.IsOPSystemTransaction && senderBalance < tx.Value)
{
return "insufficient sender balance";
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System;
using Nethermind.Core;

namespace Nethermind.Serialization.Rlp.MyTxDecoder;

// NOTE: Due to requiring covariant return types we need to use `abstract class` instead of `interface`
public abstract class AbstractTxDecoder
{
// NOTE: Implementations can (and will) return more specific types than `Transaction`
public abstract Transaction Decode(Span<byte> transactionSequence, RlpStream rlpStream, RlpBehaviors rlpBehaviors);

public abstract Transaction Decode(int txSequenceStart, ReadOnlySpan<byte> transactionSequence, ref Rlp.ValueDecoderContext context, RlpBehaviors rlpBehaviors);

public abstract void Encode(Transaction? item, RlpStream stream, RlpBehaviors rlpBehaviors);

public abstract Rlp EncodeTx(Transaction? item, bool forSigning, bool isEip155Enabled, ulong chainId, RlpBehaviors rlpBehaviors);

public abstract int GetLength(Transaction item, RlpBehaviors rlpBehaviors);
}
Loading