每天进步一点点:从获取账户信息说起

지난달

获取账户信息是HIVE区块链最基本的功能之一,也是我们最常用到的功能。通过查询账户信息,我们可以知道账户的基本信息、账户的余额、账户的权限信息以及投票mana等等。

image.png
(图源 :pixabay)

但是你知道吗?是不用不同的API,获取账户信息的返回还有些差异呢,我们这里简单来介绍一下。

对节点(hived)直接发起请求

获取账户信息最方便的方式是对自己的节点发起请求,我本地运行着一个轻节点,用来做测试那是极其便利的。

获取账户信息有两种方式,一种是使用:database_api.find_accounts:

{'jsonrpc': '2.0', 'method': 'database_api.find_accounts', 'params': {'accounts': ['oflyhigh']}, 'id': 1}

另外一种是使用condenser_api.get_accounts

{'jsonrpc': '2.0', 'method': 'condenser_api.get_accounts', 'params': [['oflyhigh']], 'id': 1}

balance为例,不难看出,condenser_api对返回信息做了一些处理,使之更便于阅读:

image.png

image.png

除此之外,condenser_api的返回中还增加了一些内容,比如witness_votes等等

image.png

所以说,简单来讲,condenser_api.get_accountsdatabase_api.find_accounts进行了一些包装,使其返回更多以及更加便于理解的内容。

对HIVEMIND API节点请求

尽管对轻节点使用获取账户信息API可以获取很多内容,但是还是有些内容获取不到,比如说上述两个调用,返回的posting_json_metadata等都是空的,又比如reputation等数据都是0。

image.png

这样的话,可能我们就要对胖节点操作,而运行一个胖节点所需的资源还是很可观的,所以用户都去运行有些不太靠谱。所以最简单的方法还是使用公共的HIVEMIND API节点。

我没对HIVEMIND做更多的了解,但是我理解大意是把很多不是很重要的数据放到hivemind里,这样降低链本身的资源占用、提升链的处理能力。(如果理解不对请多指正)。

同样运行上述两个API调用,我们会发现大部分返回数据都是一致的,而posting_json_metadatareputation等则有了具体的内容:

image.png

image.png

结论

所以尽管是一个简单的获取账户信息功能,还有着不少的学问呢,比如说是使用condenser_api.get_accounts还是database_api.find_accounts,是对轻节点还是胖节点抑或是hivemind节点发起请求,这结果差异还是挺大的呢。

搞清楚这些并选择合适的方式,无疑会事半功倍,否则可就是事倍功半喽。

注:本文首发HIVE平台,欢迎大家到HIVE上关注我,并参与讨论。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
STEEMKR.COM IS SPONSORED BY
ADVERTISEMENT
Sort Order:  trending

好久没来,老兄还在