如何获取Steem API RPC 节点的版本信息

在之前的帖子《昨晚steemit肿了啦?》中,我提到过由于steem API RPC node 升级导致的STEEMIT网站故障。也就是说原本在0.19.2上好用的脚本用到0.19.4上可能会出一些问题。


(图源 :pixabay)

那个帖子之后就有朋友问我,如何知道自己脚本所使用的API节点是什么版本呢?这样当发生故障时,我们就可以判断是否是由于版本问题导致的不兼容。这里我就来介绍一下。

STEEM 0.19.2

在STEEM 0.19.2 以及以前版本的节点,获取节点版本信息的JSON为:
{"jsonrpc": "2.0", "method": "call", "params": ["login_api", "get_version", []], "id": 1}
其中最需要注意的地方是,我们使用的是login_api,换言之,使用database_api等其它组别,是行不通的。

使用curl调用,完整的指令如下:

curl --data '{"jsonrpc": "2.0", "method": "call", "params": ["login_api", "get_version", []], "id": 1}'https://api.steemit.com

返回结果如下:

其中block_version就是我们说的steem区块链的版本号啦

steem_revision以及fc_revision代表的对应代码(steem 以及 fc)的版本,

STEEM 0.19.4

login_api
按照 STEEM 0.19.4的Release Notes Login API 是要(已经)被移除的

The login_api was designed as a way to map the API names to numeric ids. Because the APIs are no longer called via id, there is now no need for the login_api, and so it has been removed.

但是,上述指令居然还好用:

curl --data '{"jsonrpc": "2.0", "method": "call", "params": ["login_api", "get_version", []], "id": 1}' https://api.steemitdev.com

这让人有点尴尬,咋就说了不算呢?尽管login_api 并未如官方说的那样不移除,但是既然官方说了,说不定啥时候就给移除掉了,用着终归不放心,那还有别的方法吗?

答案是在0.19.4节点上,database_api和condenser_api都和login_api一样可以用于获取版本信息。指令是一样的,替换一下API名称就可以了,示例如下:

database_api

curl --data '{"jsonrpc": "2.0", "method": "call", "params": ["database_api", "get_version", []], "id": 1}' https://api.steemitdev.com

condenser_api

curl --data '{"jsonrpc": "2.0", "method": "call", "params": ["condenser_api", "get_version", []], "id": 1}' https://api.steemitdev.com

返回内容都是一样的,就不列举出来啦。

如何获取版本?

你可能问了,这不对呀,我们的问题是如何获取版本,你这告诉我0.19.2如何获取,0.19.4如何获取,既然我知道版本,还获取啥啊?

这问题问的好,其实原本用login_api,没啥版本限制,一直可以用于获取版本,但0.19.4不是说要把login_api拿掉吗(尽管一直没拿掉)但是我们要做两手准备。

所以我们可以在程序中先用login_api去获取,一旦返回错误,再用condenser_api或者database_api 去获取好啰。搞这么麻烦,我也很无奈哦。

好消息是,除了STEEMIT官方节点总升着降着玩,版本变化略频繁,其它第三方节点几乎很少变化,并且一旦变化都是升级,很有有降级的,大可放心。

参考信息

H2
H3
H4
3 columns
2 columns
1 column
4 Comments