首页 > 技术 > DEFI开发DeFi Python开发框架Brownie简明教程
路安  

DEFI开发DeFi Python开发框架Brownie简明教程

摘要:DEFI开发去中心化金融(DeFi)是区块链和智能合约世界中最重要的进步之一,通常被称为"新金融科技"。 在这个教程中,我们将逐步介绍如何利

去中心化金融(DeFi)是区块链和智能合约世界中最重要的进步之一,通常被称为“新金融科技”。 在这个教程中,我们将逐步介绍如何利用Python的Brownie框架开发一个简单的以太坊DeFi项目来 读取ChainLink预言机提供的以太坊价格

用自己熟悉的语言学习 以太坊DApp开发 : Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart

1、为什么使用Python开发DeFi应用?

目前,DeFi应用开发主要由JavaScript主导,部分原因是JavaScript是地球上最常用的语言,而且Node.js 带有“ JavaScript无处不在”的思想,可以轻松构建全栈应用程序。但是,对于金融科技界的定量分析师, 股票交易员和对冲基金并非如此。这些金融科技公司中的大多数出于各种原因而使用Python:

出色的开发人员经验强大的A以太币挖矿教程I和机器学习捆绑的金融科技软件包全面的分析工具生产设置的可靠性DeFi Python开发框架Brownie简明教程

有这么多数据科学家、学者和金融科技机构使用Python是有原因的。DeFi领域中的某些项目,例如yearn.finance, 都具有这种想法,并已使用Python和Solidity构建了整个DeFi平台。因为有了web3.py和Brownie之类的库和框架, 我们才能够看到这些项目的诞生。Brownie是一个类似于Truffle的框架(它们都非常“甜”),可以维护你的部署、 脚本和测试,并允许你进行端到端的后端。

Web3.py和Brownie还提供了“mix”,你可以在其中使用一些样板代码预打开项目。这就是我们今天将使用的Chainlink Brownie mix。

2、Python DeFi开发环境安装

要开始使用Brownie和Python构建DeFi应用,首先需要安装Python。目前不建议低于3.4的Python版本,因此,如果 你使用的版本低于3.4版,请进行升级。可以通过运行以下命令查看你的Python版本并验证其是否正确安装:

python --version

或者,如果使用python3:

python3 --version

接下来还需要安装Ganache。Ganache是?用Python编写的开发用的私有区块链,可以轻松启动本地区块链。尽管你必须 通过npm和node.js下载它,但这是本教程中唯一需要与之交互的JavaScript。

首先,你需要安装node.js和npm。Node.js随npm一起安装。下载后,可以通过运行以下命令来检查它是否正确完成:

npm -v

然后,就可以通过命令行安装Ganache了:

npm install -g ganache-cli

安装完这些后,我们将以pip的方式安装eth-brownie,就像安装其他Python库一样:

pip install eth-brownie

或者如果使用pip3:

pip3 install eth-brownie

在终端中运行brownie,应该可以看到类似下面这样的输出:

Brownie v1.13.0 - Python development framework for EthereumUsage:  brownie  [...] [options ]Commands:  init               Initialize a new brownie project  bake               Initialize from a brownie-mix template  pm                 Install and manage external packages  compile            Compile the contract source files  console            Load the console  test               Run test cases in the tests/ folder  run                Run a script in the scripts/ folder  accounts           Manage local accounts  networks           Manage network settings  gui                Load the GUI to view opcodes and test coverage  analyze            Find security vulnerabilities using the MythX APIOptions:  --help -h          Display this message  --version          Show version and exitType 'brownie  --help' for specific options and more information abouteach command.

另外,你还需要一个MetaMask或其他以太坊钱包。如果你从未使用过ETH钱包,则可以观看此视频 了解如何进行设置。请注意,Chainlink不再支持Ropsten测试网,因此请使用Kovan测试网。

最后,请确保你的ETH钱包中有一些Kovan测试网的LINK代币和ETH。你可以在LINK Faucet 和Kovan Faucet得到这些免费的测试币。

3、创建Brownie DeFi项目

要开始使用Browbie,我们可以使用Brownie Mix为我们提供样板代码。在此示例中,我们将部署一个简单的 Chainlink Price Feed,以了解Brownie框架。让我们导入chainlink-mix:

brownie bake chainlink-mixcd chainlink

这将使我们进入一个已经为我们构建了一些默认代码的新项目。如果运行ls,我们可以看到文件的布局:

