本篇将说明在 Linux 下搭建USDT测试节点. 为了更好的阅读体验 , 请点击阅读原文

Tether Limited 公司基于 Omni Layer 这层协议(Omni Layer protocol)发行tetherUSD . Omni Layer 是基于比特币区块链的通信协议 , 它实现了智能合约的特性 , 也就是说 tetherUSD是 Omni Layer的一个智能合约 . 而实现 Omni Layer protocol 的开源软件项目是 Omni Core .

搭建环境

服务器配置

  • 硬盘: 500G
  • 内存: 16G
  • CPU: 4核
  • 带宽: 一般
  • 系统: CenterOS 7

节点搭建

1. 进入 Omni Layer Download 下载对应包

2. 上传服务器并解压

这里笔者使用的路径统一为 /opt/usdt/...

1
2
cd /opt/usdt
tar -xzvf omnicore-0.3.1-x86_64-linux-gnu.tar

4. bitcoin 配置

bitcoin的默认配置文件目录为 ~/.bitcoin/bitcoin.conf , 若没有指定, 默认则会在该目录下创建个新的.

同步数据比较占硬盘空间,建议自定义存储路径,避免后期空间不足的尴尬.

此处笔者在 /opt/usdt/data/ 下新建了 bitcoin.conf 文件

bitcoin.conf :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 数据存储目录
datadir=/opt/usdt/data
# 使用测试网络
testnet=1
# 告知 Bitcoin-Qt 和 bitcoind 接受JSON-RPC命令
server=1
# 后台执行
daemon=1
# 设置 gen=1 以尝试比特币挖矿
gen=1
# 启用交易索引
txindex=1

# 监听 RPC,正式默认端口8333 测试默认18333
#rpcport=18333
#rpcuser=123456
#rpcpassword=abcdef
#rpcallowip=0.0.0.0/0
#rpcconnect=127.0.0.1

这里和比特币节点的配置文件类似 , 更多的配置请参考 Bitcoin Core配置文件解读

如若机器已经启用了比特币节点 , 此处需要修改端口等配置

配置设置好 , 开始同步

1
2
cd /opt/usdt/omnicored-0.3.1
nohup ./omnicored --datadir=/opt/usdt/data/ &
1
2
3
4
5
6
7
8
9
10
11
Initializing Omni Core v0.3.1 [regtest]
2018-07-20 05:34:34 Loading trades database: OK
2018-07-20 05:34:34 Loading send-to-owners database: OK
2018-07-20 05:34:34 Loading tx meta-info database: OK
2018-07-20 05:34:34 Loading smart property database: OK
2018-07-20 05:34:34 Loading master transactions database: OK
2018-07-20 05:34:34 Loading fee cache database: OK
2018-07-20 05:34:34 Loading fee history database: OK
2018-07-20 05:34:34 Loading persistent state: NONE (no usable previous state found)
2018-07-20 05:34:34 Exodus balance: 0.00000000 OMNI
2018-07-20 05:34:34 Omni Core initialization completed

如无意外 , 同步则开始 . 同步的进度可以在 testnet3 目录下的 debug.log 中看同步进度.

USDT 节点的数据同步相对 Bitcoin 的会慢很多,笔者的服务器花了两天半左右的时间 .

一定要等数据同步完成之后再进行后续操作 , 否则不能成功 .

相关命令

ominicored

启动 ominicore (自己视实际情况修改)

1
2
cd /opt/usdt/omnicored-0.3.1/bin
nohup ./omnicored --datadir=/opt/usdt/data/ &

命令中用 bitcoin.conf 文件包裹了一系列配置,如果不用此文件则需要指明各个参数.比如 ./omnicored -datadir=xxx -rpcuser=xxx .....

如若不确定 omnicore 是否已经启用过 , 可先用命令查询 netstat --ip -lpan | grep omnicore

1
2
# 帮助
./omnicored -h

更多 bitcoind 命令

omnicore-cli

关闭 omnicore

1
./omnicore-cli -conf=/opt/usdt/data/bitcoin.conf stop

更多 bitcoin-cli 命令

bitcoin-cli RPC 命令总结

bitcoin-api

更多 omnicore-cli 命令

API 官方文档

比较好用的中文API文档

交易测试

创建账户及地址

1
./omnicore-cli -conf=/opt/usdt/data/bitcoin.conf "getnewaddress" pluto

pluto 是账户名 , 需要唯一.

返回的 n1FuLiRf7fHDVL2wKy9ibVan2iQK3s2UZV 是地址

getnewaddress 是比特币的命令 , 可以了解更多 比特币命令

获取测试币

为了在 testnet 上收到 OMNI 和 TOMNI , 需要给 moneyqMan7uh8FqdCA2BV5yZ8qVrc9ikLP 发送 TBTC(测试网络比特币), 一个 TBTC 可以收到 100 个 OMNI 和 100 个 TOMNI .

首先去申请一些测试比特币

在以下测试币水龙头网页中申请测试比特币 , 注意科学上网 .

等待确认 , 然后查询余额 .

1
./omnicore-cli -conf=/opt/usdt/data/bitcoin.conf listaddressgroupings

2. 然后是获取 Omni 币

转测试比特币给 moneyqMan7uh8FqdCA2BV5yZ8qVrc9ikLP

多账户的情况下建议不要用 sendtoaddress 命令 , 用 sendfrom 指定账户转账比较好

sendfrom命令说明

1
./omnicore-cli -conf=/opt/usdt/data/bitcoin.conf sendfrom "pluto" "moneyqMan7uh8FqdCA2BV5yZ8qVrc9ikLP" 0.0015

返回的是一串字符串 txhash , 可以去比特币浏览器 上查找

等待交易确认后 , 可以通过命令查询 Omni 币余额

这里有个问题 , 得到的 Omni 全打到钱包下另一个地址myVftRaBb8Vy3upWaL8TueAhDE2QAsQy1h了.

1
./omnicore-cli -conf=/opt/usdt/data/bitcoin.conf "omni_getbalance" "myVftRaBb8Vy3upWaL8TueAhDE2QAsQy1h" 1

这里的 1propertyid资产标识ID , 在 OMNI 钱包中 , 不同资产都有一个唯一的 ID 来标识 . 常见的 1 代表 OMNI , 2 代表 TOMNI , 31 代表 USDT .

其他资产ID查询

测试网络中 , 通常直接用 OMNI 作为 USDT 进行研发 . 切换到生产网络时注意变更ID

交易

再转账.

myVftRaBb8Vy3upWaL8TueAhDE2QAsQy1h 转 1 个 OMNI 到 n1FuLiRf7fHDVL2wKy9ibVan2iQK3s2UZV

1
./omnicore-cli -conf=/opt/usdt/data/bitcoin.conf "omni_send" "myVftRaBb8Vy3upWaL8TueAhDE2QAsQy1h" "n1FuLiRf7fHDVL2wKy9ibVan2iQK3s2UZV" 1 "1.0"

查询 n1FuLiRf7fHDVL2wKy9ibVan2iQK3s2UZV 余额

Linux 常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看磁盘空间
df -hl
# 递归删除
rm -rf [目录]
# 查看所有网络端口
netstat -an
# 查看端口具体被哪个进程占用
lsof -i :[端口号]
# 查看进程详细信息
ps -aux | grep [进程号]
# 杀掉进程
kill -9 [进程号]
# 查看关键字进程
netstat --ip -lpan | grep [关键字]

参考资料:

  1. https://www.cnblogs.com/yanglang/p/9618075.html
  2. https://www.jianshu.com/p/417c280b8f9f
  3. https://www.jianshu.com/p/4a8054146ef1