跳转到主要内容

ape-etherscan:基于以太坊网络的Etherscan浏览器插件

项目描述

快速开始

此插件支持以下区块链浏览器

依赖项

安装

通过 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")

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

ape-etherscan-0.8.3.tar.gz (101.6 kB 查看哈希值)

上传时间

构建分发

ape_etherscan-0.8.3-py3-none-any.whl (26.3 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面