build:这是项目跟踪已部署的智能合约和已编译合约的地方contracts:合约源代码,通常以Solidity或Vyper编写interfaces:处理已部署合约所需的接口布局。每次与合约的交互都需要一个ABI和一个地址。接口是获取合约的ABI的好方法scripts:我们创建的脚本,用于自动执行合约流程tests:测试脚本brownie-config.yaml:在这里,我们可以获取Brownie的所有信息,以了解如何使用我们的智能合约。我们想部署到什么区块链? 我们要设置任何特殊参数吗?所有这些都在配置文件中设置。

requirements.txt,README.md,LICENSE,和.gitignore可现在忽略。我们将在练习时找出它们的用途。

4、设置Brownie DeFi项目的环境变量

虽然我们只是安装了Ganache进行本地测试,也希望能够连接到ETH主网和测试网,以便我们可以将它们部署在真实的 测试网上。为此,我们需要设置**WEB3_INFURA_PROJECT_ID. 你可以从Infura网站免费获得Infura ID 。当然也可以使用 其他web3提供程序或自己的节点,但是别忘了需要进行必要的配置。

在brownie-config.yaml文件中,您可以使用host键设置网络,并定义不想使用MetaMask时要连接的URL。

现在有了web3 ID,我们需要将私钥作为环境变量使用,以便我们可以在钱包中使用我们的帐户。如果你使用的是MetaMask, 可以通过export key功能导出私钥。使用MetaMask,别忘了添加0x到私钥的开头。为了以防万一,建议在测试和导出密钥时 使用与主帐户不同的帐户。

要设置环境变量,只需在终端中运行以下命令:

export PRIVATE_KEY=0x96789…..export WEB3_INFURA_PROJECT_ID=’dog cat mouse….’

运行printenv来检查环境变量是否正确。

5、部署DeFi项目的智能合约

现在已经完成了所有设置,我们甚至可以继续将智能合约部署到Kovan测试网!

在我们的scripts文件夹中,有一个名为的脚本deploy_price_consumer_v3.py。这将部署我们的智能合约,该合约以 将读取以美元计量的以太币价格。

如果你想更进一步了解该合约的功能以及如何进行部署,请随时查看相关的Chainlink教程。

只需使用brownie run部署脚本即可:

brownie run scripts/price_feed_scripts/deploy_price_consumer_v3.py --network kovan

你会看到以下内容:

Running 'scripts/price_feed_scripts/deploy_price_consumer_v3.py::main'...Transaction sent: 0x23d1dfa3937e0cfbab58f8d5ecabe2bfffc28bbe2349527dabe9289e747bac56Gas price: 20.0 gwei   Gas limit: 145600   Nonce: 1339PriceFeed.constructor confirmed - Block: 22721813   Gas used: 132364 (90.91%)PriceFeed deployed at: 0x6B2305935DbC77662811ff817cF3Aa54fc585816

如果可以正常工作,我们可以前往Kovan Etherscan找到我们部署的合约。上面的链接显示了此示例中部署的合约的地址。

6、用Python调用智能合约的方法

现在我们已经部署了智能合约,我们可以从刚刚部署的合约中读取以太坊的价格。我们将使用另一个 预置的脚本:

brownie run scripts/price_feed_scripts/read_price_feed.py --network kovan

我们将得到如下输出:

Brownie v1.12.2 - Python development framework for EthereumChainlinkProject is the active project.Running 'scripts/price_feed_scripts/read_price_feed.py::main'...Reading data from 0x5A….122322000000

其中122322000000是ETH当前的美元价格!Solidity无法理解小数,因此我们知道Chainlink Price Feed具有8位小数, 因此价格为$1223.22。

我们成功地使用Python和Brownie部署了你的第一个智能合约!

7、智能合约的端到端测试

这也是如何测试智能合约的一个很好的例子。我们使用模拟对象(Mock Objects)甚至可以在本地进行测试!

只需运行:

brownie test

上述测试将在本地Ganache实例上运行!

还可以使用以下内容在测试网上进行测试:

brownie test --network kovan

这些测试可以判断当前是否在测试网上工作。如果是在本地工作,它将部署oracle预言机地模拟对象,以便我们 可以进行测试。

8、如何进一步深入

既然我们已经知道如何使用Python部署智能合约,就可以开始在此框架上进行构建以做更多有趣的事情。Python 具有强大的软件包,例如Numpy,Scikit,Pandas和TensorFlow,可以进行量化工作、机器学习等。最终将这些 技术结合在一起是在金融科技新时代成功的秘诀:去中心化金融。

原文链接:http://blog.hubwiz.com/2021/02/24/brownie-defi-tutorial/

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。