Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(evm-utils/evm-state): connect to fast_rlp tag/feature of triedb #443

Draft
wants to merge 13 commits into
base: develop
Choose a base branch
from

Conversation

dj8yfo
Copy link
Contributor

@dj8yfo dj8yfo commented Apr 21, 2023

Problem

Summary of Changes

Fixes #

@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch 5 times, most recently from 1590886 to a14406e Compare April 24, 2023 17:32
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 24, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [ ] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [ ] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [ ] roundtrip test
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [ ] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            └── [ ] nested
                ├── [ ] `Transaction`
                │   ├── [ ] `Encodable` stub, `Decodable` stub
                │   └── [ ] nested
                │       └── [ ] `TransactionAction`
                │           ├── [ ] `Encodable` stub, `Decodable` stub
                │           └── [ ] nested
                └── [ ] `UnsignedTransactionWithCaller`
                    ├── [ ] `Encodable` stub, `Decodable` stub
                    └── [ ] nested
                        └── [ ] `UnsignedTransaction`
                            ├── [ ] `Encodable` stub, `Decodable` stub
                            └── [ ] nested
                                └── [ ] `TransactionAction`
                                    └── [ ] `Encodable` stub, `Decodable` stub
@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch from a14406e to 94526a2 Compare April 24, 2023 18:54
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 24, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [ ] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [ ] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [ ] roundtrip test
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            └── [ ] nested
                ├── [ ] `Transaction`
                │   ├── [ ] `Encodable` stub, `Decodable` stub
                │   └── [ ] nested
                │       └── [ ] `TransactionAction`
                │           ├── [ ] `Encodable` stub, `Decodable` stub
                │           └── [ ] nested
                └── [ ] `UnsignedTransactionWithCaller`
                    ├── [ ] `Encodable` stub, `Decodable` stub
                    └── [ ] nested
                        └── [ ] `UnsignedTransaction`
                            ├── [ ] `Encodable` stub, `Decodable` stub
                            └── [ ] nested
                                └── [ ] `TransactionAction`
                                    └── [ ] `Encodable` stub, `Decodable` stub
@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch from 94526a2 to fdc0457 Compare April 24, 2023 19:08
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 24, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            └── [ ] nested
                ├── [ ] `Transaction`
                │   ├── [ ] `Encodable` stub, `Decodable` stub
                │   └── [ ] nested
                │       └── [ ] `TransactionAction`
                │           ├── [ ] `Encodable` stub, `Decodable` stub
                │           └── [ ] nested
                └── [ ] `UnsignedTransactionWithCaller`
                    ├── [ ] `Encodable` stub, `Decodable` stub
                    └── [ ] nested
                        └── [ ] `UnsignedTransaction`
                            ├── [ ] `Encodable` stub, `Decodable` stub
                            └── [ ] nested
                                └── [ ] `TransactionAction`
                                    └── [ ] `Encodable` stub, `Decodable` stub
@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch from fdc0457 to 4377b63 Compare April 24, 2023 20:50
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 24, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            └── [ ] nested
                ├── [ ] `Transaction`
                │   ├── [ ] `Encodable` stub, `Decodable` stub
                │   └── [ ] nested
                │       └── [ ] `TransactionAction`
                │           ├── [ ] `Encodable` stub, `Decodable` stub
                │           └── [ ] nested
                └── [ ] `UnsignedTransactionWithCaller`
                    ├── [ ] `Encodable` stub, `Decodable` stub
                    └── [ ] nested
                        └── [ ] `UnsignedTransaction`
                            ├── [ ] `Encodable` stub, `Decodable` stub
                            └── [ ] nested
                                └── [ ] `TransactionAction`
                                    └── [ ] `Encodable` stub, `Decodable` stub
@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch from 4377b63 to 469504d Compare April 24, 2023 20:56
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 25, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            ├── [ ] roundtrip test
            ├── [ ] move old impl to #[cfg(test)]
            └── [ ] nested
                ├── [ ] `Transaction`
                │   ├── [ ] `Encodable` stub, `Decodable` stub
                │   ├── [ ] roundtrip test
                │   ├── [ ] move old impl to #[cfg(test)]
                │   └── [ ] nested
                │       └── [ ] `TransactionAction`
                │           ├── [ ] `Encodable` stub, `Decodable` stub
                │           └── [ ] nested
                └── [ ] `UnsignedTransactionWithCaller`
                    ├── [ ] `Encodable` stub, `Decodable` stub
                    ├── [ ] roundtrip test
                    ├── [ ] move old impl to #[cfg(test)]
                    └── [ ] nested
                        └── [ ] `UnsignedTransaction`
                            ├── [ ] `Encodable` stub, `Decodable` stub
                            ├── [ ] roundtrip test
                            ├── [✓] `signing_rlp_append` -> `signing_rlp_append_old`, `#[cfg(test)]`
                            ├── [✓] `signining_hash` -> `signing_hash_old`, `#[cfg(test)]`
                            ├── [ ] `#[test] sign_check_signature` -> extend with equality to fastrlpmethods
                            ├── [ ] move old impl to #[cfg(test)]
                            └── [ ] nested
                                └── [ ] `TransactionAction`
                                    ├── [ ] `Encodable` stub, `Decodable` stub
                                    ├── [ ] roundtrip test
                                    └── [ ] move old impl to #[cfg(test)]
