usdt钱包开发
比特币协议 -> Omni 层协议 -> USDT
USDT是基于比特币omni协议的一种代币: https://omniexplorer.info/asset/31 ID是31
Tether(USDT 的发行方)的官方钱包已关闭注册,无法注册钱包就无法获得 API Key,也就意味着无法实现类似基于钱包接口的开发方案,但我们可以基于 USDT 的底层协议(叫做 Omni 层协议)进行开发
1. Tether(USDT 的发行方)的官方钱包已关闭注册,无法注册钱包就无法获得 API Key,也就意味着无法实现比特币入金那样基于钱包接口的开发方案
2. 但是,大量的数字货币交易所都支持 USDT,所以显然是有其他办法可以开发的,于是,我写了邮件过去问 Tether 官方,得到了如下回复,大意就是,虽然他们的钱包及 API 不能用了,但我们可以基于 USDT 的底层协议(叫做 Omni 层协议)进行开发,这也与我币圈的朋友给我的答复是吻合的
3. USDT 的协议结构从底层到顶层大致是:「比特币协议 -> Omni 层协议 -> USDT」,也就是说,USDT 是基于比特币的一种代币(token),就像大大小小的山寨币大多是基于以太坊(ETH)的一种代币一样;另外 USDT 也出了最新的以太坊(ERC20 标准)版本,但我看了下发行量和流通量都太小,所以我们这里还是只讨论前面说的基于比特币 Omni 层协议的经典 USDT
我顺着 Tether 官方给我回复的邮件,去这几个地方进行了研究:
- Omni Core 项目主页:https://github.com/OmniLayer/omnicore
- Omni Core RPC 接口文档:https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md
- Omni Core 客户端下载页:https://bintray.com/omni/OmniBinaries/OmniCore/view
调研结论大致是这样:我们可以安装并运行一个 Omni Core 节点客户端,然后利用其提供的 RPC 接口,实现我们 USDT 出入金所需的代币发送、接收等功能;我看了下,接口都是挺全的;其中,对于 USDT 来说,接口所需要的代币 ID 参数「propertyid」值应该是「31」
https://omniexplorer.info/tx/480670ddd44541bea1ad77d8a42ada3303539fb8fcf90e9b439a171c8645783c
{ "amount": "12215.00000000", "blocktime": 1533545081, "confirmations": 0, "divisible": true, "fee": "0.00002565", "ismine": false, "propertyid": 31, "propertyname": "TetherUS", "referenceaddress": "1DUb2YYbQA1jjaNYzVXLZ7ZioEhLXtbUru", "sendingaddress": "12SbF4mj7v2RaDfK2aY7z1BfVGT4MKaNbV", "txid": "480670ddd44541bea1ad77d8a42ada3303539fb8fcf90e9b439a171c8645783c", "type": "Simple Send", "type_int": 0, "version": 0 }
USDT是基于比特币omni协议的一种代币: https://omniexplorer.info/asset/31 ID是31
4. 接下来需要研发团队做的:
i) 详细研究这个方案
ii) 详细调研这套 API 并进行测试
iii) 弄清楚它是否能实现我们的需求,比如我暂时还没看到可以生成收款地址的 API,实际上比特币的地址就可以用来接收 USDT,所以可以考虑:还是用原来 block.io 钱包来生成地址,然后再通过 Omni Core 来收发 USDT
------------------------
ominlayer 应该不能和bip44 的coin type 兼容,可以生成地址的策略要独立开,需要单独维护
https://github.com/OmniLayer/omnicore
usdt如果没有第三方的api,那需要我们自己跑node
自己跑node 会有各种坑,要测试稳定和安全性,灰度上线beta