Commit Graph

15690 Commits

Author SHA1 Message Date
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
Hernando Castano 792226c9fd Use CallRequest type from rust-web3 crate (#101)
* Use `CallRequest` type from rust-web3 crate

* Change CallRequest's `to` field to be optional

Required due to changes in upstream `rust-web3` crate.
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky e16dd14e20 Mute warnings from Substrate <-> Substrate runtime module and relay (#104)
* mute warnings from sub2sub module+relay

* cargo fmt --all
2024-04-10 10:28:37 +02:00
Hernando Castano 5bcae00f19 Bump rust-web3 to latest v0.11 (#100)
* Bump rust-web3 to latest master

* Use tagged release from crates.io

* Add check for `logs_bloom`

Since this is required by the runtime we want to enforce that an
incoming header has this.
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 7a3468a919 removed unused files (#99) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky f42905186d fix error processing (#97) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 7ddff25912 Bump clap from 2.33.0 to 2.33.1 (#94) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 04c091a050 Bump ethereum-types from 0.9.1 to 0.9.2 (#95) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 9765c53a15 Bump derive_more from 0.99.5 to 0.99.7 (#93) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky c9e81e48b5 Process finality proofs in solidity PoA -> Substrate contract (#69)
* solidity contract

* continue

* upd

* cargo update

* fixes

* ehtereum_headers -> headers

* extracted some common stuff

* ethereum_sync.rs -> sync.rs

* make sync generic

* continue extracting

* continue

* add eth-contract argument

* continue

* some fixes

* contract v2

* continue

* more fixes

* more fixes

* deal with duplicated params

* removed multiple call_rpc variants

* bail_on_error!()

* fn submit_ethereum_transaction

* more fixes

* cargo fmt --all

* fix

* bail_on_arg_error!()

* fix

* fix

* remove async_extra stuff

* start work on finality builtin

remove async_extra stuff

continue

continue

local testnet (Alice + Bob) for node

* added TODO

* substrate-bridge.json -> substrate-bridge-abi.json

* get rid of substrate transactions hashes

* get rid of ethereum transactions hashes

* extracted contract bytecode to separate file

* cargo fmt --all

* avoid duplicate import in contracts

* removed Default::default()

* swapped configurations for sub2eth && eth2sub

* fix compilation

* do not double gas limit when submitting Substrate headers

* fix finality storage

* at least 1 validator required

* shift_session_manager_works

* cargo fmt --all

* solidity contract removed

* consts

* extracted solc compilation details to separate file

* removed (obsolete in future Vec<u8> justification)

* fixed cli option description

* fix typos

* fix grumble

* extracted constants

* log decoded header

* new substrate version + actually verify justification

* intermediate cargo fmt --all

* comments

* disable completion data resubmission

* increased timeouts + _MS -> Duration

* forget completion data after submission

* builtin tests

* headers tests

* cargo fmt --all

* update contract

* Update relays/ethereum/src/ethereum_sync_loop.rs

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

* Update relays/ethereum/src/ethereum_sync_loop.rs

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

* added docs

* OwnedFutureOutput

* more docs fixes

* cargo fmt --all

* encode headers

* consts + docs

* aliases again

* cargo fmt --all

* Update relays/ethereum/src/ethereum_sync_loop.rs

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

* Update relays/ethereum/src/ethereum_sync_loop.rs

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

* Use Duration::from_secs() instead of from_millis()

* grumbles

* Update relays/ethereum/src/headers.rs

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

* Update relays/ethereum/src/headers.rs

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

* incomplete_headers_are_still_incomplete_after_advance

* add hex-encoded headers to substrate_header_without_signal_parsed

* cargo fmt --all

* Update relays/ethereum/src/sync_loop.rs

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

* Update relays/ethereum/src/headers.rs

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

* Update relays/ethereum/src/headers.rs

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

* Update relays/ethereum/src/headers.rs

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

* Update relays/ethereum/src/headers.rs

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

* Update relays/ethereum/src/headers.rs

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

* Update relays/ethereum/src/headers.rs

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

* Update relays/ethereum/src/headers.rs

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

* added comments on Extra and Completion

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
dependabot-preview[bot] 9496303aff Bump futures from 0.3.4 to 0.3.5 (#89) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 13fbc6ea5c Bump serde from 1.0.106 to 1.0.110 (#90) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 5a463ff3ca Bump linked-hash-map from 0.5.2 to 0.5.3 (#88) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 4f119c0fd9 Bump serde_json from 1.0.52 to 1.0.53 (#87) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 16d49f6417 Bump finality-grandpa from 0.12.1 to 0.12.2 (#86) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] c2bd5fbbf3 Bump finality-grandpa from 0.11.2 to 0.12.1 (#82) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 96af3e9a49 Bump ethabi-derive from 11.0.0 to 12.0.0 (#81) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 3d15ac7c90 Solidity contract that accepts unverified substrate headers (#65)
* solidity contract

* continue

* upd

* cargo update

* fixes

* ehtereum_headers -> headers

* extracted some common stuff

* ethereum_sync.rs -> sync.rs

* make sync generic

* continue extracting

* continue

* add eth-contract argument

* continue

* some fixes

* contract v2

* continue

* more fixes

* more fixes

* deal with duplicated params

* removed multiple call_rpc variants

* bail_on_error!()

* fn submit_ethereum_transaction

* more fixes

* cargo fmt --all

* fix

* bail_on_arg_error!()

* fix

* fix

* remove async_extra stuff

* substrate-bridge.json -> substrate-bridge-abi.json

* get rid of substrate transactions hashes

* get rid of ethereum transactions hashes

* extracted contract bytecode to separate file

* cargo fmt --all

* avoid duplicate import in contracts

* removed Default::default()

* swapped configurations for sub2eth && eth2sub

* fix compilation

* do not double gas limit when submitting Substrate headers

* cargo fmt --all

* solidity contract removed

* consts

* extracted solc compilation details to separate file

* removed (obsolete in future Vec<u8> justification)

* fixed cli option description

* fix typos

* fix grumble

* extracted constants

* log decoded header

* cargo fmt --all

* comment
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 50d6ed186f Migrate to new substrate (#79)
* new substrate version + actually verify justification

* cargo update + fix remaining stuff

* add weight=0 comments

* cargo fmt --all

* fix hash types
2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 4bbef4d45a Bump structopt from 0.3.13 to 0.3.14 (#77) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky 04c9da81da local testnet for substrate node (#70) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 37b8bc51aa Bump jsonrpc-core from 14.0.5 to 14.1.0 (#68) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 8a8a868b97 Bump structopt from 0.3.12 to 0.3.13 (#64) 2024-04-10 10:28:37 +02:00
dependabot-preview[bot] 28bb7238f6 Bump parking_lot from 0.10.0 to 0.10.2 (#63) 2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky d631178e41 Make relay generic over source/target chains (#58)
* renamed to-be-generic files

* make everything required generic over source/target chains

* some more fixes

* cargo fmt --all

* trait functions -> trait constants

* cargo --fmt --all
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky c6c46462ab Sync ethereum headers using unsigned (substrate) transactions (#45)
* reward submitters on finalization

* PoA -> Substrate: unsigned_import_header API

* fix grumble

* make submitter part of ImportContext

* verify using next validators set + tests

* fix nostd compilation

* add sub-tx-mode argument

* support sub-tx-mode

* impl ValidateUnsigned for Runtime

* do not submit too much transactions to the pool

* cargo fmt

* fix bad merge

* revert license fix

* Update modules/ethereum/src/lib.rs

Co-Authored-By: Hernando Castano <HCastano@users.noreply.github.com>

* Update modules/ethereum/src/verification.rs

Co-Authored-By: Hernando Castano <HCastano@users.noreply.github.com>

* updated comment

* validate receipts before accepting unsigned tx to pool

* cargo fmt

* fix comment

* fix grumbles

* Update modules/ethereum/src/verification.rs

Co-Authored-By: Hernando Castano <HCastano@users.noreply.github.com>

* cargo fmt --all

* struct ChangeToEnact

* updated doc

* fix doc

* add docs to the code method

* simplify fn ancestry

* finish incomplete docs

* Update modules/ethereum/src/lib.rs

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

* Update modules/ethereum/src/lib.rs

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

* return err from unsigned_import_header

* get header once

* Update relays/ethereum/src/ethereum_sync.rs

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

* fix

* UnsignedTooFarInTheFuture -> Custom(err.code())

* updated ImportContext::last_signal_block

* cargo fmt --all

* rename runtime calls

Co-authored-by: Hernando Castano <HCastano@users.noreply.github.com>
Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
2024-04-10 10:28:37 +02:00
Svyatoslav Nikolsky b055027161 Add missing RPC required for relay (#57)
* add missing RPC required for relay

* cargo fmt --all
2024-04-10 10:28:37 +02:00