# Get result of the request and decode it to decimal
# Create our transaction
'gasPrice': gasPriceHex,
url = "https://ropsten.infura.io/v3/YOUR_INFURA_KEY"
params = [ blockNumber, fullTrx]
# Boolean indicating if we want the full transactions (True) or just their hashes (false)
headers = {'Content-type': 'application/json'}
有一天,我碰着了这样一种环境,我需要在一个让web3.py险些不行能事情的情况中利用python与以太坊网络举办通信。由于我仍然需要与网络通信,所以我利用了以太坊提供的JSON-RPC API,所有的web3库都构建在该API之上。本来,这长短常有趣的!那么,让我们开始吧!
# 3 Because we are on Ropsten
# Faucet address
data = {"jsonrpc": "2.0", "method": "eth_getBlockByNumber","params": params, "id": 1}
根基配置
response = session.post(url, json=data, headers=headers)
data = {"jsonrpc": "2.0", "method": "eth_getTransactionCount","params": params, "id": 3}
这就是一切!您方才进修了利用JSON RPC Ethereum API与世界上最有影响力的区块链举办交互的基本常识!你可以在这里找到所有这些的代码。
'value': w3.toWei(0.5,'ether'),
gasPriceHex = response.json().get("result")
else:
让我们实验一些更有趣的对象——让我们获取最新的块,看看我们可以从哪里读取什么!
else:
print("Error occured")
你的第一个请求
print("Error occured")
params = [transactions[0]]
'to': '0x687422eEA2cB73B5d3e242bA5456b782919AFc85',
让我们先来相识一下网络当前的GAS价值。我们可以简朴地做:
接下来,我们建设并签署我们的策划,并再次利用JSON RPC API发送它:
blockNumber = "latest"
# Get the block
data = {"jsonrpc": "2.0", "method": "eth_getTransactionByHash","params": params, "id": 3}
if response.ok:
# Check if response is valid
pKey)
# Get the transactions contained in the block
transaction = response.json().get("result")
if response.ok:
fullTrx = False
# Handle Error
w3 = web3.Web3()
receipt = response.json().get("result")
response = session.post(url, json=data, headers=headers)
print("Error occured")
import requests
# Handle Error
'gas': 100000,
account = w3.eth.account.create('put any phrase here')
# Handle Error
import web3
params = [address, "latest"]
else:
response = session.post(url, json=data, headers=headers)
data = {"jsonrpc": "2.0", "method": "eth_sendRawTransaction","params": params, "id": 4}
},
'nonce': nonce,
if response.ok:
'chainId':3,
signed_txn = w3.eth.account.signTransaction({
发送生意业务
response = session.post(url, json=data, headers=headers)
获取最新的块
# Get the nonce at the latest block
# Set params and prepare data
# Handle Error
假如您在差异的以太坊(测试)网络长举办测试,请确保相应地配置链的Id。
block = response.json().get("result")
pKey = account.privateKey
留意我们是如何从头操作我们一开始得到的gas价值的。
response = session.post(url, json=data, headers=headers)
# Prepare the data we will send
else:
为了简朴起见,我们利用Infura节点毗连到以太坊 Ropsten Testnet。你可以在这里得到一个API键。
print("Error occured")
data = {"jsonrpc": "2.0", "method": "eth_gasPrice", "params": [], "id":1}
address = account.address
要害词: 以太坊
if response.ok:
# Check if response is valid
gasPriceDecimal = int(gasPriceHex, 16)
首先,让我们声明几个变量,这将有助于今后发送请求:
我如何知道利用什么要领和发送什么参数?这些都可以在以太坊官方文档中找到。
else:
nonce = response.json().get("result")
首先,让我们利用web3.py库建设一个新帐户,并用一些Ropsten醚加载它。我喜欢用这个水龙头。
import json
if response.ok:
session = requests.Session()
您大概已经开始相识这些挪用的事情模式,,所以让我们实验一些更高级的对象:
params = [signed_txn.rawTransaction.hex()]
结论
transactions = block.get("transactions")
让我们仔细看看个中一笔生意业务:
要发送建设策划,我们需要nonce。这也是我们可以获取与RPC JSON API利用沟通的模式。如上:
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。