Commit Graph

154 Commits

Author SHA1 Message Date
Matthias Seitz 8c07861b09
feat(codec): impl codec for Bytes (#856) 2022-02-02 13:57:39 +02:00
wolflo dc1565c014
fix(core): adjust Ganache for new cli output (#851) 2022-02-01 12:59:54 +02:00
Dan Cline 01544ec4b7
Implement RLP decoding for transactions (#805)
* Implement RLP decoding for transactions

* set chain_id in fill_transaction
2022-01-30 21:21:16 +02:00
Options Eskimo 44499ae008
feat(chain): add BSC networks to the is_legacy helper (#843)
also fix formatting
2022-01-29 21:36:22 +02:00
juniorbeef 97744b87a6
core: fix overflow and panic in priority fee estimation (#839)
The U256 priority fees were being coerced into u32, which was not big
enough for actual values. The overflow was happening but not checked.
This led to a possible divide-by-zero panic in this code as well.

This change does the math as I256 -- overkill, but it works.
2022-01-29 14:54:38 +02:00
Tarrence van As c22dd8eab4
feat(types/chain): is_legacy helper (#835)
moving this into ethers-rs from foundry so it can be more easily use elsewhere
2022-01-27 20:33:01 +02:00
Options Eskimo f434e0f57f
feat(chain): add BSC and BSC testnet (#831)
* feat(chain): add BSC and BSC testnet

* docs(changelog): add note about new BSC known chains
2022-01-27 16:50:11 +02:00
Meet Mangukiya 91ff71ec62
Fantom chain (#806)
* feat(core): add fantom and fantom-testnet chains

* feat(etherscan): add fantom chains support

* chore: lint
2022-01-18 13:00:27 +02:00
Matthias Seitz 77dcccb7ba
fix(abi): check for uint8 params in human readable types (#789)
* fix(abi): check for uint8 params in human readable types

* Update ethers-core/src/abi/human_readable.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>

* fix mapping detection

* rustfmt

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-13 15:33:31 +02:00
Matthias Seitz d4f8984f59
chore(deps): bump ethabi master (#787) 2022-01-13 02:58:11 +02:00
Georgios Konstantopoulos 19671e51de chore: fix lints / solc test 2022-01-11 12:13:09 +02:00
Tarrence van As 092bd96a39
feat(chain): enum values + TryFrom<u64> (#782)
* feat(chain): map Chain enum to values

* feat(chain): support TryFrom<u64>

* chore: use parsechain error for the try_from impl

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-11 11:31:09 +02:00
Rohit Narurkar 2d05ea6234
ethers-addressbook crate (#769)
* feat: macro and token (simplest form)

* fix: better structure to fetch token by string symbol

* chore: add tokenlist to prelude

* fix: from current dir

* fix: dir refactoring

* fix: clippy

* chore: refactor tokenlist to addressbook
2022-01-07 12:12:21 +02:00
odyslam.eth 96ef787230
feat: add FromStr impl for Chain (#756)
* feat: add FromStr impl for Chain

* fix(core): return error if chain not found

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-04 00:51:01 +02:00
bayu ✦ 3f095f415f
[draft] Add Optimism & OptimismKovan chains (#737)
* core: Add Optimism & OptimismKovan chains

* etherscan: Add ETHERSCAN_API_KEY to optimism network
2021-12-25 18:19:50 +02:00
Georgios Konstantopoulos 568d9c8697
Update Cryptography crates (#617)
* fix(core): use new k256 for pubkey calculation

* fix(core): deserialize moonbeam keys with new fn

* chore(signers): update crypto crates

* chore: update cargo lock

* ci: remove libudev req

* chore: cargo fmt

* chore: fix outstanding yubihsm errors
2021-12-21 00:41:57 +02:00
Matthias Seitz 3c164bc9bf
feat(abigen): add EthAbiCodec proc macro (#704)
* feat(abigen): add EthAbiCodec proc macro

* rustfmt

* fix: tuple codec
2021-12-19 16:40:17 +02:00
Matthias Seitz e24117a1e1
chore(clippy): make clippy happy (#705) 2021-12-19 06:28:38 +02:00
x3ccd4828 6cecc4824a
fix: parse_units was generating an error on some values because of extra decimal places added round to prevent error (#701) 2021-12-17 11:22:37 +02:00
Georgios Konstantopoulos 4d647453e3
feat: new ethabi for error types (#700) 2021-12-17 00:24:10 +02:00
Georgios Konstantopoulos f037fc0243
fix: do not panic on invalid units conversion (#691)
* fix: do not panic on invalid units conversion

This is done by switching the From implementations to TryFrom and
making the conversion functions return a thiserror Error instead of
the previous Boxed error object

* chore: update changelog
2021-12-15 03:32:29 +01:00
James Prestwich 47e9e7d3c7
refactor: move FeeHistory to core types (#688) 2021-12-14 00:49:49 +02:00
x3ccd4828 0e133e4a87
fix: format_units return was truncating the decimal places if there were leading zeros (#675) 2021-12-11 00:17:21 -07:00
Matthias Seitz 2a3fcbbb40
feat(abigen): use AbiType when parsing Function abi signature fails at compile time (#647)
* refactor: improved from token impl

* feat: add AbiType support

* feat: no need for expect

* feat: add missing abiarraytype impl

* test: add struct derive test

* chore: rustfmt

* chore: update changelog

* chore: rustfmt
2021-12-04 06:19:00 +02:00
James Prestwich 0f6d3688c2
feature: impl Default for eip2718::TypedTransaction (#646) 2021-12-03 22:03:49 +02:00
Matthias Seitz 7da5b64cfd
feat: add moonbeam support (#644)
* feat: add moonbeam support

* typos
2021-12-03 10:05:38 -08:00
Alexey Shekhirin dd2c589102
feat(etherscan, middleware): implement gas endpoints and use in oracle middleware (#621)
* feat(etherscan, middleware): implement gas-related endpoints and use them in gas oracle

* cleanup deps

* better comment

* revertme: add debug print

* Revert "revertme: add debug print"

This reverts commit 63993642c4.

* make etherscan tests serial

* run each etherscan test at least 200ms

* 200ms -> 250ms

* Revert "200ms -> 250ms"

This reverts commit 29c7f6ed9a.

* add separate etherscan key for celo tests

* 200ms -> 250ms

* add Chain::Sepolia to match
2021-11-27 09:54:20 +02:00
Rohit Narurkar 0b68227c38
feat: implement hex display for Bytes (#624)
* feat: implement hex display for Bytes

* chore: add changelog

* feat: impl Display, same as LowerHex

* fix: prepend 0x for hex display
2021-11-26 14:25:41 +02:00
Matthias Seitz 2c30468b70
fix(codec)!: ambiguity unit8[] and bytes (#613)
* fix: unit8 encoding

* feat: use ethers::types::Bytes for solidity bytes type

* feat: add const generic from impls

* fix: failing tests

* fix: make compatible with bytes

* update changelog

* make compatible with encoding changes

* chore rm write to file
2021-11-24 22:15:17 +02:00
x3ccd4828 3a768b9c99
Fix parse units (#597)
* fix: changed format_units to return a String and preserve the decimal
places

* chore: fix changelog

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2021-11-24 11:07:18 +02:00
Georgios Konstantopoulos bb3a2fd27c
release: 0.6.0 (#611)
* release(core): 0.6.0

* release(providers): 0.6.0

* release(contract-abigen): 0.6.0

* release(contract-derive): 0.6.0

* release(derive-eip712): 0.2.0

* release(ethers-solc): 0.1.0

* release(contract): 0.6.0

* release(etherscan): 0.2.0

* release(signers): 0.6.0

* release(middleware): 0.6.0

* chore: update dev deps

* refactor(core): move docs to readme

* refactor(contract): move docs to readme

* refactor(providers): move docs to readme

* chore: bump ethers cargo toml

* refactor(signers): move docs to readme

* refactor(middleware): move docs to readme

* fix(ethers): adjust re-exports to allow searching internal packages

* docs: fix broken links

we cannot use relative crate imports because the readmes
are also imported by the parent crate

* alias readmes to be accessible to ethers crate
2021-11-23 21:23:12 +02:00
Ivan Porto Carrero 1d65c9394f
add support for polygon and avalanche (#606)
* add support for polygon and avalanche, include the block explorers

* add multicall addresses for polygon
2021-11-22 11:02:28 +02:00
Matthias Seitz dbea856e8c
fix: lift macros feature to lib level (#567) 2021-11-08 22:08:03 +02:00
Sebastian Martinez e72636210c
Refactor crate determination in new ethers-macro crate (#555)
* fix: compute ethers-core path in derive eip712

Co-authored-by: Ryan <ryan.tate@fieldresponder.io>

* refactor: move crate determination to ethers-macro

* docs: update fmt command

* fix: change cargo_metadata dep to optional

Co-authored-by: Ryan <ryan.tate@fieldresponder.io>
2021-11-05 15:00:01 +02:00
Georgios Konstantopoulos f0dea75219
feat: use ethers_solc::Solc instead of ethers_core::utils::Solc (#546)
* feat(ethers-solc): deserialize bytecode as bytes

* feat(ethers-solc): add method to fetch compact contract

* feat(ethers-solc): use Abi type instead of Vec<serde_json::Value>

* test(contract): use new Solc bindings

* test(middleware): use new Solc bindings

* chore: remove solc from ethers-core

* chore: remove concurrent setup code from ethers-core

* feat(ethers-solc): add ArtifactOutput::Nothing as a no-op artifact logger

* feat: add ethers-solc to top level crate

* examples: use new solc building pattern

* chore(solc): re-use opt str impl for error code decoding

* fix abigen example

* chore: fix doctests

* chore: remove setup feature

* fix: decode string to bytes correctly

* chore: clippy lints
2021-10-31 13:34:51 +02:00
Matthias Seitz dcf20022c6
chore: add rustfmt.toml (#537)
* chore: add rustfmt.toml

* rustfmt

* chore: Update readme with fmt info

* ci: update ci

* chore: rustfmt

* rustfmt

* rustfmt

* ci: install libudev

* chore(clippy): make clippy happy

* chore(clippy): make clippy happy

* revert ci

* ci: install libudev
2021-10-29 14:29:35 +02:00
Matthias Seitz eede86df41
feat: add abi code trait impls (#531)
* feat: use const generics for array tokenize

* feat: add abi encode decode impls

* test: add some tests

* chore: move abi codec to core

* update changelog
2021-10-28 01:07:24 +03:00
Alexey Shekhirin cba1a85483
refactor(core, contract, etherscan): move Chain enum, use HashMap::from (#524)
* refactor(contract, etherscan): make use of HashMap::from

* feat(core): Chain enum

* rename unknown chain error

* reorg imports
2021-10-24 21:41:50 +03:00
Georgios Konstantopoulos ef9b3988ce
fix: ensure gas estimation includes the access list in 1559/2930 txs (#523)
* fix: ensure gas estimation includes the access list in 1559/2930 txs

* feat: add gas_price to typed tx

* feat: add access list to typed tx

* chore(providers): cleanup fill_transaction

* chore: fmt

* chore: enable 712 on ethers-contract at top level crate

* fix: do not error if eth_createAccessList is not available

* feat: only use access list if needed
2021-10-20 23:18:58 +03:00
Matthias Seitz c5a45f7bf4
feat: add abi type trait (#519)
* feat: add abi type trait

* rustfmt

* fix: fix imports

* feat: use const generic for u8 array

* rustfmt

* fix: imports
2021-10-18 23:24:53 +03:00
Matthias Seitz fb4d9a9ef1
feat: function call enums EthCall macro and more (#517)
* fix: do not sort event variants

* style: use deref over clone

* style: refactor some stuff

* feat: add ethcall trait

* feat: include in abigen

* feat: add bare bones eth call derive

* feat: impl EthCall derive

* feat: support enums

* feat: use abigen enum derive

* fix: concrete abi and map errors

* test: first call test

* rustfmt

* chore: use correct trait name on error

* feat: derive display for call structs

* feat: add from conversion

* test: add convert test

* chore: docs and test

* chore: update changelog

* cargo fix

* feat: add unit type derive support and more test

* chore: patch ethabi

* chore: rm ethabi patch

* feat: add encode/decode trait impls

* style: use AsRef<[u8]>

* Update ethers-contract/ethers-contract-abigen/src/contract/methods.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>

* style: reindent macro body

* test: add tuple event test

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2021-10-18 13:28:38 +03:00
Matthias Seitz bef7960a2b
feat: add display support for events (#513)
* chore: move proc macro implementation to separate modules

* feat: add display derive macro

* chore: reexport hex

* feat: add EthDisplay

* test: add display test

* fix: use ? op

* feat: derive EthDisplay in abigen

* feat: derive display for event enum

* chore: update changelog
2021-10-16 16:42:17 +03:00
Rohit Narurkar 2255b877de
feat: impl Deserialize for block number (#497) 2021-10-11 15:42:10 +03:00
Matthias Seitz 6216b2e4a2
chore: remove unused && cargo fix (#496)
* chore: rm allows

* chore: cargo fix
2021-10-10 09:31:34 +01:00
Ryan d7ab229a4c
derive-eip712: initial implementation of eip712 derive macro (#481)
* derive-eip712: initial implementation of eip712 derive macro

This commit provides an initial implementation for a derive macro
to encode typed data according to EIP-712, https://eips.ethereum.org/EIPS/eip-712

Additionally, this commit introduces a new signer trait method:

    async fn sign_typed_data<T: Eip712 + Send + Sync>(
        &self,
        payload: &T,
    ) -> Result<Signature, Self::Error>;

And implements the new method for each of the signers (wallet, ledger,
aws).

Additionally, these changes include using `WalletError` for the Wallet
signer error type

At the moment, derive does not recurse the primary type to find nested
Eip712 structs. This is something that is noted in the source and
currently responds with an error regarding custom types.

A subsequent PR should be opened once this issue becomes needed. For the
moment, the current implementation should satisfy non-nested, basic struct types.

* rename to ethers-derive-eip712; move to ethers-core

* refactor of derive-eip712 macro; use ParamType and EthAbiToken

* macro updates; add byte array checker for paramtype; use literal constant for domain type hash

* replace std::convert::Infallible with WalletError as Wallet signer error type

* update workspace members and dev dependencies for examples folder

* add example for eip712 and test against contract

* remove extraneous backward slash in '\x19\x01' prefix; example tests pass

* update unreleased change log

* remove print statements

* use parse_macro_input macro; remove dead code; handle nest struct not implemented error

* move eip712 example to solidity-contract tests folder; update cargo workspace dependencies

* allow optional EIP712Domain parameter when encoding eip712 struct and signing typed data

* add documentation for eip712 feature

* Update ethers-signers/src/ledger/mod.rs

Co-authored-by: Sebastian Martinez <me@sebastinez.dev>

* add error enum for Eip712Error; use sign_payload for ledger signer

* add EIP712WithDomain type for providing a wrapper around custom setting of the domain

* make LedgerWallet sign_payload public

* use optional feature gated dependencies for eip712; add default method for encode_eip712

* add default domain_separator method, pre-compute separator hash

* move derive-eip712 deps to dev deps

* remove invalid sign payload parameter, add await on async method

* remove deprecated comment

* debugging 'bad key handle' error for ledger signer

try using 'sign_message'

* await sign digest for aws signer

* remove extra space, fix fmt warning

* fix test, fmt errors

* use gt 0.6.0 pragma compiler version

* enable ABIEncoderV2 for solidity test contract

* chore: make test constructor public

Co-authored-by: Sebastian Martinez <me@sebastinez.dev>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2021-10-08 16:22:51 +01:00
Matthias Seitz 5d8b66a68f
feat: add general solc contract types (#484) 2021-10-04 07:45:32 +01:00
Georgios Konstantopoulos c7e4e0d433 chore: expose I256 functions 2021-10-02 23:53:17 +03:00
Matthias Seitz 42bf98330b
feat: support human readable struct inputs (#482)
* feat: keep track of custom types in abi parser

* feat: use internal structs for abi parsers

* test: add human readable struct input test

* chore: update changelog

* fix conflicts

* fix: remove eprintln

* make clippy happy

* make clippy happy

* rustfmt

* make clippy happy
2021-10-02 17:34:01 +03:00
Matthias Seitz da70e0caab
feat: allow to configure combined-json (#483) 2021-10-02 05:02:16 +03:00
Georgios Konstantopoulos a9157e1543
fix(human-readable-abi): allow functions without output args (#477) 2021-09-29 17:28:30 +03:00