如何通过leveldb解析geth / nodes目录中的节点信息?

问题描述

我想获取ETH的所有节点IP地址,因此我需要解析geth / nodes目录,但是我找不到特定的数据格式,也无法解析它。

我发现了同样的问题,但是没有解决方案: https://ethereum.stackexchange.com/questions/5999/format-of-leveldb-files-in-nodes-directory-trouble-pulling-contents-with-python

我的代码

import leveldb
import rlp

db = leveldb.LevelDB("../nodes")
for k in db.RangeIter():
    print(k)
    print(rlp.decode(k[0]))
    break

结果:

(bytearray(b'local:\xc6\x83\x00\xb8LX\xcc+\xcd\x98CDd\x96\x89R\x92\x1a\xaeV\xe1\x93\xfeV\x95)\t~$e\xfa|:seq'),bytearray(b'\x97\x08'))
Traceback (most recent call last):
  File "temp.py",line 7,in <module>
    print(rlp.decode(k[0]))
  File "PATH/.local/lib/python3.6/site-packages/rlp/codec.py",line 235,in decode
    raise DecodingError(msg,rlp)
rlp.exceptions.DecodingError: RLP string ends with 41 superfluous bytes

搜索了很多信息,发现解码时需要指定rlp.sedes。我无法确定它是哪种类型。我是ETH的新手,需要帮助。也可以使用其他编程语言进行解析的示例。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...