USDT是基于BTC发的稳定币,它是比特币的一条侧链,说简单点,就是在比特币区块数据的不可篡改性与区块唯一性的基础上,再封装了一层。具体原理可网上查资料。总之理解一点:USDT的钱包节点就是BTC的钱包节点,BTC的区块高度是多少,USDT的区块高度也是多少。从节点区块数据上来说,BTC与USDT没有区别。

1、什么是Omni Layer 

Omni Layer是一种通信协议,它使用比特币区块链实现“智能合约”,用户货币和分散式点对点交换等功能。 Omni Core是基于比特币核心代码库的快速,便携式Omni层实现。 这种实现不需要与Bitcoin Core无关的外部依赖关系,并且与其他比特币节点一样,它本身就是比特币网络。 它目前支持钱包模式,并可在三种平台上无缝使用:Windows,Linux和Mac OS。 Omni Layer扩展通过JSON-RPC接口公开。

1.1 Omni Layer节点的安装

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

2.1 依赖环境

预备事项

    • 安装过程中,所有的路径使用绝对路径。
    • 本次安装使用环境,Ubuntu 16.04 LTS。

环境依赖
必须依赖库

可选依赖

内存要求

C++编译器比较消耗内存,官方建议编译Bitcoin Core时至少有1.5GB内存。对不能达到的系统,gcc 可以用附加的CXXFLAGS设置为节省内存:

./configure CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768"

编译基础环境安装
由于要用到apt安装,先确保自己的apt源可用,速度正常,运行

apt-get update

编译环境

sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils

亲测结果:在阿里云的apt源下,应该很快安装完毕。

Boost库

在Ubuntu 14+和 Debian 7+系统中,有单个开发包的通用名字,所以可以只安装所需的安装包

sudo apt-get install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev

如果不成功,则可以安装所有boost 开发包。

sudo apt-get install libboost-all-dev

在阿里云的apt源下面应该可以用第一种方法安装指定的开发包。

BerkeleyDB的安装

BitCoin钱包需要BerkeleyDB的支持,关于BerkeleyDB可以参考官网、 百科

[注意],BitCoin需要Berkeley DB 4.8版本来保持钱包的兼容性,官方Ubuntu和Debian提供的Berkeley DB是5.1+版本的,这个高版本会确定打破其兼容性;此处有两种选择,一是不需要保持兼容性,在编译时增加配置--with-incompatible-bdb即可,二是保持兼容性,安装Berkeley DB 4.8,需要添加PPA,关于PPA是Ubuntu中非官方的不稳定包的更新,使用的话需要小心,其减少可以参考此处,这个地方要用到的是这个地方的PPA来安装所需要的Berkeley DB 4.8 here 。 
访问页面,按照其说明逐步添加,然后安装

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install libdb4.-dev libdb4.++-dev

安装包下载速度会比阿里云的慢一点,耐心等待。

可选项

    • libminiupnpc 
      sudo apt-get install libminiupnpc-dev
    • ZMQ denpendencies 
      sudo apt-get install libzmq3-dev

GUI依赖项 

如果需要编译bitcoin-qt,则需要安装qt开发环境,qt4和qt5都是可以的,如果两者都安装了,则默认使用qt5,也可以在配置时,使用--with-gui=qt4来进行选择使用qt4版本,或者使用--without-gui来选择不编译gui。

qt5的安装方法

sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler

qt4的安装方法

sudo apt-get install libqt4-dev libprotobuf-dev protobuf-compiler

libqrencode 
libqrendoce 是qr码(二维码)的支持模块,可选安装

sudo apt-get install libqrencode-dev

如果这些环境包被安装,则会被configure检测到,bitcoin-qt会默认编译生成。

编译生成

好像目前为止就可以编译撸起来了。。。。试一下, optional表示可选项,后面再集中解释吧。

./autogen.sh
./configure
make
make install # optional
    • /configure 
      check 了一堆东西,主要是检测你的基础环境是否安装到位了,不报错就OK。

    • make && make install

2.2 源码编译

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

2.3 运行与区块同步

编译完成之后,在omnicore/src/会有omnicoredomnicore-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包进行开发。例如,使用php-bitcoinrpc

启动的参数

Omni Core可以通过提供一个或多个可选的命令行参数进行配置:

$ omnicored -setting = value -setting = value

所有设置也可以通过bitcoin.conf。

根据操作系统的不同,配置文件的默认位置为:

Unix系统: $HOME/.bitcoin/bitcoin.conf
Mac OS X: $HOME/Library/Application Support/Bitcoin/bitcoin.conf
微软Windows: %APPDATA%/Bitcoin/bitcoin.conf
典型的bitcoin.conf可能包括:

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

可选设置

要运行和使用Omni Core,不需要显式配置。

有关一般配置和Bitcoin Core特定选项的更多信息,请参阅比特币wiki

常规选项:

日志选项:

交易选项:

注意:选项-datacarrierdatacarriersize影响OP_RETURN脚本事务的全局中继策略。

RPC服务器选项:

用户界面选项:

警报和激活选项:

注意:警报和激活相关选项会影响到共识,只能用于测试或特殊情况!

转载自:https://blog.csdn.net/ffzhihua/article/details/80706661

本文对原文进行了部分内容的修改与增加以及排版以增加易读性!

BIZZAN(币严) 数字货币交易所官方网址:

www.bizzan.com

