主页 > imtoken手机下载 > 在 5 分钟内了解以太坊 JSON API 的基础知识!

在 5 分钟内了解以太坊 JSON API 的基础知识!

imtoken手机下载 2023-09-23 05:07:45

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)

别的:

# 处理错误

以太坊官方api_以太坊api文档_以太经典和以太坊算力差别

print("发生错误")

我们如何知道使用哪种方法以及发送哪些参数? 所有这些都可以在以太坊官方文档中找到。

3.获取最新区块

让我们尝试一些更有趣的事情——让我们获取最新的区块,看看我们能从那里读取到什么?

# 设置参数并准备数据

blockNumber = "最新"

# 布尔值表示我们是想要完整的交易(真)还是只想要它们的哈希值(假)

fullTrx = 假

参数 = [blockNumber, fullTrx]

data = {"jsonrpc": "2.0", "method": "eth_getBlockByNumber", "params": 参数, "id": 1}

响应 = 会话。 post(url, json=data, headers=headers)

# 检查响应是否有效

如果响应.ok:

# 获取块

以太坊官方api_以太坊api文档_以太经典和以太坊算力差别

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("发生错误

以太坊官方api_以太坊api文档_以太经典和以太坊算力差别

您可能已经开始了解这些调用的工作原理,所以让我们尝试一些更高级的方法。

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:

以太坊api文档_以太经典和以太坊算力差别_以太坊官方api

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

以太坊官方api_以太坊api文档_以太经典和以太坊算力差别

'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 与世界上最有影响力的区块链进行交互的基础知识! 您可以在此处找到所有代码:。