create account

学习使用YOYOW的API (Node API) by oflyhigh

View this thread on: hive.blogpeakd.comecency.com
· @oflyhigh ·
$115.60
学习使用YOYOW的API (Node API)
一个朋友和我说起YOYOW,想让我帮他写个小程序,咦,YOYOW,说起来好像是上个世纪的事情了呢,当年号称要做区块链版的区块链版知乎+简书+今日头条。

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


当年YOYOW也甚是火爆过一阵,有无数个Q群/微信群,我记得还有个网站叫做币问,去上边提问或者回到问题就可以赚到YOYO币,我还在上边赚过几百个币呢。不过币问好像已经关站了,唉,我也不知道我在里边还有有没有积分啥的了,亏啊。

看了一下,YOYOW的官网还在、主网还在、github上也有更新,说明团队在做事,这还是比较难得的。唉,扯远了,本文主要是学API,不谈别的啦。

从YOYOW官网开发者文档中,可以了解到,YOYOW有两大类API:
* 节点API (Node API)
* 钱包API (Wallet API)

我记得以前在bitshares网站上看到过一个API工作的流程图,放在YOYOW上一样适用:
>![image.png](https://images.hive.blog/DQma4gYJxGTQQaV3DTNDCn8AVxeu1QDZv7Y6guWD9S3Cz17/image.png)

那个Withdraw API,我觉得是书写错误,应该是Wallet API,除了能处理查询等操作外,还能处理转账啊、投票之类的需要权限才能完成的操作。

其实钱包API也是通过和Node API (Blockchain API)打交道来完成相关操作的。所以理论上,我们也可以通过Node API 实现转账、投票等诸如此类需要授权的操作,只是这样需要我们自己组成交易数据、序列化、签名、广播,相对而言比较复杂。

今天我们先来学习Node API,从文档中得知,有两种连接方法:
* 使用websocket接口
* 使用HTTP/HTTPS接口(JSON-RPC)

我比较喜欢使用HTTP/HTTPS接口(JSON-RPC),使用websocket接口大家可以自行查看文档。

以最简单的获取`get_accounts_by_uid`为例,官方给的示例如下:
>`curl --data '{"jsonrpc": "2.0", "method": "call", "params": [0, "get_accounts_by_uid", [["250926091"]]], "id": 1}' https://api.testnet.yoyow.org/rpc`

很可惜的是,官方的测试节点貌似不工作了。于是我自己跑了一个节点,开启了RPC服务,然后测试一下:
>`curl --data '{"jsonrpc": "2.0", "method": "call", "params": [0, "get_accounts_by_uid", [["250926091"]]], "id": 1}' http://127.0.0.1:8091/rpc`

得到如下结果:
>`{"id":1,"jsonrpc":"2.0","result":[null]}`

这说明API的调用什么的都没问题,但是这个用户ID(UID)并不存在,也不知道是做文档时特意选了个不存在的id。从最近交易中找了个uid试试。
>`curl --data '{"jsonrpc": "2.0", "method": "call", "params": [0, "get_accounts_by_uid", [["316238807"]]], "id": 1}' http://127.0.0.1:8091/rpc`

返回结果比较乱,整理一下之后是这个样子:
>![image.png](https://images.hive.blog/DQmZszg7pxxBGudSxvgvi5wi7fFWzrxury4p9e4YqZohN1Y/image.png)

这个貌似是个交易所账户哦,我们来看看它里边有多少钱:
>`curl --data '{"jsonrpc": "2.0", "method": "call", "params": [0, "get_account_balances", ["316238807", [0]]], "id": 1}' http://127.0.0.1:8091/rpc`

返回信息如下:
>`{"id":1,"jsonrpc":"2.0","result":[{"amount":"7685480975225","asset_id":0}]}`

其中的零代表核心资产,精度是到小数点后五位,所以就是有`76854809.75225 `这么多代币,哇,一笔巨款哦。

尽管,官方网站的开发者文档以及github上的WIKI文档中已经列出一些API,但是好像并不完整,比如说我常用的`get_block`以及`get_dynamic_global_properties`啥的,文档中都没有介绍。

所以要看完整的API列表还得去看代码,比如查看`database_api.hpp`列出的API,同时也可以查看相应的参数信息等等。这样我们就有大把的API可用了。

比如说,我们可以用`get_block`来查看一下创世块:
>`curl --data '{"jsonrpc": "2.0", "method": "call", "params": [0, "get_block", [1]], "id": 1}' http://127.0.0.1:8091/rpc`

结果如下:
>![image.png](https://images.hive.blog/DQmYMgk1pSrcXUuvggCAE1BEVAVYwL1Jycncj4SfdowitBT/image.png)

所以,其实YOYOW的API与HIVE的并无太大区别,其实它们都是从Bitshares发展出来的,有相同的血缘。这样也好,至少学习起来,难度低了好多呢。


# 相关链接
* https://www.yoyow.org/
* https://www.yoyow.org/developer.html
* https://explorer.yoyow.org/
* https://wiki.yoyow.org/zh/latest/api/node_api.html
* https://github.com/yoyow-org/yoyow-core
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 128 others
properties (23)
authoroflyhigh
permlinkyoyow-api-node-api
categoryhive-105017
json_metadata{"tags":["cn","life","blog","yoyow"],"image":["https://images.hive.blog/DQmUfUDd4SaEh5jnbFuxFYjJcujkFTpvCGtYET6BSLWUp3z/image.png","https://images.hive.blog/DQma4gYJxGTQQaV3DTNDCn8AVxeu1QDZv7Y6guWD9S3Cz17/image.png","https://images.hive.blog/DQmZszg7pxxBGudSxvgvi5wi7fFWzrxury4p9e4YqZohN1Y/image.png","https://images.hive.blog/DQmYMgk1pSrcXUuvggCAE1BEVAVYwL1Jycncj4SfdowitBT/image.png"],"links":["https://pixabay.com/"],"app":"hiveblog/0.1","format":"markdown"}
created2022-03-10 09:01:36
last_update2022-03-10 09:01:36
depth0
children5
last_payout2022-03-17 09:01:36
cashout_time1969-12-31 23:59:59
total_payout_value57.838 HBD
curator_payout_value57.761 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length2,794
author_reputation6,305,264,320,471,838
root_title"学习使用YOYOW的API (Node API)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id111,191,787
net_rshares111,005,155,059,176
author_curate_reward""
vote details (192)
@adyiron ·
O哥学霸👍👍👍
properties (22)
authoradyiron
permlinkre-oflyhigh-2022310t172925285z
categoryhive-105017
json_metadata{"tags":["hive-105017","cn","life","blog","yoyow"],"app":"ecency/3.0.23-mobile","format":"markdown+html"}
created2022-03-10 09:29:27
last_update2022-03-10 09:29:27
depth1
children0
last_payout2022-03-17 09:29:27
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length7
author_reputation105,920,326,736,733
root_title"学习使用YOYOW的API (Node API)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id111,192,181
net_rshares0
@love5200 ·
币问没玩过,币乎有玩过一阵子,现在也不能玩了😂
properties (22)
authorlove5200
permlinkre-oflyhigh-2022310t23496667z
categoryhive-105017
json_metadata{"tags":["hive-105017","cn","life","blog","yoyow"],"app":"ecency/3.0.25-mobile","format":"markdown+html"}
created2022-03-10 15:49:06
last_update2022-03-10 15:49:06
depth1
children0
last_payout2022-03-17 15:49:06
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length23
author_reputation538,315,184,929,192
root_title"学习使用YOYOW的API (Node API)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id111,200,665
net_rshares0
@lovelingling ·
O哥厉害,能感觉一篇技术类的文章,真正写起来可是相当不易啊。
properties (22)
authorlovelingling
permlinkre-oflyhigh-2022310t181737568z
categoryhive-105017
json_metadata{"tags":["hive-105017","cn","life","blog","yoyow"],"app":"ecency/3.0.19-mobile","format":"markdown+html"}
created2022-03-10 10:17:39
last_update2022-03-10 10:17:39
depth1
children0
last_payout2022-03-17 10:17:39
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length30
author_reputation721,475,579,394,525
root_title"学习使用YOYOW的API (Node API)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id111,192,987
net_rshares0
@tina1219 ·
😋是不是叫优优平台,我好像弄过,最高峰价格也达到了4块,但是后来觉得社区力的内容太专业化了,我写不来
properties (22)
authortina1219
permlinkre-oflyhigh-2022310t212920671z
categoryhive-105017
json_metadata{"tags":["cn","life","blog","yoyow"],"app":"ecency/3.0.22-vision","format":"markdown+html"}
created2022-03-10 13:29:21
last_update2022-03-10 13:29:21
depth1
children0
last_payout2022-03-17 13:29:21
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length50
author_reputation145,035,944,940,969
root_title"学习使用YOYOW的API (Node API)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id111,196,918
net_rshares0
@zhangyan-123 ·
看的蒙圈😂
properties (22)
authorzhangyan-123
permlinkre-oflyhigh-2022310t212939847z
categoryhive-105017
json_metadata{"tags":["hive-105017","cn","life","blog","yoyow"],"app":"ecency/3.0.19-mobile","format":"markdown+html"}
created2022-03-10 13:29:39
last_update2022-03-10 13:29:39
depth1
children0
last_payout2022-03-17 13:29:39
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length5
author_reputation891,406,605,564,608
root_title"学习使用YOYOW的API (Node API)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id111,196,930
net_rshares0