在5分鐘內學習以太坊JSON API的基礎知識

2021-10-05 21:14:00 字數 3209 閱讀 3981

前幾天,我陷入一種需要在環境中使web3.py正常工作的環境中使用python與以太坊網路進行通訊的情況。 由於仍然需要與網路交談,因此我採取了使用以太坊提供的json-rpc api的方式,所有web3庫都建立在該之上。 原來,這很有趣! 所以,讓我們開始吧!

首先,我們先宣告一些變數,這些變數在以後傳送請求時會有所幫助:

import requests

import json

session = requests.session()

url = ""

為簡單起見,我們使用infura節點連線到以太坊ropsten testnet。 您可以在此處獲取api金鑰。

讓我們通過獲取網路的當前天然氣**來弄濕自己的腳。 我們可以通過簡單地做到這一點:

# prepare the data we will send

data =

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...