@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch from 469504d to 720b5be Compare April 25, 2023 10:04
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 25, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            ├── [ ] roundtrip test
            ├── [ ] move old impl to #[cfg(test)]
            └── [ ] nested
                ├── [ ] `Transaction`
                │   ├── [ ] `Encodable` stub, `Decodable` stub
                │   ├── [ ] roundtrip test
                │   ├── [ ] move old impl to #[cfg(test)]
                │   └── [ ] nested
                │       └── [✓] `TransactionAction`
                │           ├── [✓] `Encodable` stub, `Decodable` stub
                │           └── [✓] nested
                └── [ ] `UnsignedTransactionWithCaller`
                    ├── [ ] `Encodable` stub, `Decodable` stub
                    ├── [ ] roundtrip test
                    ├── [ ] move old impl to #[cfg(test)]
                    └── [ ] nested
                        └── [✓] `UnsignedTransaction`
                            ├── [✓] `Encodable` stub, `Decodable` stub
                            ├── [✓] roundtrip test
                            ├── [✓] move old impl to #[cfg(test)]
                            └── [✓] nested
                                └── [✓] `TransactionAction`
                                    ├── [✓] `Encodable` stub, `Decodable` stub
                                    ├── [✓] roundtrip test
                                    └── [ ] move old impl to #[cfg(test)]
@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch from a6a51c2 to 7d56936 Compare April 26, 2023 08:12
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 26, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            ├── [ ] roundtrip test
            ├── [ ] move old impl to #[cfg(test)]
            └── [ ] nested
                ├── [ ] `Transaction`
                │   ├── [ ] `Encodable` stub, `Decodable` stub
                │   ├── [ ] roundtrip test
                │   ├── [ ] move old impl to #[cfg(test)]
                │   └── [ ] nested
                │       └── [✓] `TransactionAction`
                │           ├── [✓] `Encodable` stub, `Decodable` stub
                │           └── [✓] nested
                └── [ ] `UnsignedTransactionWithCaller`
                    ├── [ ] `Encodable` stub, `Decodable` stub
                    ├── [ ] roundtrip test
                    ├── [ ] move old impl to #[cfg(test)]
                    └── [ ] nested
                        └── [✓] `UnsignedTransaction`
                            ├── [✓] `Encodable` stub, `Decodable` stub
                            ├── [✓] roundtrip test
                            ├── [✓] move old impl to #[cfg(test)]
                            ├── [✓] return derived `Encodable`, `Decodable` impl
                            └── [✓] nested
                                └── [✓] `TransactionAction`
                                    ├── [✓] `Encodable` stub, `Decodable` stub
                                    ├── [✓] roundtrip test
                                    └── [ ] move old impl to #[cfg(test)]
dj8yf0μl and others added 8 commits April 26, 2023 22:41
* Feature: add `geth` dump parsing

* Fix: use raw `DatabaseTrieMut`

* Chore: inline `flush_changes`, `set_account_state`, `ext_storage` into `set_initial`

* Refactoring: extract state generation from `EvmBackend` into `Storage`

* Refactor: renaming

* Fix: few various panics

* Feature: add optional `state_root` verification

* Feature: dynamically determine importing accounts chunk size

* Fix: properly calculate heap size, open evm_state after import

* Fix: accounts counter (pointer), better naming, fmt

* Fix: flushing storage by chunks

* Fix: tests

* Docs: add notes about deleting files

* Fix: correctly handle state_root

* Feature: extract evm dump functionality into separate trait

* Fix: move tests to separate module

* Fix: add `#[cfg(test)]` attributes to test modules

* Fix: better public API

* Fix: clippy

* Feature: add tests for `GethAccountExtractor`

* Fix: add sample dump

* Adjust CLI

* Fix: reduce code duplication

* Fix: unwrap one time used functions

* Fix: split account batching and storage writing procedures.

* Fix: add missing `state_root` assert
…elas#439)

* state replication implementation

* use any address for a server

* update link to a triedb dep

* update service with a new triedb implementation

* Use previous triedb version for interface

* use async db interface

* update reply for a changeset route

* update a link to the triedb dep

* one more build fix

* update path to an archive

* update api, change names

* update replica server

* chore(triedb): update triedb repo link

* feat(replica-node): state-diff work

* chore(all): partially fix/ignore clippy on 1.63

* feat(replica-node): state-diff client/server

* feat(replica-node): continue light archive node work

* feat(replica-lib,replica-node): add secondary storage variant

* chore(replica-lib): reivew module structure fixes

* chore(replica-node): module structure review comments

* feat(replica-lib,replica-node): master blocknum range routine

* feat(replica-lib,replica-node): bootstrap state with SpliceCountStack

* feat(replica-node): client skip height if already present

* feat(replica-node): errors on tree consistency broken
{child nodes unexpectedly not found}

