作者:AngryFox 分类: Uncategorized July 10th, 2018 暂无评论

什么是USDT
本文中,我们介绍Tether公司利用bitcoin区块网络构造的omni layer,在这个overlay network上各方可以发行token,tether公司在omni layer上发行了代号为USDT的token, 1:1锚定美元。
tether的思想很简单,大家把美元给我,给我1美元,我发行1USDT,美元存放到指定的资产账户,大家都可以查询,发行的USDT总量也可以在区块上进行查询。当兑换的时候,给我1USDT,我返还1美元。

当然,其中的经济学方面的事情就先不讲了,可以说,tether提供了一条数字资产与法币相连接的通道,至于USDT是否靠谱,是否是骗局,这个仁者见仁智者见智,我们只对其技术进行讲解。

Omni Layer节点的安装
Tether的钱包是以bitcoin区块网络为基础的,在这个网络上面搭建了名为Omni Layer的共识网络,其主要的思想是对bitcoin的区块进行染色,写入需要存储的数据。

2.1 依赖环境。

同bitcoin。可以参见区块链学习笔记(零)

2.2 源码编译

git clone https://github.com/OmniLayer/omnicore.git
cd omnicore/
./autogen.sh
./configure
make

2.3 运行与区块同步

编译完成之后,在omnicore/src/会有omnicored, omnicore-cli等可执行文件。其来执行方式与bitcoin一样,需要一个名为bitcoin.conf的配置文件。启动命令如下所示:

./omnicored -conf=%PATH TO bitcon.conf% -datadir=%PATH TO DATA DIR% &
启动之后,可以在%datadir%/omnicore.log下面查看日志。

omni同步区块,并不需要把bitcoin区块全部下载,大致一天之内就能够同步完毕。之后,我们就可以使用omnicore-cli命令,或者通过RPC API对节点和钱包进行操作。

2.4 JSON-RPC API

omni的JSON-RPC API与bitcoin的完全相同,使用的时候只是相当于将bitcoin的命令集进行了扩展。
具体的JOSN-RPC API可以查询这里。

二次开发过程中,可以使用原有的bitcoin的JSON-RPC API包进行开发。例如,使用EasyBitcoin-PHP.

//使用EasyBitcoin 对omnicore 进行JSON-RCP api操作
include_once "easybitcoin.php";
$bitcoin = new Bitcoin("rpc-user","rpc-pass");
var_dump($bitcoin->getinfo());
//查询$address上USDT(property id = 31)余额
var_dump($bitcoin->omni_getbalance($address,31));

OmniCore启动可以配置一个或多个可选命令参数,如下:
$omnicored -setting=value -setting=value
所有的设置可以通过bitcoin.conf进行配置。
一个常规的bitcoin.conf如下:

server=1
rpcuser=omnicorerpc
rpcpassword=5hMTZI9iBGFqKxsWfOUF
rpcallowip=127.0.0.1
rpcport=8332
txindex=1
datacarriersize=80
logtimestamps=1
omnidebug=tally
omnidebug=packets
omnidebug=pending

./omnicored -conf=/home/omnicore/bitcoin.conf -datadir=/home/omnicore/ -txindex    

tail -f /home/omnicore/debug.log 可以查看当前同步到的区块。