参考:https://www.jianshu.com/p/bd573e2df746
usdt 节点
钱包配置设置
bitcoin.conf
server=1 #代表开启RPC访问
txindex=1 #代表事务初始索引
rpcuser=你的rpc用户名
rpcpassword=你的rpc密码
rpcallowip=127.0.0.1 #允许访问的IP
rpcport=8332 #允许访问的端口
paytxfee=0.00001 #控制bitcoin交易的手续费
minrelaytxfee=0.00001 #控制bitcoin交易的手续费
datacarriersize=80 #含数据的交易大小默认值
logtimestamps=1
omnidebug=tally
omnidebug=packets
omnidebug=pending
预估手续费网址
https://bitcoinfees.earn.com/
https://www.buybitcoinworldwide.com/
开启服务
omnicored -testnet #连接test3测试网络,会同步test3网络的区块数据(约20G)
omnicored -regtest #单机运行,不需要连接其他网络,区块数据在本地运行。
omnicored #连接比特币主网网络,会同步真实区块数据(约180G)。
停止服务
omnicore-cli stop
查看信息
omnicore-cli -getinfo
omnicore-cli omni_getinfo
区块同步数据参考网站
json-rpc协议
请求对象:
{
"jsonrpc": "2.0",//rpc版本号
"method": "your_method",//方法名
"params": [//参数数组
"var1",
"var2"
],
"id": 9527//请求
}
返回对象:
{"jsonrpc": "2.0", "result": "this is result", "id": 9527}
错误对象返回:
{
"result": null,
"error": {
"code": -32601,//错误码
"message": "Method not found"//错误原因
},
"id": 9527
}
生成地址
omnicore-cli getnewaddress
omnicore-cli getnewaddress feeaccount
omnicore-cli getaddressesbyaccount feeaccount
测试网络获取BTC
https://testnet.coinfaucet.eu/en/
https://testnet.manu.backend.hamburg/faucet
测试网络是没有测试usdt的,所有只能用test omni代替usdt进行测试
发送TBTCmoneyqMan7uh8FqdCA2BV5yZ8qVrc9ikLP即可获得少量TOMNI,汇率为100 TOMNI/1 TBTC,令牌id分别为1和2。
比特币UTXO
未花费输出, 找零地址
返回:UTXO列表
min_confrim (int,可选) 最小确认
max_comfrim(int ,可选)最大确认
address (string[],可选)地址列表
omnicore-cli listunspent 0 999999 \'["mjH1iB7wt5TC4f8qjvZqtmBXd1aCPSPinC"]\'
USDT转账
omni_funded_send
omni_funded_sendall
fromaddress (string,必选) 令牌发送者
toaddress (string,必选) 令牌接收者
propertyid (number,必选) 令牌id
amount (string,必选) 发送金额
feeaddress (string,可选)用于支付手续费的地址,如果设置此地址,那么此地址上必须拥有比特币
omnicore-cli omni_funded_send mjH1iB7wt5TC4f8qjvZqtmBXd1aCPSPinC mqrA5Ai8XdKe1ob1L2HwyYr3TXUf9nUeBf 1 5 mpaumxor659PhoJhXp1VCVHVwbFCZSRmuf
a25260a79243a48df21ca2d9fba2209818ea1339026d91b6476d531929c52dad
错误返回:
{
error code: -212
error message:Error choosing inputs for the send transaction
}
记得发送前检查是否余额充足
查询交易事务
omni_gettransaction
omnicore-cli omni_gettransaction a25260a79243a48df21ca2d9fba2209818ea1339026d91b6476d531929c52dad
查询地址 USDT余额额
omni_getbalance
address 地址
id 令牌id
omnicore-cli omni_getbalance mjH1iB7wt5TC4f8qjvZqtmBXd1aCPSPinC 1
查询钱包内的所有地址的USDT余额列表
omnicore-cli omni_getwalletaddressbalances
查询钱包内的USDT总额
omnicore-cli omni_getwalletbalances
中心化钱包
中心化钱包的本质是代替用户托管资产,钱包保存了所有地址的私钥,对上面的令牌有完全的使用权。对于用户而言,对资产的流动有知情权,但并没有实际控制权。一个完整的中心化钱包可以分为两层,记账层和区块底层,至少需要集成四个基本的业务功能
1,生成地址 #getnewaddress
2,扫描充值事务 #本地事务,6个确认, 充值到用户的绑定的地址
3,转移用户地址余额,到*地址, 注意手续费问题, 上次完成了才能做下次
4,提现行为, 注意手续费问题, 单例
linux 守护进程
ps -axj
nohup omnicored -testnet &
php 执行linux命令
system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
相同点:都可以获得命令执行的状态码
例子:system("ls -al");
【使用之前要在php.ini中把safe_mode关闭】