学习使用YOYOW的API (Node API)

一个朋友和我说起YOYOW,想让我帮他写个小程序,咦,YOYOW,说起来好像是上个世纪的事情了呢,当年号称要做区块链版的区块链版知乎+简书+今日头条。

image.png
(图源 :pixabay)

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

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

从YOYOW官网开发者文档中,可以了解到,YOYOW有两大类API:

  • 节点API (Node API)
  • 钱包API (Wallet API)

我记得以前在bitshares网站上看到过一个API工作的流程图,放在YOYOW上一样适用:

Reveal spoiler

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

返回结果比较乱,整理一下之后是这个样子:

Reveal spoiler

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

结果如下:

Reveal spoiler

image.png

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

相关链接

Sort:  

O哥学霸👍👍👍

O哥厉害,能感觉一篇技术类的文章,真正写起来可是相当不易啊。

😋是不是叫优优平台,我好像弄过,最高峰价格也达到了4块,但是后来觉得社区力的内容太专业化了,我写不来

看的蒙圈😂

币问没玩过,币乎有玩过一阵子,现在也不能玩了😂