python怎么用,python web.py教程_如何用Python匯款:Web3.py教程

 2023-11-18 阅读 36 评论 0

摘要:Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。Python開發人員對于以太坊和區塊鏈庫的技術練習。警告:下面的教程包含這些元素:顯式加密、點對點金融服務以及可能的違規行為。這些例子僅僅是為了說明Python區塊鏈的強大功能和便

Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。

Python開發人員對于以太坊和區塊鏈庫的技術練習。

警告:下面的教程包含這些元素:顯式加密、點對點金融服務以及可能的違規行為。這些例子僅僅是為了說明Python區塊鏈的強大功能和便捷性。

嗨,Pythoners,你們好!

python怎么用、我真的很喜歡Python社區。像很多人一樣,Python是我的第一種編程語言。Python hackathon和它的meet-up非常棒。而且此外,我喜歡Monty Python(https://pythonspamclub.com/monty-python-and-programming-language/)!

我正在將熱愛的東西與目前的工作結合在一起:向開發人員展示區塊鏈編程的強大功能,以及這些技能是多么容易掌握。

這是一個向Python開發人員介紹Web3.py(一個區塊鏈/以太坊庫)的基礎知識的教程。我們將在Python解釋器中做很多事情。(在下一節中,我們將給出一個合適的目錄。但現在,讓我們放輕松!)

注意:出于安全原因,我們將通過測試網絡進行匯款。所有這些技術都可以在主要的以太坊網絡上使用。

目錄

python和java?·安裝

·建立連接

·初始化

·創建一個帳戶

·ENS帳戶

python3,·匯款

安裝

我們將使用pip,用命令行安裝web3.py:

對于同時安裝了Python 2和3的用戶,您應該檢查一下使用哪個版本的pip命令。某些默認的是2.7:

另外,如果您使用的是virtualenv,這里還有一些為Web3.py設置環境的文檔(https://web3py.readthedocs.io/en/stable/troubleshooting.html#setup-environment)。

python websocket?很好!我們已經開始了。

建立我們的連接

區塊鏈系統是分散的網絡,由運營專門的P2P軟件或“節點”的人員組成。它類似于torrent網絡:為了與網絡交互,您必須托管一個節點,或使用相關的托管服務。

由于這是基礎教程,因此我們將使用托管服務。最受歡迎的是Infura。您可以設置自己的免費帳戶(說明見https://blog.infura.io/getting-started-with-infura-28e41844cc89/),也可以使用下面的產品ID。獲取項目ID和API端點至關重要——這將是我們通往區塊鏈的API端點,并且用于分析的儀表盤也很有幫助。

復制這里的Endpoint,并確保在地址前添加https://。

python web server、一旦有了它,您就可以用Python連接區塊鏈了!

初始化

讓我們啟動Python解釋器。具體操作取決于您安裝的Python,輸入你通常運行Python腳本時在腳本名稱前面的部分就可以了。對于我的Mac iTerm來說,它同時安裝了Python 2和3,是下面這樣的:

為了檢查我們的所有設置是否正確,請運行python解釋器和以下命令:

上面的命令導入了一些web3.py中的主要方法,我們要用這些方法連接區塊鏈,它還導入了內置的json。

python webapi。接下來,我們將創建一個對象(w3),我們將使用Infura API端點(以https://開頭)對其進行初始化。在本教程接下來的部分中,它將成為web3.py與區塊鏈協作的主要方式。

注意:您需要在Infura API地址前面添加HTTPS://,否則會出現錯誤!

我們還需要添加一些中間件來幫助我們使用Infura和Rinkeby測試網:

現在,為了查看一切是否順利,我們運行:

如果您得到True的結果,恭喜!您已連接到區塊鏈!

python做web?如果您得 False的結果,可以檢查以下事項:

1.如果您需要重新啟動解釋器,那么必須重新導入庫,并且重新初始化變量

2.您是否正確復制了Infura API密鑰?

3.您是否安裝了web3.py?是否安裝并導入了Web3和HTTPProvider?

4.您是否已在API密鑰前面加上https://?

python發包、創建一個帳戶

如果我們想在區塊鏈上匯款,我們需要一個以太坊賬戶。以太坊賬戶是以太坊區塊鏈上的主要身份單位——賬戶的地址用于網絡對用戶的識別。帳戶系統的基礎是基于公鑰加密的分散身份協議。本質上來說,區塊鏈網絡上的身份是通過公共地址對應方(由網絡持有)對單個私鑰(由用戶秘密持有)的數字簽名進行身份驗證來確認的。盡管它帶來了一定的用戶體驗障礙,但它確實提供了一種快速的、點對點的身份驗證協議。

用web3.py生成一個可以在以太坊網絡上使用的賬戶非常容易。

注意:在接下來的幾個步驟中,我將違反一些加密和安全方面的規則。(1)我將生成一個熵不足的私鑰(隨機地),并且(2)我將在線公開私鑰。在本教程之外,我不會使用此私鑰——它只是出于教學的目的。您應該始終使用正確的私鑰管理,例如Geth或MetaMask,并且永遠不要共享您的私鑰。

上面的命令使用輸入的字符串生成了my_account對象,該對象包含一個私鑰(my_account._private_key)和相關的以太坊地址(my_account._address)。但是,由于我已經公開該私鑰,因此其他人可以生成和使用相同的私鑰。(幸運的是,本教程僅在用于測試的區塊鏈網絡上使用它。)

python 爬蟲?因此,用戶通常將私鑰的創建和管理委托給名為客戶端(如Geth)或錢包(如MetaMask)的軟件。這些軟件提供了一種非常安全的方式來生成和處理用于區塊鏈交互的私鑰。

ENS帳戶

以太坊的地址是十六進制數字。這讓人幾乎不可能手動輸入或記住,因此以太坊社區創建了Ethereum Name System (ENS)。 它也具有域名系統的優勢,該域名系統將網站服務器編號(216.58.194.46)替換為易于理解的名稱(google.com)。大多數ENS名稱都使用.eth域,而不是.com域。

例如,我有一個Ethererum帳戶(0x4d3dd8471a289E820Aa9E2Dc5f437C1b2E22F598)。但是我用ENS將更易讀的名稱(coogan.eth)映射到該地址。如果您在支持ENS的應用或項目中輸入這些內容(例如web3.py),它將代替以太坊的十六進制地址。不幸的是,由于.eth域名只能在主網上使用,因此我們無法在本教程中使用它,但也許下一教程中會有!

匯款

python 引用其他py、在最后一部分中,我們將從剛創建的賬戶向一些以太坊賬戶匯款。它們全部用python解釋器進行!

人們對匯款的合理反應是:“難道互聯網上的錢不是在波動中呈現不斷下降的趨勢嗎?” 是的,加密貨幣的美元價格波動很大。這引起了企業的猶豫——為什么您會接受價格不確定的貨幣?

但是,以太坊生態系統建立了一個奇特的解決方法。以太坊被稱為“世界計算機”,因為它是一個分布式系統,允許開發人員上傳并執行自己的代碼。用這種方式上傳到以太坊的代碼稱為智能合約。 它被上傳到網絡后,將成為一個獨立的實體,具有自己的地址,內存和網絡訪問權限。智能合約使得以太坊開發者社區豐富了起來,該社區既富有創意又不懈地應對挑戰,例如區塊鏈固有的價格波動。

為了給以太坊創造穩定的價值來源,一群開發人員編寫了名為Dai的代碼并將其上傳到以太坊。這是一個數字令牌,價值始終約為1美元(實現這種穩定性技術的操作細節很有趣,但是超出了本教程的范圍——如果您想了解更多有關它原理的知識,可以在https://docs.ethhub.io/built-on-ethereum/open-finance/stablecoins/dai/找到更多信息)。持有Dai代幣后,我們可以與其他用戶以美元匯率兌換它。我們現在就這樣做!

注意:要使帳戶(不同于本教程中的賬戶)獲得Dai,您可以通過這個合約地址(https://rinkeby.etherscan.io/address/0xc3dbf84abb494ce5199d5d4d815b10ec29529ff8#code),Metamask和您自己的帳戶在測試網上創建自己的帳戶。請按照此處教程(https://tokenmint.io/blog/how-to-mint-new-tokens-using-etherscan.html)中的步驟進行操作。

python開發web應用,合約實例化

首先,為了與開發人員上傳到以太坊的代碼進行交互,我們需要知道上傳的代碼提供了哪些方法。 Web3.py知道如何與核心的以太坊軟件進行對接,但是需要被指導如何與第三方代碼交互。我們通過為Web3.py提供應用程序二進制接口(ABI)來提供這個指導。與應用程序編程接口(API)相似,ABI讓我們的計算機知道哪些功能可用以及實現這些功能需要的參數。ABI在區塊鏈上不可用,由開發人員在Github或Etherscan網站上提供。

下面是我們將使用的測試網的Dai ABI,請復制整個代碼塊:

注意:此代碼真的很長,請仔細地將其完全復制!

我們需要使用json解析它:

python調用post接口?我們還需要告訴web3.py如何在太坊網絡找到此代碼。我們使用以下代碼進行操作:

然后,我們使用ABI和這個地址將智能合約對象實例化。這將使我們能夠訪問代碼提供的功能:

為了測試我們是否已經正確地將合約實例化,我們將調用一個函數,該函數告訴我們該合約持有多少Dai:

(運行該帳戶時,余額可能有所不同)

創建交易

python怎么執行py文件,為了從我們的西班牙帳戶(my_account)轉移Dai ,我們將使用Dai智能合約中的transfer功能,如下所示:

我們可以看到,我們需要將兩個參數傳遞給合約:to,這是一個十六進制的以太坊address和? value,為uint256格式。即使是經驗豐富的開發人員,處理256位(uint256)的無符整型數也可能是一個挑戰。這證明了非常規編程必須在智能合約的水平上完成,這經常讓我很失望。Web3.py有一種方法可以將整數值轉換為智能合約所需的格式,這個方法是toHex。讓我們發送10個Dai,由于我們要發送的數量少于16個,因此我們只需將0x放在前面。對于address,請輸入您要發送Dai給別人的地址。

我們的當前交易如下所示:

這些參數對于Dai合約很有用(我們不會在這出現錯誤),但是我們需要更多的參數,使得交易在以太坊網絡上進行。這些參數是chainId,gas和nonce。

·ChainId可以讓web3.py知道將交易發送到哪個網絡。不同的網絡有不同的偏好(就像我們一開始為Rinkeby安裝middleware時所看到的那樣),這有助于web3.py正確綁定交易。Rinkeby的網絡ID為? 4,這是網絡ID的完整列表(https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/)。。

·Gas是您向網絡礦工支付的用于交易費用的小筆款項。許多人對此感到驚訝,但是它的金額很小(例如,我們的交易將花費0.00007000ETH,名為Gwei的特定面額劃定了它的標準(https://ethereum-homestead.readthedocs.io/en/latest/ether.html))。Gas以分散的方式幫助網絡安全運行。

·Nonce是每個以太坊賬戶專用的全局變量。它的作用與支票底部的數字相同:它允許對來自不同帳戶的付款正確排序。發送每筆交易后,它就加一。Web3.py有一種查找當前nonce地址的方法:? w3.eth.getTransactionCount(ETHEREUM_ADDRESS)。

我們將使用web3.py的buildTransaction方法將這三個變量合并到我們的交易中。我還要添加我朋友的以太坊地址,并給他發送10個Dai:

簽名和發送交易

現在我們有了transaction,我們需要使用私鑰對其進行簽名。這樣,以太坊的點對點協議就會知道是哪個賬戶想要匯款。為了完成簽名,我們將transaction對象和my_account._private_key對象放入以下函數中:

注意:您絕對不能在網上發布真實的私鑰!我們這樣做僅出于教學目的。再次注意:在此帳戶耗盡測試的內容(或用于測試的Dai)之前,以上命令對Rinkeby網絡都是有效的。

交易簽名后,我們現在要做的就是通過Infura API端點將其發送到網絡。我們使用以下命令對w3對象進行操作:

如果成功的話,恭喜!您剛剛用Python匯款了!

要查找您的交易,您可以輸入txn_hash,并將字符串值交給Rinkeby的Etherscan。這是我擁有的哈希(您自己的可能有所不同):

您可以在以太坊測試網上看到它(https://rinkeby.etherscan.io/tx/0xc5f98cbe6f1eaef16916b148e6c4ae926b11ab9dde750e188362745da39d560e)。

如您所見,使用web3.py可以為您的應用程序創造各種可能。在下一個教程中,我希望使用正確的文件和目錄來做更多的事情。現在,我只想向您展示區塊鏈可以提供的一些令人難以置信的功能。希望您發現有趣的東西!這個社區希望與新朋友互動,請和他們交流。

英文原文:https://consensys.net/blog/blockchain-development/how-to-send-money-using-python-a-web3-py-tutorial/

譯者:桃夭

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/179479.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息