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

View this thread on steempeak.com
· @oflyhigh ·
$0.27
每天进步一点点:从获取账户信息说起
获取账户信息是HIVE区块链最基本的功能之一,也是我们最常用到的功能。通过查询账户信息,我们可以知道账户的基本信息、账户的余额、账户的权限信息以及投票mana等等。

![image.png](https://images.hive.blog/DQmeXqRS5YJFSDQ58ztLeryhT52MbvKxjvkBDU8VqHCDuhX/image.png)
(图源 :[pixabay](https://pixabay.com/))

但是你知道吗?是不用不同的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](https://images.hive.blog/DQmUrzZrdo5HSnR1BRhLKZhVzJTuVxmgUkJrPP4v5zJnsJS/image.png)

>![image.png](https://images.hive.blog/DQmeDaJNPtdvHpevdTjxKSNoLMpyUPS4EzTm2yjUQyJkBJF/image.png)

除此之外,`condenser_api`的返回中还增加了一些内容,比如`witness_votes`等等
>![image.png](https://images.hive.blog/DQmXgSmAHU72D61aEjHAz78DnRt7zrasZBuVEzaipdzBkUZ/image.png)


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

# 对HIVEMIND API节点请求

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

>![image.png](https://images.hive.blog/DQmPm72S12f1a1fqh6WyWBP9z4snsvDrDEHqC68tWokxBw1/image.png)

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

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

同样运行上述两个API调用,我们会发现大部分返回数据都是一致的,而`posting_json_metadata`和`reputation`等则有了具体的内容:
>![image.png](https://images.hive.blog/DQmasnjwGY5tYgynQU9x8bAxa8b9qKnWNixJPJbS7SnR7jA/image.png)

>![image.png](https://images.hive.blog/DQmUo1toJLnYQWzXF8NMaeuNJjRNS6hCiFGXqNUbstRd8j7/image.png)

# 结论

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

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

***注:本文首发[HIVE平台](https://hive.blog),欢迎大家到[HIVE](https://hive.blog/@oflyhigh)上关注我,并参与讨论。***
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
post_id88,137,946
authoroflyhigh
permlinkbbj52
categorycn
json_metadata{"tags":["cn","hive","api","life","blog","hivemind","cutehive"],"image":["https:\/\/images.hive.blog\/DQmeXqRS5YJFSDQ58ztLeryhT52MbvKxjvkBDU8VqHCDuhX\/image.png","https:\/\/images.hive.blog\/DQmUrzZrdo5HSnR1BRhLKZhVzJTuVxmgUkJrPP4v5zJnsJS\/image.png","https:\/\/images.hive.blog\/DQmeDaJNPtdvHpevdTjxKSNoLMpyUPS4EzTm2yjUQyJkBJF\/image.png","https:\/\/images.hive.blog\/DQmXgSmAHU72D61aEjHAz78DnRt7zrasZBuVEzaipdzBkUZ\/image.png","https:\/\/images.hive.blog\/DQmPm72S12f1a1fqh6WyWBP9z4snsvDrDEHqC68tWokxBw1\/image.png","https:\/\/images.hive.blog\/DQmasnjwGY5tYgynQU9x8bAxa8b9qKnWNixJPJbS7SnR7jA\/image.png","https:\/\/images.hive.blog\/DQmUo1toJLnYQWzXF8NMaeuNJjRNS6hCiFGXqNUbstRd8j7\/image.png"],"links":["https:\/\/pixabay.com\/","https:\/\/hive.blog","https:\/\/hive.blog\/@oflyhigh"],"app":"steemit\/0.2","format":"markdown"}
created2020-10-23 12:29:12
last_update2020-10-23 12:29:12
depth0
children1
net_rshares1,267,474,051,564
last_payout2020-10-30 12:29:12
cashout_time1969-12-31 23:59:59
total_payout_value0.140 SBD
curator_payout_value0.130 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length2,072
author_reputation1,148,153,621,496,884
root_title每天进步一点点:从获取账户信息说起
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (49)
@haixiaox ·
好久没来,老兄还在
properties (22)
post_id88,141,684
authorhaixiaox
permlinkqio23d
categorycn
json_metadata{"app":"steemit\/0.2"}
created2020-10-23 18:02:00
last_update2020-10-23 18:02:00
depth1
children0
net_rshares0
last_payout2020-10-30 18:02:00
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length9
author_reputation20,313,173,491
root_title每天进步一点点:从获取账户信息说起
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000