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

您的位置:首頁技術文章
文章詳情頁

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

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

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

為什么選擇Python?

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

Brownie是什么?

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

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

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

Brownie具有“baking”功能,可讓您使用一些基礎代碼啟動存儲庫,因為大多數項目都需要很多相同的部分,類似于create-eth-app。要開始使用,和其他所有Python軟件包的安裝方式一樣。

pip install eth-brownie

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

npm install -g ganache-cli

準備開始!我們將使用chainlink-mix入門,因為許多頂級defi項目都使用Chainlink來獲取其資產數據。

brownie bake chainlink-mixcd chainlink

通過ls命令將向我們展示項目的結構布局Brownie項目布局

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.設置環境變量

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

安裝,配置和Metamask

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

3.部署您的智能合約

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

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

--network kovan允許我們設置要使用的網絡。我們正在使用kovan testnet進行此演示。您將需要Kovan ETH來做到這一點!您將獲得很多輸出內容,但最終會得到類似以下結果:

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并找到我們部署的合約。上面的鏈接顯示了此示例中部署的合約。

4.讀取您的智能合約

現在我們已經部署了智能合約,我們可以從剛剛部署的合約中讀取以太坊的價格。我們將運行另一個腳本:

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的工具讓您的開發更輕松,但是如果機智點,則我們始終可以直接在沒有框架的情況下使用合約。Web3.py是一個原始程序包,我們可以使用它來更直接地處理合同。為此,我們只需要上面的Kovan infura項目ID。請記住,要與任何智能合約進行交互,您需要做兩件事:

智能合約ABI 智能合約地址

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

pip install web3

然后,我們可以在文件中運行以下內容。

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)

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

結論

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

以上就是使用Python的開發框架Brownie部署以太坊智能合約的詳細內容,更多關于Python部署智能合約的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品入口久久| 久久福利一区| 国产精品**亚洲精品| 亚洲精品福利| 亚洲bt欧美bt精品777| 亚洲精品第一| 中文字幕日韩亚洲| 日韩精品免费观看视频| 日本va欧美va精品| 国产女人18毛片水真多18精品| 欧美片第1页综合| 国产情侣一区| 免费在线日韩av| 欧美激情另类| 91精品国产乱码久久久久久久| 成年男女免费视频网站不卡| 国产白浆在线免费观看| 亚洲伦乱视频| 欧美日韩精品免费观看视频完整| 欧美日韩四区| 久久国产成人| 日韩免费精品| 国产精品视频一区二区三区四蜜臂 | 你懂的国产精品永久在线| 国产精品最新自拍| 麻豆中文一区二区| 在线天堂资源www在线污| 日韩电影免费在线观看| 在线成人动漫av| 亚洲专区欧美专区| 日韩精品一区二区三区中文在线 | 日韩不卡免费视频| 久久av影视| 精品国产成人| av亚洲在线观看| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 亚洲欧美日韩国产| 亚洲精品日本| 欧美激情精品| 另类中文字幕国产精品| 亚洲一区成人| 国产伦精品一区二区三区在线播放 | 捆绑调教日本一区二区三区| 久久久久国产精品一区三寸| 午夜久久福利| 青青草视频一区| 国产精品国产一区| 一区二区自拍| 欧美久久精品| 精品亚洲美女网站| 亚洲日产国产精品| 国产一区二区三区四区五区传媒| 国产精品97| 日韩av在线播放中文字幕| 成人日韩av| 久久国产精品免费一区二区三区| 夜鲁夜鲁夜鲁视频在线播放| 日韩中文字幕av电影| 牛牛精品成人免费视频| 91精品观看| 久久97久久97精品免视看秋霞| 伊人影院久久| 欧美成人一二区| 91成人超碰| 欧美国产专区| 亚洲日产国产精品| 欧美日韩中文字幕一区二区三区| 日韩精品乱码av一区二区| 色婷婷久久久| 日韩和欧美一区二区三区| 日韩欧美午夜| 国产日产精品_国产精品毛片 | 精品久久美女| 亚洲一区不卡| 国产精品精品国产一区二区| 中文视频一区| 久久久久中文| 久久a爱视频| 视频一区二区三区在线| 国产一区二区三区四区五区 | 日本在线成人| 日韩精品中文字幕第1页| 青青草伊人久久| 欧美日韩国产欧| 国产精品不卡| 日本99精品| 国产精品嫩草99av在线| 在线天堂中文资源最新版| 久久国产婷婷国产香蕉| 噜噜噜久久亚洲精品国产品小说| 伊人久久av| 麻豆国产91在线播放| 日本特黄久久久高潮| 国产精品毛片| 亚洲欧美综合| av在线最新| 美女精品视频在线| 国产区精品区| 日韩和欧美的一区| 日韩专区欧美专区| 亚洲激情精品| 99久久亚洲精品蜜臀| 国语对白精品一区二区| 日韩一区二区三区免费视频| 欧美午夜不卡| 色婷婷精品视频| 国产白浆在线免费观看| 麻豆中文一区二区| 欧美日一区二区三区在线观看国产免| 国产精品日本| 久久精品国产大片免费观看| 国产精品**亚洲精品| 日韩激情网站| 婷婷综合福利| 一区二区国产在线| 丝袜美腿亚洲一区二区图片| 欧美日韩四区| 午夜国产精品视频| 午夜久久99| 亚洲欧洲另类| 中文日韩欧美| 久久福利精品| 一区二区三区网站| 男女性色大片免费观看一区二区| 91成人精品视频| 激情欧美一区| 99久久久久| 婷婷色综合网| 中文亚洲欧美| 一区二区三区国产盗摄| 日韩手机在线| 91精品国产自产在线丝袜啪| 欧美一区自拍| 国产三级精品三级在线观看国产| 91精品在线免费视频| 国产欧美综合一区二区三区| 国产日韩免费| 精品一区二区三区视频在线播放| 精品91福利视频| 日韩影院二区| 欧美精品羞羞答答| 欧美日韩在线观看视频小说| 91高清一区| 亚洲人成精品久久久| 国产欧美在线| 国产精品久久久久久久久妇女| 亚洲不卡系列| 国产美女精品| 欧美日韩xxxx| 丰满少妇一区| 国产在线欧美| 亚洲专区视频| 国产精品99久久免费| аⅴ资源天堂资源库在线| 久久中文字幕av一区二区不卡| 国产视频一区欧美| 蜜桃免费网站一区二区三区| 国产伦精品一区二区三区视频| 91中文字幕精品永久在线| 欧美福利专区| 日韩国产在线不卡视频| 精品久久精品| 五月天综合网站| 91精品麻豆| 亚洲成人不卡| 亚洲精品美女| 久久99国产精品视频| 亚洲午夜在线| 日韩三级视频| 国产在线观看www| 国产精品日本| 国产调教精品| 精精国产xxxx视频在线播放| 久久av一区| 久久婷婷国产| 国产一区导航| 你懂的亚洲视频| 亚洲国产一区二区三区在线播放| 午夜天堂精品久久久久| 精品免费av| 久久国产精品亚洲77777| 国产精品18| 亚洲免费观看| 国产精品theporn| 不卡视频在线| 国产精品久久国产愉拍| 欧美香蕉视频| 日韩精品中文字幕吗一区二区| 日韩一区自拍| 日韩av资源网| 久久一区二区中文字幕| 国产日韩欧美一区二区三区在线观看| 日韩成人亚洲| 日韩精品免费观看视频| av亚洲一区二区三区| 日本精品另类| 久久国产小视频| 国产精品66| 久久亚洲精品伦理| 五月天av在线|