USDT(omni)钱包对接[转]

转自:https://zhuanlan.zhihu.com/p/41494541

Tether(USDT)是使用omni layer 协议发行的货币,omni layer 协议是建立在比特币区块链网络上的一个协议,就相当于给比特币交易加了些属性来扩种币种类别,我们可以利用omni layer协议发行基于比特币区块链网络的代币,以为USDT是基于比特币区块网络所以对接钱包的基本流程和比特币大致相同。

Omni钱包总体对接流程如下:

①下载安装omni cores钱包

②配置钱包开发环境

③在测试网络获取BTC

④在测试网络获取omni币

1、下载安装omni core钱包

本次演示的是windows版本,liunx版本的除安装有不同,其他对接流程一致:

omni cores钱包下载地址:http://www.omnilayer.org/download.html

1-2安装

(1)下载下来后点击exe文件进行安装,安装选项都选默认即可(注意保证硬盘容量在200G以上);

(2)安装完后点击运行钱包(打开钱包后钱包开始同步区块)

2、配置Omni钱包开发环境

刚安装的钱包是链接的正式的比特币网络,我们联调开发需要配置成测试网络,并开发RPC调试功能;

2-1、修改Omni钱包配置文件

(1)找到 bitcoin.conf 配置文件,在安装目录data 的文件夹下面

在配置文件添加如下参数:

regtest=1(单机网络) 或者testnet=1 (连接测试网络)
server=1
rpcuser=duanpan
rpcpassword=duanpan916
rpcallowip=

43.249.137.***
rpcport=8332
txindex=1
datacarriersize=80
logtimestamps=1
omnidebug=tally
omnidebug=packets
omnidebug=pending

参数说明(同比特币钱包参数一致):

testnet=1 连接测比特币测试网络和regtest参数不能同时开启只能开启一其中一个。

regtest:开启单机测试环境1为开启0为关闭

Listen:开启监听模式,默认开启

Server:1表示接受RPC指令0不接收

Rpcuser:用来访问钱包的RPC用户名

Rpcpassword:用来访问钱包的RPC密码

Rpcallowip:指定哪些IP可以通过RPC访问钱包

Rpcport:RPC访问端口

2-2、保存配置文件并重启钱包

因为在单机网络下无法获取OMNI币进行测试,所以只能连接比特币testnet 网络,通过获取测试比特币、再通过比特币获取OMNI币。

配置(自行指定用户名,密码,IP):

testnet=1

regtest=0

server=1

rpcuser=*********

rpcpassword=*********

rpcallowip=*********

rpcport=8332

txindex=1

datacarriersize=80

logtimestamps=1

omnidebug=tally

omnidebug=packets

omnidebug=pending

2-3、用命令窗口测试常用指令

(1)、打开命令窗口:在钱包界面点击“帮助=>调试窗口=>控制台”

常用指令API:

https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md

3、获取测试网络的比特币

可以获取测试网络比特币的网址:

http://bitcoinfaucet.uo1.net/send.php
查询测试网络比特币交易及块生成的网址:

https://testnet.blockexplorer.com
其他一些比特币相关知识的网站:

https://bitcoin.org/en/bitcoin-for-developers

https://en.bitcoin.it/wiki/Main_Page

4、获得测试网络的omni币

流程如下:

1. 生成比特币地址 getnewaddress

2. 从测试网络获取比特币到第一步生成的地址

3. 通过sendFrom发送比特币到moneyqMan7uh8FqdCA2BV5yZ8qVrc9ikLP地址,每发送1 BTC将获得100 OMNI和100 TOMNI。

4. 然后等待区块确认,生成的地址通过omni_getbalance获取接收到TestOmni 金额。

对接中遇到的坑

1、无法查询到propertyid 为31的USDT代币

解决方案:正式同步一定时间的区块数据即可 ,测试网络只能通过omni币来联调api接口

2、regtest网络无法获取omni币

解决方案:只能通过测试网络(testnet)获取,测试网络如何获取omni币见文章第三和第四栏。

3、发送交易的时候发送地址的BTC余额不足无法支付手续费

错误信息:Error with selected inputs for the send transaction, code=-206)

解决方案,把BTC转到发送omni 币的地址上去。

4、omni_listtransation 无法查询到历史交易

是默认结束区块号惹的祸,默认值为999999,但实际的区块早已经超过了这个数,所以总查询不到交易信息。

解决方案:带参数 查询如:

omni_listtransactions muPuXyRqLBRf8Xyj28d2As8ya4iaw8XWGe 10 0 0 99999999

5、测试网络同步超级慢

非常恶心的问题,完全同步估计要个把月,这个问题我是请求别人把他已经同步好的区块打包上传到百度云,我再下载下来的,靠测试网络节点同步不知道同步到何年何月,这里要再次感谢那位帮忙的大哥。

下面测试网络的数据(截止到2018-8-09)百度云地址提供给大家:

链接:https://pan.baidu.com/s/1-bBZZzx71NKtkp74y3XtqA 密码:96fv

参考资料

Omni API:

https://github.com/OmniLayer/omnicore/blob/master/src/omnicore/doc/rpc-api.md

Omni 常见问题:

https://github.com/OmniLayer/omnicore/issues

Omni git地址:

https://github.com/OmniLayer/omnicore/blob/master/README.md

Omni 与java对接:

https://blog.csdn.net/liu1765686161/article/details/79655332

猜你喜欢

转载自blog.csdn.net/hyb1234hi/article/details/85092764