USDT 比特币节点搭建,钱包笔记

时间:2024-02-16 17:29:00

参考: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

区块同步数据参考网站

https://btc.com/

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关闭】