以太坊批量交易PHP开发包,支持ETHER/ERC20
以太坊批量转账PHP开发包支持以太币ERC20代币的批量转账,有效减少交易手续费。官方下载地址:http://sc.hubwiz.com/codebag/eth-batch-transfer/。
1、以太坊批量转账PHP开发包简介
以太坊批量转账PHP开发包的主要特性如下:
- 支持以太币和ERC20代币一对多转账
- 只需要支付一个交易的手续费
- 支持使用公共节点(例如Infura)或自己部署节点
以太坊批量转账PHP开发包运行于PHP7.1+环境下,主要类及相互关系如下图所示:
以太坊批量转账PHP开发包的主要代码文件清单如下:
代码文件 | 说明 |
---|---|
contract/BatchTransferContract.sol | 批量转账合约 |
contract/Erc20.sol | Erc20接口合约 |
contract/SafeMath.sol | 安全计算合约 |
contract/EzToken.sol | 示例代币合约 |
ethtool/src/BatchTransfer.php | 批量转账合约PHP API |
ethtool/src/EthApi.php | EthApi接口定义 |
ethtool/src/EthApiWeb3.php | EthApi接口的Web3实现类 |
ethtool/src/Credential.php | 身份凭证类 |
ethtool/src/RawContract.php | 支持裸交易的合约封装类 |
build-contract.sh | 合约编译工具脚本 |
deploy-contract.php | 批量转账合约部署PHP程序 |
Deploy-contract-eztoken.php | 示例代币合约部署工具脚本 |
demo/ether-batch-transfer.php | 以太币批量转账演示 |
demo/erc20-approve.php | Erc20代币授权演示 |
demo/erc20-batch-transfer.php | Erc20代币批量转账演示 |
2、合约部署
以下部分说明如何使用附带的脚本和PHP程序部署合约。当然你也可以使用Solidity在线IDE部署合约。
进入开发包目录,执行如下命令编译合约:
~$ cd ~/ebt ~/ebt$ ./build-contract.sh
执行如下命令部署合约:
~/ebt$ php deploy-contract.php
在~/ebt/contract/build/目录下的合约部署地址文件(后缀.addr)中记录有合约的部署地址。
3、批量转账PHP API初始化
PHP侧提供的BatchTransfer.php包含了BatchTransfer类的实现,实例化BatchTransfer需要指定三个参数:EthApi对象、批量转账合约部署地址以及包含私钥的Credential对象。例如:
use EthTool\EthApiWeb3; use EthTool\Credential; use EthTool\BatchTransfer; $url = 'https://infura.io/v3/....'; //节点URL $btContractAddress = '0xd86c8f…cf560d5610'; //批量转账合约地址 $bt = new BatchTransfer( new EthApiWeb3($url), //EthApi实例 Credential::fromKey($key), //Credential实例 $btContractAddress //批量转账合约地址 );
4、以太币一对多转账PHP API
使用BatchTransfer对象的sendEther()方法向多个目标地址转账以太币,调用发起账户负责支付转账总额和手续费。例如:
$recipients = [ '0xffcf8fdee72ac11b5c542428b35eef5769c409f0', //目标地址 '0x22d491bde2303f2f43325b2108d26f1eaba1e32b ' ]; $values = [ '2000000', //目标金额,单位:WEI '6000000'; ]; $txid = $bt.sendEther($recipients,$values); //批量转账交易 echo 'txid => ' . $txid . PHP_EOL; //显示交易哈希
sendEther()
方法默认的gas参数和链ID为:
- gasLimit:4000000
- gasPrice:10 GWEI
- chainId:1
可以在调用时传入自定义的值,例如:
$gasLimit = '1000000'; //gas上限:1 M $gasPrice = '2000000000'; //gas价格:2 GWEI $chainId = 4; //目标链:ropsten $txid = $bt.sendEther($recipients,$values,$gasLimit,$gasPrice,$chainId);
5、ERC20代币一对多转账PHP API
与以太币不同的是,在使用BatchTransfer对象的sendToken()方法向多个目标地址转帐指定的ERC20代币之前,需要首先调用approveContract()方法授权批量转账合约可以操作发起账号持有的代币。例如,下面的代码允许批量转账合约操作发起账号的指定数量的指定代币:
$tokenAddress = '…'; //代币合约地址 $value = '100000000000'; //授权数量 $txid = $bt->approveContract($tokenAddress,$value); //授权
对一个特定的发起账号/代币对,授权操作只需要进行一次。在授权交易成功后,既可以调用sendToken()方法进行一对多转账。例如:
$tokenAddress = '…'; //代币合约地址 $recipients = [ '0xffcf8fdee72ac11b5c542428b35eef5769c409f0', //目标地址 '0x22d491bde2303f2f43325b2108d26f1eaba1e32b ' ]; $values = [ '2000000', //代币最小单位 '6000000'; ]; $txid = $bt.sendToken($tokenAddress,$recipients,$values); //批量转账交易 echo 'txid => ' . $txid . PHP_EOL; //显示交易哈希
同样,可以指定sendToken()方法调用时的gas参数和链ID,这里不再重复。
以太坊批量转账PHP开发包下载地址:http://sc.hubwiz.com/codebag/eth-batch-transfer/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
网络地址转换 NAT 配置
理解 NAT 网络地址转换的原理及功能掌握静态 NAT 的配置,实现局域网访问互联网 实验背景你是某公司的网络管理员,欲发布公司的 WWW 服务。现要求将内网 Web 服务器 IP地址映射为全局 IP 地址,实现外部网络可以访问公司内部 Web 服务器。 技术原理网络地址转换 NAT(Network Address Translation),被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。原因很简单,NAT 不仅完美地解决了 IP 地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。默认情况下,内部 IP 地址是无法被路由到外网的,内部主机 10.1.1.1 要与外部 Internet通信,IP 包到达 NAT 路由器时,IP 包头的源地址 10.1.1.1 被替换成一个合法的外网 IP,并在 NAT 转发表中保存这条记录。当外部主机发送一个应答到内网时,NAT 路由器收到后,查看当前 NAT 转换表,用 10.1.1.1 替换掉这个外网地址。NAT 将网络划分为内部网络和外部网络两部分,局域网主机利用 NAT 访问网络时,是将局域网...
- 下一篇
C#对接区块链【LTC/ETC/BCH/XRP】
CoinGateX实现了与ltc、etc、bch和xrp的对接网关,并为.NET应用开发提供了一致的API接口。CoinGateX官方下载地址:http://sc.hubwiz.com/codebag/coingatex.net/。 1、CoinGateX概述 CoinGateX运行于.net 4.6.1,当前版本1.0.0,主要代码文件清单如下: 代码文件 说明 CoinGate.Core/Gateway.cs 数字货币网关 CoinGate.Core/CoinAdapter.cs 数字货币适配器接口 CoinGate.Core/FaceValue.cs 币种面值处理父类 CoinGate.Core/KeyStore.cs 密钥库接口及两个实现类: MemoryKeyStore:内存密钥库 EsentKeyStore:Esent存储密钥库 CoinGate.Core/RpcClient.cs RPC客户端基类 CoinGate.Ltc/Adapter.cs 莱特币/LTC适配器 CoinGate.Ltc/FaceValue.cs 莱特币/LTC面值处理 CoinGate.Ltc/Ne...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块
- Red5直播服务器,属于Java语言的直播服务器