<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用 Python 開發(fā) DeFi 去中心化應(yīng)用(上)

          共 4325字,需瀏覽 9分鐘

           ·

          2021-06-20 00:34


          在本教程中,我們將介紹如何使用 Python 開發(fā) DeFi 項(xiàng)目。去中心化金融 (DeFi) 是區(qū)塊鏈和智能合約世界最重要的進(jìn)步之一,通常被稱為“新金融科技”。目前,智能合約開發(fā)由 JavaScript 主導(dǎo),部分原因可能是 JavaScript 是地球上最常用的語言,并且與 Node.js 配合構(gòu)建全棧應(yīng)用程序更容易。然而,量化分析師、股票交易員和對沖基金的金融科技世界并非如此。大多數(shù)金融科技公司出于各種原因使用 Python:
          • 更高效的開發(fā)體驗(yàn)
          • 強(qiáng)大的人工智能和機(jī)器學(xué)習(xí)
          • 捆綁的金融科技包
          • 綜合分析工具
          • 生產(chǎn)環(huán)境中的可靠性

          如此多的數(shù)據(jù)科學(xué)家、學(xué)者和金融科技機(jī)構(gòu)使用 Python 是有原因的。DeFi 領(lǐng)域的一些項(xiàng)目,如yearn.finance,分享了這種觀點(diǎn),并使用 Python 和 Solidity 構(gòu)建了他們的整個(gè) DeFi 平臺。正是由于像 web3.py 和 Brownie 這樣的庫和框架,我們才能看到這些項(xiàng)目變得生動起來。Brownie 是一個(gè)類似于 Truffle 的框架(它們都非常“sweet”),它維護(hù)您的部署、腳本、測試,并允許您制作端到端的后臺。
          Web3.py和Brownie還提供了“mix”,你可以在其中使用一些樣板代碼預(yù)打開項(xiàng)目。這就是我們今天將使用的Chainlink Brownie mix。
          現(xiàn)在我們?yōu)槭裁匆褂?Chainlink + Python?正如 Python 是金融科技事實(shí)上的編程語言一樣,Chainlink 是將鏈下數(shù)據(jù)提供給 DeFi 智能合約的事實(shí)上的預(yù)言機(jī)解決方案,目前為頂級 DeFi 協(xié)議提供了超過 7B 美元的價(jià)值。這兩種技術(shù)的結(jié)合為去中心化金融科技領(lǐng)域提供了一個(gè)安全而強(qiáng)大的框架。
          以下是 Chainlink 在 2020 年啟用的一些功能的快速瀏覽。

          要開始使用 Brownie 和 Python 構(gòu)建 DeFi 應(yīng)用程序,您首先需要安裝 Python。此時(shí)不建議 Python 低于 3.4 版本,因此如果您的版本低于 3.4,請升級。您可以通過運(yùn)行以下命令查看您的 Python 版本并驗(yàn)證它是否已正確安裝:
          1. python --version

          或者,如果使用 python3:
          1. python3 --version

          您還需要安裝 Ganache。Ganache 是一個(gè)用 Python 編寫的一鍵式區(qū)塊鏈應(yīng)用,可讓您輕松啟動本地區(qū)塊鏈。盡管您必須使用 npm 和 node.js 下載它,但這將是您必須與之交互的唯一 JavaScript 片段。
          首先,您需要安裝 node.js 和 npm。Node.js 隨 npm 一起安裝。下載后,您可以通過運(yùn)行以下命令來檢查它是否正確完成:
          1. npm -v

          然后,您可以通過命令行安裝 Ganache。
          1. npm install -g ganache-cli

          安裝完成后,我們將像安裝所有 Python 存儲庫一樣使用 pip 安裝 eth-brownie!
          1. pip install eth-brownie

          或者如果使用 pip3:
          1. pip3 install eth-brownie

          如果您在終端中運(yùn)行 brownie,您就會知道您做對了,您會得到類似于以下內(nèi)容的輸出:
          1. Brownie v1.13.0- Python development framework forEthereum


          2. Usage: brownie &lt;command> [&lt;args>...] [options &lt;args>]


          3. Commands:


          4. init Initialize a new brownie project


          5. bake Initializefrom a brownie-mix template


          6. pm Installand 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 Managelocal 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 Displaythis message


          17. --version Show version andexit


          18. Type'brownie &lt;command> --help'for specific options and more information about


          19. each command.

          此外,您還需要一個(gè) MetaMask 或其他以太坊錢包。請使用 Kovan測試網(wǎng)獲得ETH。請確保您的 ETH 錢包中有一些 testnet LINK 和 Kovan ETH。您可以在 LINK faucet 和 ETH Kovan faucet 中找到一些。
          啟動 Chainlink 項(xiàng)目
          要開始使用Brownie,,我們可以使用所謂的Brownie mix 來為我們提供樣板代碼。在這個(gè)例子中,我們將部署一個(gè)簡單的 Chainlink Price Feed 作為了解 Brownie 框架的一種方式。讓我們bake chainlink-mix。
          1. brownie bake chainlink-mix


          2. cd chainlink

          這將使我們進(jìn)入一個(gè)新項(xiàng)目,其中已經(jīng)為我們構(gòu)建了一些默認(rèn)代碼。如果我們運(yùn)行 ls 我們可以看到文件的布局是什么樣的:
          • build :這是項(xiàng)目跟蹤您部署的智能合約和編譯的合約的地方
          • contracts:合同的源代碼,通常用 Solidity 或 Vyper 編寫
          • interfaces :您需要使用已部署合同的接口布局。與合約的每次交互都需要一個(gè) ABI 和一個(gè)地址。接口是獲取合約 ABI 的好方法
          • scripts:我們創(chuàng)建的腳本來自動化處理我們的合同的過程 測試
          • tests:測試
          • brownie-config.yaml :這是我們?yōu)?Brownie 了解如何使用我們的智能合約提供所有信息的地方。我們要部署到哪個(gè)區(qū)塊鏈?有沒有我們想要設(shè)置的特殊參數(shù)?所有這些都在配置文件中設(shè)置。
          現(xiàn)在可以忽略 requirements.txt 、 README.md 、 LICENSE.gitignore。當(dāng)您練習(xí)時(shí),您會發(fā)現(xiàn)它們的用途。
          設(shè)置環(huán)境變量
          盡管我們只是安裝了 Ganache 來進(jìn)行本地測試,但我們也希望能夠連接到 ETH 主網(wǎng)和測試網(wǎng),以便我們可以將它們部署在真實(shí)的測試網(wǎng)上。為此,我們需要設(shè)置 WEB3_INFURA_PROJECT_ID。您可以從 Infura 站點(diǎn)免費(fèi)獲得一個(gè) Infura ID。您也可以使用其他 web3 提供程序或您自己的節(jié)點(diǎn),但您必須為此做更多的配置。
          在您的 brownie-config.yaml 文件中,您可以使用主機(jī)密鑰設(shè)置網(wǎng)絡(luò),并定義您不想使用 MetaMask 時(shí)想要連接的 URL。
          現(xiàn)在您有了 web3 ID,我們需要將我們的私鑰作為環(huán)境變量,以便我們可以將我們的帳戶與我們的錢包一起使用。如果您使用 MetaMask,請查找導(dǎo)出密鑰。使用 MetaMask,您可能需要在私鑰的開頭添加 0x。建議在測試和導(dǎo)出密鑰時(shí)使用與主帳戶不同的帳戶,以防萬一。
          現(xiàn)在,要使它們成為環(huán)境變量,只需在終端中運(yùn)行以下命令:
          1. export PRIVATE_KEY=0x96789…..


          2. export WEB3_INFURA_PROJECT_ID=’dog cat mouse….’

          如果你運(yùn)行 printenv 并在那里看到你的環(huán)境變量,你就會知道你做對了。
          部署您的智能合約
          現(xiàn)在我們已經(jīng)設(shè)置好了一切,我們甚至可以繼續(xù)將智能合約部署到 Kovan 測試網(wǎng)!
          在我們的腳本文件夾中,我們有一個(gè)名為 deploy_price_consumer_v3.py的腳本。這將部署我們的智能合約,以美元讀取以太坊的價(jià)格。
          只需使用 brownie run 即可使用部署腳本:
          1. brownie run scripts/price_feed_scripts/deploy_price_consumer_v3.py --network kovan

          你會看到這樣的東西:
          1. Running'scripts/price_feed_scripts/deploy_price_consumer_v3.py::main'...


          2. Transaction sent: 0x23d1dfa3937e0cfbab58f8d5ecabe2bfffc28bbe2349527dabe9289e747bac56


          3. Gas price: 20.0 gwei Gas limit: 145600Nonce: 1339


          4. PriceFeed.constructor confirmed - Block: 22721813Gas used: 132364(90.91%)


          5. PriceFeed deployed at: 0x6B2305935DbC77662811ff817cF3Aa54fc585816

          如果這工作正常,我們可以去 Kovan Etherscan 并找到我們部署的合約。上面的鏈接顯示了此示例中部署的合約。

          歡迎添加下方二維碼加入社群

          一起探討Python與區(qū)塊鏈開發(fā)技術(shù)




          點(diǎn)擊下方閱讀原文加入社區(qū)會員

          瀏覽 41
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩黄色电影网站 | 操小逼逼的操小逼逼 | 亚洲综合激情另类小说区 | 国产精品美女一区二区三区 | 黄色内射视频 |