Commit Graph

162 Commits

Author SHA1 Message Date
Matthias Seitz 513ed588ca
chore: export abi related types (#1677)
* chore: export abi related types

* feat: expose function
2022-09-08 09:07:38 -07:00
Matthias Seitz 0e7f46b03d
feat(abigen): subsitute structs in event bindings (#1674)
* fix(abigen): handle event defaults

* feat(abigen): subsitute structs in event bindings

* update changelog

* chore: rustfmt

* fix broken tests

* chore(clippy): make clippy happy
2022-09-07 09:14:13 -07:00
Matthias Seitz 430c56ee4a
fix(abigen): only derive default of no arrays len > 32 (#1653)
* fix(abigen): only derive default of no arrays len > 32

* impl default
2022-08-31 08:24:21 -07:00
Matthias Seitz 0b04ffe787
feat: add uint8 type (#1639)
* feat: add uint8 type

* update changelog

* derive default

* fix: failing test
2022-08-28 12:17:48 -07:00
Clifton King b1124441ec
feat(abigen): descriptive deserialization errors (#1633)
* feat(abigen): descriptive deserialization errors

* update changelog

* map_err -> wrap_err
2022-08-23 17:54:56 -07:00
Matthias Seitz 43b8bb5251
fix(abigen): use correct str Regex (#1566) 2022-08-04 10:03:43 -07:00
Matthias Seitz e6c1927a1c
feat(abigen): add contract filter (#1564)
* feat(abigen): add contract filter

* refactor: move to top of file

* add tests

* update changelog
2022-08-04 08:22:00 -07:00
Matthias Seitz 27a184db45
feat: add EthError trait and derive (#1549)
* feat: add EthError trait and derive

* update changelog
2022-08-02 11:03:52 -07:00
Matthias Seitz 6bb25e5228
fix(abigen): resolve output struct types correctly (#1546)
* fix(abigen): resolve output struct types correctly

* chore(clippy): make clippy happy
2022-08-01 09:45:31 -07:00
Matthias Seitz c75608eda1
ci: rm pinned nightly (#1541)
* ci: rm pinned nightly

* chore(clippy): make clippy happy
2022-07-31 19:00:31 -07:00
Matthias Seitz b354102073
fix: use fully qualified path for Result (#1527) 2022-07-28 11:06:06 -07:00
Clifton King c418f4ef34
fix(abigen): abigen feature required for bindings (#1508)
* fix(abigen): abigen feature required for bindings

traits such as ethers::contract::EthDisplay require abigen

* update changelog

* abigen now uses re-exported version of serde_json
2022-07-26 08:28:39 -07:00
Clifton King aa008727ee
fix(abigen): contract names can be reserve words (#1498)
* fix(abigen): contract names can be reserve words

* update changelog

* clippy warning

* module names consistent with other safe_*

* update refs to generated abis

* move reserved words tests to their own fn

* added note to changelog re: module name changes
2022-07-24 03:18:24 +02:00
Matthias Seitz a958b4fd28
fix(eip712): improve argument parsing (#1485)
* fix(eip712): improve argument parsing

* use reexported serde_json

* chore: rustfmt

* fix: add missing salt
2022-07-20 00:09:11 -07:00
jole b287fcca4d
Generate structs for the return data of abigen-erated contracts (#1440)
* convert some helper functions

* use said helpers

* more

* don't derive EthCall on return structs

* move return structs to separate function

* remove unused

* remove duplicate code

* reduce code duplication

also use an iterator instead of a presized vector

* comments

* stuck

* fix wrong field

* rename

* don't generate structs for no-output functions

* cosmetic changes

* test: decode and verify result

* more testing

unnamed output (tuple struct)
no output (doesn't exist) -> can't verify this in code though

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

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* remove dbg print

oops :(

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2022-07-04 11:54:02 -07:00
Matthias Seitz f17f900d01
fix(abigen): remove redundant index adjustment for many overloads (#1419) 2022-06-27 11:52:06 -07:00
Matthias Seitz 659ac061b2
refactor(abigen): replace ethabi::Reader (#1417)
* feat: add human readable function parser

* clippy fix

* revert bad clippy

* refactor(abigen): replace ethabi::Reader

* fix: add token to tuple token parsing
2022-06-26 17:26:43 -07:00
Matthias Seitz 2524663674
fix(abigen): use abi signature attribute if provided (#1409) 2022-06-23 02:53:24 -04:00
tri-joe eb3945097d
make abigen-ed modules pub (#1332) 2022-05-31 13:29:02 -07:00
Clifton King a41ae901e5
fix(abigen): non-snake-case modules out of order (#1331)
eg: `console` and `shared_types` were out of order and would fail
rustfmt check
2022-05-31 09:44:24 -07:00
Clifton King 7b9503c8b0
fix(abigen): clippy warnings on solidity bindings (#1319)
eg the `console` contract throws a clippy warning
2022-05-27 13:32:57 -07:00
Meet Mangukiya 2f34fc9705
feat(ethers-contract-abigen): opt out of checking cargo.toml for consistency (#1301) 2022-05-23 11:41:05 -07:00
Matthias Seitz 847110a3fe
fix: filter out empty bytecode (#1248) 2022-05-11 07:34:41 -07:00
Matthias Seitz fd994d7fde
feat(abigen): support overloaded events (#1233)
* feat(abigen): support overloaded events

* chore: update CHANGELOG
2022-05-07 09:31:53 -07:00
Matthias Seitz ce3ebaefa0
chore(clippy): make clippy happy (#1230) 2022-05-06 08:15:49 -07:00
oblique 6faceb20d7
feat: Relax `Clone` requirements when `Arc<M>` is used (#1183)
`#[derive(Clone)]` was implementing `Clone` only if `M` was `Clone`,
however because of `Arc<M>` this can be relaxed.
2022-04-27 15:33:22 +03:00
Matthias Seitz 916e9a7334
chore(clippy): add some deny lints (#1064)
* feat: add deny lints

* trim ethers core

* trim ethers eip712

* deny ethers contract derive

* deny ethers contract abigen

* deny ethers contract

* deny ethers providers

* chore: add denies and fix unused deps

* doc: fix links

* fix: wasm build

* doc: fix links

* doc: fix links

* doc: fix inline doc links

* docs: fix intra doc links
2022-03-19 10:05:39 -07:00
Matthias Seitz b6b5b09f4a
feat(abigen): add abi object deserializer and generate deploy function (#1030)
* feat(abigen): add abi object deserializer

* chore: rustfmt

* refactor: use enum type for deser abi

* refactor: use enum types for deser

* chore: rustfmt

* feat: add bytecode field

* feat: generate bytecode static

* feat: generate deployment function

* refactor: deploy function

* feat: add contract deployer type

* feat: make 0x prefix optional

* feat: add deploy function

* feat: add deploy example

* chore: update CHANGELOG

* chore(clippy): make clippy happy
2022-03-18 21:23:33 -07:00
Matthias Seitz 22bc981fd5
chore(abigen): improve error message when bindings out of sync (#1025) 2022-03-14 13:29:23 +02:00
oblique 46d7afd65b
fix(abigen): safe ident field names (#989) 2022-03-05 20:25:03 +02:00
Georgios Konstantopoulos 94e2d1b122 feat(abigen): add helper for getting number of abigen'd contracts 2022-03-01 14:44:34 +02:00
Matthias Seitz 960b873b00
fix(abigen): safe ident underscore followed by numeric (#970) 2022-02-28 00:04:43 +02:00
Matthias Seitz d6d66b37dd
chore: add rate limit message (#971) 2022-02-27 17:41:26 +02:00
Matthias Seitz 10fcf60791
fix(abigen): support functions with different casing (#972) 2022-02-27 17:40:57 +02:00
Matthias Seitz b6c22e9bcc
fix(abigen): dont generate empty shared_types module (#965) 2022-02-25 00:13:06 +02:00
Matthias Seitz f5ef8149e5
feat(abigen): support shared type during multiabigen (#959)
* refactor: move type deduplication to abigen crate

* refactor: separate expansion process

* feat: support shared type during multiabigen

* test: add type deduplication test

* chore: rustfmt

* typos

* chore(clippy): make clippy happy

* chore: add anonymous field
2022-02-24 22:09:08 +02:00
Matthias Seitz f1eaee52ef
feat: add contract code not verified check (#962) 2022-02-24 14:07:34 +02:00
Matthias Seitz 184cffaca3
fix(abigen/solc): make abigen work with ethers-solc and abiencoderv2 (#952)
* feat(solc): add lossless abi

* fix(abigen): make abigen work with ethers-solc and abiencoderv2

* chore: update CHANGELOG
2022-02-23 12:46:52 +02:00
Matthias Seitz 9876b49e6c
docs(abigen): improve abigen type docs (#953)
* docs(abigen): improve abigen type docs

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

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-02-23 12:36:14 +02:00
Matthias Seitz 45a37faa3d
fix(abigen): handle lossy ethabi generated abi structs (#950)
* fix(abigen): handle lossy ethabi generated abi structs

* chore: rustfmt
2022-02-22 20:26:21 +02:00
Georgios Konstantopoulos 16b9de5134 fix(abigen): add serde json to created crate 2022-02-18 00:17:22 +02:00
James Prestwich 7e4e8e200a
refactor: replace anyhow with eyre (#858)
* refactor: replace anyhow with eyre

* chore: update changelog

* refactor: simplify bail logic for duplicate method signatures

* refactor: simplify bail logic throughout

* refactor: use eyre::ensure

* refactor: more idiomatic use of eyre
2022-02-02 22:44:53 +02:00
James Prestwich 5f68bf52d2
refactor: MultiAbigen rework (#852)
* refactor: MultiAbigen rework

* docs: update ensure family docs

* feature: FromIterator for MultiAbigen

* refactor: cleaner instantiation of Abigen from files

* docs: update examples to use build step

* chore: add 854 to changelog

* lint: clippy

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

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-02-02 15:57:31 +02:00
thasarito 8e0eddbb57
feat: change abi_str to abi from contract in for hardhat abi (#740) 2022-01-08 11:17:36 +02:00
Matthias Seitz 2a98b34195
feat(abigen): search json recursively (#733) 2021-12-25 06:51:44 +02:00
Matthias Seitz c7cf5bedbd
feat(abigen): add MultiAbigen to generate multiple contract bindings (#724)
* feat(abigen): add MultiAbigen to generate multiple contract bindings

* docs: more docs

* chore: update changelog

* rustmft

* chore: add json extension check
2021-12-23 16:38:07 +02:00
Matthias Seitz 1f4ecc6e75
feat(abigen): add provided derives for call and event enums (#721)
* feat(abigen): add provided derives for call and event enums

* chore: update CHANGELOG
2021-12-20 23:24:21 +02:00
Georgios Konstantopoulos be468bcf32 fix(abigen): use lib for parsing paths correctly in windows 2021-12-19 22:06:38 +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
Matthias Seitz 0769174b40
chore: allow unused http_get (#674)
* chore: allow unused http_get

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

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

* chore: update cfgs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2021-12-11 02:37:18 -07:00
Ivan Porto Carrero a8b0885c25
add support for polygonscan and snowtrace for abigen (#666) 2021-12-10 09:05:45 -07:00
Matthias Seitz 59cf991828
feat(abigen): use structs for outputs (#664)
* feat(abigen): use structs for outputs

* update CHANGELOG

* make clippy happy

* fix lints
2021-12-09 16:00:59 -07:00
Matthias Seitz 279a2c316c
feat(abigen): support overloaded functions with different casing (#650)
* fix: support overloaded functions with different casing

* chore: fmt

* chore: typos

* feat: better method alias handling
2021-12-05 12:36:49 -08:00
Matthias Seitz 5dfc1bd171
fix: source parsing for local paths (#633) 2021-11-29 19:02:11 +02:00
Matthias Seitz e15252dd8f
fix: conditional http support (#632)
* fix: conditional http support

* chore: update changelog

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2021-11-29 16:31:39 +02:00
Matthias Seitz f6e803b4eb
fix: use CARGO_MANIFEST_DIR as root for relative paths in abigen! (#631)
* feat: resolve env vars in abigen paths

* docs: add env interpolation note

* chore: docs
2021-11-29 15:37:11 +02:00
Matthias Seitz 9b6cc37ca0
fix: method deduplication (#619)
* fix: method deduplication

* fix: handle name conflicts in parameters

* fix: order of numerated aliases
2021-11-27 14:31:36 +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
Matthias Seitz d53ca0ea56
feat: make reqwest optional but enabled by default (#580)
* feat: make reqwest optional but enabled by default

* update changelog
2021-11-14 14:27:05 +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
David Tolnay 325b752144
Fix missing fmt argument in error message (#552)
* Clean up strange non-multiple-of-4 indentation in Source::with_root

* Fix missing fmt argument in error message

* Add changelog entry for PR 552
2021-11-03 10:03:42 +02:00
Matthias Seitz a07838eaf5
fix: preserve underscores in case of collisions (#548)
* fix: overloaded with same type arguments

* fix: numerate overloaded functions

* docs: add note

* chore: update changelog

* style: rename vars

* fix: draft underscore fix

* fix: underscore aliases
2021-11-01 01:06:31 +02:00
Matthias Seitz 4123823383
feat: enumerate overloaded functions if they are nameless (#545)
* fix: overloaded with same type arguments

* fix: numerate overloaded functions

* docs: add note

* chore: update changelog

* style: rename vars
2021-10-31 13:24:02 +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
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
Matthias Seitz 44bb02f857
feat: substitute overloaded functions (#501)
* feat: substitute overloaded functions

* chore: update changelog
2021-10-13 12:53:43 +03:00
Matthias Seitz ea8551da4c
feat: add support for multiple contract definitions in abigen macro (#498)
* feat: support multiple contracts in abigen

* fix: use correct events decl

* fix: parsing and tests

* test: add test

* chore: update changelog
2021-10-11 17:18:09 +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
georgewhewell 7d2e900cbb
fix: allow clippy::redundant_clone and clippy::type_complexity in abigen (#491) 2021-10-08 15:14:16 +01:00
Alexey Shekhirin 1f17788133
feat(contract, abigen): support artifact format in proc macro (#480)
* feat(contract, abigen): support artifact format in proc macro

* don't change source abi_str
2021-10-02 20:16:55 +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
Alexey Shekhirin 4036f45f3d
feat(contract, abigen): support Hardhat ABI format (#478) 2021-09-30 11:27:24 +03:00
Matthias Seitz 32c75ab1f5
fix: cleanup lock file after exec cargo metadata (#431)
* fix: cleanup lock file after exec cargo metadata

* fix typos
2021-09-05 13:19:08 +03:00
TannrA 32ad5a6abd
Event aliasing for contract bindings (#425)
* contracts: enable event aliases for Abigen

* contract: unit tests for event aliases

* contract: cleanup expand_event function

* Address pr suggestions

* contracts: remove unnecessary clone

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* Make clippy happy

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
2021-09-03 18:57:40 +03:00
Georgios Konstantopoulos 6cc20688d0
fix(abigen): generate correct imports depending on ethers crate usage (#413) 2021-08-28 21:53:01 +03:00
Matthias Seitz ea566663d4
feat: wasm support (#390)
* feat: partial wasm32 support

* make compile for wasm32

* feat: att async-trait attr

* make compatible with wasm

* add type alias for archs

* rustfmt

* add wasm ci

* make compile with wasm-pack test

* make compile with wasm-pack test

* make compile with wasm-pack test

* make compile with wasm-pack test

* ci: disable wasmpack

* feat: use wasm timer delay

* feat: add wasm provider

* rustfmt

* misc refactor

* add wasm example

* make example a directory

* untrack error log

* move profile to root

* fix unused imports

* ci: enable wasm-pack test

* style: unify websocket implementations

* fix: typos

* fix: make policy compatible with wasm target

* chore: do not include ethers-wasm example as top level workspace member

* chore: modify wasm32 dependencies

* chore: make note about getrandom

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2021-08-23 12:56:44 +03:00
Georgios Konstantopoulos 6cb7cac675
Release: 0.4 (#382)
* fix(abigen): use `no_deps` to avoid touching a Cargo.lock

* fix: use once_cell default features

* release: publish versions

core/providers/signers: 0.4.6
contract: 0.4.7
middleware: 0.4.8
ethers: 0.4.0
2021-08-16 11:54:12 +03:00
Matthias Seitz ba5f650dec
feat: generate rust structs from solidity JSON ABI (#378)
* add raw abi model

* feat: simplify struct representation

* feat: add struct generation

* use structs as function input

* fix: failing test

* add example

* rustfmt
2021-08-16 10:29:44 +03:00
Matthias Seitz 109a6b85ee
fix: only wrap single struct param in a tuple (#368) 2021-08-11 03:21:30 +03:00
Georgios Konstantopoulos 746d8b7bf2
chore(abigen): allow clippy enum variant names (#364) 2021-08-06 15:47:57 +03:00
Matthias Seitz b0b4f4e09e
feat: detect ethers crate paths in derive macros (#366)
* feat: determine ethers crate name using metadata

* use crate detection
2021-08-06 15:47:17 +03:00
Matthias Seitz 9d38d1a412
fix: convert tuple arguments to tuples (#363) 2021-08-02 18:24:22 +02:00
Matthias Seitz ed83223b93
cargo clippy --fix (#346) 2021-07-24 21:53:40 +03:00
Georgios Konstantopoulos 33a39cff86
fix: remove dependency on curl (#285) 2021-05-01 21:26:37 +03:00
Matthias Seitz 32b4e9e3f5
fix(abigen): add indexed attribute when deriving EthEvent (#255)
* fix(abigen): add indexed attribute when deriving EthEvent

* chore(clippy): make clippy happy
2021-04-02 08:46:39 +03:00
Matthias Seitz 816c5fc071
feat(abigen): extend ethevent trait methods and decoding (#239)
* feat: extend EthEvent with decode_log method and support indexed proc
macro attributes

* test: check that ethevent proc macro attributes compile

* docs: document EthEvent proc macro attributes and add example

* refactor: change decode_log to take a reference

* refactor: use ethers as fully qualified path

* feat: add events enum generation

* feat: introduce EthLogDecode trait

* feat: generate EthLogDecode implementations

* refactor: use fully qualified syntax during abigen

* fix: switch to new Event builder

* fix: make test compile again

* test: update failing tests

* refactor: rename event function

* chore(clippy): make clippy happy

* fix: rename the event correctly

* fix: add missing indexed attribute

* Revert "fix: rename the event correctly"

This reverts commit 03eabc3ead.

* fix: make indexed names optional

* fix: dsproxy name

* fix: rename ethers top level module imports
2021-03-19 17:44:59 +02:00
Matthias Seitz 57010c1c60
feat(abigen): include ethevent proc macro in abigen code gen workflow (#232)
* fix: make EthEvent name method a trait method

* refactor: make expand methods members of Context

* fix: make AbiParser parsing non consumeable

* feat: add struct expanding

* feat: use derive(EthEvent) in abigen workflow

* test: check EthEvent in abigen macro

* test: make test compile again

* refactor: simplify and optimize abi parsing from single str

* test: add human readable abigen tests
2021-03-16 21:37:19 +02:00
James Prestwich 3e5f7a795f
feature: report path on failed abigen load (#205) 2021-02-22 20:35:40 +02:00
lerencao 732ff29d14
make abigen reproducible (#200)
* use BTreeMap to make abigen bindings deterministic
2021-02-19 08:34:56 +02:00
Georgios Konstantopoulos a43299c838
fix(abigen): correctly parse params in human readable abi (#194)
* fix(abigen): correctly parse params in human readable abi

* chore: make clippy happy

* test: remove unwrap

* chore: make clippy happy again

* chore: fix contract.rs example

* chore: rename to contract using human readable format

* examples: add abigen example with path to abi

* fix: pin funty version to fix bitvec error

* chore: remove unused import

* chore: fix deps
2021-02-16 19:10:26 +02:00
Georgios Konstantopoulos 98a00e8b7a
chore: use published coins-ledger (#132) 2021-01-05 14:15:18 +02:00
Georgios Konstantopoulos 5c1f8f532a
Upgrade to Tokio 1.0 and remove async-std (#120)
* feat(providers): tokio 1.0

BREAKING: This removes async-std as a compatibility option

* feat: tokio 1.0 in rest of crates

* fix: patch Cargo.toml until deps are released

* fix(contract): load ws deps

* feat: bytes 1.0 (#121)

* feat(core): move to bytes::Bytes

* feat: adjust rest of crates to Bytes

* chore: bump deps

CI fails due to:
https://github.com/snapview/tokio-tungstenite/pull/142#discussion_r550445144

* chore: use latest tokio-tungstenite

* ci: split tests into jobs (#129)

* Switch to `hex` (#128)

* fix(core): replace rustc_hex with hex

* fix(providers): replace rustc_hex with hex

* chore: replace rustc-hex with hex

* chore: cargo fmt

* fix(ledger): copy address from string correctly

* chore: fix flaky tests

Fixes #105
2020-12-31 19:19:14 +02:00
Georgios Konstantopoulos eb26915081
feat: allow encoding/decoding function data (#90)
* feat: allow encoding/decoding function data

* feat: allow decoding event data

* feat: human readable abi

inspired from https://blog.ricmoo.com/human-readable-contract-abis-in-ethers-js-141902f4d917

* test: add event / fn decoding tests

* chore: fix clippy

* feat(abigen): allow providing args in human readable format
2020-10-29 09:48:24 +02:00
Georgios Konstantopoulos c65497543e
feat: convert signing to k256 (#72)
* feat: convert signing to k256

* fix: pass pre-hashed message to sig verification

* feat: wrap the hash to a Digest implementation

* refactor: cleanup and move digest impl to separate file

* chore: adjust abigen tests due to rust update

* test: add byte equality test between ethers-rs / web3.js signatures

* fix(keys): use 512 blocks for sha256

Co-authored-by: Rohit Narurkar <rohit.narurkar@protonmail.com>
Co-authored-by: Alex Vlasov <alex.m.vlasov@gmail.com>
2020-10-01 11:02:21 +03:00
Georgios Konstantopoulos 2d51c523ba
feature: Middleware Architecture (#65)
* feat: convert Provider to Middleware trait

* feat: move gas oracle to middleware crate

* feat: move signer to middleware crate

* feat: add nonce manager middleware and test stacking

* refactor: convert generic middleware jsonrpc type to associated type

* feat: move ethers-contract to middleware arch

* test(provider): make tests pass

* test(middleware): move middleware tests from signer

* test: fix ethers examples

* fix(contract): make tests compile

* chore: fix clippy

* feat: deduplicate trait delegation

* refactor(signer): deduplicate tx signing logic across signers

* fix doctests

* fix: examples, celo tests and ci
2020-09-25 00:33:09 +03:00
Rohit Narurkar a9bb98b5a7
Implement Multicall functionality for batched calls (#43)
* Implement Multicall functionality for batched calls

* Documentation, some modifications as suggested in the review

* (Abigen) handle single input arg and set output irrespective of mutability

* implement send functionality and allow clearing calls

* Fix detokenization, dont require pre-processing anymore

* panic when more than supported number of calls are pushed

* add doc for panics in case of add_call

* (multicall) eth_balance support, update bindings

* refactor: move multicall to its own directory

* fix: add infura api key

* ci: ensure CI runs on PRs from forks

* test(multicall): re-use aggregate call

* contract: make multicall docs compile and remove redundant clones

* ci: add public etherscan API key so that forks don't get rate limited

* chore: adjust test contract naming

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2020-07-03 19:52:09 +03:00
Georgios Konstantopoulos 1cfbc7b3c3
Replace contract client references with Arc (#35)
* feat(provider): allow specifying a default polling interval param

This parameter is going to be used for all subsequent client calls by default. It can still be overriden with the internal
`interval` calls

* feat(contract): replace reference to Client with Arc

* feat(abigen): adjusts codegen to use Arcs

* fix(ethers): adjust examples to new apis

* fix(provider): return TxHash instead of PendingTransaction on tx submission

Returning a PendingTransaction allowed us to have nice ethers.js-like syntax where you submit
a transaction and then can immediately await it. Unfortunately, now that we use Arcs and not lifetimes
this meant that we would need to bind the function call in a variable, and then await on it, which is pretty
bad UX.

To fix this, we revert back to returning a TxHash and introduce a convenience method on the provider and the
contract which takes a tx_hash and returns a PendingTransaction object. The syntax ends up being slightly
more verbose (although more explicit), but the issue is fixed.
2020-06-22 11:44:08 +03:00