我正在尝试使用以太坊 API 编写一个通过 BSC 链交换代币的客户端(我真的不想使用 web3 库)。所以从以太坊 RPC API 文档中学到了一些东西,但我无法真正理解发送原始签名交易的步骤是什么。这是我的示例有效负载:
data = {"jsonrpc": "2.0",
"method": "eth_sendTransaction",
"params": [
{
'from': address,
'to': self.router_address,
'gas': hex(gas),
'gasPrice': hex(gasPrice),
'value': hex(ETH_amount),
'data': query,
"nonce": await self.getTransactionCount(address)
}],
"id": _id}
当然还有必要的标题
{"Content-Type": "application/json"}
数据字段(查询变量)基本上取自this交易。如果向下滚动,您可以看到原始有效负载,它当然已成功处理,因为该操作是使用 PancakeSwap 创建的。但是当我发送相同的内容(即使修改了截止日期参数)时,我得到了这个:
{'jsonrpc': '2.0', 'id': 1, 'error': {'code': -32000, 'message': 'unknown account'}}
显然某个地方应该完成签名功能,但我只是不知道如何制作它。有人可以帮助我吗?如何处理数据并发出请求以使交换成功? (例如,从 BNB 到 BUSD - 无需批准步骤)。
尝试使用 web3.toChecksumAddress("address") 作为您的地址和路由器地址