-
Notifications
You must be signed in to change notification settings - Fork 81
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: Better errors #49
Conversation
4e4ab51
to
ce7cdd7
Compare
ce7cdd7
to
971d330
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM generally 👍 Please address the two nits and clarify reachability of the two other comments.
Yes, EVM reverts aren't an Aurora Engine error condition, just another ordinary result from our point of view. But that needs us to extend the result types for |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍 Nice work!
* Link to docs in the README. (#18) * Change deprecated `u64::max_value` to `u64::MAX`. (#38) * Support custom error messages. (#40) * Implement `begin_chain` for evm-bully. (#30) * Implement a faucet method. (#39) * Implement all Istanbul HF precompiles. (#21) * Check and increment nonces. (#42) * Fix the RIPEMD160 and ModExp precompiles. (#44) * Implement a first draft of `COINBASE` and `GASLIMIT`. (#47) * Refactor and improve error handling. (#49) * Replace `raw_call` with the new `submit` API. (#48) The `raw_call` method is hereby removed in favor of the new `submit` method that has an extended ABI capable of returning a transaction's revert status and logged events. Co-authored-by: Michael Birch <[email protected]> Co-authored-by: Arto Bendiken <[email protected]> * Add benchmarks for common EVM operations. (#41) * Merge branch 'master' into improved-evm-token-logic * Update error handling to `master` * fix missing import * cargo fmt * Ensure ETH transfers return an execution result. (#48) * Update to `master` * fix str types Co-authored-by: Frank Braun <[email protected]> Co-authored-by: Michael Birch <[email protected]> Co-authored-by: Arto Bendiken <[email protected]>
* Added prover & extended types * Mode Borsh args from types to parameters * Added fungible tokens * Added eth-connector * Modify assert for fee * Fix formatting * Extend eth-conenctor with EVM token logic * Changed eth-connector deposit logic * Added changes for ETH deposit/withdraw and Engine changes * Mint ETH-tokens * Added: transfer_eth * ETH withdraw basic method * eth-withdraw validation structure & modified Deposit-eth fields * eth transfer and withdraw logic * eip712 message verifier - started encoding * added encode-packed * virefy EIP712 message for withdraw * Changed EIP712 message fields * Modify logs for EIP712 messages * Test EIP712 * Tests EIP712 * Integration tests for encode_withdraw_eip712 * Integration tests for encode_withdraw_eip712 * EIP712-Withdraw: improvements and fixes. * EIP712-Withdraw: fixed encoding rules and order. * EIP712-Withdraw: `verify_withdraw_eip712` returns `true` only if the sender address equals to the address of message signer. * EIP712-Withdraw: update tests. * EIP712-Withdraw: refactoring. * ethabit::encode_token_packed: use right-padded encoding for `Address`. * WithdrawFromEthCallArgs: fixed `amount` type conversion. * Extend tests for eth-connector * eth-connector test deposit & balance & total_supply * Imporved tests * FT tests * Fixed verify_transfer_eip712 * Change test_withdraw_near * Tests for: ft_transfer, ft_transfer_call * test_eth_deposit_balance_total_supply * test and ifx: deposit_eth, withdraw_near * References in fungible token (#29) * Use references in fungible_token to avoid cloning * cargo fmt * Fix: hide logging behind feature flag * Remove eth-conenctor transfer methods and deposit for new design * Completed Deposit logic * Fix clippy; added comments; improved ft_transfer_call * Extend external functions for eth-connector * Added deploy_evm_token * Added ft_on_transfer logic * Changed ft_on_transfer & remove json depends * Changed deposit logic and fixed transfers * Added register relayer * Added message coder for ft_transfer_call * ft_on_transfer - added logic for erc20 * Impoved ft_on_transfer * ft_on_transfer: call erc20 contract adn send fee to Relayer. Added logs * eth-connector: Removed unsued methods * tests: deposit & fixed init test * tests: depoist, withdraw * tests: fix test_withdraw_near * Eth-connector: never skip bridge call. * Tests: fix ft_transfer_call * ft_transfer_call - changed gas amountr * Fixed: test_eth_deposit_balance_total_supply, test_ft_transfer * Added: test_ft_transfer_call_near_eth * Clippy fix * Added test_ft_transfer_call_erc20 * Added test_ft_transfer_call_erc20 * tests: ft_transfer_call for ERC20 changes * Fix finish_deposit - promise flow when failed for ft_transfer_call * added: test_deposit_with_same_proof * Improved EVM token master branch update (#50) * Link to docs in the README. (#18) * Change deprecated `u64::max_value` to `u64::MAX`. (#38) * Support custom error messages. (#40) * Implement `begin_chain` for evm-bully. (#30) * Implement a faucet method. (#39) * Implement all Istanbul HF precompiles. (#21) * Check and increment nonces. (#42) * Fix the RIPEMD160 and ModExp precompiles. (#44) * Implement a first draft of `COINBASE` and `GASLIMIT`. (#47) * Refactor and improve error handling. (#49) * Replace `raw_call` with the new `submit` API. (#48) The `raw_call` method is hereby removed in favor of the new `submit` method that has an extended ABI capable of returning a transaction's revert status and logged events. Co-authored-by: Michael Birch <[email protected]> Co-authored-by: Arto Bendiken <[email protected]> * Add benchmarks for common EVM operations. (#41) * Merge branch 'master' into improved-evm-token-logic * Update error handling to `master` * fix missing import * cargo fmt * Ensure ETH transfers return an execution result. (#48) * Update to `master` * fix str types Co-authored-by: Frank Braun <[email protected]> Co-authored-by: Michael Birch <[email protected]> Co-authored-by: Arto Bendiken <[email protected]> * Update src/connector.rs misspel Co-authored-by: Joshua J. Bouw <[email protected]> * Update src/connector.rs change constants error Co-authored-by: Joshua J. Bouw <[email protected]> Co-authored-by: Septen <[email protected]> Co-authored-by: Michael Birch <[email protected]> Co-authored-by: Joshua J. Bouw <[email protected]> Co-authored-by: Frank Braun <[email protected]> Co-authored-by: Arto Bendiken <[email protected]>
This PR came out out of this issue outlined here: #48 (comment).
Do note, that this PR may look intimidating with amount of files changed + lines, but most of it is refactoring.
This is in general just a much better error structure. I really hated how the underlying EVM for some bizarre reason mixed together BOTH result types. It just can be awkward to work with in general. That is fixed with this PR.
As a bonus, all error returns are now all consistent too as
ERR_
.Point of discussion: As far as I'm aware, Reverts shouldn't be considered an "ERR" as they are part of everyday EVM life? As in, the contract executes correctly, but due to some circumstance, it'll back out without actually applying changes.
Closes: #33