Commit Graph

178 Commits

Author SHA1 Message Date
edd0e852f2 feat(txpool): introduce transaction origin (#85) 2022-10-17 07:14:18 -07:00
83a9b31911 feat(txpool): add no parked ancestors condition (#84)
* feat(txpool): add no parked ancestors condition

* chore: rustfmt
2022-10-17 07:13:40 -07:00
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
063b444792 feat(db): codec encoding/decoding (#51)
* wip

* add table macro

* add simple put get test with Address

* add Env.view and Env.update

* docs

* slightly change the test

* add initial table initialization and placeholders

* lint & some

* replace String with str

* add error.rs

* add docs to encode

* add docs

* clamp

* add source on libmdbx_max_page_size

* add BlockNumer_BlockHash

* add scale

* set header filed to bytes Bytes

* remove unwrap

* restrict scale to chosen types

* into bytes

* add postcard

* changed to BlockNumHash

* add proc_macro_attribute codecs

* fix feature flagging

* set a version for postcard

* cleanup

* seal ScaleOnly

* remove unnecessary dependencies

* properly encode/decode blocknumhash

* change Account codec to scale

* add missing feature to scale

* add codec to a couple more types

* silence clippy

* add docs about table encoding

* move and add reth-codecs

* clippy

* make proc-macro visible

* add README.md
2022-10-17 01:04:57 -07:00
8009d997c0 Implement ETH P2P (#81)
* refactor: move things to types

* feat(ethwire): bring in message type from ethp2p

30c11138d5/src/message.rs

* feat(ethwire): add eth-stream with Stream/Sink impls

* feat(ethwire): make Sink error an EthStreamError

* feat(ecies): expose util module

* add more deps

* feat: add broadcast newblockhashes

* fix: rlp serialize with message-id first

* chore: cleanup doc

* wip: test eth connection

* bump cargo lock

* feat: add rlp codec and get stream tests working

* fix: convert RlpCodec to PassthroughCodec

we were rlp encoding twice

* Revert "fix: convert RlpCodec to PassthroughCodec"

This reverts commit 6e6e0a58112c14d7ffba62dc83f9747ddc280641.

This does not handle framing, which would fail decoding if a partial
write happened to the socket.

* add tracing

* refactor: add handshake error

* feat(ethwire): add status handshake

* test(ethwire): handshake works

* refactor: expose EthStream::new

* chore: clippy lints

* fix: get rid of rlp codec

we can instead use LengthLimitedCodec from Tokio IO, which we re-export
as PassthroughCodec

* fix(eth): add handshake + msg error checks

1. 10MB message lengths
2. Same Genesis, Version, Chain on Status Handshake

* chore: ignore result_large_err

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2022-10-16 20:10:25 -07:00
5dfe5ac29b feat(net): add Framed ECIES implementation (#80)
* feat(net): add ecies crate

* cargo fmt

* add hex-literal and proptest to dev-dependencies

 * adds std feature to reth-rlp

* document util

* document more

* chore: allow missing docs in ecies/algorith.rs

* feat(ecies): improve error handling

remove anyhow and strictly type all errors

* refactor(ecies): movem ingress/egress to lib.rs

* chore(ecies): allow missing docs in mac

* chore(ecies): cleanup utils

* refactor(ecies): move ECIES Codec to separate file

* refactor(ecies): rename proto to stream

* add test scaffold

* implement server/client read/write test

* chore: clippy / fmt

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-10-15 18:20:17 -07:00
07a83b163f feat(primitives): add H128 (#79)
* feat(primitives): add H128

 * uses patch for now

* cargo fmt
2022-10-14 20:06:26 -07:00
bdc38d8bbd cleanup remove forkid from primitives (#78) 2022-10-14 23:01:55 +02:00
2317bcb702 style(txpool): turn InsertResult into std::result::Result (#73)
* refactor(txpool): consider below proto fee cap an error

* style(txpool): turn InsertResult into std::result::Result

* chore: rustfmt

* docs: add missing docs
2022-10-14 12:03:00 -07:00
533c3ebe98 feat(rpc): add EthApiServer impl skeleton (#75) 2022-10-14 12:01:00 -07:00
a7cf915677 refactor(txpool): consider below proto fee cap an error (#71) 2022-10-14 17:10:05 +02:00
a644318c32 feat(p2p): Include forkid file from apache licenced repo (#68)
* Start using reth-rlp
* Include apache licenced forkid file in primitives
* Move forkid to eth-wire
2022-10-14 16:52:59 +02:00
19d001fbdd chore(txpool): require public traits to be static (#74) 2022-10-14 16:05:46 +02:00
4790256507 feat: skip/error pipeline events (#70) 2022-10-14 14:08:41 +02:00
0d97014f4c docs: mermaid diagram for pipeline (#67) 2022-10-14 13:23:13 +02:00
92e64ed71f include apache licenced fastrlp as reth-rlp (#63)
* include apache licenced fastrlp as reth-rlp
* fmt
* Include LICENCE and README for reth-rlp
2022-10-14 12:43:21 +02:00
6d0bd9037e feat(txpool): add get_all function (#65) 2022-10-14 11:19:15 +02:00
794c07391e feat(txpool): extend poolconfig (#61) 2022-10-13 20:49:35 +02:00
6b71460e7e refactor(txpool): simplify validator trait (#60)
* refactor(txpool): simplify validator trait

* fix docs
2022-10-13 20:36:15 +02:00
55768a534d feat(txpool): add listeners for all transactions (#59) 2022-10-13 10:47:32 -07:00
84ec30db5b feat(txpool): add support for mock testing (#55)
* chore: some cleanup

* refactor(txpool): simplify layers and add docs

* refactor: more cleanup

* refactor: cleanup and simplifications

* feat(txpool): mock test support

* feat(txpool): more mock testing

* chore: rustfmt

* set basefee correctly
2022-10-13 10:44:31 -07:00
577e840062 docs(txpool): update BestTransaction docs (#57) 2022-10-13 10:44:18 -07:00
74b04dc81a refactor(txpool): get rid of block number requirement (#56) 2022-10-12 16:24:19 -07:00
6d4e39deef refactor(txpool): cleanup pass (#53)
* chore: some cleanup

* refactor(txpool): simplify layers and add docs

* refactor: more cleanup

* refactor: cleanup and simplifications
2022-10-12 18:23:08 +02:00
4fb99848fd refactor(txpool): simplify layers and add docs (#52)
* chore: some cleanup

* refactor(txpool): simplify layers and add docs
2022-10-12 17:58:36 +02:00
ae5935e6b2 feat: reth binary and parsing of eth chain tests (#38)
* Scaffolding for reth test binary. wip for blockchain tests

* wip models for chain json tests

* reth binary and chain test

* fmt,clippy

* Update bin/reth/src/lib.rs

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>

* Update bin/reth/src/lib.rs

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>

* Update bin/reth/src/test_eth_chain/mod.rs

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>

* Update bin/reth/src/test_eth_chain/mod.rs

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>

* Update bin/reth/src/test_eth_chain/mod.rs

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>

* Update bin/reth/src/test_eth_chain/models.rs

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>

* Update bin/reth/src/test_eth_chain/models.rs

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>

* Update bin/reth/src/test_eth_chain/mod.rs

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>

* Update bin/reth/src/test_eth_chain/runner.rs

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>

* Move JsonU256 to primitives

* fmt

* Use eyre

* nits

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>
2022-10-12 17:43:01 +02:00
08d8a7f030 cursor put (#54) 2022-10-12 17:16:59 +02:00
111c13f12f test: more staged sync tests (#49) 2022-10-11 23:04:07 +02:00
bbb46216ea chore: test utils (#48) 2022-10-11 20:09:18 +02:00
5ebfc01338 chore: migrate stages to new db abstractions (#43)
* migrate

* set block as u64

* linter

* BNum -> BlockNumber

* stage id alias
2022-10-11 19:54:05 +02:00
098bfe84b9 docs: add contributor docs (#41)
* docs: add contributor docs

* docs: nit

* docs: move project layout to docs folder

* chore: slash the slashes

* docs: re-add ci badge (whoops)

* docs: index
2022-10-11 10:15:08 -07:00
180c768822 docs(txpool): add note for minimal protocol base fee (#47) 2022-10-11 10:14:32 -07:00
0b1c86df30 docs(txpool): add mermaid diagram (#46) 2022-10-11 19:07:16 +02:00
edc75881c1 docs: add book skeleton (#44)
* docs: add book skeleton

* ci: add book test workflow
2022-10-11 18:52:28 +02:00
a8c1eaf140 feat: simplified unwind priority (#45) 2022-10-11 18:52:05 +02:00
3fed7cfe21 feat(txpool): new txpool design (#22) 2022-10-11 17:10:02 +02:00
8eb2ea4152 feat(rpc): add rpc-api client feature (#33)
* feat(rpc): add rpc-api client feature

* refactor: combine proc macro

* feat: add missing deserialize functions

* add missing derive
2022-10-11 11:56:12 +02:00
bce14b22ce chore: staged sync cleanup (#34)
* docs: expand on unwinding

* chore: commit inside run_loop / cleanup run

* chore: instrument unwind via span to make more readable

* chore: address review comments
2022-10-10 19:48:20 -07:00
c41c6b99a6 db: supply table as Type not as fn param (#32) 2022-10-10 12:52:42 -07:00
60d3c64410 feat(db): mdbx integration & table skeletons (#15)
* wip

* add table macro

* add simple put get test with Address

* add Env.view and Env.update

* docs

* slightly change the test

* add initial table initialization and placeholders

* lint & some

* replace String with str

* add error.rs

* add docs to encode

* add docs

* clamp

* add source on libmdbx_max_page_size
2022-10-10 12:35:35 -07:00
230e9ef179 feat(p2p): add anchor file for discovery state (#11)
* feat(p2p): add anchor file for discovery state

* move rustdoc and improve error messages

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>

* add temp file tests and log drop error

 * fix error due to lack of read option
 * fix empty and nonexistent file error

* remove redundant new

* replace println with tracing

* show underlying error in custom error message

* chore: cargo fmt

* change AsRef<Path> to &Path

* remove ineffective dedups

* chore: cargo fmt

* switch out Vec<Enr<K>> for HashSet<Enr<K>>

* cargo fmt

* use tempdir instead of of std::env::temp_dir

* refactor anchor to contain &Path instead of File

 * change new_from_file to explicitly include logic for opening existing
   files, rather than calling out to from_toml
 * remove from_toml because new_from_file handles existing files
   properly with only a path. It is not possible to obtain a Path from a
   File anyways, its only purpose was to accept a File type

* use PathBuf instead of Path

Co-authored-by: Bjerg <onbjerg@users.noreply.github.com>
2022-10-10 13:02:54 -04:00
d7c8b70cc3 feat: add eth-wire (#20) 2022-10-10 09:46:02 -07:00
a759201b40 refactor(stages): split Pipeline::run (#30) 2022-10-10 15:52:23 +02:00
15479457ab chore: nuke src (#31) 2022-10-10 15:35:53 +02:00
72968d758b refactor: pipeline refactor (#23)
* refactor: split stage crate into modules

* refactor: clean up pipeline events

* refactor: internal fn for executing single stage

* refactor: pipeline error

* refactor: move errors to own module

* refactor: misc cleanup

* test: add tests for `opt::max` and `opt::min`

* chore: db errors (#26)

* refactor: replace ext trait with wrapper type

Co-authored-by: Roman Krasiuk <rokrassyuk@gmail.com>
2022-10-10 05:49:45 +02:00
ded56d45ec ci: run against main
previously was against master but we changed the default branch
2022-10-09 12:39:33 -07:00
573d343b66 chore: extend consensus with fork choice state (#27)
* consensus fork choice

* fork_choice -> fork_choice_state
2022-10-09 19:31:57 +02:00
401cd3ec34 chore: clippy (#25) 2022-10-09 10:30:46 +02:00
ffdc374edb chore: ignore .idea (#24) 2022-10-09 10:07:59 +02:00
ae4c31a836 add readme & license (#21)
* add readme

* add license

* fix readme
2022-10-07 18:20:29 -07:00