主页 > imtoken最新安卓版本下载 > 以太坊智能钱包PHP开发包【无gas收ERC20代币】

以太坊智能钱包PHP开发包【无gas收ERC20代币】

imtoken最新安卓版本下载 2023-10-19 05:07:48

SmartWallet开发包适用于平台高效完成用户地址上Ether/ERC20代币的收集,无需向用户地址注入Ether即可完成Ether/ERC20代币的收集。 官方下载链接:以太坊智能钱包PHP开发包。

一、开发包概述

智能钱包开发包的主要特点如下:

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

在这里插入图片描述

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

文件路径规范

ethtool/src/SmartWalletKit.php

SmartWallet开发包入口类

ethtool/src/Credential.php

以太坊身份账户类

ethtool/src/SmartWalletFactory.php

SmartWalletFactory合约封装类

ethtool/src/ERC20Token.php

ERC20代币合约封装类

ethtool/src/SmartContract.php

以太坊智能合约基类

ethtool/src/回调.php

回调函数类

合约/ERC20.sol

ERC20标准接口

合约/HappyToken.sol

用于演示的 ERC20 代币合约

合约/SmartWalletFactory.sol

智能钱包工厂合同

演示/部署-contracts.php

演示如何部署 SmartWalletFactory 合约

演示/生成用户钱包.php

演示如何为用户生成平台智能钱包

演示/fund-user-wallet.php

模拟用户充值操作

演示/get-user-balance.php

演示如何查询用户钱包的ETH/ERC20代币余额

demo/sweep-user-wallet.php

演示如何汇总用户钱包的 ETH/ERC20 代币余额

仓/溶胶

坚固的编译器

构建合同.sh

合约编译构建脚本

小贩/

第三方依赖

作曲家.json

作曲家配置文件

2.使用示例代码2.1部署工厂合约

SmartWallet开发包使用工厂合约SmartWalletFacotry来管理用户地址的生成和收集。 所以首先你需要部署工厂合约。

示例代码 demo/deploy-contracts.php 展示了如何部署 SmartWalletFactory 合约和用于演示的 ERC20 代币合约。

执行以下命令运行示例代码:

php deploy-contracts.php

运行结果如下:

在这里插入图片描述

2.2 生成用户地址

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

php generate-user-wallet.php

运行结果如下:

在这里插入图片描述

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

2.3 用户充值

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

php fund-user-wallet.php

运行结果如下:

在这里插入图片描述

2.4 查看用户地址余额

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

php get-user-balance.php

运行结果如下:

在这里插入图片描述

2.5 用户地址余额的收集

示例代码demo/sweep-user-address.php展示了如何使用将用户地址上的以太坊和ERC20代币扫到指定地址的方法。 执行以下命令运行示例代码:

php sweep-user-wallet.php

运行结果如下:

在这里插入图片描述

3.如何使用Credential类

SmartWallet 开发包使用 Credential 对象来表示一个特定的以太坊账户以太坊智能合约查询,其中包含账户的密钥和地址信息。

3.1 实例化凭证

使用静态方法 new() 创建一个新的以太坊账户,例如:

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

您还可以使用静态方法 fromKey() 导入现有私钥来实例化 Credential 对象以太坊智能合约查询,例如:

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

3.2 查看账号和地址

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

例如,以下代码创建一个新的以太坊帐户并显示其地址:

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

3. SmartWalletKit类的使用方法 3.1 实例化SmartWalletKit

SmartWalletKit是SmartWallet开发包的入门类。 实例化时需要传入以太坊节点的URL和Credential对象。 例如:

//use ethtool\Credential;
//use ethtool\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的sweepUserWallet()方法来收集指定用户地址的ETH/ERC20代币余额。 例如:

$userId = 'u010203';                                         // 用户的平台ID
$txid = $kit->sweepUserWallet($userId);                      // 返回归集交易ID 
echo 'sweep txid => ' . $txid . PHP_EOL;                     // 显示归集交易ID

3.4 批量收集用户地址余额

使用SmartWalletKit的sweepUserWallets()方法收集一组用户地址的Ethereum/ERC20代币余额。 例如:

$uids = ['u010203', 'u030405', 'u050607'];                   // 用户的平台ID
$txid = $kit->sweepUserWallets($uids);                       // 返回归集交易ID
echo 'sweep txid => ' . $txid . PHP_EOL;                     // 显示归集交易ID

3.5 操作ERC20代币

使用SmartWalletKit的erc20()方法获取指定地址的ERC20代币实例,调用标准的ERC20接口对代币进行操作。 例如查询USDT余额和转账:

$somebody = '0xb8001c3e...e4a361ec1';
$token = $kit->erc20('0xdac17f958d2ee523a2206206994597c13d831ec7');
echo 'balance of somebody => ' . $token.balanceOf($somebody) . PHP_EOL;  // 查询代币余额
$txid = $kit->transfer($somebody, '100000000');                          // 代币转账
echo 'transfer token txid => ' . $txid . PHP_EOL;

SmartWallet开发包下载地址: