当前位置:网站首页>TRON智能钱包PHP开发包【零TRX归集】
TRON智能钱包PHP开发包【零TRX归集】
2020-11-06 20:21:00 【区块链教程】
TronSmartWallet 开发包适用于平台方高效完成对用户或订单地址上的Trx/TRC20代币的归集工作,无需向用户或订单地址注入Trx即可完成Trx/TRC20代币的归集。官方下载地址:TronSmartWallet PHP开发包。
1、开发包概述
TronSmartWallet开发包的主要特点如下:
- 真正的平台型非托管钱包,平台无需管理大量用户地址的密钥并且没有安全性的损失
- 无需向用户地址注入Trx即可完成Trx/TRC20代币的归集,流程更简单,效率更高
- 支持在单一交易内完成多个用户地址的归集
TronSmartWallet运行于PHP 7.1+环境下,主要类以及其关系如下图所示:

TronSmartWallet的主要代码文件清单见官网说明:http://sc.hubwiz.com/codebag/tron-smartwallet/ 。
2、使用示例代码
2.1 部署工厂合约
TronSmartWallet开发包利用工厂合约SmartWalletFacotry管理用户地址的生成与归集。因此首先需要部署工厂合约。
示例代码demo/deploy-contracts.php展示了如何部署SmartWalletFactory合约以及一个用于演示的TRC20代币合约。执行如下命令运行示例代码:
php deploy-contracts.php
运行结果如下:

合约部署后将在当前目录生成 addresses.json文件,该文件记录了SmartWalletFactory合约与HappyToken合约的部署地址,在其他演示代码中将使用该文件记录的信息。
2.2 生成用户地址
示例代码demo/generate-user-address.php展示了如何利用TronSmartWallet开发包为用户或订单生成平台地址。
执行如下命令运行示例代码,为三个不同的ID分别生成对应的地址:
php generate-user-wallet.php
运行结果如下:

注:生成用户地址不需要任何手续费。
2.3 用户充值
示例代码demo/fund-user-address.php模拟了用户向平台地址的充值行为。
执行如下命令运行示例代码,向三个指定ID对应的地址分别转入Trx和token:
php fund-user-wallet.php
运行结果如下:

2.4 查看用户地址余额
示例代码demo/get-user-balance.php展示了如何查询用户地址的Trx/TRC20代币余额。
执行如下命令运行示例代码,显示三个对应于指定ID的地址的余额信息:
php get-user-balance.php
运行结果如下:

2.5 归集用户地址余额
示例代码demo/sweep-user-address.php展示了如何利用归集用户地址上的Trx和TRC20代币到指定的冷(热)钱包地址。
执行如下命令运行示例代码:
php sweep-user-wallet.php
运行结果如下:

