ApeWorX: 新的基于 Python 语言的智能合约开发框架

这篇具有很好参考价值的文章主要介绍了ApeWorX: 新的基于 Python 语言的智能合约开发框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

  • DappTools 正式承认 Foundry 作为其继任者。
  • 在 Truffle 流行过很长一段时间之后,Hardhat 成为了 DeFi 中最常用的框架。
  • ApeWorX 似乎有朝一日会成为 Brownie 框架的继任者。

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

此外,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 完全可定制,以满足开发者特定的智能合约开发需求。两个最受欢迎的插件是用于 Solidity 和 Alchemy 的插件,它们允许你编译 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 预言机并且私信加入开发者社区,有大量关于智能合约的学习资料以及关于区块链的话题!文章来源地址https://www.toymoban.com/news/detail-452294.html

到了这里,关于ApeWorX: 新的基于 Python 语言的智能合约开发框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 以太坊智能合约开发:Solidity 语言快速入门

    在本文中,我们从一个简单的智能合约样例出发,通过对智能合约源文件结构的剖析与介绍,使大家对Solidity语言有一个初步的认识。最后,我们将该智能合约样例在 Remix 合约编译器中编译、部署,观察其执行结果。 在开始之前,我们先对Solidity有个初步的了解,即Solidity是

    2023年04月09日
    浏览(51)
  • 以太坊智能合约开发:Solidity语言中的映射

    本文我们介绍Solidity语言中的映射,包括映射的基本定义、语法、映射的变量声明和基本读写操作。并且通过两个智能合约例子演示了映射的定义与基本操作。 Solidity中关于映射的一些定义: 映射以键-值对(key = value)的形式存储数据; 键可以是任何内置数据类型,包括字节

    2024年02月05日
    浏览(56)
  • 以太坊智能合约开发:Solidity 语言中的数据类型

    本文我们介绍Solidity语言的数据类型,重点是值类型,包括布尔类型、整型、地址类型、字节类型、字符串类型和枚举类型。并且通过两个智能合约例子,用于演示这些数据类型的声明与使用方法。 访问 Github 仓库 获取更多资料。 Solidity中关于数据类型的定义如下: Solidity是

    2024年02月02日
    浏览(69)
  • 以太坊智能合约开发:Solidity语言中的构造函数

    Solidity语言中关于构造函数的定义: 构造函数是使用 constructor 声明的一个可选函数; 构造函数只在合约部署时调用一次,并用于初始化合约的状态变量; 如果没有显式定义的构造函数,则由编译器创建默认构造函数。 构造函数声明语法如下: 其中: ** constructor :

    2024年02月01日
    浏览(52)
  • Web3、区块链、合约开发语言、框架、工具深度对比选型【万字长文】

    目录 前言 1. 智能合约语言 Solidity Vyper Rust 智能合约语言总结 Chainlink

    2023年04月09日
    浏览(46)
  • 基于以太坊的智能合约开发Solidity(基础篇)

    参考教程:基于以太坊的智能合约开发教程【Solidity】_哔哩哔哩_bilibili (1)程序编译完成后,需要在虚拟机上运行,将合约部署好后便可执行刚刚编写的函数。(注意, 合约一旦部署,就会永久存在于区块链上,且不可篡改 ,不过可以销毁) (2)执行完成后,可以得到以

    2024年02月04日
    浏览(58)
  • 基于以太坊的智能合约开发Solidity(事件&日志篇)

    (1)事件用于记录在区块链上的特定活动,“emit ValueChanged(newValue);”语句的作用是触发ValueChanged事件(首先需要声明事件)。 ①触发事件后会生成相应日志,上图黄框就是“emit ValueChanged(newValue);”语句产生的日志,其中“form”指的是触发事件的合约账户。 ②事件主要是供

    2024年02月04日
    浏览(44)
  • 基于以太坊的智能合约开发Solidity(内存&结构体篇)

    参考教程:【内存、引用与持久化存储】1、内存与区块链——storage与memory原理_哔哩哔哩_bilibili (1)所有的复杂类型,即数组、结构和映射类型,都有一个额外属性——“数据位置”,用来说明数据是保存在内存memory中还是存储storage中,保存在memory中的数据,在函数执行完

    2024年02月04日
    浏览(58)
  • Java语言开发在线小说推荐网 小说推荐系统 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据、人工智能、机器学习开发

    1、开发工具和使用技术 MyEclipse10/Eclipse/IDEA,jdk1.8,mysql5.5/mysql8,navicat数据库管理工具,tomcat,SSM(spring+springmvc+mybatis)开发框架,jsp页面,javascript脚本,jquery脚本,bootstrap前端框架(用户端),layui前端框架(管理员端),layer弹窗组件等。 2、实现功能 前台用户包含:注

    2023年04月26日
    浏览(84)
  • Aztec.nr:Aztec的隐私智能合约框架——用Noir扩展智能合约功能

    前序博客有: Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私 Aztec.nr,为: 面向Aztec应用的,新的,强大的智能合约框架 使得开发者可直观管理私有状态 基于Noir构建,Noir为Aztec Labs作为核心贡献者开发的通用zk编程语言。 使得开发者使用Noir来编写隐私智

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包