cover

HECO智能地址PHP开发包

汇智网 / hubwiz.com

用智能钱包代替传统的密钥对地址,无需注入HT即可进行HRC20代币的归集

1、开发包概述

HecoSmartWallet开发包适用于平台方高效完成对HECO区块链用户地址上 的HT/HRC20代币的归集工作,无需向用户地址注入HT即可完成对用户 HT/HRC20代币的归集。

HecoSmartWallet开发包的主要特点如下:

  • 真正的平台型非托管钱包,平台无需管理大量用户地址的密钥并且没有安全性的损失
  • 无需向用户地址注入HT即可完成HT/HRC20代币的归集,流程更简单,效率更高
  • 支持在单一交易内完成多个用户地址、多种代币的归集

HecoSmartWallet运行于PHP 7.1+环境下,主要类以及其关系如下图所示:

HecoSmartWallet uml chart

HecoSmartWallet的主要代码文件清单如下:

文件路径说明
hecotool/src/SmartWalletKit.phpHecoSmartWallet开发包的入口类
hecotool/src/Credential.php火币生态链身份账号类
hecotool/src/SmartWalletFactory.phpHecoSmartWalletFactory合约的封装类
hecotool/src/HRC20Token.phpHRC20代币合约的封装类
hecotool/src/SmartContract.php火币生态链智能合约基类
hecotool/src/Callback.php回调函数类
contract/HRC20.solHRC20标准接口
contract/HappyToken.sol用于演示的HRC20代币合约
contract/SmartWalletFactory.solHECO智能钱包工厂合约
demo/deploy-contracts.php演示如何部署SmartWalletFactory合约
demo/generate-user-wallet.php演示如何为用户生成平台智能钱包
demo/fund-user-wallet.php模拟用户的充值操作
demo/get-user-balance.php演示如何查询用户钱包的HT/HRC20代币余额
demo/sweep-user-wallet.php演示如何归集用户钱包的HT/HRC20代币余额
bin/solcsolidity编译器
build-contract.sh合约编译构建脚本
vendor/第三方依赖包
composer.jsoncomposer配置文件

2、使用示例代码

2.1 部署工厂合约

HecoSmartWallet开发包利用工厂合约SmartWalletFacotry管理用户 地址的生成与归集。因此首先需要部署工厂合约。

示例代码demo/deploy-contracts.php展示了如何部署 SmartWalletFactory合约以及一个用于演示的HRC20代币合约。 执行如下命令运行示例代码:

php deploy-contracts.php

运行结果如下:

HecoSmartWallet

2.2 生成用户地址

示例代码demo/generate-user-wallet.php展示了如何利用SmartWallet开发包 为用户生成平台地址。执行如下命令运行示例代码:

php generate-user-wallet.php

运行结果如下:

HecoSmartWallet

注:生成用户地址不需要任何手续费。

2.3 用户充值

示例代码demo/fund-user-wallet.php模拟了用户向平台地址的充值行为。 执行如下命令运行示例代码:

php fund-user-wallet.php

运行结果如下:

HecoSmartWallet

2.4 查看用户地址余额

示例代码demo/get-user-balance.php展示了如何查询用户地址的 Ether/HRC20代币余额。 执行如下命令运行示例代码:

php get-user-balance.php

运行结果如下:

HecoSmartWallet

2.5 归集用户地址余额

示例代码demo/sweep-user-wallet.php展示了如何利用归集用户地址 上的HT和HRC20代币到指定的地址。 执行如下命令运行示例代码:

php sweep-user-wallet.php

运行结果如下:

HecoSmartWallet

3、Credential类的使用方法

SmartWallet开发包使用Credential对象来表示一个特定的火币生态链账号, 该对象包含了账号的密钥和地址信息。

3.1 实例化Credential

使用静态方法new()创建一个新的火币生态链账户,例如:

//use hecotool\Credential;

$credential = Credential::new();                          // 创建一个新的账号

也可以使用静态方法fromKey()导入已有的私钥来实例化Credential对象,例如:

$credential = Credential::fromKey(
  '0x4f3edf983ac6......b113bce9c46'                       // 要导入的私钥
);

3.2 查看账户的密钥和地址

Credential类提供了如下方法获取当前账户的私钥、公钥和地址:

  • getPrivateKey():返回私钥16进制字符串
  • getPublicKey():返回公钥16进制字符串
  • getAddress():返回地址16进制字符串

例如,下面的代码创建一个新的火币生态链账户并显示其地址:

$credential = Credential::new();
echo 'address => ' . $credential->getAddress() . PHP_EOL;  // 显示账号地址

3、SmartWalletKit类的使用方法

3.1 实例化SmartWalletKit

SmartWalletKit是HecoSmartWallet开发包的入口类,实例化时需要 传入火币生态链节点URL和一个Credential对象。例如:

//use hecotool\Credential;
//use hecotool\SmartWalletKit;

$kit = new SmartWalletKit(
  'http://localhost:8545',                                  // 火币生态链节点URL
  Credential::fromKey('0x......')                           // 火币生态链账号对象
);

3.2 生成用户地址

使用SmartWalletKit对象的getUserWallet()方法为指定的用户生成 平台地址,例如:

$userId = 'u010203';                                         // 用户的平台ID
$userAddress = $kit->generateUserWallet($userId);            // 返回用户地址
echo 'user address => ' . $userWallet . PHP_EOL;             // 显示用户地址

3.3 批量归集用户地址余额

使用SmartWalletKit对象的sweepUserWallets()方法归集一组用户地址 的HT/HRC20代币余额。例如:

$uids = ['u010203', 'u030405', 'u050607'];                   // 用户的平台ID
$tokens = ['0xa71edc38d189767582c38a3145b5873052c3e47a'];    // 归集USDTHECO代币
$target = '0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0';      // 归集接收地址
$txid = $kit->sweepUserWallets($uids, $tokens, $target);     // 返回归集交易ID
echo 'sweep txid => ' . $txid . PHP_EOL;                     // 显示归集交易ID

3.4 操作HRC20代币

使用SmartWalletKit对象的hrc20()方法获取指定地址的HRC20代币实例, 调用标准的HRC20接口即可操作代币。例如查询USDT余额并转账:

$somebody = '0xb8001c3e...e4a361ec1';
$token = $kit->hrc20('0xdac17f958d2ee523a2206206994597c13d831ec7');
echo 'balance of somebody => ' . $token->balanceOf($somebody) . PHP_EOL;  // 查询代币余额

$txid = $kit->transfer($somebody, '100000000');                          // 代币转账
echo 'transfer token txid => ' . $txid . PHP_EOL;

声 明

本站所提供软件包仅用于学习和研究,请依法合规使用。

本站所提供软件包均提供完整源码,使用前请认真阅读源代码和文档以确保充分理解软件包的设计与功能实现,本站不承担 因不当使用本站所提供软件包而造成的任何法律风险或财产损失责任。

¥5000.00
查看授权信息
  • 付费成功自动开通下载
  • 三个月内代码免费升级
  • 专业人员在线技术支持
  • 支持按需定制(另付费)
下载代码包
版本发布日期地址
1.0.0 2021-3-30
下载最新版
QQ咨询
2860991437
9+