学习使用YOYOW的API (Node API)
一个朋友和我说起YOYOW,想让我帮他写个小程序,咦,YOYOW,说起来好像是上个世纪的事情了呢,当年号称要做区块链版的区块链版知乎+简书+今日头条。
(图源 :pixabay)
当年YOYOW也甚是火爆过一阵,有无数个Q群/微信群,我记得还有个网站叫做币问,去上边提问或者回到问题就可以赚到YOYO币,我还在上边赚过几百个币呢。不过币问好像已经关站了,唉,我也不知道我在里边还有有没有积分啥的了,亏啊。
看了一下,YOYOW的官网还在、主网还在、github上也有更新,说明团队在做事,这还是比较难得的。唉,扯远了,本文主要是学API,不谈别的啦。
从YOYOW官网开发者文档中,可以了解到,YOYOW有两大类API:
- 节点API (Node API)
- 钱包API (Wallet API)
我记得以前在bitshares网站上看到过一个API工作的流程图,放在YOYOW上一样适用:
那个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
返回结果比较乱,整理一下之后是这个样子:
这个貌似是个交易所账户哦,我们来看看它里边有多少钱:
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
结果如下:
所以,其实YOYOW的API与HIVE的并无太大区别,其实它们都是从Bitshares发展出来的,有相同的血缘。这样也好,至少学习起来,难度低了好多呢。
相关链接
Leave 学习使用YOYOW的API (Node API) to:
Read more #cn posts
Best Posts From oflyhigh
We have not curated any of oflyhigh's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.