Commit Graph

15716 Commits

Author SHA1 Message Date
dependabot-preview[bot] fed1251030 Bump sysinfo from 0.13.4 to 0.14.13 (#225) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] f017b635a8 Bump hex-literal from 0.2.1 to 0.3.0 (#223) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 33b1780da8 Bump backoff from 0.1.6 to 0.2.1 (#222) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 8121b3f82b Relay dashboard (#191)
* expose metrics for Prometheus

* added preconfigured configs for Prometheus and Grafana

* metrics-related cli args

* fix compilation
2024-04-10 10:28:37 +02:00
Tomasz Drwięga bebb5e6035 Rialto test network setup (#163)
* Dockerfile for OpenEth.

* Add relayer dockerfile.

* Add docker-compose.

* Working on the relay.

* Bump a bunch of deps.

* Change relay branch.

* Running a 3-validators poa network.

* Add bridge nodes.

* Conditional compilation of bridge configs.

* Fix genesis hash.

* Disable features build.

* Disable empty steps.

* Work on sub2eth

* Add some logs.

* More logs.

* Fix compilation.

* Add chain-id parameter to relay.

* Unify bridge-hash.

* Update the hash.

* Ditch sub2eth for now.

* Add some docs & proxy configuration.

* Fixes.

* Fix remaining issues.

* Increase health timeout.

* Make sure to install curl for health monitoring.

* Fix kovan.

* Fix build.

* Create if does not exist.

* Fix benches.

* Revert CLI params requirements.

* cargo fmt --all

* Apply suggestions from code review

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Add some docs.

* Update BRIDGE_HASH to master

* Duplicate compose file.

* Rename testpoa to Rialto.

* Fix borked merge.

* Fix entrypoints to take arguments.

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 00bd13f8cd Exchange pallet benchmarks (#158)
* exchange benchmarks: framework

* updated comment about tx size

Co-authored-by: Tomasz Drwięga <tomasz@parity.io>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky ebdfffc4b1 Fixed best_ethereum_block() call parameters encoding (#188)
* fixed best_ethereum_block() params encoding

* updated versions
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky a7208c05e0 Relay PoA lock-funds transactions proofs (#177)
* relay exchange transaction(s)

* fixed Ethereum::get_block_by_hash

* added exchange trace

* fixed method name

* update for new web3

* svyatonik/rust-web3 -> tomusdrw/rust-web3

* if let Some() -> .expect()

* extracted loops in separate functions

* use yaml references (TIL)

* get eth header with transactions

* cargo fmt --all

* Update primitives/ethereum-poa/src/lib.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Update relays/ethereum/src/ethereum_exchange.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Update relays/ethereum/src/rpc_errors.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Update relays/ethereum/src/exchange.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* removed comment

* Update relays/ethereum/src/ethereum_exchange.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Update relays/ethereum/src/ethereum_exchange.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* module-level comments

* updated readme

* use web3 from crates.io

* added missing fields info in error description

* cargo fmt --all

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 83a3fca5cf Basic tests for sync loop (#182)
* basic sync loop tests

* cargo ftm --all

* SyncLoopTestParams

* move sync loop tests to sync_loop_tests.rs

* cargo fmt --all
2024-04-10 10:28:37 +02:00
dependabot-preview[bot] ae8c82f0e7 Bump ctrlc from 3.1.4 to 3.1.5 (#184) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 221c7e8097 do not panic when logging is enalbed (#180) 2024-04-10 10:28:37 +02:00
Hernando Castano 3236aa8000 Update Substrate to rc4 (#175)
* Bump Substrate to rc4

* Add BaseCallFilter type

* Add DenyUnsafe to SystemApi extension

* Use new ServiceBuilder build functions

* Add BaseCallFilter to test runtimes

* Remove old comments

* Add `rev` and `git` fields back

Turns out that if you don't have these future release candidates will
be used if available. For instance, once `rc5` is released a fresh pull
would use that instead of `rc4` which is what we want.

* Use tag release instead of specific commit

Will make scripted updates easier in the future

* Add short script to update between `rc` versions

* Update scripts/update_rc.sh

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Hernando Castano 002e18a47c Benchmark Ethereum Pallet (#149)
* Add skeleton for worst case import_unsigned_header

* Fix a typo

* Add benchmark test for best case unsigned header import

* Add finality verification to worst case bench

* Move `insert_header()` from mock to test_utils

Allows the benchmarking code to use this without having to pull it in from the mock.

* Add a rough bench to test a finalizing a "long" chain

* Try to use complexity parameter for finality bench

* Improve long finality bench

* Remove stray dot file

* Remove old "worst" case bench

* Scribble some ideas down for pruning bench

* Prune headers during benchmarking

* Clean up some comments

* Make finality bench work for entire range of complexity parameter

* Place initialization code into a function

* Add bench for block finalization with caching

* First attempt at bench with receipts

* Try and trigger validator set change

* Perform a validator set change during benchmarking

* Move `validators_change_receipt()` to shared location

Allows unit tests and benchmarks to access the same helper function
and const

* Extract a test receipt root into a constant

* Clean up description of pruning bench

* Fix cache and pruning tests

* Remove unecessary `build_custom_header` usage

* Get rid of warnings

* Remove code duplication comment

I don't think its entirely worth it to split out so few lines of code.
The benches aren't particularly hard to read anyways.

* Increase the range of the complexity parameter

* Use dynamic number of receipts while benchmarking

As part of this change we have removed the hardcoded TEST_RECEIPT_ROOT
and instead chose to calculate the receipt root on the fly. This will
make tests and benches less fragile.

* Prune a dynamic number of headers
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 1cd7be9214 Backoff on connection-unrelated errors (#178)
* backoff on connection-unrelated errors

* cargo fmt --all

* Fix some typos

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 8fd0a4688f Bump serde_json from 1.0.55 to 1.0.56 (#173) 2024-04-10 10:28:37 +02:00
Denis S. Soldatov aka General-Beck e9a67d334c Add cargo deny (#166)
* Add cargo deny

* deny - master

* Copy deny.toml to .

* cargo deny check

* upload artifacts

* install cargo deny

* typo

* up install cargo deny

* update archive

* typo

* path's

* allow failure cargo deny

* allew failure log

* cargo deny init

* add deny.toml and compare with embark actions

* fix options

* Fix cargo deny.

* Remove cargo audit (same as deny)

Co-authored-by: Tomasz Drwięga <tomasz@parity.io>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 456515e08b Fix sub2eth synchronization (#172)
* ease serde version requirements (to build OE with builtin)

* trace + fix completion notifications

* check incompletion on submit

* fix compilation

* do not ask for synced blocks when queue is empty

* cargo fmt --all

* Update relays/ethereum/src/ethereum_client.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* remove closure

* fn submit_substrate_header() -> Option<RpcError>

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky b5bdbeb518 Sign PoA transactions from wasm env (#155)
* sign PoA transactions from wasm env

* cargo fmt --all
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 201740f149 Create accounts from DepositInto::deposit_into() (#157)
* use deposit_creating in DepositInto

* Update modules/currency-exchange/src/lib.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update primitives/currency-exchange/src/lib.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
dependabot-preview[bot] b497505bc7 Bump derive_more from 0.99.8 to 0.99.9 (#152) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 6d569086bd Bump parking_lot from 0.10.2 to 0.11.0 (#151) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky e39ca0dc16 Runtime benchmarks: start (#136)
* runtime benchmarks: start

* merge tests + benchmarks infrastructure

* fix compilation

* Fix compilation issues with runtime-benchmark feature flag

Mainly involved pulling in correct dependencies and adding some functions
which were called but didn't yet exist.

* Fix broken compilation for tests

* Move header signing methods into trait

* Move signing related test helpers to own module

* Remove comment about feature flag

* Add constants to tests

* Add top level comment for testing utilities

Co-authored-by: Hernando Castano <castano.ha@gmail.com>
2024-04-10 10:28:37 +02:00
Hernando Castano ea45fa8da7 Switch to new RPC interface (#131)
* Move EthereumRpc implementation to Eth client

* Move SubstrateRpc implementation to SubstrateClient

* Update deploy_contract to use new RPC interface

* Fix some types in the Substrate client

* Swap out method bodies in Eth sync loop

* Swap out method bodies in Substrate sync loop

* Remove Client from SourceClient trait return types

* Remove Client from TargetClient trait return types

* Remove client from Source select! arms

* Remove client from Target select! arms

* Add missing mutable refs in Substrate client

* Use mutable references in Source/Target Client traits

* Try and use mutable references in Source/Client trait implementations

* Handle errors more gracefully

* Remove unused imports

* Remove dead_code and unused_variables lints

* Remove usage of `jsonrpsee::RawClient`

By using a `jsonrpsee::Client` we are able to remove all the shared
mutable references required when interacting with the RPC server. This
is convenient as trying to sharing mutable references in code that uses
async/await is a bit of a pain.

However, using a `Client` instead of a `RawClient` is not yet supported
by the `jsonrpsee::rpc_api` macro, so a fork must be used for the moment.

* Clean up dead code and warnings

* Clean up higher level RPCs

Some of the RPCs that were "high level" didn't necessarily belong
as part of the trait, so they were removed.

* Use positional parameters for RPCs

Both Substrate and Ethereum's RPCs use positional (array) parameters,
so in order to be compatible with both we need to make sure that
our API is defined with positional paramters in mind.

* Rename argument for eth_getBlockByNumber

* Remove some unecessary Ok-wraps

* Process client requests synchonously

Before the refactoring the sync loop would wait until a client finished
handling a request before issuing another one. This behaviour was
inadvertently changed during the refactoring leading to race conditions.
This commit makes sure that the previous behaviour is respected.

* Reduce the errors that are considered a connection error

* Only decode bridge contract once

* Set genesis_config at RPC client startup

* Fetch genesis hash in SubstrateRpcClient::new()

* Move Decode error into SubstrateNodeError

* Suppress warnings caused by `rpc_api!`

* Implement From RpcError for String

* Handle Substrate client initalization errors more gracefully

* Remove match in favour of ?

Co-authored-by: Svyatoslav Nikolsky <svyatonik@gmail.com>
2024-04-10 10:28:37 +02:00
Tomasz Drwięga ba3b8537a5 Update web3 dependency. (#140)
* Update web3 dependency.

* Switch to crates.io.
2024-04-10 10:28:37 +02:00
dependabot-preview[bot] d812d58801 Bump structopt from 0.3.14 to 0.3.15 (#148)
Bumps [structopt](https://github.com/TeXitoi/structopt) from 0.3.14 to 0.3.15.
- [Release notes](https://github.com/TeXitoi/structopt/releases)
- [Changelog](https://github.com/TeXitoi/structopt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TeXitoi/structopt/compare/v0.3.14...v0.3.15)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 800c4314fa Bump derive_more from 0.99.7 to 0.99.8 (#146)
Bumps [derive_more](https://github.com/JelteF/derive_more) from 0.99.7 to 0.99.8.
- [Release notes](https://github.com/JelteF/derive_more/releases)
- [Changelog](https://github.com/JelteF/derive_more/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JelteF/derive_more/compare/v0.99.7...v0.99.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
dependabot-preview[bot] b088efee32 Bump async-trait from 0.1.35 to 0.1.36 (#145)
Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.35 to 0.1.36.
- [Release notes](https://github.com/dtolnay/async-trait/releases)
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.35...0.1.36)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
dependabot-preview[bot] c005fdd79c Bump serde from 1.0.112 to 1.0.114 (#144)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.112 to 1.0.114.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.112...v1.0.114)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky f5a00140cb Forbid appending blocks to forks that are competing with finalized chain (#138)
* Error::TryingToFinalizeSibling

* cargo fmt --all

* updated PruningStrategy comment
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky a0c8206684 Move pruning strategy to runtime level (#128)
* move pruning strategy to runtim level

* cargo fmt --all

* Update modules/ethereum/src/lib.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* finalize_headers -> finalize_and_prune_headers

* PruningStrategy::default()

* fn import_of_non_best_block_may_finalize_blocks()

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 7513775676 Bump serde from 1.0.111 to 1.0.112 (#133) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 90641e065a Bump async-trait from 0.1.33 to 0.1.35 (#135) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 1dbbfe2daa Bump serde_json from 1.0.53 to 1.0.55 (#134) 2024-04-10 10:28:37 +02:00
Hernando Castano 650f32342c Add async_trait to SourceClient and TargetClient (#123)
* Use async_trait for SourceClient

* Use aync_trait for TargetClient

* Revert async_trait usage for Source/Target client

This reverts commit f636ffaffd60197e90e887362b4a0c35a0dc5a6c.
This reverts commit 2c15755e8c93318f8e0a605852efe87d72edb769.

I'm having a very hard time finding out what is causing compilation
issues, and I think it's best to start over again.

* Use async_trait for TargetClient

* Use async_trait for SourceClient

* Move where non-async methods are

* RustFmt

* QueuedHeader holds Arc to actual data

* Clean up async return type

Co-authored-by: Svyatoslav Nikolsky <svyatonik@gmail.com>

* Clean up async return type

Co-authored-by: Svyatoslav Nikolsky <svyatonik@gmail.com>

* Clean up async return type

Co-authored-by: Svyatoslav Nikolsky <svyatonik@gmail.com>

* Remove unused import

Co-authored-by: Svyatoslav Nikolsky <svyatonik@gmail.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky b701c2be8d Update Substrate to latest master (rc3) (#129)
* Substrate 606c56d2e2f69f68f3947551224be6a3515dff60

* update jsonrpsee
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 643075f7fa Finality votes cache (#116)
* removeInMemoryStorage + extract Kovan stuff to runtime

* removed comment from the future

* remove redundant conversions

* remove redundant `u8 as usize`

* remove redundant `u8 as usize`

* Update modules/ethereum/src/mock.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* use hex-literal in kovan config

* cargo fmt --all

* extracted insert_header

* cargo fmt --all

* finality cache

* cargo fmt --all

* cargo fmt --all

* impl Default for FinalityVotes

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
Co-authored-by: Hernando Castano <castano.ha@gmail.com>
2024-04-10 10:28:37 +02:00
Tomasz Drwięga ca8b370de2 Revert "Bump async-std from 1.5.0 to 1.6.0" (#127)
* Revert "Bump async-std from 1.5.0 to 1.6.0 (#126)"

This reverts commit 3c15a65929447a12aa23c1f34c9b783d117deed2.

* Add async-std=1.6 to ignore.
2024-04-10 10:28:37 +02:00
dependabot-preview[bot] bad7e7c1d0 Bump async-std from 1.5.0 to 1.6.0 (#126) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 6b13a6f560 Bump async-trait from 0.1.31 to 0.1.33 (#125) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] e0510a5507 Bump jsonrpc-core from 14.1.0 to 14.2.0 (#124) 2024-04-10 10:28:37 +02:00
Hernando Castano 592409d740 Provide overview about project components (#121)
* Add descriptions for folder structure + node

* Beef up descriptions of project components

* Fix list formatting

* Add note about nightly Rust

* Update README.md

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Update README.md

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Reword Tomek's currency-exchange suggestion

* Add link to Substrate's installation guide

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 7294ea44e1 Claim funds on Substrate chain by providing proof of funds locking on PoA chain (#91)
* ethereum exchange module

* continue

* continue

* added tests for exchange module

* moved

* remove println

* move again

* fixes

* removed redundant deps

* cargo fmt

* fund_locks_transaction_decode_works

* cargo fmt --all

* fix error processing

* added some tracing to bridge modules

* more tests

* more tests

* cargo fmt --all

* kovan.rs -> exchange.rs

* Update bin/node/runtime/src/exchange.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* added assumption doc

* Airdrop -> DepositInto

* AsIs -> Identity

* OnTransactionSubmitted

* Transfers::Key = Id

* typo

* Update bin/node/runtime/src/exchange.rs

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* block+tx+proof -> proof { block, tx, proof }

* cargo fmt --all

* docs

* check <-> verify

* parse hex

* extracted exchange primitives to separate crate

* added docs to runtime::exchange module

* Update bin/node/runtime/src/exchange.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* typo

* Update modules/currency-exchange/Cargo.toml

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* add docs to currency-exchange module

* change tests names

* cargo fmt --all

* Update bin/node/runtime/src/exchange.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Update bin/node/runtime/src/exchange.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Update bin/node/runtime/src/exchange.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Update bin/node/runtime/src/exchange.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* Update bin/node/runtime/src/exchange.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* fixed verify_transaction_finalized for siblings of finalized blocks

* cargo fmt --all

* added double spend note

* cargo fmt --all

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky a7e7c895f6 Bump substrate version (#120)
* bump substrate

* cargo fmt --all
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 944859319e Limit number of headers that are pruned within single import Call (#105)
* removeInMemoryStorage + extract Kovan stuff to runtime

* removed comment from the future

* limit number of headers that are pruned within single import Call

* verify that pruning range upper bottom is always-increasing

* Fix typo

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 3ebaf0548d downgrade async-std to 1.5.0 (#119) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky a6a86c21bb Use runtime storage in PoA -> Substrate module tests (#103)
* removeInMemoryStorage + extract Kovan stuff to runtime

* removed comment from the future

* remove redundant conversions

* remove redundant `u8 as usize`

* remove redundant `u8 as usize`

* Update modules/ethereum/src/mock.rs

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>

* use hex-literal in kovan config

* cargo fmt --all

* extracted insert_header

* cargo fmt --all

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 7fb99cd575 Bump serde from 1.0.110 to 1.0.111 (#114) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] e48d943b31 Bump async-std from 1.5.0 to 1.6.0 (#107) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 6ea9a28d90 Bump async-trait from 0.1.30 to 0.1.31 (#106) 2024-04-10 10:28:37 +02:00
Hernando Castano 0e7666e63b RPC Module for Relays (#80)
* Test defining an RPC API

* Add wrapper clients for the RPC API

* Implement most Ethereum RPCs

Does not include RPCs that require the bridge contract.

* Implement a few of the Substrate RPCs

Still missing proper error handling, as well as decoding responses from the
Substrate node.

* Make error handling more ergonomic

* Implement Substrate RPCs that use `state_call`

* Implement rest of Substrate RPCs

* Implement `eth_call` RPC

This can be used to implement higher level requests like fetching Substrate headers
from an Ethereum node.

* Build some of the higher level Ethereum RPCs

Uses the new Ethereum RPC interface to do so

* Build some of the higher level Substrate RPCs

* Remove old Ethereum RPC methods

* Remove old Substrate RPC methods

* Add some documentation to Substrate RPCs

* Fix typo in enum construction

* Revert commits `0f0435d` to `ca75502`

This range of commits was mainly trying to integrate the new RPC interface into the existing
codebase, however this turned out to be a little out of scope for the current PR. Instead this work
will be incorporated into a PR which aims to close #72.

* Add documentation to RPCs

* Rename functions in RPC API to conform to snake_case

* Check that header contains a number and hash

* Put doc comments on trait instead of impl methods

* Remove expect() calls

* Replace runtime API enums with consts

* Accept Bytes when submitting extrinsic

Let's us avoid using a runtime specific Extrinsic.

* Add strictly typed arguments to RPC API

Missing two methods right now, which require a `serde::Deserialize`
implemenation before they can be changed.

* Add `chain_getBlock` Substrate RPC

* Use typed arguments for `eth_estimateGas` and `eth_call`

* Silence dead code warnings

* Add check for logs bloom

* Remove unused variables

* Add documentation to RPC error enums
2024-04-10 10:28:37 +02:00