主页 > imtoken手机下载 > 在 5 分钟内了解以太坊 JSON API 的基础知识!
在 5 分钟内了解以太坊 JSON API 的基础知识!
headers = {'Content-type': 'application/json'}
为简单起见,我们使用 Infura 节点连接到以太坊 Ropsten 测试网。 您可以在此处获取 API 密钥:。
2. 你的第一个请求
让我们从查看网络当前的 gas 价格开始。 我们可以简单地执行以下操作:
# 准备我们要发送的数据
data = {"jsonrpc": "2.0", "method": "eth_gasPrice", "params": [], "id":1}
响应 = 会话。 post(url, json=data, headers=headers)
# 检查响应是否有效
如果响应.ok:
# 获取请求结果并将其解码为十进制
gasPriceHex = response.json().get("结果")
gasPriceDecimal = int(gasPriceHex, 16)
别的:
# 处理错误
print("发生错误")
我们如何知道使用哪种方法以及发送哪些参数? 所有这些都可以在以太坊官方文档中找到。
3.获取最新区块
让我们尝试一些更有趣的事情——让我们获取最新的区块,看看我们能从那里读取到什么?
# 设置参数并准备数据
blockNumber = "最新"
# 布尔值表示我们是想要完整的交易(真)还是只想要它们的哈希值(假)
fullTrx = 假
参数 = [blockNumber, fullTrx]
data = {"jsonrpc": "2.0", "method": "eth_getBlockByNumber", "params": 参数, "id": 1}
响应 = 会话。 post(url, json=data, headers=headers)
# 检查响应是否有效
如果响应.ok:
# 获取块
block = response.json().get("结果")
# 获取区块中包含的交易
交易=块。 得到(“交易”)
别的:
# 处理错误
让我们仔细看看其中一项交易:
参数 = [事务[0]]
data = {"jsonrpc": "2.0", "method": "eth_getTransactionByHash", "params": 参数, "id": 3}
响应 = 会话。 post(url, json=data, headers=headers)
如果响应.ok:
事务 = response.json().get("结果")
别的:
# 处理错误
print("发生错误
您可能已经开始了解这些调用的工作原理,所以让我们尝试一些更高级的方法。
4.发送交易
首先,让我们使用 web3.py 库创建一个新帐户并向其中加载一些 Ropsten 以太币。
导入 web3
w3 = web3。 Web3()
account = w3.eth.account.create('在这里输入任何短语')
地址=账户.地址
pKey = 帐户。 私钥
要发送创建交易,我们需要随机数。 我们还可以使用与上述相同的模式通过 RPC JSON API 获取信息:
# 获取最新区块的nonce
params = [地址以太坊api文档,“最新”]
数据 = {“jsonrpc”:“2.0”,“方法”:“eth_getTransactionCount”以太坊api文档,“参数”:参数,“id”:3}
响应 = 会话。 post(url, json=data, headers=headers)
如果响应.ok:
nonce = response.json().get("结果")
别的:
# 处理错误
print("发生错误")
接下来,我们将创建并签署交易,然后使用 JSON RPC API 再次发送它:
# 创建我们的交易
signed_txn = w3.eth.account.signTransaction({
# 水龙头地址
'到':'0x687422eEA2cB73B5d3e242bA5456b782919AFc85',
'随机数':随机数,
'gasPrice':gasPriceHex,
'气体':100000,
'值':w3.toWei(0.5,'ether'),
# 3 因为我们在 Ropsten
'chainId':3,
},
p键)
如果您在其他以太坊(测试)网络上进行测试,请确保相应地设置链 ID。
params = [signed_txn.rawTransaction.hex()]
数据 = {“jsonrpc”:“2.0”,“方法”:“eth_sendRawTransaction”,“参数”:参数,“id”:4}
响应 = 会话。 post(url, json=data, headers=headers)
如果响应.ok:
收据 = response.json().get("结果")
别的:
# 处理错误
print("发生错误")
请注意我们如何重新使用开始时获得的 gas 价格。
5 结论
就这么简单,您刚刚花了 5 分钟学习了使用 JSON RPC Ethereum API 与世界上最有影响力的区块链进行交互的基础知识! 您可以在此处找到所有代码:。