* feat(evm-state): expose api for secondary mode try_catch_up_with_primary

* feat(replica-lib): add background task for syncing secondary with primary

* feat(replica-node): skip bootstrap height, if already present

* chore(replica-lib, replica-node):: replace anyhow with thiserror

* chore(replica-lib): split into finer modules

* chore(replica-lib): state diff request check hashes server-side;
better error-handling

* chore(replica-lib): increase threshold on state bootstrap
make client issue requests close to the threshold instead of 1/20 of threshold;

* chore(replica-lib): add debug print on duration of EvmHeightIndex fetches

* chore(replica-node): cut away poc implementation details
Cut away details, all of which are sure to be changed in next iteration

* [ur] feat(evm-utils/evm-height-rangemap):  evm-height-rangemap tool (velas#431)

* feat(evm-utils/evm-height-rangemap): evm-height-rangemap tool
1. send heights via channel
2. fetch height from cache or wait until fetched indefinetely (Option<H256>)
3. timeout in LedgerStorage
4. correct Err handling (panic in worker when giving up on error to fetch a new height, channel closed, panic in worker sending heights to channel)
5. BlockNotFound(..) results in None : Option<H256>
6. addded backon for retries with exponential backoff
7. split ranges into subranges for multiple LedgerStorage workers
8. add checking of nodes presence in rocksdb
9. add persisting of results to range_map.json of destination

* chore(evm-block-recovery): add explicit error message

* chore(evm-block-recovery): use single connection for bigtable_fetcha
clone single connection for workers instead of using multiple distinct connections

* chore(evm-state::storage): create two_modes enum

* chore(evm-block-recovery): routines::scan_evm_state_roots review fixes 2

* feat(replica-node): reimplement RangeJSON

1. allow for optional finer range storing for detailed view of a client's progress, a rangemap
2. reintroduce Mutex, as it's gonna be used concurrently on server anyway, and very likely, on client too
3. add custom logic of computing next chunk of work
3.1. all heights outside of covered `coarse` range, reachable by `JUMP_OVER_ABYSS_GAP`from `KICKSTART_POINT` param
3.2 add tests
4. compute the right `JUMP_OVER_ABYSS_GAP` constant from old_formatted.json
4.1. remove server threshold param

* feat(replica-node): client sync algorithm shell: outline, `prefetch_height` call

- [x] outline
  - [x] bootstarp client with multiple connections, as `tonic::client::Grpc::unary` takes `&mut self` receiver
  - [x] query `SERVER_RANGE`
  - [x] bootstrap logic
    - [x] if own range empty, bootstrap to first height available in range
    - [x] remove boostrap_height client cli param
  - [x]  `SERVER_RANGE` check server range <Wed Mar 22 10:30:22 PM EET 2023>
    - [x] if own range not empty, compute diff range from self range.start as `KICKSTART_POINT` <Wed Mar 22 10:30:22 PM EET 2023>
      - [x]  process if not empty , break `SERVER_RANGE` <Wed Mar 22 10:31:59 PM EET 2023>
    - [x] compute diff range from self range.end as `KICKSTART_POINT` <Wed Mar 22 10:30:22 PM EET 2023>
      - [x]  process if not empty , break `SERVER_RANGE` <Wed Mar 22 10:31:59 PM EET 2023>
    - [x] if both are empty, sleep before next iteration
  - [x] add retryables submodule
    - [x] add retried wrapper around get_evm_confirmed_state_root
- [x] implement new `prefetch_height`
  - [x] place `prefetch_height` logic stub in overall algorithm shell; if kickstart point is not found on server, sleep before next iteration
    - [x] or panic!, if wrong chain
  - [x]  `prefetch_height_retried`
    - [x]  classify error cases, which should be thrown through
  - [x]  add prefetch_height to boostrap as well: no point bootstrapping the wrong chain

* feat(replica-node): client sync algorithm shell ; add `prefetch_range` call to `EvmHeightIndex`

- [x] add `prefetch_range` call to `EvmHeightIndex`
  - [x] add method to trait
    - [x] noop implementation for `LedgerStorage`
  - [x] add `prefetch_range_retried` default impl to `EvmHeightIndex`

* feat(replica-node): create `LedgerStorageCached` as an implementation of `EvmHeightIndex`

* feat(replica-node): client sync algorithm shell; implement `prefetch_range` grpc call

- [x] implement `prefetch_range` grpc call
  - [x] singe try on server, no point in retrying
  - [x] `prefetch_range_retried` on client grpc
  - [x] move `ChunkedRange` iterator into `range_processor.rs` code
    - [x] resplit incoming range vector into `MAX_PREFETCH_RANGE_CHUNK`-s
  - [x] put `kickstart_point` into its own struct/module (`Arc<Mutex<BlockNum>>`)
    - [x] set its initial value to one passed in as argument
  - [x] process each subrange, taking in `kickstart_point`, and returning one `Result<kiskstart_point>`
  - [x] issue bigtable.`prefetch_roots_retried` at the start of each range
  - [x] issue `prefetch_range_retried` to server at the start of each range
  - [x] test interactively

* feat(replica-node): client sync algorithm shell; `get_state_diff` call cut out pure

    - [x] `get_state_diff` call cut out pure
      - [x] `download_and_apply_diff` -> cut out `get_diff`
        - [x] classify server errors, which mean give up, no retries `Result<, StageOneError>`
          - [x] failed_precondition
            - [x]  `ServerError::HashMismatch` fail fast
            - [x]  `ServerProtoError::StateDiffBlocksTooFar { .. }` fail fast
          - [x] not_found
            - [x]  `ServerError::EvmHeight::Bigtable::BlockNotFound` fail fast
            - [x]  `ServerError::Lock::LockRootNotFound` fail fast
            - [x]  `ServerError::NotFoundNested` fail fast
          - [x] illegal argument
            - [x]  `EvmHeightError::ZeroHeightForbidden` fail fast
            - [x]  `ServerProtoError::EmptyHash` : fail fast
            - [x]  `ServerProtoError::CouldNotParseHash(..)` : fail fast
          - [x] test
        - [x]  change `stage_one` signature
      - [x] move `get_and_apply` diff to its own module, it doesn't belong to proto
        - [x] extract stages
          - [x] stage1
            - [x] `get_diff_retried`
          - [x] stage2
          - [x] stage3

* feat(replica-node): client sync algorithm shell; kilosievert module

    - [x] write `kilosievert` module
      - [x] `concrete_chamber`
      - [x] `steel_container`
        - [x] make constants `max_concrete_chamber_wall_inches` and `max_steel_container_wall_inches` configurable via cli flags
      - [x] move `get_evm_confirmed_state_root_retried(target)` into async task for cases where block is absent on bt(testnet)

* chore(replica-node): add bootstrap progress hint...

* feat(replica-node): syntactic shugar and running totals debug info

[✓] syntactic shugar and running totals debug info
├── [✓] forbid backwards ranges (< self.range.start)
│   ├── [✓] remove diff against left kickstart_point
│   └── [✓] amend tests
├── [✓] running total of number of nodes inserted over blockrange reported every 1000 nodes
└── [✓] local
    ├── [✓] `eager_replica_balanced `
    │   ├── [✓] 05:43 s
    │   ├── [✓] 05:41 s
    │   ├── [✓] 05:37 s
    │   ├── [✓] 05:29 s
    │   └── [✓] 05:33 s
    ├── [✓] `not that bad replica`
    │   ├── [✓] 05:14 s
    │   ├── [✓] 05:09 s
    │   ├── [✓] 05:13 s
    │   ├── [✓] 05:13 s
    │   └── [✓] 05:10 s
    ├── [✓] `eager_replica_simple`
    │   ├── [✓] 05:20 s
    │   ├── [✓] 05:26 s
    │   ├── [✓] 05:27 s
    │   ├── [✓] 05:28 s
    │   └── [✓] 05:23 s
    └── [✓] `eager_replica_balanced` large channel size (200)
        └── [✓] 05:38 s

* feat(replica-node):  jump over large gaps: move constant `MAX_CLIENT_WORK_CHUNK` to a param in `RangeJSON` logic

[✓] jump over large gaps: move constant `MAX_CLIENT_WORK_CHUNK` to a param in `RangeJSON` logic
├── [✓] remove `upward` flag in `Entry`
└── [✓] add stuff in pipeline to increase `MAX_CLIENT_WORK_CHUNK` from min 10x -> `MAX_JUMP_OVER_ABYSS_GAP` if range apply routine results in range not changed
    └── [✓] simply increase constant

* feat(replica-node):  bootstrap requests backon implement to eat up errors

[✓] bootstrap requests backon implement to eat up errors
├── [✓] `get_evm_confirmed_state_root` ->  `get_evm_confirmed_state_root_retried`
│   └── [✓] outline
├── [✓] ...`Self::get_array_of_nodes`
│   └── [✓] classify business logic errors
│       ├── [✓] `ServerProtoError::ExceededMaxChunkGetArrayOfNodes`,
│       ├── [✓] `ServerProtoError::CouldNotParseHash`
│       └── [✓] `ServerError::NotFoundTopLevel`
└── [✓] simplify retry code, replace `backon` with маленьке звiрятко загортае шоколад у фольгу

* feat(replica-node):  split errors in finer modules: `common`, `server` and `client`

[✓] split errors in finer modules: `common`, `server` and `client`
├── [✓] common
│   ├── [✓] lock
│   └── [✓] evm_height
├── [✓] server
│   ├── [✓] proto
│   └── [✓] move to lock error
│       ├── [✓] `NotFound`
│       └── [✓] `NotFoundNested`
└── [✓] client
    ├── [✓] proto
    ├── [✓] check_height
    ├── [✓] range_sync
    │   └── [✓] stages
    │       ├── [✓] one
    │       │   └── [✓] request
    │       │       └── [✓] network
    │       │           └── [✓] replace `one::request::network::Error::from_with_metadata` with `From<tonic::Status>`
    │       └── [✓] two
    ├── [✓] bootstrap
    │   └── [✓] fetch_nodes
    │       └── [✓] get
    │           └── [✓] replace `bootstrap::fetch_nodes::get::Error::from_with_metadata` with `From<tonic::Status>`
    └── [✓] run a few tests locally
        ├── [✓] with missing starting height
        └── [✓] normal

* chore(replica-lib): clippy

* feat(replica-node):  add `bigtable`, `local`, `json` cli flag for getting source of data

[x] add timeout to instantiated LedgerStorage (bt) (hangs noticed in testing)
[x] add timeout to instantiated state_api grpc client

[✓] add `bigtable`, `solana_blockstore`, `json` cli flag for getting source of data (to __triedb_repica__)
├── [✓] add `scratchpad` to evm-block-recovery for conveniences
├── [✓] implement `bigtable`, `ReadRange`
│   ├── [✓] fix `EvmHeight::get_evm_confirmed_state_root` to return option
│   │   └── [✓] (possibly very long on testnet on ranges of missing blocks)
│   ├── [✓] add/test `get_first_available_block`
│   │   ├── [✓] testnet
│   │   └── [✓] mainnet
│   └── [✓] implement `get_last_available_block` via `bigtable.get_evm_confirmed_full_blocks_nums` call (with start hint)
│       ├── [✓] testnet
│       ├── [✓] mainnet
│       └── [✓] add check to service start, if it's empty after hinting
│           └── [✓] test at `triedb` server start
│               └── [✓] failure with large default hint on testnet
├── [✓] implement `local` `ReadRange`
│   └── [✓] `get_first_available_block` and `get_last_available_block` (for range)
├── [✓] add flags to switch between json and stuff (on __server__)
│   ├── [✓] add optional flag _blockstore_path_
│   ├── [✓] _range_source_
│   │   ├── [✓] `json`
│   │   │   ├── [✓] optional flag _range_file_, which is required now
│   │   │   └── [✓] retest
│   │   ├── [✓] `bigtable`
│   │   │   └── [✓] widen `ReadRange` and `WriteRange` methods signature to be result with `evm_height::Error`
│   │   └── [✓] `solana_blockstore`
│   │       └── [✓] test
│   └── [✓] _height_index_source_ - it's separate from range
│       ├── [✓] `bigtable`
│       │   └── [✓] optional flag to support len hinting `ENV_MAINNET_HINT` -> flag; `bigtable_length_hint`
│       │       └── [✓] test testnet
│       └── [✓] `solana_blockstore`
│           ├── [✓] use `Box<dyn EvmHeight>` instead of `S: EvmHeight`
│           │   ├── [✓] removed `where S: EvmHeightIndex + Send + Sync + 'static,`
│           │   └── [✓] on __server__, on __client__ `Arc<dyn EvmHeight>` may be required due to `Clone` used extensively
│           └── [✓] `solana_blockstore`
│               └── [✓] implement `EvmHeight`
└── [✓] perform test with 2 `solana_blockstore` values  startup : Ok(62793454..62816191)
    ├── [✓] no sync for secondary `solana_blockstgore` implemented in `triedb_replica`
    └── [✓] increase timeout for client from 20 sec -> 60 sec

[x] fix clippy

* feat(velas-validator): integrate evm state rpc server into validator

[✓] figure out the structure of the output command
├── [✓] add error count for process nodes stages instead of printing errors to log (_replica-lib_)
├── [✓] split `start_and_join` into `start`, and `join` is already there
├── [✓] `evm-state-rpc-port` -> `ValidatorConfig.evm_state_rpc_port`
│   └── [✓] `pub evm_state_rpc_port: Option<SocketAddr>`,
├── [✓] `solana_replica_lib::triedb::Config` -> `replica-lib/src/triedb/mod.rs`
├── [✓] if `evm-state-archive` specified  check for `evm-state-rpc-port`
│   └── [✓] if port specified  `Config::parse_validator(&matches)?`
│       └── [✓] clone Arc<Blockstore> for `solana_blockstore`
├── [✓] test
│   ├── [✓] `bigtable`
│   └── [✓] `solana_blockstore` (start range ...)
│       └── [✓] `BlockstoreError::SlotCleanedUp` for faster error traversal (hangs)
├── [✓] fix clippy
├── [✓] make tests compile
└── [✓] fix syncup secondary issue for `standalone` run with `solana_blockstore`
    └── [✓] test

* chore(clippy): fix

* feat(replica-node,velas-validator):  missing cli args for working with large gaps on imperfect NEW_ARCHIVE

[✓] missing cli args for working with large gaps on imperfect NEW_ARCHIVE
├── [✓] client
│   ├── [✓] timeout
│   │   └── [✓] `grpc-timeout-sec` u64
│   └── [✓] height diff (#[doc(hidden)])
│       └── [✓] `max-height-diff` usize
└── [✓] server
    └── [✓] height diff, print error to log if lower than min VALUE
        ├── [✓] `parse_standalone` call site
        │   └── [✓] `max-height-diff` usize
        └── [✓] `parse_validator` call site
            └── [✓] `evm-state-rpc-max-height-diff` usize

* chore(replica-node): increase db_workers permits required on large height diffs

[✓] missing cli args for working with large gaps on imperfect NEW_ARCHIVE
├── [✓] client
│   ├── [✓] timeout
│   │   └── [✓] `grpc-timeout-sec` u64
│   ├── [✓] height diff (#[doc(hidden)])
│   │   └── [✓] `max-height-diff` usize
│   └── [✓] add error on init if `db_workers` param is lower than `DB_SEMAPHORE_PERMITS_PER_LARGE_DIFF`
└── [✓] server
    └── [✓] height diff, print error to log if lower than min VALUE
        ├── [✓] `parse_standalone` call site
        │   ├── [✓] `max-height-diff` usize
        │   └── [✓] make server whisper curses if this param is specified as too low on start (10_000)
        └── [✓] `parse_validator` call site
            └── [✓] `evm-state-rpc-max-height-diff` usize

* chore(solana-ledger): review fix, add comment to new api

* chore(replica-node): add clap required_if arg properties

* chore(clippy): clippy

* chore(solana-logger): attempt a stupid build fix

---------

Co-authored-by: Julian Pokrovsky <juliankul@gmail.com>
* fix(evm-utils/evm-state): remove first part of features of unorthodox rust-rocksdb

[ ] revert `rust-rocksdb` to orthodox version effort
└── [✓] first revert effort with inner traits made visible
    ├── [✓] link everything to tag where stuff wasn't available
    ├── [✓] [issue orthodox rust-rocksdb v1](velas#432)
    │   └── [✓] define new trait `VelasDBCommon`
    │       ├── [✓] method `pub fn flush(&self) -> Result<(), Error> {`
    │       └── [✓] `pub fn cancel_all_background_work(&self, wait: bool) {`
    └── [✓] remove `HACK` annotations

* fix(ledger,evm-utils/evm-state): bump rocksdb to v0.20.1 [orthodox]

* chore(**/*): update triedb tag

---------
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            ├── [ ] roundtrip test
            ├── [ ] move old impl to #[cfg(test)]
            └── [ ] nested
                ├── [ ] `Transaction`
                │   ├── [ ] `Encodable` stub, `Decodable` stub
                │   ├── [ ] roundtrip test
                │   ├── [ ] move old impl to #[cfg(test)]
                │   └── [ ] nested
                │       └── [✓] `TransactionAction`
                │           ├── [✓] `Encodable` stub, `Decodable` stub
                │           └── [✓] nested
                └── [✓] `UnsignedTransactionWithCaller`
                    ├── [✓] `Encodable` stub, `Decodable` stub
                    ├── [✓] roundtrip test
                    ├── [ ] move old impl to #[cfg(test)]
                    └── [ ] nested
                        └── [✓] `UnsignedTransaction`
                            ├── [✓] `Encodable` stub, `Decodable` stub
                            ├── [✓] roundtrip test
                            ├── [✓] move old impl to #[cfg(test)]
                            ├── [✓] return derived `Encodable`, `Decodable` impl
                            └── [✓] nested
                                └── [✓] `TransactionAction`
                                    ├── [✓] `Encodable` stub, `Decodable` stub
                                    ├── [✓] roundtrip test
                                    └── [ ] move old impl to #[cfg(test)]
@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch from 1a36a7c to ba8ba76 Compare April 26, 2023 19:58
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 26, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            ├── [ ] roundtrip test
            ├── [ ] move old impl to #[cfg(test)]
            └── [ ] nested
                ├── [ ] `Transaction`
                │   ├── [ ] `Encodable` stub, `Decodable` stub
                │   ├── [ ] roundtrip test
                │   ├── [ ] move old impl to #[cfg(test)]
                │   └── [ ] nested
                │       └── [✓] `TransactionAction`
                │           ├── [✓] `Encodable` stub, `Decodable` stub
                │           └── [✓] nested
                └── [ ] `UnsignedTransactionWithCaller`
                    ├── [ ] `Encodable` stub, `Decodable` stub
                    ├── [ ] roundtrip test
                    ├── [ ] move old impl to #[cfg(test)]
                    └── [ ] nested
                        └── [✓] `UnsignedTransaction`
                            ├── [✓] `Encodable` stub, `Decodable` stub
                            ├── [✓] roundtrip test
                            ├── [✓] move old impl to #[cfg(test)]
                            ├── [✓] return derived `Encodable`, `Decodable` impl
                            └── [✓] nested
                                └── [✓] `TransactionAction`
                                    ├── [✓] `Encodable` stub, `Decodable` stub
                                    ├── [✓] roundtrip test
                                    └── [ ] move old impl to #[cfg(test)]
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 26, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            ├── [ ] roundtrip test
            ├── [ ] move old impl to #[cfg(test)]
            └── [ ] nested
                ├── [ ] `Transaction`
                │   ├── [ ] `Encodable` stub, `Decodable` stub
                │   ├── [ ] roundtrip test
                │   ├── [ ] move old impl to #[cfg(test)]
                │   └── [ ] nested
                │       └── [✓] `TransactionAction`
                │           ├── [✓] `Encodable` stub, `Decodable` stub
                │           └── [✓] nested
                └── [ ] `UnsignedTransactionWithCaller`
                    ├── [✓] `Encodable` stub, `Decodable` stub
                    ├── [✓] roundtrip test
                    ├── [ ] move old impl to #[cfg(test)]
                    └── [ ] nested
                        └── [✓] `UnsignedTransaction`
                            ├── [✓] `Encodable` stub, `Decodable` stub
                            ├── [✓] roundtrip test
                            ├── [✓] move old impl to #[cfg(test)]
                            ├── [✓] return derived `Encodable`, `Decodable` impl
                            └── [✓] nested
                                └── [✓] `TransactionAction`
                                    ├── [✓] `Encodable` stub, `Decodable` stub
                                    ├── [✓] roundtrip test
                                    └── [ ] move old impl to #[cfg(test)]
@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch 2 times, most recently from 948e475 to ac2ca59 Compare April 27, 2023 09:49
@dj8yfo
Copy link
Contributor Author

dj8yfo commented Apr 27, 2023

this proves to be somewhat problematic to rebase onto develop instead of merge

[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [✓] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [✓] __evm-utils/evm-state/src/transactions.rs__:
        └── [✓] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            ├── [✓] roundtrip test
            │   └── [✓] split roundtrip test in 3
            ├── [✓] move old impl to #[cfg(test)]
            └── [✓] nested
                ├── [✓] `Transaction`
                │   ├── [✓] `Encodable` stub, `Decodable` stub
                │   ├── [✓] roundtrip test
                │   ├── [✓] move old impl to #[cfg(test)]
                │   └── [✓] nested
                │       └── [✓] `TransactionAction`
                │           ├── [✓] `Encodable` stub, `Decodable` stub
                │           ├── [✓] nested
                │           └── [ ] move old impl to #[cfg(test)]
                └── [✓] `UnsignedTransactionWithCaller`
                    ├── [✓] `Encodable` stub, `Decodable` stub
                    ├── [✓] roundtrip test
                    ├── [✓] move old impl to #[cfg(test)]
                    └── [✓] nested
                        └── [✓] `UnsignedTransaction`
                            ├── [✓] `Encodable` stub, `Decodable` stub
                            ├── [✓] roundtrip test
                            ├── [✓] move old impl to #[cfg(test)]
                            ├── [✓] return derived `Encodable`, `Decodable` impl
                            └── [✓] nested
                                └── [✓] `TransactionAction`
                                    ├── [✓] `Encodable` stub, `Decodable` stub
                                    ├── [✓] roundtrip test
                                    └── [ ] move old impl to #[cfg(test)]
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 27, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            ├── [ ] roundtrip test
            ├── [ ] move old impl to #[cfg(test)]
            └── [ ] nested
                ├── [✓] `Transaction`
                │   ├── [✓] `Encodable` stub, `Decodable` stub
                │   ├── [✓] roundtrip test
                │   ├── [ ] move old impl to #[cfg(test)]
                │   └── [ ] nested
                │       └── [✓] `TransactionAction`
                │           ├── [✓] `Encodable` stub, `Decodable` stub
                │           └── [✓] nested
                └── [✓] `UnsignedTransactionWithCaller`
                    ├── [✓] `Encodable` stub, `Decodable` stub
                    ├── [✓] roundtrip test
                    ├── [ ] move old impl to #[cfg(test)]
                    └── [ ] nested
                        └── [✓] `UnsignedTransaction`
                            ├── [✓] `Encodable` stub, `Decodable` stub
                            ├── [✓] roundtrip test
                            ├── [✓] move old impl to #[cfg(test)]
                            ├── [✓] return derived `Encodable`, `Decodable` impl
                            └── [✓] nested
                                └── [✓] `TransactionAction`
                                    ├── [✓] `Encodable` stub, `Decodable` stub
                                    ├── [✓] roundtrip test
                                    └── [ ] move old impl to #[cfg(test)]
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 27, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [ ] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            ├── [ ] roundtrip test
            ├── [ ] move old impl to #[cfg(test)]
            └── [ ] nested
                ├── [✓] `Transaction`
                │   ├── [✓] `Encodable` stub, `Decodable` stub
                │   ├── [✓] roundtrip test
                │   ├── [ ] move old impl to #[cfg(test)]
                │   └── [ ] nested
                │       └── [✓] `TransactionAction`
                │           ├── [✓] `Encodable` stub, `Decodable` stub
                │           └── [✓] nested
                └── [✓] `UnsignedTransactionWithCaller`
                    ├── [✓] `Encodable` stub, `Decodable` stub
                    ├── [✓] roundtrip test
                    ├── [ ] move old impl to #[cfg(test)]
                    └── [ ] nested
                        └── [✓] `UnsignedTransaction`
                            ├── [✓] `Encodable` stub, `Decodable` stub
                            ├── [✓] roundtrip test
                            ├── [✓] move old impl to #[cfg(test)]
                            ├── [✓] return derived `Encodable`, `Decodable` impl
                            └── [✓] nested
                                └── [✓] `TransactionAction`
                                    ├── [✓] `Encodable` stub, `Decodable` stub
                                    ├── [✓] roundtrip test
                                    └── [ ] move old impl to #[cfg(test)]
@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch from a6ce0dc to f4ddf8f Compare April 27, 2023 17:44
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 27, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [ ] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [ ] __evm-utils/evm-state/src/transactions.rs__:
        └── [✓] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            ├── [✓] roundtrip test
            │   └── [✓] split roundtrip test in 3
            ├── [ ] move old impl to #[cfg(test)]
            └── [ ] nested
                ├── [✓] `Transaction`
                │   ├── [✓] `Encodable` stub, `Decodable` stub
                │   ├── [✓] roundtrip test
                │   ├── [ ] move old impl to #[cfg(test)]
                │   └── [ ] nested
                │       └── [✓] `TransactionAction`
                │           ├── [✓] `Encodable` stub, `Decodable` stub
                │           └── [✓] nested
                └── [✓] `UnsignedTransactionWithCaller`
                    ├── [✓] `Encodable` stub, `Decodable` stub
                    ├── [✓] roundtrip test
                    ├── [ ] move old impl to #[cfg(test)]
                    └── [ ] nested
                        └── [✓] `UnsignedTransaction`
                            ├── [✓] `Encodable` stub, `Decodable` stub
                            ├── [✓] roundtrip test
                            ├── [✓] move old impl to #[cfg(test)]
                            ├── [✓] return derived `Encodable`, `Decodable` impl
                            └── [✓] nested
                                └── [✓] `TransactionAction`
                                    ├── [✓] `Encodable` stub, `Decodable` stub
                                    ├── [✓] roundtrip test
                                    └── [ ] move old impl to #[cfg(test)]
@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch from f4ddf8f to 48bd65b Compare April 27, 2023 18:52
dj8yfo pushed a commit to dj8yfo/velas-chain that referenced this pull request Apr 27, 2023
[ ] merge [pull request: < fast-rlp >](velas#443)
├── [ ] merge [pull request: < triedb | fast-rlp >](velas/triedb#51)
└── [✓] make minimal changes to make velas-chain compile with both libs used
    ├── [✓] __evm-utils/evm-state/src/types.rs__:
    │   ├── [✓] `Account`
    │   │   ├── [✓] `Encodable` stub, `Decodable` stub
    │   │   ├── [✓] actual impl
    │   │   │   └── [✓] roundtrip test
    │   │   └── [✓] move old impl to #[cfg(test)]
    │   └── [✓] `EthereumReceipt`
    │       ├── [✓] `Encodable` stub, `Decodable` stub
    │       ├── [✓] roundtrip test
    │       ├── [✓] move old impl to #[cfg(test)]
    │       └── [✓] nested
    │           ├── [✓] `ethbloom::Bloom`
    │           │   ├── [✓] `Encodable` stub, `Decodable` stub
    │           │   ├── [✓] nested
    │           │   └── [✓] roundtrip test
    │           └── [✓] `ethereum::Log`
    │               ├── [✓] `Encodable` stub, `Decodable` stub
    │               ├── [✓] nested
    │               └── [✓] roundtrip test
    └── [✓] __evm-utils/evm-state/src/transactions.rs__:
        └── [✓] `TransactionInReceipt`
            ├── [✓] `Encodable` stub, `Decodable` stub
            ├── [✓] roundtrip test
            │   └── [✓] split roundtrip test in 3
            ├── [✓] move old impl to #[cfg(test)]
            └── [✓] nested
                ├── [✓] `Transaction`
                │   ├── [✓] `Encodable` stub, `Decodable` stub
                │   ├── [✓] roundtrip test
                │   ├── [✓] move old impl to #[cfg(test)]
                │   └── [✓] nested
                │       └── [✓] `TransactionAction`
                │           ├── [✓] `Encodable` stub, `Decodable` stub
                │           ├── [✓] nested
                │           └── [ ] move old impl to #[cfg(test)]
                └── [✓] `UnsignedTransactionWithCaller`
                    ├── [✓] `Encodable` stub, `Decodable` stub
                    ├── [✓] roundtrip test
                    ├── [✓] move old impl to #[cfg(test)]
                    └── [✓] nested
                        └── [✓] `UnsignedTransaction`
                            ├── [✓] `Encodable` stub, `Decodable` stub
                            ├── [✓] roundtrip test
                            ├── [✓] move old impl to #[cfg(test)]
                            ├── [✓] return derived `Encodable`, `Decodable` impl
                            └── [✓] nested
                                └── [✓] `TransactionAction`
                                    ├── [✓] `Encodable` stub, `Decodable` stub
                                    ├── [✓] roundtrip test
                                    └── [ ] move old impl to #[cfg(test)]
@dj8yfo dj8yfo force-pushed the fast_rlp_move_tag_small_scope branch 2 times, most recently from 0a39eb0 to 6d03e8a Compare April 27, 2023 20:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants