日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

使用Python的開發(fā)框架Brownie部署以太坊智能合約

瀏覽:175日期:2022-06-18 09:25:43
目錄介紹為什么選擇Python?Brownie是什么?用Python部署您的第一個智能合約1. 安裝 Brownie 和 bake2.設(shè)置環(huán)境變量3.部署您的智能合約4.讀取您的智能合約結(jié)論介紹

我希望可以在任何開發(fā)場景都盡量用Python。在區(qū)塊鏈開發(fā)中,常用的是以太坊虛擬機(jī)智能合約語言Solidity,它具有許多不錯的功能,并且仍然可以使用 Python 進(jìn)行部署。剛開始使用Solidity時,我使用了Remix(https://remix.ethereum.org/),這是一個強(qiáng)大的Web IDE,可讓您進(jìn)行智能合約可視化。Remix很棒,我現(xiàn)在仍然使用它,但是在單個IDE之外可以實(shí)現(xiàn)很多其他功能。后來我開始學(xué)習(xí)Truffle(https://www.trufflesuite.com/)和HardHat(https://hardhat.org/guides/mainnet-forking.html),它們是用于部署智能合約的Node.js框架。這些是到目前為止我所見過的主要框架,這些框架都不錯,但是我更喜歡Python。所以當(dāng)我發(fā)現(xiàn)Brownie 和web3.py:一個用于部署智能合約的Python框架和一個用于區(qū)塊鏈開發(fā)的開源協(xié)議之后非常興奮。我們將在本文中同時介紹Brownie和Web3.py。

為什么選擇Python?

有這么多數(shù)據(jù)科學(xué)家、學(xué)者和金融科技機(jī)構(gòu)使用Python是有原因的。它用途廣泛,具有輕松的開發(fā)體驗(yàn),并且與各種第三方庫緊密結(jié)合在一起。頂級 defi 項(xiàng)目開始意識到這一點(diǎn),諸如yearn.finance之類的項(xiàng)目使用python來部署其所有生產(chǎn)代碼。Yearn.finance由一群非常有才華的金融科技工程師經(jīng)營,他們轉(zhuǎn)向了區(qū)塊鏈,帶著他們熟悉和喜愛的Python工具。

Brownie是什么?

使用Python的開發(fā)框架Brownie部署以太坊智能合約

Brownie是由Ben Hauser創(chuàng)建的Python智能合約開源框架,又名“iamdefinitelyahuman”(中文意思“非絕對人類”),是一件藝術(shù)品。這就是yearn.finance團(tuán)隊(duì)用來部署和維護(hù)智能合約的工具。您可以使用簡單的命令啟動項(xiàng)目,然后立即開始使用代碼。

用Python部署您的第一個智能合約1. 安裝 Brownie 和 bake

Brownie具有“baking”功能,可讓您使用一些基礎(chǔ)代碼啟動存儲庫,因?yàn)榇蠖鄶?shù)項(xiàng)目都需要很多相同的部分,類似于create-eth-app。要開始使用,和其他所有Python軟件包的安裝方式一樣。

pip install eth-brownie

我們還需要安裝ganache-cli一個用于部署本地區(qū)塊鏈的軟件包。為此,您需要安裝npm和nodejs。

npm install -g ganache-cli

準(zhǔn)備開始!我們將使用chainlink-mix入門,因?yàn)樵S多頂級defi項(xiàng)目都使用Chainlink來獲取其資產(chǎn)數(shù)據(jù)。

brownie bake chainlink-mixcd chainlink

通過ls命令將向我們展示項(xiàng)目的結(jié)構(gòu)布局Brownie項(xiàng)目布局

build : This is where the project keeps track of your deployed smart contracts and compiled contractscontracts : The source code of your contracts, typically written in solidity or vyperinterfaces : A layout of interfaces you’ll need to work with deployed contracts. Every interaction with a contract needs an ABI and an address. Interfaces are great ways to get a contract’s ABIscripts : Scripts we create to automate processes of working with our contractstests : Testsbrownie-config.yaml : This is where we have all the information for brownie to understand how to work with our smart contract. What blockchain do we want to deploy to? Are there any special parameters we want to set? All these are set in the config file.

requirements.txt,README.md,LICENSE和.gitignore可以忽略,您將在后面了解它們的用途。

2.設(shè)置環(huán)境變量

如果您熟悉區(qū)塊鏈開發(fā),就會知道本地區(qū)塊鏈,測試網(wǎng)區(qū)塊鏈和主網(wǎng)區(qū)塊鏈都是不同的東西。我們將部署到測試網(wǎng),以便我們可以與真實(shí)的實(shí)時區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行交互。您需要一個WEB3_INFURA_PROJECT_ID,可以通過創(chuàng)建Infura帳戶來檢索該WEB3_INFURA_PROJECT_ID。這就是我們用來連接到測試網(wǎng)絡(luò)的東西。我們還將獲得一個metamask或其他web3以太坊錢包,并用一些ETH進(jìn)行注資。對于這個demo,我們要使用Kovan測試網(wǎng)絡(luò)。您可以跳過有關(guān)LINK資金的部分,我們只需要testnet ETH。我們也不會使用Ropsten,而是使用Kovan。如果您已經(jīng)有了錢包,請從https://gitter.im/kovan-testnet/faucet獲取一些Kovan Ether。

安裝,配置和Metamask

一旦有了Metamask錢包,就可以將私鑰導(dǎo)出到PRIVATE_KEY環(huán)境變量。在此處(https://www.twilio.com/blog/2017/01/how-to-set-environment-variables.html)閱讀有關(guān)設(shè)置環(huán)境變量的信息。如果這仍然使您感到困惑,并且這只是一個測試錢包,請隨意將代碼中的PRIVATE_KEY替換為您的私鑰和WEB3_INFURA_PROJECT_ID。

3.部署您的智能合約

在我們的腳本文件夾中,我們有一個名為deploy_price_consumer_v3.py的腳本,該腳本將部署我們的智能合約,該合約讀取以太坊的美元價格。如果您想更輕松地了解該合約的功能以及如何部署它,請隨時查看有關(guān)部署價格訂閱合同的Chainlink教程(https://docs.chain.link/docs/beginners-tutorial/)。brownie run是我們可以用來運(yùn)行腳本的命令。如果僅運(yùn)行brownie,則可以看到所有命令的列表。

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

--network kovan允許我們設(shè)置要使用的網(wǎng)絡(luò)。我們正在使用kovan testnet進(jìn)行此演示。您將需要Kovan ETH來做到這一點(diǎn)!您將獲得很多輸出內(nèi)容,但最終會得到類似以下結(jié)果:

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

如果此方法正常運(yùn)行,我們可以轉(zhuǎn)到kovan etherscan并找到我們部署的合約。上面的鏈接顯示了此示例中部署的合約。

4.讀取您的智能合約

現(xiàn)在我們已經(jīng)部署了智能合約,我們可以從剛剛部署的合約中讀取以太坊的價格。我們將運(yùn)行另一個腳本:

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 0x6B2305935DbC77662811ff817cF3Aa54fc58581662322000000Where 62322000000 is the current price of ETH in USD! Solidity doesn’t understand decimals, and we know that this example has 8 decimals, so the price is $623.22 .

您剛剛使用Python和Brownie部署了您的第一個智能合約!使用web3.pyBrownie使用名為web3.py的工具讓您的開發(fā)更輕松,但是如果機(jī)智點(diǎn),則我們始終可以直接在沒有框架的情況下使用合約。Web3.py是一個原始程序包,我們可以使用它來更直接地處理合同。為此,我們只需要上面的Kovan infura項(xiàng)目ID。請記住,要與任何智能合約進(jìn)行交互,您需要做兩件事:

智能合約ABI 智能合約地址

Brownie 會在后臺處理很多此類工作,但我們也可以手動進(jìn)行。這是通過web3.py從鏈上合同中讀取的內(nèi)容。首先,我們需要安裝web3.py。

pip install web3

然后,我們可以在文件中運(yùn)行以下內(nèi)容。

web3 = Web3(Web3.HTTPProvider(’https://kovan.infura.io/v3/<infura_project_id>’)) abi = ’[{'inputs':[],'name':'decimals','outputs':[{'internalType':'uint8','name':'','type':'uint8'}],'stateMutability':'view','type':'function'},{'inputs':[],'name':'description','outputs':[{'internalType':'string','name':'','type':'string'}],'stateMutability':'view','type':'function'},{'inputs':[{'internalType':'uint80','name':'_roundId','type':'uint80'}],'name':'getRoundData','outputs':[{'internalType':'uint80','name':'roundId','type':'uint80'},{'internalType':'int256','name':'answer','type':'int256'},{'internalType':'uint256','name':'startedAt','type':'uint256'},{'internalType':'uint256','name':'updatedAt','type':'uint256'},{'internalType':'uint80','name':'answeredInRound','type':'uint80'}],'stateMutability':'view','type':'function'},{'inputs':[],'name':'latestRoundData','outputs':[{'internalType':'uint80','name':'roundId','type':'uint80'},{'internalType':'int256','name':'answer','type':'int256'},{'internalType':'uint256','name':'startedAt','type':'uint256'},{'internalType':'uint256','name':'updatedAt','type':'uint256'},{'internalType':'uint80','name':'answeredInRound','type':'uint80'}],'stateMutability':'view','type':'function'},{'inputs':[],'name':'version','outputs':[{'internalType':'uint256','name':'','type':'uint256'}],'stateMutability':'view','type':'function'}]’ addr = ’0x9326BFA02ADD2366b30bacB125260Af641031331’ contract = web3.eth.contract(address=addr, abi=abi) latestData = contract.functions.latestRoundData().call() print(latestData)

運(yùn)行上述操作后將在我們的控制臺中打印以美元為單位的ETH的最新價格。請查看Chainlink文檔以確定是否有問題。

結(jié)論

您可以從他們的文檔中了解有關(guān)Web3.py和Brown的更多信息。這兩個項(xiàng)目都是開源的,任何人都可以做出貢獻(xiàn)!https://github.com/eth-brownie/browniehttps://github.com/ethereum/web3.py

以上就是使用Python的開發(fā)框架Brownie部署以太坊智能合約的詳細(xì)內(nèi)容,更多關(guān)于Python部署智能合約的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩福利一区| 成人av二区| 免费人成精品欧美精品| 欧美日韩国产传媒| 在线成人动漫av| 九一成人免费视频| 亚洲综合日韩| 亚洲精品系列| 日韩中文字幕1| 亚洲永久精品唐人导航网址| 丝袜脚交一区二区| 综合视频一区| 欧美天堂一区| 久久精品资源| av中文字幕在线观看第一页| 日韩在线高清| 久久亚洲国产| 亚洲一区日韩在线| 亚洲aa在线| 国产精品欧美三级在线观看| 精品国产中文字幕第一页| 高清av不卡| 色婷婷精品视频| 免费观看久久av| 香蕉国产精品| 亚洲性视频在线| 国产剧情一区| 成人国产精品一区二区免费麻豆| 亚洲啊v在线| 激情91久久| 日韩影片在线观看| 麻豆精品一区二区综合av| 国产精品精品国产一区二区| 日韩一区三区| 一本色道精品久久一区二区三区| 中文字幕成人| 另类综合日韩欧美亚洲| 久久久精品久久久久久96| 玖玖精品视频| 欧美亚洲福利| 中文字幕一区久| 在线亚洲精品| 国产视频一区二| 狠狠躁少妇一区二区三区| 欧美在线亚洲| 91嫩草精品| 热三久草你在线| 亚洲免费影视| 捆绑调教美女网站视频一区| 亚洲午夜在线| 国产图片一区| 亚洲国产一区二区三区在线播放| 91亚洲精品在看在线观看高清| 日本黄色精品| 伊人久久亚洲热| 欧美精品国产| 久久久久久久久丰满| 亚洲精品少妇| 国产理论在线| 蜜桃视频第一区免费观看| 精品视频一二| 蜜臀av亚洲一区中文字幕| 久久免费精品| 蜜桃伊人久久| 国产suv精品一区| 一区二区三区网站| 日韩国产欧美| 日韩国产欧美在线视频| 波多视频一区| 日韩美女精品| 国产精品久久久久av电视剧| 亚洲精品乱码日韩| 欧美日韩视频网站| 97精品国产99久久久久久免费| 99精品电影| 国产乱子精品一区二区在线观看| 亚洲黄色在线| 欧美久久天堂| 国产精品久久久久9999高清| 亚洲欧美网站| 日韩免费久久| 国产精品一区毛片| 男女男精品网站| 亚洲无线一线二线三线区别av| 国产欧美自拍| 丝瓜av网站精品一区二区| 国产超碰精品| 国产精品3区| 亚洲制服欧美另类| 久久亚洲专区| 久久精品免视看国产成人| 色综合视频一区二区三区日韩| 久久久9色精品国产一区二区三区| 国产精品亲子伦av一区二区三区 | 国产成人免费| 日韩精品亚洲一区二区三区免费| 91精品国产调教在线观看| 精品视频在线你懂得| 国产视频网站一区二区三区| 亚洲三级精品| 天堂成人国产精品一区| 丝袜诱惑一区二区| 开心激情综合| 国产伦精品一区二区三区千人斩 | 卡一精品卡二卡三网站乱码| 日韩高清不卡在线| 一区免费视频| 亚洲韩日在线| 成人精品中文字幕| 98精品视频| 色爱综合网欧美| 老司机免费视频一区二区| 国产精品一页| 国产精品日本一区二区不卡视频| 日韩在线麻豆| 亚洲精品一级| 一区二区精品| 一区二区国产在线观看| 免费精品视频| 免费精品视频| 免费精品视频| 久久蜜桃精品| 亚洲天堂免费电影| 日韩国产一区二区| 神马久久午夜| 午夜久久中文| 中文字幕系列一区| 999精品一区| 亚洲香蕉网站| 亚洲激情欧美| 免费看黄色91| 日韩欧美在线精品| 日韩二区三区在线观看| 日本91福利区| 国产麻豆一区| 九九九精品视频| 日本一区二区高清不卡| 国产精品久久久久久久免费观看| yellow在线观看网址| 欧美成a人免费观看久久| 午夜国产精品视频免费体验区| 午夜亚洲福利在线老司机| 亚洲精品观看| 久久久91麻豆精品国产一区| 黑人精品一区| 91精品久久久久久久久久不卡| 欧美日韩一二三四| 亚洲欧美日韩国产综合精品二区| 日韩一区精品| 国产精品亚洲综合久久| 精品久久美女| 美女网站视频一区| 91久久在线| 日韩av字幕| 国产精品不卡| 91久久久久| 欧美精品福利| 色欧美自拍视频| 日韩一级欧洲| 日本va欧美va精品| 高清一区二区| 国产婷婷精品| 国产精品一页| 久久男女视频| 一区二区91| 精品一区二区三区免费看| 欧美男人天堂| 亚洲专区一区| 国产精品17p| 欧洲av不卡| 亚洲日本在线观看视频| 国产激情一区| 蜜桃tv一区二区三区| 亚洲精品极品| 国产黄大片在线观看| 午夜欧美视频| 日本少妇一区二区| 日韩欧美一区免费| 亚洲精品极品| 在线中文字幕播放| 蜜桃视频在线观看一区| 国产精久久久| 欧美另类专区| 国产日产一区| 亚洲性色视频| 国产精品一级在线观看| 亚洲欧美一区在线| 国产精品1区在线| 亚洲精品一二三区区别| 日韩av中文字幕一区二区| 欧美成a人免费观看久久| 97精品国产99久久久久久免费| 桃色av一区二区| 日本少妇一区二区| 欧美国产91| 久久精品国内一区二区三区| 欧洲毛片在线视频免费观看| 国产精品一区二区三区av麻| 激情欧美一区二区三区| 亚洲精品人人|