Commit Graph

110 Commits

Author SHA1 Message Date
DaniPopes 72449c09e1
feat(contract): add extra Multicall helper methods (#1666)
* feat(contract): add extra Multicall helper methods

* docs: update CHANGELOG.md

* normalize helper methods' names
2022-09-05 09:54:49 -07:00
Matthias Seitz 6a86d4ff22
chore(clippy): make clippy happy (#1659) 2022-09-04 10:57:52 -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 792d415845
fix: set chain id explicitly (#1647) 2022-08-30 09:45:36 -07:00
Matthias Seitz 6e6d827f1f
test: add large tuple test (#1642) 2022-08-29 17:03:12 -07:00
DaniPopes edc00054b1
feat(contract): update Multicall to Multicall3 (#1584)
* chore: update multicall_contract binding

* feat: update multicall_contract.rs to Multicall3

* fix multicall_contract.rs exports

* update test Multicall.sol contract

* feat: update Multicall to Multicall3

* update exports

* update tests

* perf: use aggregate3 when no value is being sent

* feat: handle revert data

* test: add multicall v2 and v3 tests

* fix: clippy

* docs: add documentation, improve comments

* docs: add more documentation

* fix: solidity minimum version for Multicall.sol

* fix: multicall_contract.rs imports

* docs: add explanation for previous commit

* docs

* docs

* fix: remove unused re-export, feature gate Multicall

* fix: address review

* chore: improve error handling

* chore: export MulticallError

* docs
2022-08-28 12:18:58 -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
Matthias Seitz c51dcffec6
test: comment out etherscan abigen! test (#1616) 2022-08-19 08:18:03 -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
Matthias Seitz 6b713958d1
feat: bump abi/token tuple limit (#1506) 2022-07-26 08:27:19 -07:00
Matthias Seitz d22fb2bd0b
test: update broken test and use it module for ethers-contract (#1502)
* refactor: make ethers-contract tests it module

* update failing test

* assert console is generated

* chore(clippy): make clippy happy

* update broken test

* move sol files back

* chore: rustfmt

* chore(clippy): make clippy happy
2022-07-24 14:41:06 -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
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 7c6462be02
chore(core): convenience impls for Bytes (#1421)
* chore(core): convenience impls for Bytes

* update asserts
2022-06-28 09:30:59 -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 2524663674
fix(abigen): use abi signature attribute if provided (#1409) 2022-06-23 02:53:24 -04:00
Matthias Seitz 89bc6420bb
test: replace ganache with anvil (#1286)
* ci: install anvil

* test: use anvil instead of ganache

* ci: fix anvil ver

* ci: re-enable example tests

* test: remove unnecessary assertions

* test: enable anvil launch test

* docs: typo

* test: fix anvil chain id

* ci: install ganache

Ganache is needed for the Ganache tests

* chore: remove legacy feature from some examples

* ci: correctly build examples

* test: use correct account balance for anvil

* chore: remove sub_id == 1 check

this was only possible in ganache because it gives serial
sub ids, but in every other reasonable client the ids are generated
randomly, so we cannot test for its value

* test: ensure txs are different

There is a bug in Ganache's mempool which accepts duplicate transactions (here with the same nonce), whereas here we pre-set all the nonces so that they end up having a different transaction hash.

* test: ignore ganache tests

* fix: terzor api changes

* ci(examples): install Anvil, remove geth/ganache

* test(provider): Anvil instead of Geth

some tests start to fail now

* fix: revert usage of Anvil in ipc tests

Anvil does not support IPC yet

* fix: update examples script

* ci: use anvil for wasm example

* replace last ganache usage

Co-authored-by: Oliver Nordbjerg <hi@notbjerg.me>
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-06-01 08:22:39 -07:00
Matthias Seitz cffcc7bbec
chore(clippy): fix newest nightly lints (#1298) 2022-05-22 15:18:57 -07:00
Matthias Seitz 4b462e6ef2
test(abigen): ensure structs in events work (#1235)
* test(abigen): ensure structs in events work

* chore: rename vars

* chore: use ganache chain id

* chore: disable ganache test on celo
2022-05-09 09:26:36 -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 77bd9d49c8
test: add ethcall derive test for vec tuples (#1144) 2022-04-23 03:09:29 -07:00
Matthias Seitz a99dd1328b
fix: support display for bytes (#1148) 2022-04-16 13:08:31 -07:00
Dan Cline 1d14f9d26e
Ensure a consistent chain ID between a signer and provider in SignerMiddleware (#1095)
* feat(middleware): fetch chainid from middleware

Require SignerMiddleware to fetch the inner middleware's to set for the
signer. SignerMiddleware now requires an instantiated middleware with
an accessible get_chainid method.

* ci: update ganache

newer ganache version is needed to specify the ganache provider chain id
in tests

* set SignerMiddleware constructor return to result

* create new method for pulling chainid

* add consistent chainid CHANGELOG entry

* remove awaits

* switch test_derive_eip712 to use consistent signer

 * remove gas estimation equality assert in deploy_and_call_contract -
   updated version of ganache no longer returns the same value for gas
   estimation and gas_used

* revert with_signer to non-async non-result

* cargo fmt

* expand SignerMiddleware::new comment

* remove doc indent
2022-04-10 10:55:30 -07:00
Matthias Seitz a43a9b8806
fix(abi): change abiarraytype trait bounds for tuple (#1079) 2022-03-24 17:40:34 -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 3d4feccabf
fix(core): check against ethers internal crate names (#1060)
* fix(core): check against ethers internal crate names

* fix: add import back
2022-03-17 15:14:53 -07:00
oblique 46d7afd65b
fix(abigen): safe ident field names (#989) 2022-03-05 20:25:03 +02:00
Matthias Seitz 960b873b00
fix(abigen): safe ident underscore followed by numeric (#970) 2022-02-28 00:04:43 +02:00
Matthias Seitz 10fcf60791
fix(abigen): support functions with different casing (#972) 2022-02-27 17:40:57 +02:00
Matthias Seitz 72da5913d2
test(abigen): add etherscan test case (#964) 2022-02-24 22:07:58 +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
Jim e3f0621d43
Expose New `call_raw` API that permits MultiCalls without Detokenization (#915)
* Add `call_raw` method that forgoes detokenization for MultiCall. Have `call` wrap around `call_raw` permitting user to handle detokenization themselves if they wish

* Improve documentation: Add details to the documentation example that informs the user of their responsibility to detokenize results
2022-02-15 22:38:01 +02:00
Mark Tyneway 100f121202
feat(ethers-contract): add `send_with_receipt` to `Deployer` (#865)
* feat(ethers-contract): add `send_with_receipt` to `Deployer`

The `Deployer` is used to deploy contracts and its `send`
function returns an attached instance of a `Contract`.
There is no way to know the transaction hash of the
deployment transaction, so this commit adds another
method `send_with_receipt` that returns an attached
`Contract` as well as a `TransactionReceipt`.

* changelog: update

* tests: call `send_with_receipt` in tests

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-02-05 16:37:09 +02:00
Matthias Seitz 8c07861b09
feat(codec): impl codec for Bytes (#856) 2022-02-02 13:57:39 +02:00
Eugene cbfbd6052c
Implement trace_callMany (#792)
* Implement trace_callMany

* cargo fix and ignore flaky test for now

* Update ethers-providers/src/provider.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-15 12:41:43 +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 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 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 0b1f3b1dcf
feat(solc): add support for library linking (#656)
* feat(solc): add support for library linking

* chore: update changelog

* fixbreaking compactref api

* rm check

* return Bytes instead

* revert changes

* simplify resolve

* test: add lost tests
2021-12-08 02:38:29 +02: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 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
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
Francesco Iannelli bd3a704200
Feat/add call deployer (#554)
* contract: add .call() method to Deployer

It is now possible to dry run a contract deployment.

* add .call() method of Deployer to unreleased

* add PR to changelog
2021-11-04 15:02:05 +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
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 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