arcgen / myeth-php
轻松在 PHP 中与兼容 EVM 的链交互
v0.1.0
2024-04-10 08:40 UTC
Requires
- kornrunner/ethereum-offline-raw-tx: ^0.6.0
- web3p/web3.php: ^0.3.2
Requires (Dev)
- phpunit/phpunit: ^11.1
This package is auto-updated.
Last update: 2024-09-10 11:15:25 UTC
README
轻松在 PHP 中与 EVM(以太坊虚拟机)兼容的链交互,签名消息,签名交易,签名并发送交易。
目录
需求
- PHP 8 或更高版本。
安装
composer require arcgen/myeth-php
签名消息
use MYETH\MyEth; $message = "Hello, world!"; $privateKey = ''; // without 0x (remove 0x before passing private key) $signedMessage = MyEth::signMessage($message, $privateKey); echo json_encode($signedMessage);
签名交易
use MYETH\MyEth; $transactionEncodedJson = '{"nonce":0,"gasPrice":1000000000,"gas":21000,"to":"0x4bbeEB066eD09B7AEd07bF39EEe0460DFa261520","value":1000000000000000000,"data":""}'; $privateKey = ''; // without 0x (remove 0x before passing private key) $signedTransaction = MyEth::signTransaction($transactionEncodedJson, $privateKey); echo $signedTransaction;
签名并发送交易
use MYETH\MyEth; $transactionEncodedJson = '{"nonce":0,"gasPrice":1000000000,"gas":21000,"to":"0x4bbeEB066eD09B7AEd07bF39EEe0460DFa261520","value":1000000000000000000,"data":""}'; $privateKey = ''; // without 0x (remove 0x before passing private key) $web3Provider = 'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'; // Invoke the signAndSendTransaction method $response = MyEth::signAndSendTransaction($transactionEncodedJson, $privateKey, $web3Provider); echo $response;
使用不同的链
当使用其他 EVM 链或测试网时,建议将链 ID 作为最后一个参数传递。
use MYETH\MyEth; $message = "Hello, world!"; $privateKey = ''; // without 0x (remove 0x before passing private key) $chainID = '80001' // Polygon matic $signedMessage = MyEth::signMessage($message, $privateKey, $chainID); echo json_encode($signedMessage);
错误处理
您可以通过将方法包裹在 try / catch 块中来捕获请求错误。
use MYETH\MyEth; $transactionEncodedJson = '{"nonce":0,"gasPrice":1000000000,"gas":21000,"to":"0x4bbeEB066eD09B7AEd07bF39EEe0460DFa261520","value":1000000000000000000,"data":""}'; $privateKey = ''; // without 0x (remove 0x before passing private key) $web3Provider = 'https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'; try { $response = MyEth::signAndSendTransaction($transactionEncodedJson, $privateKey, $web3Provider); echo $response; } catch (\Exception $e) { $this->fail("Exception thrown: " . $e->getMessage()); }
响应
Exception thrown: Error message
测试
./vendor/bin/phpunit