- Feb 07, 2025
-
-
PG Herveou authored
- Fix a deadlock on the RWLock cache - Remove eth-indexer, we won't need it anymore, the indexing will be started from within eth-rpc directly --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
PG Herveou authored
#7463 follow up with RPC fixes --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
- Feb 06, 2025
-
-
PG Herveou authored
Apply some fixes to properly estimate ethereum tx fees: - Set the `extension_weight` on the dispatch_info to properly calculate the fee with pallet_transaction_payment - Expose the gas_price through Runtime API, just in case we decide to tweak the value in future updates, it should be read from the chain rather than be a shared constant exposed by the crate - add a `evm_gas_to_fee` utility function to properly convert gas to substrate fee - Fix some minor gas encoding for edge cases --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
- Jan 28, 2025
-
-
xermicus authored
This PR changes how we call runtime API methods with more than 6 arguments: They are no longer spilled to the stack but packed into registers instead. Pointers are 32 bit wide so we can pack two of them into a single 64 bit register. Since we mostly pass pointers, this technique effectively increases the number of arguments we can pass using the available registers. To make this work for `instantiate` too we now pass the code hash and the call data in the same buffer, akin to how the `create` family opcodes work in the EVM. The code hash is fixed in size, implying the start of the constructor call data. --------- Signed-off-by:
xermicus <cyrill@parity.io> Signed-off-by:
Cyrill Leutwiler <bigcyrill@hotmail.com> Co-authored-by: command-bot <> Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by:
Alexander Theißen <alex.theissen@me.com>
-
- Jan 24, 2025
-
-
PG Herveou authored
- Add option to specify database_url using DATABASE_URL environment variable - Add a eth-rpc-tester rust bin that can be used to test deployment before releasing eth-rpc - make evm_block non fallible so that it can return an Ok response for older blocks when the runtime API is not available - update cargo.lock to integrate changes from https://github.com/paritytech/subxt/pull/1904 --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
- Jan 23, 2025
-
-
PG Herveou authored
- Fix the EVM fee cost estimation. The estimation shown in EVM wallet was using Native instead of EVM decimals - Remove the precise code length estimation in dry run call. Over-estimating is fine, since extra gas is refunded anyway. - Ensure that the estimated fee calculated from gas_price x gas use the encoded weight & deposit limit instead of the exact one calculated by the dry-run. Else we can end up with a fee that is lower than the actual fee paid by the user --------- Co-authored-by: command-bot <>
-
- Jan 20, 2025
-
-
PG Herveou authored
For eth-indexer, it's probably safer to use `subscribe_finalized` and index these blocks into the DB rather than `subscribe_best` --------- Co-authored-by: command-bot <>
-
PG Herveou authored
Log error instead of failing with an error when block processing fails --------- Co-authored-by: command-bot <>
-
- Jan 17, 2025
-
-
PG Herveou authored
Add foundation for supporting call traces in pallet_revive Follow up: - PR #7167 Add changes to eth-rpc to introduce debug endpoint that will use pallet-revive tracing features - PR #6727 Add new RPC to the client and implement tracing runtime API that can capture traces on previous blocks --------- Co-authored-by:
Alexander Theißen <alex.theissen@me.com>
-
Alexander Theißen authored
Update to PolkaVM `0.19`. This version renumbers the opcodes in order to be in-line with the grey paper. Hopefully, for the last time. This means that it breaks existing contracts. --------- Signed-off-by:
xermicus <cyrill@parity.io> Co-authored-by: command-bot <> Co-authored-by:
xermicus <cyrill@parity.io>
-
- Jan 15, 2025
-
-
PG Herveou authored
Bump asset-hub westend spec version --------- Co-authored-by: command-bot <>
-
Alexandre R. Baldé authored
Closes #6846 . --------- Signed-off-by:
xermicus <cyrill@parity.io> Co-authored-by: command-bot <> Co-authored-by:
Alexander Theißen <alex.theissen@me.com> Co-authored-by:
xermicus <cyrill@parity.io>
-
- Jan 14, 2025
-
-
PG Herveou authored
Add an option to persist EVM transaction hash to a SQL db. This should make it possible to run a full archive ETH RPC node (assuming the substrate node is also a full archive node) Some queries such as eth_getTransactionByHash, eth_getBlockTransactionCountByHash, and other need to work with a transaction hash indexes, which are not stored in Substrate and need to be stored by the eth-rpc proxy. The refactoring break down the Client into a `BlockInfoProvider` and `ReceiptProvider` - BlockInfoProvider does not need any persistence data, as we can fetch all block info from the source substrate chain - ReceiptProvider comes in two flavor, - An in memory cache implementation - This is the one we had so far. - A DB implementation - This one persist rows with the block_hash, the transaction_index and the transaction_hash, so that we can later fetch the block and extrinsic for that receipt and reconstruct the ReceiptInfo object. This PR also adds ...
-
- Jan 13, 2025
-
-
PG Herveou authored
Update the current approach to attach the `ref_time`, `pov` and `deposit` parameters to an Ethereum transaction. Previously we will pass these 3 parameters along with the signed payload, and check that the fees resulting from `gas x gas_price` match the actual fees paid by the user for the extrinsic. This approach unfortunately can be attacked. A malicious actor could force such a transaction to fail by injecting low values for some of these extra parameters as they are not part of the signed payload. The new approach encodes these 3 extra parameters in the lower digits of the transaction gas, approximating the the log2 of the actual values to encode each components on 2 digits --------- Co-authored-by:
GitHub Action <action@github.com> Co-authored-by: command-bot <>
-
- Jan 02, 2025
-
-
PG Herveou authored
fix https://github.com/paritytech/polkadot-sdk/issues/6970 --------- Co-authored-by: command-bot <>
-
- Dec 20, 2024
-
-
Xavier Lau authored
It doesn't make sense to only reorder the features array. For example: This makes it hard for me to compare the dependencies and features, especially some crates have a really really long dependencies list. ```toml [dependencies] c = "*" a = "*" b = "*" [features] std = [ "a", "b", "c", ] ``` This makes my life easier. ```toml [dependencies] a = "*" b = "*" c = "*" [features] std = [ "a", "b", "c", ] ``` --------- Co-authored-by:
Bastian Köcher <git@kchr.de> Co-authored-by: command-bot <>
-
- Dec 18, 2024
-
-
Cyrill Leutwiler authored
Update to the latest polkavm version, containing a linker fix I need for revive. --------- Signed-off-by:
Cyrill Leutwiler <bigcyrill@hotmail.com> Signed-off-by:
xermicus <cyrill@parity.io> Co-authored-by: command-bot <>
-
Cyrill Leutwiler authored
Call data, return data and code sizes can never exceed `u32::MAX`; they are also not generic. Hence we know that they are guaranteed to always fit into a 64bit register and `revive` can just zero extend them into a 256bit integer value. Which is slightly more efficient than passing them on the stack. --------- Signed-off-by:
Cyrill Leutwiler <bigcyrill@hotmail.com> Signed-off-by:
xermicus <cyrill@parity.io> Co-authored-by: command-bot <> Co-authored-by:
Alexander Theißen <alex.theissen@me.com>
-
Cyrill Leutwiler authored
This PR implements the call data copy API by adjusting the input method. Closes #6770 --------- Signed-off-by:
xermicus <cyrill@parity.io> Co-authored-by: command-bot <>
-
- Dec 17, 2024
-
-
Alexander Theißen authored
Removing apparently unused dependencies from `pallet_revive` and related crates. --------- Co-authored-by: command-bot <>
-
- Dec 11, 2024
-
-
PG Herveou authored
Add tests for #6608 fix https://github.com/paritytech/contract-issues/issues/12 --------- Co-authored-by: command-bot <>
-
- Dec 01, 2024
-
-
PG Herveou authored
* Add a bunch of differential tests to ensure that responses from eth-rpc matches the one from `geth` - These [tests](https://github.com/paritytech/polkadot-sdk/blob/pg/fix-geth-diff/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts) are not run in CI for now but can be run locally with ```bash cd revive/rpc/examples/js bun test ``` * EVM RPC server will not fail gas_estimation if no gas is specified, I updated pallet-revive to add an extra `skip_transfer` boolean check to replicate this behavior in our pallet * `eth_transact` and `bare_eth_transact` api have been updated to use `GenericTransaction` directly as this is what is used by `eth_estimateGas` and `eth_call` ## TODO - [ ] Add tests the new `skip_transfer` flag --------- Co-authored-by:
GitHub Action <action@github.com> Co-authored-by:
Alexander Theißen <alex.theissen@me.com>
-
- Nov 29, 2024
-
-
Alexander Theißen authored
This PR updates pallet_revive to the newest PolkaVM version and adapts the test fixtures and syscall interface to work under 64bit. Please note that after this PR no 32bit contracts can be deployed (they will be rejected at deploy time). Pre-deployed 32bit contracts are now considered defunct since we changes how parameters are passed for functions with more than 6 arguments. ## Fixtures The fixtures are now built for the 64bit target. I also removed the temporary directory mechanism that triggered a full rebuild every time. It also makes it easier to find the compiled fixtures since they are now always in `target/pallet-revive-fixtures`. ## Syscall interface ### Passing pointer Registers and pointers are now 64bit wide. This allows us to pass u64 arguments in a single register. Before we needed two registers to pass them. This means that just as before we need one register per pointer we pass. We keep pointers as `u32` argument by truncating the register. This is done since the memory space of PolkaVM is 32bit. ### Functions with more than 6 arguments We only have 6 registers to pass arguments. This is why we pass a pointer to a struct when we need more than 6. Before this PR we expected a packed struct and interpreted it as SCALE encoded tuple. However, this was buggy because the `MaxEncodedLen` returned something that was larger than the packed size of the structure. This wasn't a problem before. But now the memory space changed in a way that things were placed at the edges of the memory space and those extra bytes lead to an out of bound access. This is why this PR drops SCALE and expects the arguments to be passed as a pointer to a `C` aligned struct. This avoids unaligned accesses. However, revive needs to adapt its codegen to properly align the structure fields. ## TODO - [ ] Add multi block migration that wipes all existing contracts as we made breaking changes to the syscall interface --------- Co-authored-by:
GitHub Action <action@github.com>
-
- Nov 21, 2024
-
-
PG Herveou authored
Add support for all eth tx types Note that js libs will continue to use the Legacy type since we don't include base_fee_per_gas yet in the block. We can think about setting these values after we revisit how we encode the gas into weight & deposit_limit in a follow up PR --------- Co-authored-by:
Alexander Theißen <alex.theissen@me.com> Co-authored-by:
GitHub Action <action@github.com>
-
Alexander Theißen authored
The eth RPC tests fail sometimes because they run into a connect timeout because the node takes a long time to start. This bumps the connect timeout from 30 to 120 seconds. Locally they take around 40s for me. As a drive by I also remove a apparently duplicated nextest config. --------- Co-authored-by:
ordian <write@reusable.software>
-
- Nov 15, 2024
-
-
PG Herveou authored
This PR update the pallet to use the EVM 18 decimal balance in contracts call and host functions instead of the native balance. It also updates the js example to add the piggy-bank solidity contract that expose the problem --------- Co-authored-by:
GitHub Action <action@github.com>
-
- Nov 14, 2024
-
-
PG Herveou authored
Set the logs_bloom in the transaction receipt --------- Co-authored-by:
GitHub Action <action@github.com> Co-authored-by:
Cyrill Leutwiler <cyrill@parity.io>
-
- Nov 12, 2024
-
-
PG Herveou authored
- Breaking down the integration-test into multiple tests - Fix tx hash to use expected keccak-256 - Add option to ethers.js example to connect to westend and use a private key --------- Co-authored-by:
GitHub Action <action@github.com>
-
PG Herveou authored
- Fix bare_eth_transact so that it estimate more precisely the transaction fee - Add some context to the build.rs to make it easier to troubleshoot errors - Add TransactionBuilder for the RPC tests. - Improve error message, proxy rpc error from the node and handle reverted error message - Add logs in ReceiptInfo --------- Co-authored-by:
GitHub Action <action@github.com>
-
- Nov 05, 2024
-
-
PG Herveou authored
make the eth-rpc proxy /health and /health/readiness from the proxied substrate chain see #4802 --------- Co-authored-by:
GitHub Action <action@github.com>
-
- Nov 04, 2024
-
-
PG Herveou authored
Various fixes for the release of eth-rpc & ah-westend-runtime - Bump asset-hub westend spec version - Fix the status of the Receipt to properly report failed transactions - Fix value conversion between native and eth decimal representation --------- Co-authored-by:
GitHub Action <action@github.com>
-
- Oct 31, 2024
-
-
Alexander Theißen authored
Since https://github.com/paritytech/polkadot-sdk/pull/6266 we no longer require a custom toolchain to build the `pallet-revive-fixtures`. Hence we no longer have to guard the build behind a feature flag. --------- Co-authored-by:
GitHub Action <action@github.com>
-
- Oct 30, 2024
-
-
PG Herveou authored
Add metrics for eth-rpc --------- Co-authored-by:
GitHub Action <action@github.com> Co-authored-by:
Alexander Theißen <alex.theissen@me.com>
-
PG Herveou authored
Add a docker for pallet-revive eth-rpc Tested with ``` sudo docker build . -t eth-rpc -f substrate/frame/revive/rpc/Dockerfile sudo docker run --network="host" -e RUST_LOG="info,eth-rpc=debug" eth-rpc ``` --------- Co-authored-by:
GitHub Action <action@github.com> Co-authored-by:
Alexander Theißen <alex.theissen@me.com>
-
- Oct 28, 2024
-
-
PG Herveou authored
Redo of https://github.com/paritytech/polkadot-sdk/pull/5953 --------- Co-authored-by:
Alexander Theißen <alex.theissen@me.com> Co-authored-by:
GitHub Action <action@github.com>
-