furqansiddiqui/erc20-php

与任何ERC20标准或向后兼容的以太坊代币交互

0.3.1 2024-09-23 15:18 UTC

This package is auto-updated.

Last update: 2024-09-23 15:08:35 UTC


README

与任何ERC20标准以太坊代币交互

本包是针对PHP开发者无法与ERC20代币(即web3js合约API)交互这一历史问题的最终解决方案。

本包依赖furqansiddiqui/ethereum-php包来执行所有ABI编码和解码,以及使用RPC/API与以太坊节点进行通信,从而为开发者提供纯简单且易于使用的API来执行所有ERC20标准操作。

演示

  • 测试与Thether USD / USDT ERC20智能合约的交互
use FurqanSiddiqui\Ethereum\RPC\Infura;
use FurqanSiddiqui\Ethereum\ERC20\ERC20;

$infura = new Infura("PROJECT-ID", "PROJECT-SECRET");
$infura->ignoreSSL(); // In case Infura.IO SSL errors (or provide "caRootFile:" to constructor above)

$erc20 = new ERC20($infura);
$usdt = $erc20->deployedAt("0xdac17f958d2ee523a2206206994597c13d831ec7");
var_dump($usdt->name());
var_dump($usdt->symbol());
var_dump($usdt->decimals());
var_dump($usdt->totalSupply());
$balance = $usdt->balanceOf($eth->getAccount("ETHEREUM-ADDRESS"));
var_dump($balance);
var_dump($usdt->getScaledValue($balance));

结果

string(9) "TetherUSD"
string(4) "USDT"
int(6)
string(18) "32284517903064882"
string(11) "53150417979"
string(12) "53150.417979"

自定义ABI

  • 标准/基本ERC20 ABI包含在包中。
  • 要包含扩展/自定义ERC20 ABI(根据您的需求),请使用以下方法之一
    • 扩展BaseERC20Contract类来定义自定义ABI函数和事件。
    • 解码您的自定义ABI JSON文件并将其提供给构造函数
use \FurqanSiddiqui\Ethereum\Contracts\Contract;

$customABI  =   Contract::fromArray(json_decode(file_get_contents("YOUR-CUSTOM-ABI.json"), true), true);
$erc20 = new ERC20(abi: $customABI);

缩放值

使用getScaledValuefromScaledValue将金额从/to uint256进行转换。

先决条件

安装

composer require furqansiddiqui/erc20-php

变更日志

  • 0.3.0: 本库以及ethereum-php等几个库都已现代化,需要PHP ^8.1。