Commit Graph

367 Commits

Author SHA1 Message Date
Georgios Konstantopoulos c1430fa04e
fix(provider): Add Send trait bound to PendingTx state future (#39) 2020-06-23 10:05:04 +03:00
Georgios Konstantopoulos bb1ac9c666
Improve Ganache Flexibility (#37)
* feat(core): add more features to ganache

* test(provider): choose endpoint dynamically

* test(signer): choose endpoint and accounts dynamically

* test(contract): choose endpoint and accounts dynamically

* fix: dynamic port / accounts in examples

* core(chore): fix doctest
2020-06-22 16:42:34 +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
Georgios Konstantopoulos 7a17e54fbd
feat(contract): add helper to query events w/ metadata (block num + tx hash) (#33)
* feat(contract): add helper to query events w/ metadata (block num + tx hash)
2020-06-22 01:08:40 +03:00
Georgios Konstantopoulos 833ca33f60
feat(signers): make Signer on Client optional (#34)
This allows using Contract either in read-only mode (e.g. for fetching data/events)
or for using the accounts on the node as senders
2020-06-21 21:19:59 +03:00
Georgios Konstantopoulos 9a0c97286b
feat(provider): introduce a pending tx polling delay so that we do not spam the chain (#31) 2020-06-21 11:09:19 +03:00
Georgios Konstantopoulos 0cfeadadf4
Websockets + TLS for Async-Std / Tokio (#30)
* fix: relax trait bounds on JsonRpcClient

* refactor(provider): move http client to separate dir

* feat(provider): add initial Websocket support over Stream/Sink + Tungstenite

* test(provider): add websocket test

* feat(provider): add convenience method using tokio/async-std behind a feature flag

* test(provider): add websocket ssl test

* feat(provider): add TLS websockets for tokio/async-std

* docs(provider): add websocket docs / examples

* fix(provider): make tokio an optional dep
2020-06-21 10:17:11 +03:00
Georgios Konstantopoulos ded8f50ef4
chore: remove leftover file
This got checked in by accident
2020-06-20 18:50:40 +03:00
Georgios Konstantopoulos 3459b1d350
docs: add missing attribution to Althea for the lean JSON RPC client 2020-06-20 17:15:00 +03:00
Georgios Konstantopoulos 8240b26a80
docs: add missing attribution to Gnosis for codegen & macros 2020-06-20 17:02:57 +03:00
Georgios Konstantopoulos 4ff466a593
fix intradoc links and add missing cargo metadata (#29) 2020-06-20 16:55:07 +03:00
Georgios Konstantopoulos 7ff8b8222c
Dual license under MIT/Apache 2 (#28)
* fix: dual license MIT / Apache 2

* provider: add missing license
2020-06-18 08:20:20 +03:00
Georgios Konstantopoulos a9d1be4def
Improve Stream performance (#25)
* perf(provider): remove infinite loop and rely on the runtime to poll the stream

* chore: cargo fmt
2020-06-17 21:01:20 +03:00
Georgios Konstantopoulos a558a4237b
docs: add ethers.js as a reference 2020-06-17 19:18:46 +03:00
Georgios Konstantopoulos 771c55175f
ci: cargo fmt 2020-06-17 16:36:09 +03:00
Georgios Konstantopoulos 4fd656bce1
Provider Fixes on filters and gas estimation (#23)
* fix(provider): do not pass a param to estimate_gas

* fix(provider): pass correct number of args to new_filter

* test(signer): add test to ensure that the Pending block number works

* docs: fix links
2020-06-17 16:09:41 +03:00
Georgios Konstantopoulos ba5ae5a894
Add Celo support (#8)
* feat(types): add optional Celo support

* feat: add Celo feature flags to all crates

* test(provider): add get_transaction celo test

* test(signer): add send_transaction celo test

* test(contract): add deploy and call contract function celo test
2020-06-17 12:22:01 +03:00
Georgios Konstantopoulos 20493e0190
Fix Pending Transactions and EIP-155 (#22)
* fix(provider): ensure the Pending transaction calls the waker to get polled again

* feat(core): allow setting the blocktime in ganache

* test(provider): move pending txs test to integration tests + use block time

* fix(signers): make EIP-155 optional and fix sighash generation bug
2020-06-17 11:02:03 +03:00
Georgios Konstantopoulos 2c734f0d61
fix(core): make Signature.v a u64 instead of a u8 and expose `verify` (#21)
u8 would not work if a large chain_id was used
2020-06-17 09:45:15 +03:00
Georgios Konstantopoulos 1a47e933ae
feat(signers): implement Serde and make Wallet API smaller (#20)
* feat(signers): implement Serde and make API smaller

* fix: add abigen as a dev-dependency feature
2020-06-17 09:38:04 +03:00
Georgios Konstantopoulos 570b45eb10
ABI Encoder v2 + ABI Spec v6.6 (#17)
* feat(core): update ethabi and enable more Toeknize impls

* feat(contract/abigen): implement simple AbiEncoderV2

* tests(ethers): add abigen example

* fix(core): fix abi tests

* chore: make clippy happy
2020-06-16 15:08:42 +03:00
Georgios Konstantopoulos 5629c1f25e
ci: switch to github actions (#18)
Switching to Github actions since Circle would often run out of memory while linking, e.g. https://app.circleci.com/pipelines/github/gakonst/ethers-rs/63/workflows/0eb4236c-ba46-46ab-af9f-21878101434b/jobs/65
2020-06-16 14:36:45 +03:00
Rohit Narurkar 5d92e72882
add json rpc bindings for eth_getCode (#15) 2020-06-15 23:10:27 +03:00
Georgios Konstantopoulos 636762d464
docs: add contributing.md 2020-06-15 18:05:29 +03:00
Georgios Konstantopoulos a52dd9a277
docs: add some templates (#14) 2020-06-15 17:43:32 +03:00
Georgios Konstantopoulos 1d7bdef0bd
feat(utils): add various new utility methods (#13) 2020-06-15 17:16:14 +03:00
Georgios Konstantopoulos 79b21b9ea0
add pending tx type to wait for tx confirmations (#11)
* feat: add pending tx type

* feat(pending-txs): implement the full state machine

* tests(ethers): fix transfer eth example

* feat: use the pending transaction struct when deploying a contract

* ci: skip the pending tx test

* chore: fix doctests
2020-06-15 15:40:06 +03:00
Sebastian Bolaños 20da946aa2
Update docs path (#12)
* Change docs url from local modules to docs.rs
2020-06-15 14:29:50 +03:00
Georgios Konstantopoulos 57d8efd7cc
fix(provider): pass array arguments (#10)
ganache would accept malformed requests, but geth is more strict
2020-06-15 13:53:40 +03:00
Georgios Konstantopoulos d90b03da06
Add streamed logs to the provider (#9)
* feat(provider): implement Streamed logs

This utilizes eth_getFilterChanges. The stream struct must be instantiated with a factory that yields logs/hashes.
Consumers are expected to use the `FilterStream` trait in order to simplify their type definitions

* feat(provider): expose streaming methods

* test(provider): add new blocks/pending txs test

* feat(contract): allow events to be streamed

* test(contract): add integration test for streaming event logs

* perf(contract-factory): take abi and bytecode by value instead of reference

The abi, bytecode and the factory's deploy method now consume the structs instead of being passed by reference. While this means that
consumers might need to clone before using them, this gives us some more flexiblity around factories inside helper functions

* refactor(contract): use test helpers to reduce code dup

* chore: make clippy happy
2020-06-15 11:46:07 +03:00
Georgios Konstantopoulos beb480f22b
chore(abigen-macro): do not run the doctests since the abi paths cannot be found 2020-06-11 12:33:09 +03:00
Georgios Konstantopoulos a1096f8705
chore(abigen): fix doctest 2020-06-11 12:16:36 +03:00
Georgios Konstantopoulos 7020dc18fb
docs(crate): further expand the docs 2020-06-11 11:41:41 +03:00
Georgios Konstantopoulos 3522c78ec5
fix: simplify ENS interfaces 2020-06-11 10:16:38 +03:00
Georgios Konstantopoulos 9cad87a879
chore: fix examples 2020-06-11 09:45:14 +03:00
Georgios Konstantopoulos 7dbc2d4f25
test(abigen): re-enable tests 2020-06-11 00:11:42 +03:00
Georgios Konstantopoulos aa454b945b
chore(abigen): remove unnecessary stuff 2020-06-10 22:46:55 +03:00
Georgios Konstantopoulos f562b47fd2
docs(abigen): update struct 2020-06-10 22:34:39 +03:00
Georgios Konstantopoulos 030fc671fe
docs(contract): expand contract docs 2020-06-10 21:20:47 +03:00
Georgios Konstantopoulos 1adbca67b0
docs(signers): expand Wallet examples 2020-06-10 17:48:34 +03:00
Georgios Konstantopoulos 469c0cb96b
fix(signers): make wallet non-optional 2020-06-10 15:21:16 +03:00
Georgios Konstantopoulos 6156c4bf90
feat(signers): join the transaction futures 2020-06-10 13:34:48 +03:00
Georgios Konstantopoulos 8b5dac2866
docs(provider): add more docs 2020-06-10 11:58:27 +03:00
Georgios Konstantopoulos 6f5bc95543
docs(core): improve struct level docs 2020-06-10 10:33:51 +03:00
Georgios Konstantopoulos f93b8b6919
docs(providers): add doctests and examples 2020-06-10 10:10:33 +03:00
Georgios Konstantopoulos 980e7fca8c
docs: add some more docs 2020-06-10 09:24:36 +03:00
Georgios Konstantopoulos 73b502ed5f
macro: re-enable paths/etherscan and enable more complex tokens 2020-06-04 00:05:05 +03:00
Georgios Konstantopoulos ba7fedc7d3
abigen: simplify structs and re-enable file/remote codegen 2020-06-03 23:09:46 +03:00
Georgios Konstantopoulos b47c89455c
ci: skip tests with external deps 2020-06-03 00:16:08 +03:00
Georgios Konstantopoulos b0feff2432
fix: serialize null filters 2020-06-03 00:10:46 +03:00