setName('test') ->setDescription('测试'); } protected function execute(Input $input, Output $output) { /** * TRON实例化 */ $service = TronService::instance('usdt'); /** * 创建地址 * @returns array ['私钥','地址','16进制地址'] */ var_dump($service->createAddress()); } /** * tron归集参考,遍历所有有余额的地址,处理归集操作,即可将余额归到一个地址 * @param array $money_info * @param string $summary_address 平台账号地址 * @param Address $gas_address 提供手续费的地址 * @return bool * @throws Exception */ public function summary(array $money_info, string $summary_address, Address $gas_address): bool { //实例化TRON $service = TronService::instance('usdt'); //实例化出款地址[有Usdt余额的用户钱包] $address = new Address($money_info['address'], $money_info['privateKey'], $money_info['hexAddress']); //获取代币余额 $balance = $service->tokenBalance($money_info['address']); //USDT余额大于0,触发归集 if ($balance > 0) { //查询地址中主币【GAS费余额】 $trx_balance = $service->balance($money_info['address']); if ($trx_balance < 30) { //如果主币小于30个,即gas费不够【BSC的gas费需要比较少,大约0.001个bnb就不少了,按照实际情况设置】 //计算要达到30个trx需要再转几个给用户地址 $trade_trx = ceil(30 - $trx_balance); //处理手续费转账,从系统地址分配gas给用户 //查询系统地址的TRX余额 $gas_trx_balance = $service->balance($gas_address->address); //系统地址TRX余额不足,退出处理 if ($gas_trx_balance < $trade_trx + 2) { Log::error('手续费账户余额不足'); return false; } try { //执行转账 $res = $service->transfer($gas_address, $address, $trade_trx); if (isset($res->txID)) { Log::error('转账TRX交易哈希:' . $res->txID); return true; } else { Log::error('转账TRX失败'); return false; } } catch (\Exception $e) { Log::error('转账TRX失败' . $e->getMessage()); return false; } } else { //账户内TRX充足,执行USDT转账交易 try { //将账户内的USDT余额转入归集指定地址 $res = $service->tokenTransfer($address, new Address($summary_address), $balance); @file_put_contents('trasfer.txt', json_encode($res), FILE_APPEND); if ($res['status']) { Log::error('转账交易哈希:' . $res['data']->txID); return true; } else { Log::error('转账失败' . $res['msg']); return false; } } catch (\Exception $e) { Log::error('转账失败' . $e->getMessage()); return false; } } } return true; } /** * TRON方法示例 */ private function trx() { /** * TRON实例化 */ $service = TronService::instance('usdt'); /** * 创建地址 * @returns array ['私钥','地址','16进制地址'] */ var_dump($service->createAddress()); /** * 获取主币余额 * @param string $address 要查询的钱包地址 */ var_dump($service->balance('TNUe3TpMjvM5svbQEEgunP91VtsimNSiZY')); /** * 获取代币余额 * @param string $address 要查询的钱包地址 */ var_dump($service->tokenBalance('TNUe3TpMjvM5svbQEEgunP91VtsimNSiZY')); /** * 获取钱包地址的代币转账记录 * @param string $address 要查询的钱包地址 * @param int $start_time 开始时间 13位时间戳 */ var_dump($service->getTransfer('TNUe3TpMjvM5svbQEEgunP91VtsimNSiZY', 0)); /** * 实例化出账地址 */ $from = new Address('地址', '私钥', '16位地址'); /** * 实例化收款地址 */ $to = new Address('地址'); /** * 主币转账 * @param Address $from 出账地址 * @param Address $to 收款地址 * @param float $amount 转账数量 */ var_dump($service->transfer($from, $to, 1)); /** * 代币转账 * @param Address $from 出账地址 * @param Address $to 收款地址 * @param float $amount 转账数量 */ var_dump($service->tokenTransfer($from, $to, 1)); } /** * BSC/ETH方法示例 */ private function web3() { /** * 实例化 * @param string $chain 网络 可选bsc和eth * @param string $contact 代币名,在config.php内配置 * @param string $private_key 私钥,可选,默认实例化config中配置了私钥的地址 */ $service = Web3Service::instance('bsc', 'usdt', ''); /** * 创建地址 * @return array ['地址','私钥'] */ var_dump($service->createAddress()); /** * 获取实例化的代币余额 * @param string $address 要查询的钱包地址 */ var_dump($service->getTokenBalance('0xE32f0a35F11Fd40B1949552C9Bdcfa6D080527C5')); /** * 获取主币余额 * @param string $address 要查询的钱包地址 */ var_dump($service->getBalance('0xB52cc871c8f15579d9C10fEF36fF95E9dA3fDe69')); /** * 获取最近的转账记录 不要隔太久,最多支持10000个区块,每个区块大约3秒 * @param array $from 要查询的来源地址 * @param array $to 要查询的去向地址 * @param int $last_time 上次查询的时间 */ var_dump($service->getLastTransfer([], ['0xE32f0a35F11Fd40B1949552C9Bdcfa6D080527C5'])); /** * 代币转账 * 从实例化的地址转出实例化的代币到指定地址 * @param string $to 接受地址 * @param int $amount 转账数量 */ var_dump($service->transferToken('0xE32f0a35F11Fd40B1949552C9Bdcfa6D080527C5', 1000)); /** * 主币转账 * 从实例化的地址转出主币到指定地址 * @param string $to 接受地址 * @param int $amount 转账数量 */ var_dump($service->transfer('0xE32f0a35F11Fd40B1949552C9Bdcfa6D080527C5', 0.001)); } }