• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

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

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

    def main():
    
     print("Hello!")
    
    • 1
    • 2
    • 3

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

    ape run scripts/my_script.py
    
    • 1

    Ape 的插件系统

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

    ape plugins install solidity alchemy
    
    • 1

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

    ape compile
    
    • 1

    Networks

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

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

    ape plugins install fantom
    
    • 1

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

    fantom                                                                                                      
    
    ├── opera                                                                                                   
    
    │   └── geth  (default)                                                                                     
    
    ├── testnet                                                                                                 
    
    │   └── geth  (default)                                                                                     
    
    └── local  (default)                                                                                        
    
       └── test  (default)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

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

    账户

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

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

    ape accounts import my_key
    
    • 1

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

    from ape import accounts
    
    accounts.load("local-default")
    
    • 1
    • 2
    • 3

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

    其他

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

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

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

    Happy Ape-ing!

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

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

  • 相关阅读:
    【低代码开发_RuoYi_框架】RuoYi框架_前端页面部署/搭建
    java计算机毕业设计云医疗自助就诊平台录屏源程序+mysql+系统+lw文档+远程调试
    FSC认证助您进入日新月异的时尚领域
    JeeSite快速开发平台 JNPF快速开发平台3.3版本 框架源码部署文档入门说明
    【附源码】Python计算机毕业设计企业员工考勤管理系统
    谈谈this和super关键字
    【无线传感器】使用 Mamdani 模糊推理系统改进无线传感器网络路由和数据包传递(Matlab代码实现)
    野火FPGA入门(2):Verilog HDL基础语法
    1121 Damn Single
    【C++难点收录】“C++难?,你真的理解了这些吗?”《常见面试题》【二】
  • 原文地址:https://blog.csdn.net/ChainlinkO/article/details/128008412