体验一下 Steem 0.19.4 & condenser_api

@steemitdev 3天前的文章《AppBase: The next step forward for the Steem blockchain (let the testing begin)》 主要提到了两个东东,AppBase 以及 condenser_api

AppBase 我一直以为是App 仓库呢,还以为steemit也要搞个类似应用商店一样的东西呢,结果后来我看到下边这个图,才知道他说的是系统架构,捂脸😳。

(图片来源:Steem Blockchain Update August 2017)

从这个图中我们可以看到无论AppBase 还是 condenser_api都是半年以前就计划的东西啦,还好我们终于看到影子啦,那么AppBase 就没啥说的了,来试试condenser_api吧。

新condenser_api

Steem Equality 0.19.4 (Appbase) Release Notes着重提到了这个condenser_api,说的是它包含当前在用的所有API中的所有方法。让你的程序跑到AppBase上最便捷的方法就是把api 都换成 condenser_api

我们之前讲过通过RPC调用STEEM API,比如我们前几篇文章中举过的例子:

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

其中account_by_key_api 需要我们显式的指定,类似情况还有follow_api, tag_api等等,参考上图。到了Steem 0.19.4以后呢,原来这些API都可以用condenser_api代替啦。

上边的命令,就可以改成如下模式

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

注意节点的变更,开发节点当前是0.19.4版本。
返回结果如下:

API methods 列表

可以通过调用jsonrpc.get_methods返回支持的API以及方法列表,有以下三种调用方法:

curl --data '{"jsonrpc": "2.0", "method": "jsonrpc.get_methods", "id": 1}' https://api.steemitdev.com

curl --data '{"jsonrpc": "2.0", "method": "jsonrpc.get_methods", "params": {}, "id": 1}' https://api.steemitdev.com

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

返回列表的部分内容:

需要注意的一点是,列表中列出的一些API,并非都已经实现的😳
也可以看这个列表,感觉就是把这个打印了出来。

流水线语法

就是说调用,可以用这个形式:
{"jsonrpc":"2.0", "id":0, "method":"call", "params":["api","function",[ARGS]]}

也可以用这个形式:
{"jsonrpc":"2.0", "id":0, "method":"api.function", "params":[ARGS]}

API methods 列表 小节中,我演示了这两种以及第三种不含参数的调用方式,所以无需赘述了。

其它

{"jsonrpc":"2.0", "method":"jsonrpc.get_signature", "params":{"method":"database_api.get_active_witnessess"}, "id":1}

发布说明中的这个我没运行起来,提示消息:

"message":"Assert Exception:method_itr != api_itr->second.end(): Method database_api.get_active_witnessess does not exist"

检查了一下,官网的文档中多写了个s,get_active_witnessess 应为 get_active_witnesses,修正后执行

{'id': 1, 'jsonrpc': '2.0', 'result': {'args': {}, 'ret': {'witnesses': []}}}

然而我并没有搞懂它表达的是啥意思呢?迷糊了,不研究了。

结论

感觉 Steem 0.19.4 发布的有些仓促,除了加了个 condenser_api,并没有多少新内容,而jsonrpc.get_methods 中列出的东西好多都没有实现。

另外 condenser_api与其说是Steem 0.19.4的新功能,不如说是jussi的功能,至少我在steem源代码中找不到一行代码含 condenser_api的字样呢。

不过不管咋说,STEEM在不断进步,这是我们大家所喜闻乐见的,祝STEEM越来越好吧!

参考链接

H2
H3
H4
3 columns
2 columns
1 column
6 Comments