This is a functioning example of generating + encrypting a new keystore and decrypting a keystore using ethers-rs. This could particularly be helpful for applications that rely on local encrypted keys client side or server side.
* 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
* P1 (#1)
* CI trigger test with changes
* CI trigger test with changes - type fix
* Post Trigger Rendering Test
* remove actions triggers on P1 branch used during testing
* mx - P1 Prep PR - with configured md-admonition and md-mermaid (#2)
* CI trigger test with changes
* CI trigger test with changes - type fix
* Post Trigger Rendering Test
* remove actions triggers on P1 branch used during testing
* Add example callouts (admonitions) and mermaid diagram in intro.md
* Update book/getting-started/intro.md
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
* chore(core): alias&export error as ParseChainError
`pub use TryFromPrimitiveError as ParseChainError`
for backwards compatibility
* fix: comment
* fully alias
* Use Anvil instead of Goerli to test the nonce manager
* restore comment
* fix: explicitly assign `inner.max_priority_fee_per_gas`
Co-authored-by: Andrea Simeoni <>