* feat(core): expose genesis and private key in Geth
* expose the genesis and clique_private_key fields in GethInstance
* add tests which initialize geth with clique_private_key, making sure
the genesis and clique_private_key fields are exposed on the
GethInstance
* add clique p2p port test
* refactor tests to clean up properly
* fix(contracts): Add a failing test showing that ContractCall IntoFuture is not Send
* fix(contracts): Add Send bound for IntoFuture implementation of ContractCall
* chore: update CHAGELOG
* chore: fmt
---------
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix(core): fix geth --init temp dir race condition
* previously, if multiple instances of geth were spawned concurrently,
only one directory would be used to populate geth's genesis.json.
this can lead to a race condition where the genesis.json would be
re-written by a second instance, before the first instance reads the
genesis.json for populating its db and genesis block with the geth
--init command. this was possible because directory returned by
std::env::temp_dir() is often shared
* fixes the race condition by using tempfile::tempdir(), which creates
a unique directory per call to tempdir()
* only use tempfile on non-wasm32
* started building out providers chapter for the book, updated the intro for the chapter as well as the Http section. Added advanced usage section.
* Updated WS and Ipc chapter, working on usage, furthering descriptions
* updated ipc section, added code snippets
* updating the ws section, adding code snippet for example using the subscribe_pending_tx method
* Updated the provider section to include info on the ens and _node_client fields, udpated the advanced usage section to include CallBuilder and raw_call.
* added examples to ipc and ws chapters, cleared todos
* added note about windows ipc named pipes
* added spaces to comments
* fixed comment, removed all usage of unwrap()
* updated Http provider to initialize without ::<Http::
* updated the Ipc provider to initialize without setting the polling interval
* Update book/providers/providers.md
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
The test was failing for two reasons on macOS:
1. The build info directory was not created during the test.
2. Temporary directories are created with symbolic links on macOS and
the path canonicalization returns the given path if it doesn't exist.
This lead to a mismatch between the project root's canonical path (which
did exist and thus was a real path after canonicalization) and the build
info directory's canonical path (which did not exist and was a symbolic
link after canonicalization).
The fix is to create the build info directory to make sure its canonical
path matches the project root's canonical path.
* feat: add new chains and use u64
* chore: manually implement Clone and Debug to avoid trait bounds.
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* fix(abigen): ensure correct ABI in `From` impl
`new` creates a `Contract` with the correct ABI, but the `From` impl
simply wraps the source `Contract`, which could have a completely
different ABI. In effect this was an unsafe cast, and indeed was
observed to trigger a "method not found (this should never happen)"
panic for subsequent method lookups. Implementing `From` in terms of
`new` fixes this, at the cost of an extra `Arc::clone()` (which I can't
see how to eliminate without piercing the `ethers::contract::Contract`
public API).
* Remove unnecessary `async` from test
Co-authored-by: DaniPopes <57450786+DaniPopes@users.noreply.github.com>
Co-authored-by: DaniPopes <57450786+DaniPopes@users.noreply.github.com>
* chore: rename event_derives to derives
Misleading name, `event_derives` implies that only Solidity events'
structs would apply, while this is not true
* last derive
* mv
* docs
* docs
* last doc