自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開發(fā) 后端
在本教程中,我們將介紹如何使用 Python 開發(fā) DeFi 項(xiàng)目。

[[406081]]

Python中文社區(qū) (ID:python-china)

在本教程中,我們將介紹如何使用 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)目變得生動(dò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)用,可讓您輕松啟動(dò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 存儲(chǔ)庫一樣使用 pip 安裝 eth-brownie!   

  1. pip install eth-brownie 

或者如果使用 pip3:   

  1. pip3 install eth-brownie 

如果您在終端中運(yùn)行 brownie,您就會(huì)知道您做對了,您會(huì)得到類似于以下內(nèi)容的輸出: 

  1. Brownie v1.13.0- Python development framework forEthereum  
  2.  Usage:  brownie <command> [<args>...] [options <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 <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 中找到一些。

啟動(dòng) 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)建的腳本來自動(dò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í),您會(huì)發(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)境變量,你就會(huì)知道你做對了。

部署您的智能合約

現(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 

你會(huì)看到這樣的東西: 

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

 

責(zé)任編輯:龐桂玉 來源: Python中文社區(qū)
相關(guān)推薦

2021-06-17 08:37:53

PythonDeFi編程語言

2021-06-25 09:30:11

PythonDeFi借貸

2023-07-14 12:07:19

2018-09-05 14:39:05

2017-12-25 23:51:24

去中心化交易區(qū)塊鏈

2021-04-26 15:10:41

比特幣DeFi金融

2023-04-07 15:33:09

2023-10-12 09:05:11

2021-05-11 16:38:36

區(qū)塊鏈工具金融

2022-07-06 14:20:05

區(qū)塊鏈去中心化金融

2023-10-30 08:00:00

區(qū)塊鏈去中心化

2023-09-28 16:15:01

Element XMatrix 2.0

2024-02-29 15:27:10

2023-08-24 16:23:09

2022-05-13 15:11:24

區(qū)塊鏈去中心化dapp

2021-02-24 10:02:19

存儲(chǔ)云存儲(chǔ)去中心化存儲(chǔ)

2021-02-05 10:03:31

區(qū)塊鏈技術(shù)智能

2018-06-19 10:19:02

StorjSiaFilecoin

2014-05-19 10:07:41

Dynamo去中心化

2022-04-26 23:33:33

區(qū)塊鏈去中心化數(shù)據(jù)結(jié)構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號