[币严区块链]USDT钱包节点搭建的更多相关文章

  1. [币严区块链]交易所钱包系统如何实现USDT自动归集操作

    本文代码应用场景: 每个用户在交易所充值时,每个人都分配了独立的USDT地址,而交易所需要将所有独立的地址中USDT汇集到一个钱包地址(一般是冷钱包),从而实现资产归集与安全保障. 注意: 理解以下代 ...

  2. [币严区块链]BitcoinCash - BCH钱包地址生成与扫块充值监控(JAVA版)

    本文的方案无需自建节点,因为BCH当前区块数据大小已经达到200G以上,BTC区块数据也已超过300G,若每个币都自建节点,对云服务器的消耗会非常大. 认识BitcoinCash(BCH) Bitco ...

  3. [币严区块链]ETH搭建节点区块数据同步的三种模式:full、fast、light

    ETH  全节点Archive(归档)模式数据量增长图 上述图表可通过链接查看:https://etherscan.io/chartsync/chainarchive 通过上表,可以看到截止2019年 ...

  4. [币严区块链]数字货币交易所之比特币(BTC)钱包对接 | 自建节点JSON-RPC访问

    BTC钱包对接流程 一.   部署BTC钱包节点 二.   分析BTC钱包的API 三.   通过JSON-RPC访问BTC钱包API 四.   部署测试 一.部署钱包节点 交易平台对接BTC之前,要 ...

  5. [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(四) 使用web3j对接以太坊钱包

    本文给大家介绍了 Web3j Java 版本的框架的基本使用,大家可根据本文的内容进行扩展性的练习,对其他 API 的使用进行尝试. 使用web3j对接以太坊钱包 一.开发准备事项 启动 Geth 此 ...

  6. [币严区块链]数字货币交易所之瑞波(XRP)钱包对接

    对接Ripple(XRP),不需要本地部署钱包,直接访问Ripple API,本文包括访问Ripple API及如何免费获取测试的XRP. 对接流程 安装Ripple API Ripple API 接 ...

  7. [币严区块链]以太坊(ETH)Dapp开发入门教程之宠物商店领养游戏

    阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么 除此之外,你最好还了解一些HTML及JavaScript知识. 本文通过实例教大家来开发去中心化应用,应用效果如图 ...

  8. [币严区块链]简单易懂的以太坊(ETH)智能合约开发入门教程

    以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开发应用 ...

  9. 许式伟看 Facebook 发币(上): 区块链, 比特币与 Libra 币

    你好,我是七牛云许式伟. Facebook(脸书)于6月18日发布了其加密数字货币项目白皮书.该数字货币被命名为 Libra(天秤座),象征着平衡与公正.此前,BBC 报道说这个数字货币叫 Globa ...

随机推荐

  1. HTML/CSS:div水平与元素垂直居中(2)

    单个div水平居中:设置margin的左右边距为自动 div水平和垂直居中,text-align和vertical-align不起作用,因为标签div没有这两个属性,所以再css中设置这两个值不能居中 ...

  2. 基于python语言使用余弦相似性算法进行文本相似度分析

    编写此脚本的目的: 本人从事软件测试工作,近两年发现项目成员总会提出一些内容相似的问题,导致开发抱怨.一开始想搜索一下是否有此类工具能支持查重的工作,但并没找到,因此写了这个工具.通过从纸上谈兵到着手 ...

  3. ES 26 - 通过partial update局部更新索引文档 (partial update增量修改原理)

    目录 1 什么是partial update 1.1 全量修改文档的原理 1.2 修改指定field的思路 1.3 partial update的优势 1.4 partial update的使用 2 ...

  4. vue过滤器微信小程序过滤器和百度智能小程序过滤器

    因为最近写了微信小程序和百度小程序,用到了过滤器,感觉还挺好用的,所以就来总结一下,希望能帮到你们. 1. 微信小程序过滤器: 1.1:首先建一个单独的wxs后缀的文件,一般放在utils文件夹里面. ...

  5. Z算法

    Z算法 Z算法是一种用于字符串匹配的算法.此算法的核心在于\(z\)数组以及它的求法. (以下约定字符串下标从\(1\)开始) \(\bm z\)数组和Z-box 定义\(z\)数组:\(z_{a,i ...

  6. Eureka 缓存结构以及服务感知优化

    目录 Eureka-Client获取注册信息 Eureka-Server管理注册信息 服务感知优化 果然好记性不如烂笔头,再简单的东西不记录下来总是会忘的! 本文首先会分析eureka中的缓存架构.并 ...

  7. c# 20160721

    ctrl y =>反撤销 ctrl m m 隐藏当前代码段 重载运算符语法 把事件处理程序注册为 click事件的监听程序 [newButton.click+=newButton_click] ...

  8. 为什么不建议在hbase中使用过多的列簇

    我们知道,hbase表可以设置一个至多个列簇(column families),但是为什么说越少的列簇越好呢? 官网原文: HBase currently does not do well with ...

  9. [luogu4886] 快递员(点分治,树链剖分,lca)

    dwq推的火题啊. 这题应该不算是点分治,但是用的点分治的思想. 每次找重心,算出每一对询问的答案找到答案最大值,考虑移动答案点,使得最大值减小. 由于这些点一定不能在u的两颗不同的子树里,否则你怎么 ...

  10. 如何让springboot打包的项目部署在阿里云上使用https和http方式访问

    前言 问题描述:怎么让springboot部署在服务器上使用https协议方式访问我们的接口或者域名,目的是某些平台请求的是https协议,而不是https 部署环境:阿里云 centos7服务器,s ...