Georgios Konstantopoulos
4d718bbf33
s/foundry-rs/paradigmxyz
2022-12-07 00:00:45 -08:00
Dan Cline
6c91322251
feat(eth-wire): derive serde traits for eth-wire types ( #348 )
...
* wip: start adding serde to stuff
* add serde traits to NewBlockHashes
* derive serde traits for the rest of the types
* derive serde traits for p2p subprotocol messages
* cargo fmt
2022-12-06 18:05:22 -08:00
Roman Krasiuk
9628d03871
feat(sync): headers commit threshold ( #296 )
...
* headers stream init
* fix tests
* return header if available regardless of control flow
* proper stream termination & docs
* upd headers stage to consume stream
* adjust response validation for stream
* use cursor.insert for headers
* wrap poll_next in a loop to bypass poking waker
* fix typo
* fix last td lookup
* Apply suggestions from code review
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
* misc
* remove waker ref
* dedup response handling logic
* clippy
* add docs to poll
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
2022-12-06 18:02:04 -08:00
Dan Cline
2671cd1cb6
chore(primitives): impl serde traits for ForkId ( #342 )
2022-12-06 18:02:04 -08:00
rakita
a68cb3f357
feat(stage): Add execution stage ( #287 )
...
* Execution stage
* StorageProviderRef. cleanup, fmt/clippy
* block inclusion
* insert blocks for execution stage
* Sanity test for execution stage
* nits
* Update crates/stages/src/stages/execution.rs
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
* Update crates/stages/Cargo.toml
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
* Update crates/stages/src/stages/execution.rs
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
* Update crates/stages/src/stages/execution.rs
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
* feat(execution) Execution change diff. (#323 )
* Insert to execution changediffs
* progress on exec stage unwind
* wip
* Remove tables:BlockBody from execution stage
* unwind passing
* Nits cleanup and refactoring
* DatabaseIntegrity errors
* KECCAK_EMPTY acc to None
* Update crates/interfaces/src/db/tables.rs
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
* Update crates/interfaces/src/provider/block.rs
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
* Update crates/stages/src/stages/execution.rs
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
* nits
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
2022-12-06 18:02:04 -08:00
joshieDo
13df80c1d1
chore(codecs): contain [Struct]Flags in a mod and import what's necessary ( #329 )
...
* contain StructFlags in a mod with its imports
* update code generation test
2022-12-06 18:02:04 -08:00
Dan Cline
2b6ef0afcf
fix(eth-wire): encode p2p message id as valid rlp ( #324 )
2022-12-06 18:02:04 -08:00
joshieDo
bb014eea25
codecs: "type specialization" for Compact on Vec<T> & Option<T> ( #297 )
...
* maybe_zero no longer necessary on bytecode_hash
* add alt impl for Compact to/from
* add some more docs
* add default vec impl on generator test
* use default trait impl
* rename from alternative to specialized
2022-12-02 01:56:08 -08:00
Matthias Seitz
a0c35f1f48
refactor: replace reverse with HeadersDirection ( #305 )
2022-12-01 17:59:33 +01:00
Matthias Seitz
3355b0c605
test(net): add e2e request body test ( #304 )
...
* test(net): add e2e request body test
* test(net): add e2e request header test
2022-12-01 15:35:14 +01:00
Matthias Seitz
480097a7ca
feat(net): add eth request handler ( #293 )
...
* feat(net): add block request manager
* refactor: change ommers type to Header
* feat: impl handlers
* rename to EthRequestHandler
* impl checks
* fix: skip as step
* chore: rustfmt
2022-11-30 21:19:50 +01:00
Matthias Seitz
267b857a8f
refactor: change ommers type to Header ( #292 )
2022-11-30 00:13:52 +01:00
rakita
96afa2d41d
chore: Noted about code origin ( #278 )
2022-11-28 09:26:36 -08:00
joshieDo
3efc6ee67e
feat(db): Make TransactionSigned compactable ( #252 )
2022-11-27 23:29:30 -08:00
Matthias Seitz
dda8df7341
refactor: headers client ( #249 )
...
* refactor: headers client
* chore: rustfmt
* chore(clippy): make clippy happy
* address comments
* use Error instead
* fix(sync): headers test client & stage tests (#255 )
* headers test client & stage tests
* fix timeout test
* fix import
Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com >
2022-11-25 14:00:06 +01:00
Matthias Seitz
d6a11c7f48
chore(deps): bump ethers + ethereum types + revm ( #228 )
...
* chore(deps): bump ethers + ethereum types
* bump revm
* chore(clippy): make clippy happy
2022-11-23 11:54:54 +01:00
joshieDo
027fc2bbf2
feat(db): derive Compact codec ( #177 )
2022-11-22 20:46:45 -08:00
rakita
7e693046c6
feat(executor): Execute block of transactions and return tx patches ( #238 )
...
* wip executor commit
* finish commit, make execution as functions
* rlp block encoding, fixing proof
* Block execution and test example
2022-11-22 22:57:22 +01:00
rakita
09c5c3449e
feat(executor): transaction and receipts verification ( #195 )
...
* transaction verification
* Add providers to interfaces
* add receipt check in executor verify
* Removed receipts, added bloom
* post merge header checks
* fmt clippy
* gas price type removal
* rm leftover
* move consts to contstant.rs
2022-11-16 11:10:36 -08:00
Matthias Seitz
f8fddcdfa4
feat(p2p): integrate txpool in p2p ( #208 )
2022-11-15 22:27:41 +01:00
Matthias Seitz
f0388e4032
refactor: move BlockHashOrNumber to primitives ( #203 )
2022-11-15 09:44:07 -08:00
Matthias Seitz
391a509443
feat: add FromRecoveredTransaction conversion trait ( #207 )
2022-11-15 16:24:13 +01:00
Bjerg
92a7818512
feat: bodies stage ( #190 )
...
* chore: clean up `.gitignore`
* fix: make RO cursors `Send + Sync`
* feat(wip): bodies stage
* driveby: improve docs
* chore: don't panic if we're the first stage
* chore: use `Vec` for ommers
* feat: error handling in bodies downloader
* chore: remove stale comment
* chore: pascal-case stage id
* refactor: remove unused new fns
* refactor: distinguish downloaders with prefix
* refactor: move downloader errs to own module
* refactor: `stream_bodies` -> `bodies_stream`
* test: fix borked imports in header stage
* test: clean up header tests
* test: add basic body stage tests
* test: add 2 more body stage test skeletons
* test: move generator test utils to own module
* refactor: move proof functions to primitives crate
* feat: add block generator test utils
* test: more body stage tests
* chore: fix typo (`Cannonical*` -> `Canonical`)
* docs: document `bodies_to_download`
* test: more body stage tests
* test: more body stage tests
* refactor: clean up body stage tests a bit
* test: fix broken tests
* refactor: clean up body stage tests
* test: more body stage tests
2022-11-15 08:49:11 +01:00
Dan Cline
f1e6639374
feat(net): authenticate sessions ( #178 )
...
* Switch stream type of ActiveSession to EthStream
* Start `StatusBuilder` for initializing the `Status` message required
for the handshake
* Add `Hardfork` for `Status` default forkid
* Add `MAINNET_GENESIS` constant
* finish `StatusBuilder`
* initialize eth streams in session
* add status, hello, and fork filter to session manager
* fix status builder example
* add status and hello to network config
* will probably remove
* removing status and hello from networkconfig
* move forkid to primitives
* change imports for forkid
* add hardfork to primitives
* remove hardfork and forkid from eth-wire
* fix remaining eth-wire forkid references
* put mainnet genesis in constants, remove NodeId
* replace NodeId with PeerId
* the only NodeId remaining is inherited from enr
* PeerId still needs to be documented
* also run cargo fmt
* replace loop with iter().any()
* ignore missing docs for hardforks
* use correct PeerId for Discv4::bind example test
* document PeerId as secp256k1 public key
* cargo fmt
* temporarily allow too_many_arguments
* the authenticate and start_pending_incoming_session methods have many
arguments, we can reconsider the lint or fix the methods at a later
point
2022-11-14 12:03:05 -05:00
Bjerg
2754315e68
chore: omner -> ommer ( #192 )
...
* chore: omner -> ommer
* chore: missmatch -> mismatch
* chore: other typos
2022-11-11 07:46:09 +01:00
rakita
9e35d58b05
feat(primitive): Signer recovery ( #179 )
...
* feat(consensus): Signer recovery and tx validation
* Signature hash and use seckp256k1 over k256
* use deref_more for transactions
* cleanup and fix for eip1559 hash
* fix hash calculation on decoding
2022-11-09 18:11:32 +01:00
Roman Krasiuk
b9700791c8
feat(db): transaction value type ( #175 )
2022-11-08 16:56:13 +01:00
rakita
7ecbe01741
feat(provider): Add StorageProvider impl, table changes ( #172 )
...
* feat(provider): Add StorageProvider impl, table changes
* unwind header numbers by walker (#174 )
* readme, fmt
* fix tests
* Update crates/interfaces/src/provider/db_provider/storage.rs
Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com >
* Update crates/interfaces/src/provider/db_provider/storage.rs
Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com >
Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com >
2022-11-08 15:55:45 +01:00
Matthias Seitz
caad026c70
refactor: rename HeaderLocked to SealedHeader ( #173 )
2022-11-07 21:06:53 +01:00
Roman Krasiuk
bff27a4154
fix(rpc): type encoding ( #155 )
...
* fix(rpc): type encoding
* copy bytes from ethers
2022-11-03 03:04:09 -07:00
rakita
ac2f3fcd8a
feat: Consensus crate and verification functions. ( #152 )
...
* wip executor
* wip
* Cleanup added some checks and structure to executor
* adding additional block/header checks
* add basefee calculation and check
* some cleanup
* Sanity check test
* Test for sanity check
* move verification to consensus crate
* cleanup
* Better Error handling
2022-11-02 12:59:51 +01:00
Matthias Seitz
ce64fefd78
feat(net): add discv4 crate ( #113 )
...
* port kad
* feat: port kad bucket
* feat: add discv4
* chore: rustfmt
* cargo update
* just reuse discv5 table
* test: add rlp tests
* message encoding
* feat: impl codec roundtrip testing
* more work in message handling
* implement ping
* feat: impl commands
* cleanup
* more cleanup
* trim config
* more docs
* feat: implement recursive lookup
* docs
* cleanup config
* feat: implement update stream
* chore: config cleanup
* docs: add crate docs
* feat: more testing
* fix deny
* clarify ring
* docs: more docs
* use discv5 master
* docs: address review and add comments
* update readme
* rustmft
* chore(clippy): make clippy happy
2022-10-25 14:23:24 +02:00
Matthias Seitz
2b67e75c05
fix: use correct hash function ( #138 )
2022-10-25 05:12:45 -07:00
joshieDo
ee41dfac35
feat(db): set-upChangeSet tables ( #135 )
...
* add AccountChangeSet
* add StorageChangeSet
* add tests to TxNumberAddress
* minor fixes
2022-10-25 03:47:45 -07:00
joshieDo
2a8189d7c9
chore(db): Add tests and fuzz target to BlockNumHash ( #130 )
...
* add tests and fuzz target for BlockNumHash
* use block 1 for test_block_num_hash
* new clippy stds
* fmt
2022-10-25 01:23:10 -07:00
Matthias Seitz
0998fc3eb7
chore: bump tiny-keccak ( #127 )
2022-10-24 17:06:25 -07:00
Matthias Seitz
77ea53bb6e
chore: reexport hex ( #128 )
2022-10-24 17:06:12 -07:00
joshieDo
3c5b235455
feat(db): Add DupSort PlainStorageState table ( #121 )
...
* add dupsort table and test
* use env.update instead
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com >
2022-10-24 11:23:28 -07:00
joshieDo
8bc8bd6820
feat: add IntegerList type Elias-Fano ( #111 )
...
* add elias
* docs: should not be empty
* change models doc
* add arbitrary feature
* add simple test
* add test-utils to primitives
* cfg arbitrary
2022-10-24 06:14:59 -07:00
Georgios Konstantopoulos
15bd88e637
headers(part2) - feat: add Downloader trait and test utils ( #118 )
...
* feat(interfaces): implement header client traits
* feat: add downloader trait implementer
* feat: use explicit error type instead of ok(false)
* feat: add constructor to HeaderLocked
* test: scaffold mock consensus, downloader and headersclient helpers
* test: implement test consensus
* test: implement test headers client
* refactor: cleanup download headers
* chore: fix lint
* s/test_utils/test_helpers
* headers(part 3) feat: implement Linear downloader (#119 )
* feat: add headers downloaders crate
* feat: more scaffolding
* interfaces: generalize retryable erros
* feat: implement linear downloader
* fix linear downloader tests & add builder
* extend & reverse
* feat: linear downloader generics behind arc and reversed return order (#120 )
* put client & consensus behind arc and return headers in rev
* cleanup
Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com >
* extract test_utils
* cargo fmt
Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com >
2022-10-24 04:56:43 -07:00
rakita
483bcdf9ab
feat(db): Database Abstraction ( #101 )
...
* database tx traits
* wip build passes
* Db and tx results
* nightly and db GAT
* Impl tx, wip cursor
* Move Decode to Table Key, working cursor trait
* wip dupsort
* build all Cursor abstraction
* cleanup
* wip cleanup
* old stages
* codecs moved o interface,stages wip
* resolve db ref, it builds
* Add tx commit after execution
* fmt
* Remove sync send restriction
* Add missing rw cursor functions
* Cleanup, added missing cursor fn. rust toolchain
* fmt
* add nightly to ci
* deny dead_code, remove unwrap
* rm printfn, stages fix, bench fix
2022-10-20 08:32:13 -07:00
Matthias Seitz
e9945b565a
chore: reexport sha3 from primitives ( #109 )
...
* chore: reexport sha3 from primitives
* feat: add keccak256
* replace sha3 with tinykeccak
2022-10-20 16:43:29 +02:00
Dan Cline
4536e09c99
feat(primitives): use with_capacity for sighash ( #108 )
2022-10-20 10:26:08 +02:00
Georgios Konstantopoulos
c277015f5c
feat(eth): add remaining eth protocol message types ( #82 )
...
* chore: port over remaining types from ethp2p
https://github.com/Rjected/ethp2p/
* replace fastrlp with reth_rlp
* use correct type for tx messages
* encoding / decoding still todo
* derive Default for AccessList
* export receipts
* also add Hash to more types
* fix receipts tests
* remove unused receipts test imports
* add convenience methods on transaction
* add block body
* move blockbody to eth-wire, uncomment wire type
* uncomment rest of messages
* TODO: refactor tests and make tests pass
* use U128 instead of Uint for td
* expose wire types
* use reth_eth_wire instead of ethp2p
* expose Signature
* refactor pooled transaction tests
* fix hash calculation
* do not hash the entire buffer
* uncomment block test and make clippy happy
* module-level documentation for message types
* apply a clippy fix
* cargo fmt
* actually make clippy happy
* use H256 instead of [u8; 32]
* use partition in split_transaction_by_hashes instead of peekable
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com >
2022-10-19 23:24:50 -04:00
Dan Cline
0ff0ffa7d5
feat(primitives): transaction encoding tests ( #103 )
...
* feat(primitives): transaction encoding tests
* fix encoding and decoding
* remove printlns
* remove obsolete comment
* rename y_parity local variable
* add explicit non-legacy case for signature length
2022-10-19 19:52:26 -04:00
joshieDo
630baf5d70
feat(db): fuzzing & benchmark ( #86 )
...
* fuzz with test-fuzz
* move fuzzing to db/codecs
* add criterion & iai
* print encoded size sum on criterion benchmark
* fix BlockNumHash encode
* add gh action for benchmarks
* don't sum results
* test ci values
* Revert "test ci values"
This reverts commit cc47fd8053 .
* specify criterion version
* add docs
* remove benchmark job
2022-10-19 13:08:07 -07:00
Dan Cline
7e26ba5090
feat(primitives): transaction encoding and decoding ( #102 )
...
* feat(core): transaction encoding and decoding
* cargo fmt
* remove printlns
* fix tx conversion
2022-10-19 13:31:41 -04:00
Dan Cline
0fc446c5a2
feat(primitives): signature length and encoding ( #93 )
...
* feat(primitives): signature length and encoding
* add signature encoding and length methods for non-eip155 and eip-155
* remove TODO
2022-10-18 13:07:59 -07:00
Roman Krasiuk
9056b8cbf2
feat(primitives): header encoding & hash ( #89 )
...
* header encoding & hash
* remove newline
* consistent extra_data conversion
* clean up decoding test
2022-10-17 10:37:15 -07:00
Matthias Seitz
2e19f94048
feat: impl rlp for receipt ( #83 )
...
* feat: impl rlp for receipt
* fix: change to bloom
* chore: rustfmt
2022-10-17 07:13:02 -07:00