又大又粗又猛免费视频久久_国产理论在线播放_久久男人av资源网站免费软件_99国产精品无码

使用Python開(kāi)發(fā)DeFi項(xiàng)目

目前,智能合約的開(kāi)發(fā)由JavaScript語(yǔ)言主導(dǎo),部分原因在于JavaScript是地球上最常用的語(yǔ)言,而且因?yàn)镹ode.js帶來(lái)的“JavaScript無(wú)處不在”的思想,使得構(gòu)建全棧應(yīng)用程序變得更加容易。但是,對(duì)金融科技界中的定量分析師,股票交易員和對(duì)沖基金來(lái)說(shuō),情況則有所不同。大多數(shù)金融科技公司中出于各種原因而選擇使用Python

在本文教程中,我們將詳細(xì)介紹如何 使用Python開(kāi)發(fā)DeFi項(xiàng)目 。去中心化金融(DeFi)是區(qū)塊鏈和智能合約世界里最重要的進(jìn)步之一,且常常被稱作“新金融科技”。目前,智能合約的開(kāi)發(fā)由JavaScript語(yǔ)言主導(dǎo),部分原因在于JavaScript是地球上最常用的語(yǔ)言,而且因?yàn)镹ode.js帶來(lái)的“JavaScript無(wú)處不在”的思想,使得構(gòu)建全棧應(yīng)用程序變得更加容易。但是,對(duì)金融科技界中的定量分析師,股票交易員和對(duì)沖基金來(lái)說(shuō),情況則有所不同。大多數(shù)金融科技公司中出于各種原因而選擇使用Python:

  • 出色的開(kāi)發(fā)者體驗(yàn)
  • 強(qiáng)大的AI和機(jī)器學(xué)習(xí)支持
  • 配套的金融科技軟件工具包
  • 全面的分析工具
  • 生產(chǎn)環(huán)境中的可靠性

使用Python開(kāi)發(fā)DeFi項(xiàng)目

來(lái)源:eFinancialCareers

為什么有眾多數(shù)據(jù)科學(xué)家,學(xué)者和金融科技機(jī)構(gòu)使用Python是有一定原因的。DeFi領(lǐng)域中的某些項(xiàng)目,如yearn.finance,也認(rèn)可這種想法,并已經(jīng)使用Python和Solidity構(gòu)建了他們的整個(gè)DeFi平臺(tái)。因?yàn)橛辛藈eb3.py和Brownie之類的庫(kù)和框架,我們才能夠有機(jī)會(huì)看到這些項(xiàng)目的誕生。Brownie是一個(gè)類似Truffle的框架,能夠支持項(xiàng)目部署,編寫腳本,測(cè)試等,且能夠進(jìn)行端到端的開(kāi)發(fā)。

Web3.py和Brownie也能“混合”使用,你可以預(yù)先打開(kāi)一個(gè)項(xiàng)目并在其中使用一些樣板代碼。這就是我們今天將要使用的Chainlink Brownie mix。

現(xiàn)在思考一下我們?yōu)槭裁匆褂肅hainlink Python?正如Python是金融科技領(lǐng)域中的首選編程語(yǔ)言,Chainlink事實(shí)上也是將鏈下數(shù)據(jù)帶到DeFi智能合約中的首選預(yù)言機(jī)解決方案,當(dāng)前正守護(hù)著超過(guò)750億美金的頂級(jí)DeFi協(xié)議的價(jià)值。這兩種技術(shù)的結(jié)合為安全去中心化金融科技領(lǐng)域提供了強(qiáng)大的框架支撐。

要開(kāi)始使用Brownie和Python構(gòu)建DeFi應(yīng)用,首先需要安裝Python。目前建議Python的版本不低于3.6,因此,如果你使用的版本低于3.6,請(qǐng)先進(jìn)行升級(jí)。你可以通過(guò)運(yùn)行以下命令查看你的Python版本并驗(yàn)證它是否已正確安裝:

1 python --version

或者,如果用的是Python3:

1 python3 --version

你還需要安裝Ganache。Ganache是用Python編寫的一鍵式區(qū)塊鏈,它可讓你很容易啟動(dòng)一個(gè)本地區(qū)塊鏈。但你必須通過(guò)npm和node.js來(lái)下載它,這將是唯一需要與之交互的JavaScript相關(guān)的內(nèi)容。

首先,需要安裝node.js和npm。Node.js會(huì)隨npm一起安裝。下載后,可以通過(guò)運(yùn)行以下命令來(lái)檢查它是否正確安裝:

1 npm --version2 node --version

然后你可以通過(guò)命令行安裝Ganache。

