ape-etherscan: Etherscan Explorer Plugin for Ethereum-based networks
Project description
Quick Start
The following blockchain explorers are supported in this plugin:
- Etherscan for Ethereum networks.
- Ftmscan for Fantom networks.
- Arbiscan for Arbitrum networks.
- Optimistic Etherscan for Optimism networks.
- Polygonscan for Polygon networks.
- Polygonscan ZkEVM for Polygon ZkEVM networks.
- Snowtrace for Avalanche networks.
- Basescan for Base networks.
- Bscscan for Binance-Smart-Chain networks.
Dependencies
- python3 version 3.8 up to 3.11.
Installation
via pip
You can install the latest release via pip
:
pip install ape-etherscan
via setuptools
You can clone the repository and use setuptools
for the most up-to-date version:
git clone https://github.com/ApeWorX/ape-etherscan.git
cd ape-etherscan
python3 setup.py install
Quick Usage
Set up the environment
Specify API keys as environment variables. You could put them in your shell's config like ~/.profile
or use a tool like direnv and store them locally in .envrc
.
You can also specify multiple comma-separated keys, a random key will be chosen for each request. This could be useful if you hit API rate limits.
You can obtain an API key by registering with Etherscan and visiting this page.
export ETHERSCAN_API_KEY=SAMPLE_KEY
export FTMSCAN_API_KEY=SAMPLE_KEY
export ARBISCAN_API_KEY=SAMPLE_KEY
export POLYGON_ZKEVM_ETHERSCAN_API_KEY=SAMPLE_KEY
export BASESCAN_API_KEY=SAMPLE_KEY
Transaction URLs
When you have this plugin installed, Etherscan explorer URLs appear in CLI output.
INFO: Submitted 0x123321123321123321123321123aaaadaaaee4b2aaa07901b80716cc357a9646
etherscan URL: https://rinkeby.etherscan.io/tx/0x123321123321123321123321123aaaadaaaee4b2aaa07901b80716cc357a9646
Contract Types
The ape-etherscan
plugin also assists in fetching contract_types
.
Use the Contract
top-level construct to create contract instances.
When the explorer plugin locates a contract type for a given address, the Contract
return-value uses that contract type.
from ape import accounts, Contract
contract = Contract("0x55a8a39bc9694714e2874c1ce77aa1e599461e18")
receipt = contract.call_mutable_method("arg0", sender=accounts.load("acct"))
The first line contract = Contract("0x55a8a39bc9694714e2874c1ce77aa1e599461e18")
checks if ape has a cached contract-type for the address 0x55a8a39bc9694714e2874c1ce77aa1e599461e18
.
If it does not find a cached contract type, it uses an explorer plugin to attempt to find one.
If found, the contract type is then cached to disk and in memory for the active session so that subsequent invocations don't require HTTP calls.
The return value from Contract
is a ContractInstance
, so it is connected to your active provider and ready for transactions.
NOTE: Vyper contracts from Etherscan always return the name Vyper_contract
.
However, if the plugin detects that the contract type has a method named symbol
, it will use the return value from that call instead.
Contract Verification
Use the ape-etherscan
plugin to publish and verify your contracts.
Contract verification associates a contract type from Ape with an Ethereum address on Etherscan.
Learn more about Etherscan verification here.
To verify contract in Ape, you can set the publish
key to True
when deploying:
from ape import accounts, project
account = accounts.load("testnetacct")
account.deploy(project.MyContract, publish=True)
You can also use the explorer class directly to publish at a later time:
from ape import networks
etherscan = networks.provider.network.explorer
etherscan.publish_contract("0x55a8a39bc9694714e2874c1ce77aa1e599461e18")
Not every network's explorer supports multi-file verification.
For those networks, the corresponding compiler plugin's flatten
functionality is invoked, in order to verify the contract as a single file.
NOTE: You must set an Etherscan API key environment variable to use the publishing feature.
Custom Networks
If you would like to use ape-etherscan with your custom network configuration, you can use the same network identifier you used to configure it. For instance, with a custom Ethereum network called "apechain" your configuration might look something like this:
networks:
custom:
- name: apechain
chain_id: 31337
geth:
ethereum:
apechain:
uri: http://localhost:8545
etherscan:
ethereum:
rate_limit: 15
apechain:
uri: https://custom.scan
api_uri: https://api.custom.scan/api
Dependencies
You can use dependencies from Etherscan in your projects. Configure them like this:
dependencies:
- name: Spork
etherscan: "0xb624FdE1a972B1C89eC1dAD691442d5E8E891469"
ecosystem: ethereum
network: mainnet
Then, access contract types from the dependency in your code:
from ape import project
spork_contract_type = project.dependencies["Spork"]["etherscan"].Spork
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ape-etherscan-0.7.1.tar.gz
.
File metadata
- Download URL: ape-etherscan-0.7.1.tar.gz
- Upload date:
- Size: 98.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5e6537a44f138401d9e3bf55619799e73708fc246d8b0a92bc81f3bc45d595f |
|
MD5 | a2346b6094ca60cf083894bcff76c2dc |
|
BLAKE2b-256 | 9e6fc676a13d02103344f48d6d5208b9ecb4d7c3dd17c18f3014a95994db9d0a |
File details
Details for the file ape_etherscan-0.7.1-py3-none-any.whl
.
File metadata
- Download URL: ape_etherscan-0.7.1-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 506bdd8bd76b01ac8160131bfa72226c92a50b3aa649b6e6f640a4981a0bf1dc |
|
MD5 | 824b0c9fe59186e7d153a053c4465897 |
|
BLAKE2b-256 | 6f55ed49615daf4479f1feedcbedebb728bc98b381afab23b801d3462487eff5 |