3、Tron身份与地址
TronSmartWallet开发包使用Credential对象来表示一个特定的Tron身份凭证,该对象包含了账号的密钥和地址信息。
3.1 实例化Credential
使用静态方法create()创建一个新的以太坊账户,例如:
//use TronSmartWallet\Credential;
$credential = Credential::create(); // 创建一个新的账号
也可以使用静态方法fromPrivateKey()导入已有的私钥来实例化Credential对象,例如:
$credential = Credential::fromPrivateKey(
'4f3edf983ac6......b113bce9c46' // 要导入的私钥
);
3.2 查看账户的密钥和地址
Credential类提供了如下方法获取当前账户的私钥、公钥和地址:
- privateKey() :返回私钥16进制字符串
- publicKey() :返回公钥16进制字符串
- address() :返回Address对象
例如,下面的代码创建一个新的Tron身份凭证并显示其地址:
$credential = Credential::new();
echo 'address => ' . $credential->address() . PHP_EOL; // 显示账号地址
3.3 Tron地址转换
在Tron区块链中,地址有两种表示:16进制和base58表示,例如下面是同一个地址的两种表示:
- Base58 :TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx
- 16进制 :412539EF4F3EB733C105A957EEBB20FD60AD8C9A43
Address类包含了相应的编解码逻辑,可以方便地进行地址格式转换。例如:
//use TronSmartWallet\Address;
$a1 = Address::decode('TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx'); //解码Base58地址
echo $a1 . PHP_EOL; //输出:412539EF4F3EB733C105A957EEBB20FD60AD8C9A43
$a2 = Address::encode('412539EF4F3EB733C105A957EEBB20FD60AD8C9A43'); //编码16进制地址
echo $a2 . PHP_EOL; //输出:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx
4、使用TronApi
TronApi 聚合了多种Tron节点提供的API,例如tron全节点、solidity节点和事件服务节点的API,TronSmartWallet利用TronApi访问Tron区块链。
实例化TronApi时,可以分别为不同类型的Tron节点指定不同的连接URL,例如:
//use TronSmartWallet\TronApi;
$api = new TronApi(
'https://api.trongrid.io', //全节点URL
'https://api.trongrid.io', //合约节点URL
'https://api.trongrid.io' //事件节点URL
);
当上述三个节点的URL相同时,可以简写为:
$api = new TronApi('https://api.trongrid.io');
如果用的是Tron官方提供的TronGrid节点,那么可以直接使用TronApi提供的两个静态函数mainNet()和testNet(),分别接入主链和shasta测试链。
例如,下面的代码是等效的:
$api = new TronApi('https://api.trongrid.io');
$api = TronApi::mainNet(); //与上面等效
$api = new TronApi('https://api.shasta.trongrid.io');
$api = TronApi::testNet(); //与上面等效
5、SmartWalletKit类的使用方法
3.1 实例化SmartWalletKit
SmartWalletKit是TronSmartWallet开发包的入口类,实例化时需要传入TronApi对象、Credential对象和工厂合约地址。例如:
//use TronSmartWallet\TronApi;
//use TronSmartWallet\Credential;
//use TronSmartWallet\SmartWalletKit;
$kit = new SmartWalletKit(
TronApi::mainNet(), // 接入Tron主网
Credential::fromPrivateKey('......'), // 以太坊账号对象
'TGuQLmDSmYEfFcQaKBqEJWNGtD4RontQBm' // 工厂合约地址
);
3.2 生成用户地址
使用SmartWalletKit的getUserWallet()方法为指定的用户生成平台地址,例如:
$userId = 'u010203'; // 用户的平台ID
$userAddress = $kit->generateUserWallet($userId); // 返回用户地址
echo 'user address => ' . $userWallet . PHP_EOL; // 显示用户地址
3.3 归集单个用户地址余额
使用SmartWalletKit的sweepUserWallet()方法归集指定用户地址的Trx/TRC20代币余额。例如:
$userId = 'u010203'; // 用户的平台ID
$txid = $kit->sweepUserWallet(
'u010203', // 用户ID
'TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx' // 接收地址
);
echo 'sweep txid => ' . $txid . PHP_EOL; // 显示归集交易ID
$success = $kit->waitForConfirmation($txid); // 等待交易确认
echo 'success => ' . $success . PHP_EOL; // 显示执行结果
3.4 批量归集用户地址余额
使用SmartWalletKit的sweepUserWallets()方法归集一组用户地址的Trx/TRC20代币余额。例如:
$txid = $kit->sweepUserWallets(
['u010203', 'u030405', 'u050607'], // 用户ID数组
'TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx' // 接收地址
);
echo 'sweep txid => ' . $txid . PHP_EOL; // 显示归集交易ID
$success = $kit->waitForConfirmation($txid); // 等待交易确认
echo 'success => ' . $success . PHP_EOL; // 显示执行结果
3.5 操作TRC20代币
使用SmartWalletKit的trc20()方法获取指定地址的TRC20代币实例,调用标准的TRC20接口即可操作代币。例如查询USDT余额并转账:
$somebody = 'TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx'; // 接收账号
$token = $kit->trc20('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t');
echo 'balance => ' . $token->balanceOf($somebody) . PHP_EOL; // 查询USDT余额
$txid = $kit->transfer($somebody, hex('100000000')); // TRC20转账
echo 'transfer token txid => ' . $txid . PHP_EOL; // 显示交易ID
$success = $kit->waitForConfirmation($txid); // 等待交易确认
echo 'success => ' . $success . PHP_EOL; // 显示执行结果
hex($numstr)是SmartWalletKit提供的辅助方法,可以方便的将10进制字符串表示的大数转换为16进制表示。
TronSmartWallet开发包官方下载地址:http://sc.hubwiz.com/codebag/tron-smartwallet/
版权声明
本文为[区块链教程]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/3843525/blog/4705601
边栏推荐
- How do the general bottom buried points do?
- 7.3.1 file upload and zero XML registration interceptor
- Why do private enterprises do party building? ——Special subject study of geek state holding Party branch
- Basic principle and application of iptables
- 对pandas 数据进行数据打乱并选取训练机与测试机集
- 6.8 multipartresolver file upload parser (in-depth analysis of SSM and project practice)
- 遞迴思想的巧妙理解
- 恕我直言,我也是才知道ElasticSearch条件更新是这么玩的
- 6.7 theme resolver theme style parser (in-depth analysis of SSM and project practice)
- 连肝三个通宵,JVM77道高频面试题详细分析,就这?
猜你喜欢

Technical director, to just graduated programmers a word - do a good job in small things, can achieve great things

文本去重的技术方案讨论(一)

嘘!异步事件这样用真的好么?

选择站群服务器的有哪些标准呢?

從小公司進入大廠,我都做對了哪些事?

安装Anaconda3 后,怎样使用 Python 2.7?

drf JWT認證模組與自定製

数字城市响应相关国家政策大力发展数字孪生平台的建设

“颜值经济”的野望:华熙生物净利率六连降,收购案遭上交所问询

Cos start source code and creator
随机推荐
6.7 theme resolver theme style parser (in-depth analysis of SSM and project practice)
Ubuntu18.04上安裝NS-3
mac 安装hanlp,以及win下安装与使用
使用NLP和ML来提取和构造Web数据
【快速因數分解】Pollard's Rho 演算法
(1) ASP.NET Introduction to core3.1 Ocelot
Grouping operation aligned with specified datum
PPT画成这样,述职答辩还能过吗?
人工智能学什么课程?它将替代人类工作?
分布式ID生成服务,真的有必要搞一个
Details of dapr implementing distributed stateful service
Pycharm快捷键 自定义功能形式
“颜值经济”的野望:华熙生物净利率六连降,收购案遭上交所问询
利用 AWS SageMaker BlazingText 对不均衡文本进行多分类
python 保存list数据
解決pl/sql developer中資料庫插入資料亂碼問題
【Flutter 實戰】pubspec.yaml 配置檔案詳解
Vue.js移动端左滑删除组件
如何将数据变成资产?吸引数据科学家
tensorflow之tf.tile\tf.slice等函数的基本用法解读