ape-etherscan:基于以太坊网络的Etherscan浏览器插件
项目描述
快速开始
此插件支持以下区块链浏览器
- Etherscan 用于以太坊网络。
- Ftmscan 用于Fantom网络。
- Arbiscan 用于Arbitrum网络。
- Optimistic Etherscan 用于Optimism网络。
- Polygonscan 用于Polygon网络。
- Polygonscan ZkEVM 用于Polygon ZkEVM网络。
- Snowtrace 用于Avalanche网络。
- Basescan 用于Base网络。
- Bscscan 用于 Binance-Smart-Chain 网络。
- Blastscan 用于 Blast 网络。
- Scrollscan 用于 Scroll 网络。
依赖项
- python3 版本 3.9 至 3.12。
安装
通过 pip
您可以通过 pip
安装最新版本
pip install ape-etherscan
通过 setuptools
您可以克隆仓库并使用 setuptools
获取最新版本
git clone https://github.com/ApeWorX/ape-etherscan.git
cd ape-etherscan
python3 setup.py install
快速使用
设置环境
将 API 密钥指定为环境变量。您可以将它们放在 shell 的配置文件中,如 ~/.profile
,或使用像 direnv 这样的工具,并将它们存储在本地 .envrc
文件中。
您还可以指定多个以逗号分隔的密钥,每次请求将选择一个随机密钥。如果您遇到 API 速率限制,这可能很有用。
您可以通过在 Etherscan 注册并访问 此页面 来获取 API 密钥。
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
交易 URL
安装此插件后,Etherscan 探索器 URL 将出现在 CLI 输出中。
INFO: Submitted 0x123321123321123321123321123aaaadaaaee4b2aaa07901b80716cc357a9646
etherscan URL: https://rinkeby.etherscan.io/tx/0x123321123321123321123321123aaaadaaaee4b2aaa07901b80716cc357a9646
合约类型
ape-etherscan
插件还帮助获取 contract_types
。使用 Contract
顶层结构创建合约实例。当探索器插件定位到特定地址的合约类型时,Contract
返回值使用该合约类型。
from ape import accounts, Contract
contract = Contract("0x55a8a39bc9694714e2874c1ce77aa1e599461e18")
receipt = contract.call_mutable_method("arg0", sender=accounts.load("acct"))
第一行 contract = Contract("0x55a8a39bc9694714e2874c1ce77aa1e599461e18")
检查 ape 是否为地址 0x55a8a39bc9694714e2874c1ce77aa1e599461e18
缓存了合约类型。如果没有找到缓存的合约类型,它将使用探索器插件尝试找到它。如果找到,则将合约类型缓存到磁盘和内存中,以便在当前会话中后续调用不需要 HTTP 请求。从 Contract
返回的值是 ContractInstance
,因此它与您的活动提供者连接,并准备好进行交易。
注意:来自 Etherscan 的 Vyper 合约始终返回名称 Vyper_contract
。但是,如果插件检测到合约类型具有名为 symbol
的方法,它将使用该调用返回的值。
合约验证
使用 ape-etherscan
插件发布和验证您的合约。合约验证将 Ape 的合约类型与 Etherscan 上的 Ethereum 地址关联起来。有关 Etherscan 验证的信息,请参阅 此处。
在 Ape 中验证合约时,可以在部署时将 publish
键设置为 True
。
from ape import accounts, project
account = accounts.load("testnetacct")
account.deploy(project.MyContract, publish=True)
您还可以稍后直接使用探索器类进行发布。
from ape import networks
etherscan = networks.provider.network.explorer
etherscan.publish_contract("0x55a8a39bc9694714e2874c1ce77aa1e599461e18")
并非每个网络的探索器都支持多文件验证。对于这些网络,将调用相应的编译器插件的 flatten
功能,以便将合约作为单个文件进行验证。
注意:您必须设置 Etherscan API 密钥环境变量才能使用发布功能。
自定义网络
如果您想使用 ape-etherscan 与您的 自定义网络配置,您可以使用配置时使用的相同网络标识符。例如,使用名为 "apechain" 的自定义 Ethereum 网络,您的配置可能看起来像这样
networks:
custom:
- name: apechain
chain_id: 31337
node:
ethereum:
apechain:
uri: http://localhost:8545
etherscan:
ethereum:
rate_limit: 15
apechain:
uri: https://custom.scan
api_uri: https://api.custom.scan/api
依赖项
您可以在项目中使用来自 Etherscan 的依赖项。按照以下方式配置它们
dependencies:
- name: Spork
etherscan: "0xb624FdE1a972B1C89eC1dAD691442d5E8E891469"
ecosystem: ethereum
network: mainnet
然后,在您的代码中访问依赖项的合约类型
from ape import project
spork_contract_type = project.dependencies["Spork"]["etherscan"].Spork
查询账户
Etherscan 提供了一个用于账户数据的查询提供程序插件。使用以下语法从 Etherscan 查询账户交易
from ape import chain
history = chain.history["vitalik.eth"]
# NOTE: Also showing how you can use `start_nonce=` and `stop_nonce=`
# to limit the history.
result = history.query("*", start_nonce=1000, stop_nonce=1001, engine_to_use="etherscan")
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。