Extract the ABI (and other metadata) from Ethereum bytecode, even without source code.
Our ABI loaders learned about contract metadata with ABILoader.getContract(address): Promise<ContractResult>
, thanks to @SonOfMosiah!
const loader = new whatsabi.loaders.SourcifyABILoader();
// Previously: const abi = await loader.loadABI(address);
const { abi, name, evmVersion, compilerVersion, runs, ok } = await loader.getContract(address);
if (!ok) throw new Error("contract not found");
...
Full Changelog: https://github.com/shazow/whatsabi/compare/v0.10.1...v0.11.0
loaders.defaultsWithApiKeys
is now loaders.defaultsWithEnv
, supporting more overrides: SOURCIFY_CHAIN_ID
, ETHERSCAN_BASE_URL
, ETHERSCAN_API_KEY
(thanks @SonOfMosiah).Example:
const result = await whatsabi.autoload(address, {
provider: provider,
... whatsabi.loaders.defaultsWithEnv({
SOURCIFY_CHAIN_ID: 42161,
ETHERSCAN_BASE_URL: "https://api.arbiscan.io/api",
ETHERSCAN_API_KEY: "MYSECRETAPIKEY",
}),
});
Full Changelog: https://github.com/shazow/whatsabi/compare/v0.10.0...v0.10.1
loaders.defaultsWithAPIKeys(env)
loaders.defaultsWithEnv
in v0.10.1]: New helper for initializing default loaders with your own API keys (and more):
const env = { ETHERSCAN_API_KEY: "<YOUR KEY>" }; // or process.env
const r = await whatsabi.autoload(address, {
provider,
...whatsabi.loaders.defaultsWithEnv(env),
});
proxies.DiamondProxy
now knows how to load all registered facets with proxy.facets(provider, address)
or proxy.selectors(provider, address)
. Shoutout to @banteg for helping figure this out.selectorsFromBytecode
will now return as soon as the jump table is processed, for faster performance when just extracting selectors.examples/benchmark-selectors.ts
: Add benchmark example, improve selector loading performance when bypassing full parsing by @shazow in https://github.com/shazow/whatsabi/pull/71
Full Changelog: https://github.com/shazow/whatsabi/compare/v0.9.1...v0.10.0
Full Changelog: https://github.com/shazow/whatsabi/compare/v0.9.0...v0.9.1
chainId
to sourcify loader by @jxom in https://github.com/shazow/whatsabi/pull/60
Full Changelog: https://github.com/shazow/whatsabi/compare/v0.8.6...v0.9.0
Full Changelog: https://github.com/shazow/whatsabi/compare/v0.8.5...v0.8.6
Full Changelog: https://github.com/shazow/whatsabi/compare/v0.8.2...v0.8.5
autoload
: Include empty name keys when name is unknown (as per spec). 😑examples/*.ts
code to latest WhatsABI and Ethers v6Full Changelog: https://github.com/shazow/whatsabi/compare/v0.8.0...v0.8.2
Full Changelog: https://github.com/shazow/whatsabi/compare/v0.8.0...v0.8.1
Full Changelog: https://github.com/shazow/whatsabi/compare/v0.7.0...v0.8.0