五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

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

發(fā)布日期:2022-04-01 12:04 | 文章來源:源碼之家

介紹

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

為什么選擇Python?

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

Brownie是什么?

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

用Python部署您的第一個智能合約

1. 安裝 Brownie 和 bake

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

pipinstalleth-brownie

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

npminstall-gganache-cli

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

browniebakechainlink-mix
cdchainlink

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

build:Thisiswheretheprojectkeepstrackofyourdeployedsmartcontractsandcompiledcontracts
contracts:Thesourcecodeofyourcontracts,typicallywritteninsolidityorvyper
interfaces:Alayoutofinterfacesyou'llneedtoworkwithdeployedcontracts.EveryinteractionwithacontractneedsanABIandanaddress.Interfacesaregreatwaystogetacontract'sABI
scripts:Scriptswecreatetoautomateprocessesofworkingwithourcontracts
tests:Tests
brownie-config.yaml:Thisiswherewehavealltheinformationforbrownietounderstandhowtoworkwithoursmartcontract.Whatblockchaindowewanttodeployto?Arethereanyspecialparameterswewanttoset?Allthesearesetintheconfigfile.

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

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

如果您熟悉區(qū)塊鏈開發(fā),就會知道本地區(qū)塊鏈,測試網區(qū)塊鏈和主網區(qū)塊鏈都是不同的東西。我們將部署到測試網,以便我們可以與真實的實時區(qū)塊鏈網絡進行交互。您需要一個WEB3_INFURA_PROJECT_ID,可以通過創(chuàng)建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環(huán)境變量。在此處(https://www.twilio.com/blog/2017/01/how-to-set-environment-variables.html)閱讀有關設置環(huán)境變量的信息。如果這仍然使您感到困惑,并且這只是一個測試錢包,請隨意將代碼中的PRIVATE_KEY替換為您的私鑰和WEB3_INFURA_PROJECT_ID。

3.部署您的智能合約

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

brownierunscripts/price_feed_scripts/deploy_price_consumer_v3.py--networkkovan

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

Running'scripts/price_feed_scripts/deploy_price_consumer_v3.py::main'...
Transactionsent:0x23d1dfa3937e0cfbab58f8d5ecabe2bfffc28bbe2349527dabe9289e747bac56
Gasprice:20.0gweiGaslimit:145600Nonce:1339
PriceFeed.constructorconfirmed-Block:22721813Gasused:132364(90.91%)
PriceFeeddeployedat:0x6B2305935DbC77662811ff817cF3Aa54fc585816

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

4.讀取您的智能合約

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

brownierunscripts/price_feed_scripts/read_price_feed.py--networkkovan

得到類似以下的輸出:

Browniev1.12.2-PythondevelopmentframeworkforEthereum
ChainlinkProjectistheactiveproject.
Running'scripts/price_feed_scripts/read_price_feed.py::main'...
Readingdatafrom0x6B2305935DbC77662811ff817cF3Aa54fc585816
62322000000
Where62322000000isthecurrentpriceofETHinUSD!Soliditydoesn'tunderstanddecimals,andweknowthatthisexamplehas8decimals,sothepriceis$623.22.

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

  • 智能合約ABI
  • 智能合約地址

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

pipinstallweb3

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

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/brownie
https://github.com/ethereum/web3.py

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

海外服務器租用

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯(lián)網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

相關文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部