1 npm install -g ganache-cli

安裝完這些后,我們來(lái)安裝eth-brownie。推薦使用pipx而不是pip,這樣我們就可以在它自己的環(huán)境中安裝eth-brownie。

首先安裝pipx:

1 python3 -m pip install --user pipx2 python3 -m pipx ensurepath

然后關(guān)閉并重啟終端。如果使用的是VSCode,點(diǎn)擊那個(gè)看起來(lái)像垃圾桶的圖標(biāo)?,F(xiàn)在pipx應(yīng)該成功安裝了,可以通過(guò)pipx –version檢查。然后可以安裝eth-brownie。

如果你想在沒(méi)有虛擬環(huán)境的情況下安裝,可以使用pip或pip3:“

1 pip3 install eth-brownie

如果你能在終端執(zhí)行brownie命令,就表示安裝成功,并且得到的輸出類似于:

1 Brownie v1.17.0 - Python development framework for Ethereum 2 Usage: brownie[...] [options] 3 Commands: 4 init Initialize a new brownie project 5 bake Initialize from a brownie-mix template 6 pm Install and manage external packages 7 compile Compile the contract source files 8 console Load the console 9 test Run test cases in the tests/ folder 10 run Run a script in the scripts/ folder 11 accounts Manage local accounts 12 networks Manage network settings 13 gui Load the GUI to view opcodes and test coverage 14 analyze Find security vulnerabilities using the MythX API 15 Options: 16 --help -h Display this message 17 --version Show version and exit18 Type 'brownie--help' for specific options and more information about19 each command.

另外,你還需要一個(gè)MetaMask或其他以太坊錢包。如果你以前從未使用過(guò)ETH錢包,則可以觀看下面的視頻輔助設(shè)置。需要注意的是,這個(gè)視頻也展示了在Ropsten網(wǎng)絡(luò)上獲取ETH測(cè)試代幣,但Chainlink已經(jīng)不再支持了。如果你想按照視頻操作,請(qǐng)使用Kovan測(cè)試網(wǎng)絡(luò)。

最后,請(qǐng)確保你的ETH錢包中有一些測(cè)試網(wǎng)LINK代幣和Kovan測(cè)試網(wǎng)ETH代幣。你可以在LINK水龍頭和ETH Kovan水龍頭中獲取一些。

開(kāi)啟一個(gè)Chainlink項(xiàng)目

要開(kāi)始使用Brownie,我們可以使用Brownie mix為我們提供樣板代碼。在本文的示例中,我們將部署一個(gè)簡(jiǎn)單的Chainlink Price Feed,來(lái)了解Brownie框架?,F(xiàn)在我們就開(kāi)始創(chuàng)作chainlink-mix項(xiàng)目吧。

1 brownie bake chainlink-mix2 cd chainlink

我們會(huì)進(jìn)入到一個(gè)包含一些默認(rèn)代碼的新項(xiàng)目。如果運(yùn)行l(wèi)s命令,我們可以看到文件的布局如下:

  • build:這是項(xiàng)目用來(lái)跟蹤已部署的智能合約和已編譯合約的文件夾
  • contracts:合約的源代碼,通常以Solidity或Vyper語(yǔ)言編寫
  • interfaces:和已部署合約交互所需要的接口文件夾。每次與合約的交互都需要一個(gè)ABI和合約地址。接口是獲取合約的ABI的好方法
  • scripts:我們創(chuàng)建的用于自動(dòng)執(zhí)行合約流程的腳本
  • tests:測(cè)試文件
  • brownie-config.yaml:這個(gè)文件為Brownie提供了理解如何對(duì)待我們的智能合約所需要的所有信息。我們想部署到什么區(qū)塊鏈網(wǎng)絡(luò)?我們要設(shè)置任何特殊參數(shù)嗎?所有這些內(nèi)容都在此配置文件中設(shè)置。

requirements.txt , README.md , LICENSE , 以及 .gitignore 等文件現(xiàn)在可以忽略。你將在練習(xí)過(guò)程中了解它們的用途。

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

雖然我們剛剛安裝好了Ganache進(jìn)行本地測(cè)試,我們?nèi)韵M軌蜻B接到以太坊主網(wǎng)和測(cè)試網(wǎng),這樣我們就可以將合約部署在真實(shí)的測(cè)試網(wǎng)上。為此,我們需要設(shè)置WEB3_INFURA_PROJECT_ID字段。你可以從Infura網(wǎng)站免費(fèi)獲得一個(gè)Infura ID,也可以使用其他web3 providers或者自己的節(jié)點(diǎn),但是你需要做更多配置。

在brownie-config.yaml文件中,你可以設(shè)定帶有host字段的網(wǎng)絡(luò)配置,如果不想使用MetaMask,還可以定義要連接的URL。

現(xiàn)在有了web3 ID,我們需要將私鑰作為環(huán)境變量來(lái)使用,這樣我們可以在錢包中使用我們的帳戶。如果你使用的是MetaMask,請(qǐng)找到 export key選項(xiàng)(以導(dǎo)出私鑰)。使用MetaMask的話,你可能必須在私鑰的開(kāi)頭添加0x。為了以防萬(wàn)一,建議在測(cè)試和導(dǎo)出密鑰時(shí)使用與主帳戶不同的帳戶。

重要提示:請(qǐng)不要將你的私鑰發(fā)送到 GitHub或任何公共場(chǎng)所!如果有人獲得了你的私鑰,他們將可以訪問(wèn)你帳戶中的所有資金!我們強(qiáng)烈建議你使用與持有資金的賬戶不同的賬戶進(jìn)行測(cè)試。

現(xiàn)在我們需要讓它們成為環(huán)境變量。我們將使用一種簡(jiǎn)單的方法來(lái)設(shè)置環(huán)境變量,創(chuàng)建一個(gè).env文件,并添加以下內(nèi)容:

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

PRIVATE_KEY是MetaMask錢包中的私鑰,WEB3_INFURA_PROJECT_ID是來(lái)自Infura的項(xiàng)目ID。然后,創(chuàng)建一個(gè)brownie-config.yaml文件(如果文件已存在,給它添加下面的內(nèi)容)并添加以下行:

1 dotenv: .env

現(xiàn)在我們就可以部署到測(cè)試網(wǎng)和本地網(wǎng)絡(luò)了!

部署你的智能合約

現(xiàn)在我們已經(jīng)完成了所有設(shè)置,我們將進(jìn)一步把智能合約部署到Kovan測(cè)試網(wǎng)上!

在scripts文件夾中,我們有一個(gè)名為deploy_price_consumer_v3.py的腳本。這將部署我們的智能合約,該合約會(huì)讀取以美元計(jì)價(jià)的以太坊的價(jià)格數(shù)據(jù)。

如果你想看到一個(gè)更加易懂的闡述該合約的功能以及如何部署它的教程,隨時(shí)查看Chainlink的部署喂價(jià)合約的教程。

只需使用brownie run命令即可使用此部署腳本:

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

你會(huì)看到以下輸出內(nèi)容:

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

如果腳本工作正常,我們可以到Kovan區(qū)塊瀏覽器上查看我們部署的合約。上面的鏈接顯示了此示例中部署的合約。

讀取你的智能合約

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

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

我們將得到如下輸出:

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

其中122322000000是ETH當(dāng)前的美元價(jià)格!Solidity無(wú)法理解小數(shù),而我們知道Chainlink喂價(jià)具有8位小數(shù),因此價(jià)格為$1,223.22。

至此你就完成了使用Python和Brownie部署你的第一個(gè)智能合約!

測(cè)試你的智能合約

這也是一個(gè)很好的關(guān)于如何測(cè)試智能合約的例子。我們甚至可以使用模擬對(duì)象在本地進(jìn)行測(cè)試!

只需運(yùn)行:

1 brownie test

你的測(cè)試將在本地Ganache實(shí)例上運(yùn)行!

你還可以使用以下內(nèi)容在測(cè)試網(wǎng)上進(jìn)行測(cè)試:

1 brownie test --network kovan

這些測(cè)試具有一些可以知曉你是否正在使用測(cè)試網(wǎng)的功能。如果你在本地工作,它將部署預(yù)言機(jī)代碼的虛擬對(duì)象或“模擬對(duì)象”,因此我們可以通過(guò)它們進(jìn)行測(cè)試。

更進(jìn)一步

現(xiàn)在你知道了如何使用Python來(lái)部署智能合約,就可以開(kāi)始基于此框架進(jìn)行構(gòu)建以做更多有趣的事情。Python具有諸如Numpy,Scikit,Pandas和TensorFlow等強(qiáng)大的軟件包,可以用于定量工作,機(jī)器學(xué)習(xí)等等。最終將這些技術(shù)結(jié)合在一起是在金融科技新時(shí)代成功的秘訣:去中心化金融。

Chainlink是一個(gè)靈活的框架,用于將外部金融數(shù)據(jù)和系統(tǒng)引入到鏈上,并無(wú)縫集成這些與以數(shù)據(jù)為中心的軟件包,如Numpy和Pandas。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
在線咨詢
分享本頁(yè)
返回頂部