The GanacheProvider uses an in-memory Ethereum instance (via Ganache) which can be used for testing allowing free transactions and performing explicit operations against an account not normally possible on a real network.
/home/ricmoo> npm install @ethers-ext/provider-ganache
import { GanacheProvider } from "@ethers-ext/provider-ganache";
// Create a new in-memory GanacheProvider
const provider = new GanacheProvider();
///////////////////
// Snapshots
const revert = await provider.snapshot();
// ... perform operations
// Revert back to the snapshot state
await revert();
///////////////////
// Account State
await provider.setAccount(addr, {
balance: 1000000000000000000n,
nonce: 5,
code: "0x00"
});
await provider.setStorageAt(addr, 123, data);
When constructing a GanacheProvider, either the standard options normally passed to Ganache may be used or an existing Ganache instance created with the desired configuration.
Takes a snapshot of the current state and resolves to a function, that
when called will revert the Provider to the state at the time snapshot
was called.
Sets account state for address
. The state
can include any of the
properties balance
, code
or nonce
.
Sets the storage for address
at slot
to value
.
Mines a block.
MIT License.