usdt充值 btc网络(区块充值)
下边介绍基于 比特币网络的usdt做充值
基于比特币网络发行的USDT (基于Omni协议发行)
1.首先现在节点服务器上生成每个用户的钱包地址
/*** 方法:生成USDT地址* @param $user_id* @return bool*/public function usdtcoin($user_id){$lists=$this->usdt->getaddressesbyaccount("$user_id");if (count($lists)>0){return $lists[0];}$address=$this->usdt->getnewaddress("$user_id");if (strlen($address) != 34) {return false;}return $address;}
$user_id是账号名,需要唯一。
返回的是账户地址。
getnewaddress 是比特币的命令
/*** 调用返回钱包交易清单,可以使用地址或区块进行过滤* @param $txid* @return mixed*/public function listtransactions($txid){return $this->usdt->omni_listtransactions($txid);}
- txid:地址过滤器,字符串,可选
- count:返回结果数量,数值,可选,默认值:10
- skip:跳过结果数量,数值,可选,默认值:0
- startblock:检索的起始区块,数值,可选,默认值:0
- endblock :检索的最后区块,数值,可选,默认值:999999999
["txid"] => string(64) "961400b6923d5c2d57ecd27f59e127b01ebe0a7fe3635eca454b0d268a6012a5"//16进制编码的交易哈希["fee"] => string(10) "0.00015762"//交易手续费["sendingaddress"] => string(34) "3KeC2JqGHqW6kuUBJKjAHmmfUThj2RiR1F"//发送方比特币地址["referenceaddress"] => string(34) "18An5WWLHR59NpHdKzPoDjKLKULsMpP1ci"//作为参照的比特币地址["ismine"] => bool(true)//交易是否与钱包内某个地址相关["version"] => int(0)//交易版本["type_int"] => int(0)//交易类型代码["type"] => string(11) "Simple Send"//交易类型字符串["propertyid"] => int(31)["divisible"] => bool(true)["amount"] => string(10) "1.00000000"//交易金额["valid"] => bool(true)//交易是否有效["blockhash"] => string(64) "00000000000000000012a07886b2a27d75cec808c8225f3d38a0b76e159f652f"["blocktime"] => int(1560768796)//交易的区块时间戳["positioninblock"] => int(1872)//交易在区块内的序号["block"] => int(581100)["confirmations"] => int(33)//交易的确认数
最后就是做个定时器,定时扫描钱包地址,出现新的交易然后存入数据库。
如果不会写定时器,请参考我前段时间写的定时器:https://blog.csdn.net/jmkweb/article/details/89684225
下边附上定时扫描钱包,确认充值成功
<?php
/*** Created by PhpStorm.* User: 江雪* Date: 2019/6/17* Time: 22:18*/namespace app\common\controller;use app\admin\controller\usdts\Coins;
use app\v2\model\AssetMode;
use app\v2\model\UsersAccountLog;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\Db;
use think\Exception;class Usdt extends Command
{protected function configure(){$this->setName('usdt')->setDescription('充值');}protected function execute(Input $input, Output $output){//每隔1000ms触发一次$id = \swoole_timer_tick(5000, function ($timer_id) {try{$log=[];$user_asset=[];$account_log=[];file_put_contents('usdt.log',date('Y-m-d H:i:s').'进入充值'.PHP_EOL,FILE_APPEND);$user=Db::name('users')->where(['status'=>1,'token_address'=>['<>','']])->select();foreach ($user as $k=>$v){sleep(2);$user_address=(new Coins())->listtransactions($v['token_address']);file_put_contents('usdt.log',json_encode($user_address,true).PHP_EOL,FILE_APPEND);if (!empty($user_address)){$user_txids=Db::name('recharge')->where(['user_id'=>$v['id']])->column('usdt_order_num');file_put_contents('usdt.log','有交易信息'.PHP_EOL,FILE_APPEND);$txids=$user_address[0]['txid'];$last_txid=$txids;
// $last_txid=end($txids);if (!in_array($last_txid,$user_txids)){$transaction=(new Coins())->gettransaction($last_txid);file_put_contents('usdt.log','交易记录存在'.json_encode($transaction).PHP_EOL,FILE_APPEND);if (is_array($transaction)){if ($transaction['referenceaddress']==$v['token_address']){if ($transaction['valid']){file_put_contents('usdt.log','交易记录存在11'.PHP_EOL,FILE_APPEND);$log[]=['user_id'=>$v['id'],'order_num'=>Checking::ordeSnByUnique('order_num',Db::name('recharge')),'usdt_order_num'=>$last_txid,'money'=>$transaction['amount'],'sender'=>$transaction['sendingaddress'],'recipient'=>$transaction['referenceaddress'],'status'=>2,'create_time'=>date('YmdHis'),'qr_time'=>date('YmdHis'),'block_time'=>date('Y-m-d H:i:s',$transaction['blocktime']),'block_t_time'=>$transaction['blocktime']];$account_log[]=['user_id'=>$v['id'],'money'=>$transaction['amount'],'type'=>1,'message'=>'充值','status'=>2,'class'=>2,'create_time'=>date('YmdHis')];$user_asset[]=['user_id'=>$v['id'],'usdt'=>['inc',$transaction['amount']]];}}file_put_contents('usdt.log',date('Y-m-d H:i:s').'交易无效'.PHP_EOL,FILE_APPEND);}}}}if (!empty($log)){Db::name('recharge')->insertAll($log);}if (!empty($user_asset)){$asset= new AssetMode();$asset->isUpdate(true)->saveAll($user_asset);}if (!empty($account_log)){$asset= new UsersAccountLog();$asset->isUpdate(true)->saveAll($account_log);}}catch (Exception $exception){file_put_contents('usdt.log',date('Y-m-d H:i:s').$exception->getMessage().PHP_EOL,FILE_APPEND);}});}
}
usdt充值 btc网络(区块充值)相关推荐
- usdt充值btc网络(非节点钱包地址)
1.此充值具有一定的交易风险(请一定做好判断) 步骤:用户绑定其他交易所的地址,往平台充值(只能使用用户绑定的钱包地址充值,否则无法确认充值成功),用户先填写充值金额->生成充值订单->通 ...
- 淘宝充值中心 老是提示 充值失败 网络异常 解决方法
淘宝充值中心 老是提示 充值失败 网络异常 解决方法 原因: 供货商突然修改了进货价..而售价低于进价.导致失败
- 一图看懂BCH和BTC的区块费用差距到底有多大?
比特币现金和比特币是经常被拿来比较的两种加密货币,比较的范围莫过于两者的价格.算力.交易确认的速度.交易的手续费等. 众所周知,比特币现金相比于比特币的一个非常重要的优势就是手续费非常低,但是到底两者 ...
- TokenInsight:BTC网络活跃度保持历史高位,人气居高不下
陀螺财经消息,据tokeninsight.com数据显示,反映区块链行业整体表现的TI指数北京时间01月13日8时报2342.41点,较昨日同期下跌102.07点,跌幅为4.18%.此外,在Token ...
- 微信多开软件苹果版_快手充值快币微信充值苹果版;
点上方关注充值快手币 ☀臻悦服务平台专注于:快手充值,快手科技充值,快手充值快币,快币充值窗口,快手充值中心,快手币充值中心,快手充值平台,您身边的快手充值助理7*24h自动充值!支持ios和安卓手机 ...
- 以太坊网络区块浏览器blocksout技术简要分析
以太坊网络浏览器 以太坊网络区块浏览器目前主要是etherscan.io提供.官方正规的区块浏览器没有etherscan.io强大,不具有合约内联交易,Token交易分析功能,而etherscan.i ...
- 鸿蒙手机王者荣耀怎么充值,苹果手机王者荣耀怎么充值?苹果系统充值王者荣耀教程...
在苹果系统中其实是可以充值王者荣耀的,具体该怎么充值呢?一起来看吧. 苹果系统充值王者荣耀教程 首先,请大家登录苹果系统中安装的王者荣耀游戏,这里我以iPad为例,打开IOS系统中安装的王者荣耀游戏主 ...
- 区块链学习笔记五 BTC网络
- 闪电网络——区块链领域基于 Golang 的核心技术之一
在 2019年第五届 Gopher China 大会上,讲师方圆进行了主题为<闪电网络--BTC小额支付解决方案>的演讲,以下为演讲实录. 00 前言 今天我分享的主要内容包括以下两部分: ...
最新文章
- Direct2D (23) : 复合几何对象之 ID2D1GeometryGroup
- 【个人总结】知识晶体的前中后台
- android+studio+选择+苹方字体,启动欢迎页面时,Android Studio设置全屏Activity
- RabbitMQ使用简述
- 使用ajax完成python flask前端与后台数据的交互
- 【转】Azure 命令行工具大混战,都是什么,该选哪个?
- eclipse提示方法已过时_提高效率,eclipse上你可能不知道的技巧
- php进程数是指什么,25.查看php 某个服务的进程数
- anaconda下python中matplotlib画图无法显示中文
- 【值得学习】售前工程师的成长(四)---一个老员工的经验之谈
- 插入排序(Insert Sort)
- 开源公司黄页之阿里巴巴开源软件推荐(一)
- SAS对决Ultra320(下):MAX3147RC小胜Ultrastar 15K147
- 对学术不怎么热爱,只想当大学老师而去读博可以么?
- 《Delta-Sigma数据转换器从入门到精通》笔记之漫谈均值
- 交换机有哪几种端口类型
- 腾讯短链接在线生成工具
- A BERT Baseline for the Natural Questions
- AndLua加密解密
- 华为中央软件院编译器与编程语言实验室人才招募