前幾天,我陷入一種需要在環境中使web3.py正常工作的環境中使用python與以太坊網路進行通訊的情況。 由於仍然需要與網路交談,因此我採取了使用以太坊提供的json-rpc api的方式,所有web3庫都建立在該之上。 原來,這很有趣! 所以,讓我們開始吧!
首先,我們先宣告一些變數,這些變數在以後傳送請求時會有所幫助:
import requests
import json
session = requests.session()
url = ""
為簡單起見,我們使用infura節點連線到以太坊ropsten testnet。 您可以在此處獲取api金鑰。
讓我們通過獲取網路的當前天然氣**來弄濕自己的腳。 我們可以通過簡單地做到這一點:
# prepare the data we will senddata =
response = session.post(url, json=data, headers=headers)
# check if response is valid
if response.ok:
# get result of the request and decode it to decimal
gaspricehex = response.json().get( "result" )
gaspricedecimal = int(gaspricehex, 16 )
else :
# handle error
print( "error occured" )
我怎麼知道使用哪種方法以及傳送什麼引數? 所有這些都可以在以太坊官方文件中找到。
讓我們嘗試一些更有趣的事情-讓我們獲取最新的**塊,看看我們可以從中讀取什麼!
# set params and prepare data
blocknumber = "latest"
# boolean indicating if we want the full transactions (true) or just their hashes (false)
fulltrx = false
params = [ blocknumber, fulltrx]
data =
response = session.post(url, json=data, headers=headers)
# check if response is valid
if response.ok:
# get the block
block = response.json().get( "result" )
# get the transactions contained in the block
transactions = block.get( "transactions" )
else :
# handle error
讓我們仔細看看其中一項交易:
params = [transactions[ 0 ]]
data =
response = session.post(url, json=data, headers=headers)
if response.ok:
transaction = response.json().get( "result" )
else :
# handle error
print( "error occured" )
您可能已經開始了解這些呼叫的工作方式,因此讓我們嘗試一些更高階的方法:
首先,讓我們使用web3.py庫建立乙個新帳戶,並向其中載入一些ropsten ether。 我喜歡用這個水龍頭 。
import web3
w3 = web3.web3()
account = w3.eth.account.create( 'put any phrase here' )
address = account.address
pkey = account.privatekey
要傳送建立交易,我們需要隨機數。 我們也可以使用與上述相同的模式使用rpc json api來獲取:
# get the nonce at the latest block
params = [address, "latest" ]
data =
response = session.post(url, json=data, headers=headers)
if response.ok:
nonce = response.json().get( "result" )
else :
# handle error
print( "error occured" )
接下來,我們建立並簽名交易,然後再次使用json rpc api將其傳送出去:
# create our transaction
signed_txn = w3.eth.account.signtransaction(,
pkey)
如果要在其他以太坊(test)網路上進行測試,請確保相應地設定鏈id。
params = [signed_txn.rawtransaction.hex()]
data =
response = session.post(url, json=data, headers=headers)
if response.ok:
receipt = response.json().get( "result" )
else :
# handle error
print( "error occured" )
請注意,我們如何能夠重用開始時獲取的汽油**。
就這樣! 您剛剛了解了使用json rpc ethereum api與世界上最具影響力的區塊鏈進行互動的基礎知識! 您可以在這裡找到所有**。
尼古拉斯
如果您喜歡這個,請給這個故事幾個反應,以便更多的人看到它!
如果您喜歡這個,請給我買咖啡:)
教程 5分鐘在以太坊上發行自己的代幣
教程 5分鐘在以太坊上發行自己的代幣 提前準備 fq的工具,chrome瀏覽器 點選新增擴充套件程式 注 metamask除了是乙個簡單的錢包外,它可以使得chrome瀏覽器變身成以太坊瀏覽器,讓使用者通過瀏覽器和以太坊智慧型合約互動 第二步 設定metamask賬號 並轉一些eth 點選chrom...
3分鐘了解以太坊2 0技術
就在剛過去的7月31日,加密貨幣市值第二高的以太坊迎來了5周年生日。隨著以太坊的不斷發展,社會各界對以太坊的關注也在不斷增加,使用者及應用的不斷激增,也使得大家對以太坊 2.0的呼聲不斷高漲。什麼是以太坊2.0?以太坊2.0是計畫中的以太坊替代方案。隨著defi等專案的迅速公升溫,以太坊上交易量不斷...
5分鐘機器學習
logistic regression 1.由線性回歸,加上sigmoid得來 2.線性回歸得到的是乙個值,logistic regression得到的是乙個概率 3.sigmoid函式減少了極端值的影響 4.如果樣本不是線性回歸可處理的,那麼logistic regression效果就比較差 sv...