ApeWorX: 新的基于 Python 语言的区块链开发框架

Brownie 是 Python 开发人员经常使用智能合约框架。 现在出现了一个 Brownie 的继任者,可以让 Python Web3 开发人员获得更好的体验。

在本文中,我将讨论这个 Brownie 的继任者 ApeWorX,也称为“Ape”。

ApeWorX 是一个基于 Python 的智能合约开发和部署框架,有很强的可定制性和安全的私钥管理机制。

你们中的许多人都知道我(Patrick Collins)很喜欢 Python,所以在进入 Web3 领域后,我爱上了 Brownie 框架。自从我进入这个领域以来,似乎所有原创的 Web3 框架都是两种结果:已经成功或者被另一个竞争对手替换:

以太坊 Python 社区是协作性最强、成员之间联系最紧密的社区之一。在 Ape contributor 中可以看到许多 VyperBrownie 的 contributor,包括 Doggie BBantegSkellet0r(甚至还有我自己!)

此外,Python 爱好者和 Curve 等 DeFi 协议都开始使用 Ape 作为其智能合约的框架。

今天,我们将从 Brownie 用户的角度对 ApeWorX 进行快速的了解和学习。

快速了解

你可以在 Chainlink 的 repo ApeWorX-starter-kit 中找到一个最简 ApeWorX & Vyper 模板,其中包含代码示例以帮助你快速了解。

使用 pipx install eth-apepip 安装 ape 后,你就可以访问 ape 命令行界面了。

初始化一个新项目的最快方法是使用 ape init,它会生成一个空白配置的项目文件夹,如下所示:

.

├── ape-config.yaml

├── contracts

├── scripts

└── tests

以下是每个文件夹包含的内容:

  • Contracts:你所有的 Vyper、Solidity 或其他合约文件都将放在这里。
  • Scripts:所有 Python 代码的存放位置。
  • Tests:你的 Python 测试文件。
  • ape-config.yaml:项目的配置文件。就类似于 brownie-config.yaml 或 hardhat.config.js。

在 scripts 文件夹中,你可以写一个如下的文件:

def main():

 print("Hello!")

在 ape 中想要运行任何一个 Python 脚本,运行:

ape run scripts/my_script.py

Ape 的插件系统

默认情况下,Ape 没有 Vyper、Solidity 或任何其他东西,而是需要使用插件系统使得 ApeWorX 完全可定制,以满足开发者特定的智能合约开发需求。两个最受欢迎的插件是用于 SolidityAlchemy 的插件,它们允许你编译 Solidity 智能合约并且轻松通过 Alchemy 部署。

ape plugins install solidity alchemy

当你完成配置以后,你可以在 Contracts 文件夹中编写 Solidity 的合约然后对其进行编译。

ape compile

Networks

Ape 采用特定方法处理 network。大多数框架,包括 Hardhat、Brownie 和 Foundry,都以类似的方式处理 EVM 链,但 ApeWorX 是不同的。

ApeWorX 将 network 分成生态系统和链。例如,以太坊生态系统分为 mainnet、ropsten、kovan、goerli 等。如果你想使用 Fantom 之类的 network,你可以安装 fantom 的 network 插件:

ape plugins install fantom

然后在 ape 网络中,你会看到一个新的 network 列表:

fantom                                                                                                      

├── opera                                                                                                   

│   └── geth  (default)                                                                                     

├── testnet                                                                                                 

│   └── geth  (default)                                                                                     

└── local  (default)                                                                                        

   └── test  (default)

如果你不想为某个 network 安装插件,也可以使用临时方法,只需将 RPC URL 配置到network 中。这样 ape 就会认为这个网络是可以发送交易的。

ape run scripts/my_script.py --network https://my_rpc_url.com

账户

框架之间最大的区别之一是它们如何处理帐户。大多数框架都让你设置一个 .env 文件来存储私钥。但是,将您的私钥放在 .env 中其实一直困扰着开发人员。你也可以在 ape 中执行此操作,但 ape 的默认的设置方式更加安全。

Ape 允许你导入私钥,然后它将私钥加密并将存储在你的计算机上。每当您想使用该帐户或私钥时,您都需要密码来解密。这意味着再也不会不小心将你的密钥 push 到 GitHub 了!

ape accounts import my_key

然后它会提示你输入密钥和密码。在你的 Python 脚本中,您可以使用 load 函数来获取你的私钥。

from ape import accounts

accounts.load("local-default")

当你运行这个脚本的时候,会有提示让你输入密码。

其他

框架的其余部分可能和你预期的使用习惯差不多。你可以使用 pytest(最流行的 Python 测试框架之一)编写测试。你可以进入 ape console,在 Python 环境中使用 shell 与你所选择的网络交互。

Ape 中有你希望从智能合约开发框架中获得的所有功能。

Ape 是框架领域的新成员,它也是一个很棒的 Repo,你可以去 contribute。如果你喜欢 Python 并且对如何改进 ape 有想法,请去提一个 issue、PR,或者给他们一个 star!

Happy Ape-ing!

这篇文章中表达的观点仅代表作者,并不反映 Chainlink的观点。

欢迎关注 Chainlink 预言机并且私信加入开发者社区,有大量关于智能合约的学习资料以及关于区块链的话题!

Need Integration Support?
Talk to an expert
Faucets
Get testnet tokens
Read the Docs
Technical documentation