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

1、开发包概述

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

真正的平台型非托管钱包,平台无需管理大量用户地址的密钥并且没有安全性的损失

无需向用户地址注入Ether即可完成以太币/ERC20代币的归集,流程更简单,效率更高

支持在单一交易内完成多个用户地址的归集

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

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 实例化Credential

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

//use ethtool\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是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()方法归集指定用户地址的以太币/ERC20代币余额。例如:

$userId = 'u010203'; // 用户的平台ID

$txid = $kit->sweepUserWallet($userId); // 返回归集交易ID

echo 'sweep txid => ' . $txid . PHP_EOL; // 显示归集交易ID

3.4 批量归集用户地址余额

使用SmartWalletKit的sweepUserWallets()方法归集一组用户地址的以太币/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;

erc20 php,无需gas即可归集ERC20的PHP开发包【SmartWallet】相关推荐

  1. api php usdt 以太坊_以太坊智能地址PHP开发包【零GAS归集ERC20】

    SmartWallet开发包适用于平台方高效完成对用户地址上的Ether/ERC20代币的归集工作,无需向用户地址注入Ether即可完成Ether/ERC20代币的归集.官方下载地址:以太坊智能钱包P ...

  2. Unity 3D学习视觉脚本无需编码即可创建高级游戏

    在本课程中,您将学习如何在Unity中使用可视化脚本(以前称为Bolt)以及如何在不编写一行代码的情况下创建自己的高级游戏所需的一切.本课程将教你如何掌握可视化脚本,即使你以前没有任何关于unity或 ...

  3. Only Train Once:微软、浙大等研究者提出剪枝框架OTO,无需微调即可获得轻量级架构...

    来源:机器之心 来自微软.浙江大学等机构的研究者提出了一种 one-shot DNN 剪枝框架,无需微调即可从大型神经网络中得到轻量级架构,在保持模型高性能的同时还能显著降低所需算力. 大型神经网络学 ...

  4. linux配置ssh密码远程登录,配置ssh 无需密码即可登录远程服务器

    在平时工作或者开发自己的项目时,经常需要登录部署了项目代码的服务器来做一些调试,配置等相关的操作,像sftp.rsync之类的工具也是基于ssh通道来工作的.但是经常输密码登录服务器又会让人觉得很烦, ...

  5. 又一款度盘不限速神器!无需登录即可下载

    大家好呀~之前给大家推送过一款度盘不限速软件<卢本伟带着PanDownload回来啦!>,但是,有部分兄弟反映没有效果,还是会被限速! 那么,今天黑哥就再推荐给一款的不限速软件:KinhD ...

  6. jpql hql_无需部署即可测试JPQL / HQL

    jpql hql 您是否曾经想在不完全部署应用程序的情况下测试JPQL / HQL? 我们今天在这里看到的是适用于任何JPA实现的简单解决方案:Hibernate,OpenJPA,EclipseLin ...

  7. 无需部署即可测试JPQL / HQL

    您是否曾经想在不完全部署应用程序的情况下测试JPQL / HQL? 我们今天在这里看到的是适用于任何JPA实现的简单解决方案:Hibernate,OpenJPA,EclipseLink等. 这篇文章中 ...

  8. golang go语言_在Go语言中无需反思即可使用Lodash的好处

    golang go语言 by Tal Kol 通过塔尔科尔 在Go语言中无需反思即可使用Lodash的好处 (The benefits of using Lodash in the Go langua ...

  9. 配置ssh 无需密码即可登录远程服务器

    在平时工作或者开发自己的项目时,经常需要登录部署了项目代码的服务器来做一些调试,配置等相关的操作,像sftp.rsync之类的工具也是基于ssh通道来工作的.但是经常输密码登录服务器又会让人觉得很烦, ...

最新文章

  1. Python 懂车帝全系车型--参数分析
  2. 前端实习生笔试_2016春网易前端暑期实习生笔试面经(二面已挂)
  3. CF1096D Easy Problem(DP)
  4. ASP.NET使用数据库存储、读取并修改图片
  5. linux oracle删除恢复数据恢复,Linux下Oracle误删除数据文件恢复操作
  6. 可以装linux的路由器,[转载]linux路由器Quagga的配置(一):安装
  7. (计算机组成原理题目题型总结)第四章:指令系统
  8. iPhone近两个财季为苹果带来1135亿美元营收 同比增长33%
  9. Cognos8.3解决方案
  10. 初识ADT--抽象数据类型
  11. ALSA驱动中snd_soc_write()原理分析及demo(二十二)
  12. iOS 使用ZipArchive压缩文件
  13. Python爬虫系列-------Scrapy框架爬取校花网校花图片
  14. 虚拟机WMware NAT方式共享物理主机IP地址上网设置方式
  15. 在java中如何做身份证号码校验
  16. effective modern cpp
  17. backtrack 4 in virtualBox 联网
  18. 深度学习电脑配置推荐
  19. python技能书测评
  20. NLG评估指标chrF、chrF++介绍

热门文章

  1. login: Could not determine audit condition 解决方案
  2. docker tag 删除images_docker实现重新打tag并删除原tag的镜像
  3. 高德地图API JS实现获取坐标和回显点标记
  4. 阿里云ECS每天一件事D1:配置SSH
  5. homeassistant安装
  6. 云时代,程序员将面临的分化
  7. QST青软实训学员学习总结
  8. HOUDINI 平面漩涡
  9. 安卓应用修改系统时间
  10. small用于不连续数组_shell 编程进阶与自动化脚本expect的运用