当前位置: 首页 > 科技观察

使用Python开发DeFi去中心化应用(下)

时间:2023-03-14 18:20:12 科技观察

Python中文社区(ID:python-china)本教程将介绍如何使用Python开发DeFi项目。去中心化金融(DeFi)是区块链和智能合约领域最重要的进步之一,通常被称为“新金融科技”。目前,智能合约开发由JavaScript主导,部分原因可能是JavaScript是地球上使用最广泛的语言,并且使用Node.js构建全栈应用程序更容易。然而,在宽客、股票交易员和对冲基金的金融科技世界中,情况并非如此。大多数金融科技公司出于多种原因使用Python:更高效的开发体验强大的人工智能和机器学习捆绑的金融科技软件包全面的分析工具生产中的可靠性如此多的数据科学家、学者和金融科技机构使用Python是有原因的。DeFi领域的一些项目,如yearn.finance,分享了这种观点,并使用Python和Solidity构建了他们的整个DeFi平台。多亏了web3.py和Brownie等库和框架,我们才能看到这些项目得以实现。Brownie是一个类似于Truffle的框架(它们都非常“可爱”),它可以维护您的部署、脚本、测试,并允许您构建端到端的后端。Web3.py和Brownie还提供“混合”,您可以在其中使用一些样板代码预先打开项目。这是我们今天要使用的ChainlinkBrownie混合物。为什么我们现在要使用Chainlink+Python?正如Python实际上是金融科技的编程语言一样,Chainlink是事实上的将链下数据输入DeFi智能合约的预言机解决方案,目前为顶级DeFi协议提供超过70亿美元的价值。这两种技术的结合为去中心化的金融科技领域提供了一个安全而强大的框架。快速浏览一下Chainlink在2020年启用的一些功能。要开始使用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。安装npminstall-gganache-cli后,我们将像安装所有Python存储库一样使用pip安装eth-brownie!pipinstalleth-brownie或者如果使用pip3:pip3installeth-brownie如果你在终端中运行brownie,你就会知道你做对了,你会得到类似于以下的输出:Browniev1.13.0-PythondevelopmentframeworkforEthereumUsage:brownie[<;args>...][options]Commands:initInitializeanewbrownieprojectbakeInitializefromabrownie-mixtemplatepmInstallandmanageexternalpackagescompileCompilethecontractsourcefilesconsoleLoadtheconsoletestRuntestcasesinthetests/folderrunRunascriptinthescripts/folderaccountsManagelocalaccountsnetworksManagenetworksettingsguiLoadtheGUItoviewopcodesandtestcoverageanalyzeFindsecurityvulnerabilitiesusingtheMythXAPIOptions:--help-hDisplaythismessage--versionShowversionandexitType'brownie--help'forspecificoptionsandmoreinformationabouteachcommand.此外,您还需要一个MetaMask或Other以太坊钱包。请使用Kovan测试网获取ETH。确保您的ETH钱包中有一些测试网LINK和KovanETH。您可以在LINK水龙头和ETHKovan水龙头中找到一些。启动Chainlink项目要开始使用Brownie,我们可以使用所谓的Browniemix,它为我们提供了样板代码。在此示例中,我们将部署一个简单的Chainlink喂价作为了解Brownie框架的一种方式。让我们烘焙chainlink-mix。browniebakechainlink-mixcdchainlink这将使我们进入一个新项目,其中已经为我们构建了一些默认代码。如果我们运行ls,我们可以看到文件的布局:build:这是项目跟踪您部署的智能合约和编译合约的地方需要使用已部署合约的界面布局。与合约的每次交互都需要一个ABI和一个地址。接口是获取合约ABI脚本的好方法:我们创建的脚本是为了自动化处理合约测试的过程:testsbrownie-config.yaml:这是我们为Brownie提供所有信息以了解如何使用我们的智能合约。我们要部署到哪个区块链?有没有我们要设置的特殊参数?所有这些都在配置文件中设置。requirements.txt、README.md、LICENSE和.gitignore现在可以被忽略。在练习时,您会发现它们的用途。设置环境变量虽然我们只是安装了Ganache用于本地测试,但我们也希望能够连接到ETH主网和测试网,以便我们可以将它们部署到真实的测试网上。为此,我们需要设置WEB3_INFURA_PROJECT_ID。您可以从Infura网站免费获得一个InfuraID。您也可以使用其他web3提供商或您自己的节点,但是您必须为此做更多的配置。在您的brownie-config.yaml文件中,如果您不想使用MetaMask,您可以使用主机密钥设置网络并定义您想要连接的URL。现在你有了你的web3ID,我们需要把我们的私钥作为一个环境变量,这样我们就可以在我们的钱包中使用我们的账户。如果您使用MetaMask,请找到导出密钥。使用MetaMask,您可能需要在私钥的开头添加0x。建议在测试和导出密钥时使用与主帐户不同的帐户,以防万一。现在,要使它们成为环境变量,只需在终端中运行以下命令:exportPRIVATE_KEY=0x96789…..exportWEB3_INFURA_PROJECT_ID='dogcatmouse….'如果你运行printenv并在那里看到你的环境变量,你就会知道你做对了。部署您的智能合约现在我们已经设置好了所有内容,我们甚至可以继续将您的智能合约部署到Kovan测试网!在我们的脚本文件夹中,我们有一个名为deploy_price_consumer_v3.py的脚本。这将部署我们的智能合约以读取以美元为单位的以太坊价格。只需使用brownierun即可使用部分脚本:brownierunscripts/price_feed_scripts/deploy_price_consumer_v3.py--networkkovan你会看到这种东西:Running'scripts/price_feed_scripts/deploy_price_consumer_v3.py::main'...Transactionsent:0x23d1dfa3937e0cfbab58f8d5ecabe2bfffc28bbe2349527dabe9289e747bac56Gasprice:20.0gweiGaslimit:145600Nonce:1339PriceFeed.constructorconfirmed-Block:22721813Gasused:132364(90.91%)PriceFeeddeployedat:0x6B2305935DbC77662811ff817cF3Aa54fc585816IfthisworkswecanfindthedeployedcontractandgotoKovanEthersThe上面的链接显示了此示例中部署的合约。