每天进步一点点:从获取账户信息说起
获取账户信息是HIVE区块链最基本的功能之一,也是我们最常用到的功能。通过查询账户信息,我们可以知道账户的基本信息、账户的余额、账户的权限信息以及投票mana等等。
(图源 :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
对返回信息做了一些处理,使之更便于阅读:
除此之外,condenser_api
的返回中还增加了一些内容,比如witness_votes
等等
所以说,简单来讲,condenser_api.get_accounts
对database_api.find_accounts
进行了一些包装,使其返回更多以及更加便于理解的内容。
对HIVEMIND API节点请求
尽管对轻节点使用获取账户信息API可以获取很多内容,但是还是有些内容获取不到,比如说上述两个调用,返回的posting_json_metadata
等都是空的,又比如reputation
等数据都是0。
这样的话,可能我们就要对胖节点操作,而运行一个胖节点所需的资源还是很可观的,所以用户都去运行有些不太靠谱。所以最简单的方法还是使用公共的HIVEMIND API节点。
我没对HIVEMIND做更多的了解,但是我理解大意是把很多不是很重要的数据放到hivemind里,这样降低链本身的资源占用、提升链的处理能力。(如果理解不对请多指正)。
同样运行上述两个API调用,我们会发现大部分返回数据都是一致的,而posting_json_metadata
和reputation
等则有了具体的内容:
结论
所以尽管是一个简单的获取账户信息功能,还有着不少的学问呢,比如说是使用condenser_api.get_accounts
还是database_api.find_accounts
,是对轻节点还是胖节点抑或是hivemind节点发起请求,这结果差异还是挺大的呢。
搞清楚这些并选择合适的方式,无疑会事半功倍,否则可就是事倍功半喽。
好久没来,老兄还在