arcgen/myeth-php

轻松在 PHP 中与兼容 EVM 的链交互

v0.1.0 2024-04-10 08:40 UTC

This package is auto-updated.

Last update: 2024-09-10 11:15:25 UTC


README

轻松在 PHP 中与 EVM(以太坊虚拟机)兼容的链交互,签名消息,签名交易,签名并发送交易。

目录

需求

  1. 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

许可证

MIT