5 当我想获取bsc mempool 中完整的tx,报错:too many arguments, want at most 1

我通过websockets发送:
'{"id": 1, "method": "eth_subscribe", "params": ["newPendingTransactions", true]}'

而且应该得到完整的交易细节而不是哈希值。

但得到的是错误:
{"error":{"code":-32602,"message":"too many arguments, want at most 1"},"id":1,"jsonrpc":"2.0"}
如果我发送:
{ jsonrpc: '2.0',method: 'eth_subscribe',params:['newPendingTransactions'],id: 1}
则正常得到TX的哈希值。
为啥会是这样呢 ?

Python代码如下:

import asyncio
import json
from websockets import connect

ws_url = 'wss://bsc.getblock.io/xxxxxx/mainnet/'


async def get_event():
    async with connect(ws_url) as ws:
        await ws.send(
            '{"id": 1, "method": "eth_subscribe", "params": ["newPendingTransactions", true]}')
        subscription_response = await ws.recv()
        print(subscription_response)

        while True:
            try:
                message = await asyncio.wait_for(ws.recv(), timeout=15)
                response = json.loads(message)
                print(response)
                pass
            except:
                pass


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    while True:
        loop.run_until_complete(get_event())

请先 登录 后评论

最佳答案 2023-06-08 06:23

那个true 参数,需要比较新版本的geth 才能支持,bsc 抄代码抄的比较早,自己分支有没有合并这个特性,所以不支持true 这个参数。

eth 就能支持。

请先 登录 后评论

其它 2 个回答

Tiny熊
  擅长:智能合约,以太坊

参数: 订阅类型, 没有其他的参数

参考:
https://docs.alchemy.com/reference/eth-subscribe

请先 登录 后评论
链人

我有节点可以支持

请先 登录 后评论
  • 3 关注
  • 0 收藏,2973 浏览
  • fryyyyyy 提出于 2023-06-06 21:59