manamine / php-eos-rpc-sdk
EOS RPC API 的 PHP SDK
Requires
- guzzlehttp/guzzle: ~6.0
- php-curl-class/php-curl-class: ^8.1
- vlucas/phpdotenv: ^2.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.3
- mockery/mockery: 0.9.*
- phpmetrics/phpmetrics: ^2.2
- phpspec/phpspec: ~2.1
- phpunit/phpunit: ~5.0
This package is not auto-updated.
Last update: 2024-09-24 08:33:03 UTC
README
EOS Chain/Wallet RPC API 的 PHP 封装器。
背景
您可以查看 RPC API 参考,但请注意,其中一些新方法可能缺失。钱包 RPC API 实现为 RPC API 参考的 v1.1.0 版本。此外,那些文档中的某些示例使用的是过时的语法。
安装
composer require manamine/php-eos-rpc-sdk
配置
在项目根目录中创建一个 dotenv .env
文件,包含您喜欢的 RPC API 主机名和 KEOSD。您可以使用 .env.example
作为模板
cp .env.example .env
用法
有一个闪亮的工厂方法可以自动实例化所有依赖项
$api = (new ChainFactory)->api(); $walapi = (new WalletFactory)->api(); $eos = (new EosRpc($api, $walapi));
示例
为了帮助您开始,有一个简单的示例运行器,它涵盖了所有 API 命令。
只需通过 cli 运行此命令,即可查看所有命令的示例输出
cd examples
php chain.php
php wallet.php
php eosrpc.php
API 方法
几乎涵盖了所有 Chain/Wallet API 方法。
链 API
获取信息
获取与节点相关的最新信息
echo $api->getInfo();
获取区块
获取与区块相关的信息
echo $api->getBlock("1337");
获取区块头状态
获取与区块头状态相关的信息
echo $api->getBlockHeaderState("0016e48707b181d93117b07451d9837526eba34a9a37125689fb5a73a5d28a38");
获取账户
获取与账户相关的信息
$api->getAccount("blockmatrix1");
获取代码
获取智能合约代码
echo $api->getCode("eosio.token");
获取表格行
从账户获取智能合约数据
echo $api->getTableRows("eosio", "eosio", "producers", ["limit" => 10]);
获取货币余额
获取账户的货币余额
echo $api->getCurrencyBalance("eosio.token", "eosdacserver");
获取货币统计信息
获取货币的统计信息
echo $api->getCurrencyStats("eosio.token", "EOS");
获取 ABI
获取账户 ABI
echo $api->getAbi("eosio.token");
获取原始代码和 ABI
获取原始代码和 ABI
echo $api->getRawCodeAndAbi("eosio.token");
获取生产者
列出生产者
echo $api->getProducers(10);
ABI JSON 转二进制
将 JSON 序列化为二进制十六进制
echo $api->abiJsonToBin("eosio.token", "transfer", ["blockmatrix1", "blockmatrix1", "7.0000 EOS", "Testy McTest"]);
ABI 二进制转 JSON
将二进制十六进制反序列化为 JSON
echo $api->abiBinToJson("eosio.token", "transfer", "10babbd94888683c10babbd94888683c701101000000000004454f53000000000c5465737479204d6354657374");
获取所需密钥
获取签名交易所需的密钥
echo $api->getRequiredKeys( [ "expiration" => "2018-08-23T05.00.00", "ref_block_num" => 15078, "ref_block_prefix" => 1071971392, "max_net_usage_words" => 0, "delay_sec" => 0, "context_free_actions" => [], "actions" => [ [ "account" => "eosio.token", "name" => "transfer", "authorization" => [ [ "actor" => "user", "permission" => "active" ] ], "data" => "00000000007015d6000000005c95b1ca102700000000000004454f53000000000c757365722d3e746573746572" ] ], "transaction_extensions" => [] ], [ "EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4" ] );
推送交易
推送一个交易
echo $api->pushTransaction("2018-08-23T05:29:39", "15780", "90170226", [ "actions" => [ [ "account" => "eosio.token", "name" => "transfer", "authorization" => [ [ "actor" => "user", "permission" => "active" ] ], "data" => "00000000007015d6000000005c95b1ca102700000000000004454f53000000000c757365722d3e746573746572" ] ], "signatures" => [ "SIG_K1_KaGHyi59BRqfaDUK6424TYEWcUhWxAG7BLCgYC8vwYNgaHgGLpduTUbNQEsfL8xLzboK8W9T2X69bNpqozTQVCbRSNJWFd" ] ] );
推送交易
推送交易
echo $api->pushTransactions( [ [ "compression" => "none", "transaction" => [ "expiration" => "2018-08-23T06:27:26", "ref_block_num" => 22017, "ref_block_prefix" => 3920123292, "context_free_actions" => [], "actions" => [ [ "account" => "eosio.token", "name" => "transfer", "authorization" => [ [ "actor" => "user", "permission" => "active" ] ], "data" => "00000000007015d6000000005c95b1ca102700000000000004454f53000000000c757365722d3e746573746572" ] ], "transaction_extensions" => [] ], "signatures" => [ "SIG_K1_JzN9DnpyhKfjoef3C2TZBTPA5b6ftwuEBnBpvzkueVXThJ34PFFpUFgqyayfXjeLRc15JmZmDiMYAFX99hUgX8vkGAYcnx" ] ], [ "compression" => "none", "transaction" => [ "expiration" => "2018-08-23T06:27:26", "ref_block_num" => 22017, "ref_block_prefix" => 3920123292, "context_free_actions" => [], "actions" => [ [ "account" => "eosio.token", "name" => "transfer", "authorization" => [ [ "actor" => "tester", "permission" => "active" ] ], "data" => "000000005c95b1ca00000000007015d6881300000000000004454f53000000000c7465737465722d3e75736572" ] ], "transaction_extensions" => [] ], "signatures" => [ "SIG_K1_KZ2M4AG59tptdRCpqbwzMQvBv1dce5btJCJiCVVy96fTGepApGXqJAwsi17g8AQdJjUQB4R62PprfdUdRYHGdBqK1z9Sx9" ] ] ] );
钱包 API
创建
使用给定的名称创建一个新的钱包
echo $walapi->create("testwallet");
打开
打开一个现有钱包
echo $walapi->open("testwallet");
锁定
锁定一个现有钱包
echo $walapi->lock("testwallet");
锁定所有
锁定所有现有钱包
echo $walapi->lockAll();
解锁
使用给定的名称和密码解锁钱包
echo $walapi->unlock(["testwallet", "PW5Jb8RAZP6CBjjMLPser3T8i8k9hZXZkMBJ8kb1p6f6hAg2n68jY"]);
导入密钥
将私钥导入给定的钱包
echo $walapi->importKey(["testwallet", "5Jmsawgsp1tQ3GD6JyGCwy1dcvqKZgX6ugMVMdjirx85iv5VyPR"]);
移除密钥
从给定的钱包中移除密钥对
echo $walapi->removeKey(["testwallet", "PW5Jb8RAZP6CBjjMLPser3T8i8k9hZXZkMBJ8kb1p6f6hAg2n68jY", "EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4"]);
创建密钥
创建密钥对并导入
echo $walapi->createKey(["testwallet", "K1"]);
列出钱包
列出所有钱包
echo $walapi->listWallets();
列出密钥
列出所有密钥对
echo $walapi->listKeys(["testwallet", "PW5Jb8RAZP6CBjjMLPser3T8i8k9hZXZkMBJ8kb1p6f6hAg2n68jY"]);
获取公钥
列出所有钱包中的公钥
echo $walapi->getPublicKeys();
设置超时
设置钱包自动锁定超时(秒)
echo $walapi->setTimeout(60);
签名交易
签名一个交易
echo $walapi->signTransaction( [ "expiration" => "2018-08-23T06:35:30", "ref_block_num" => 22985, "ref_block_prefix" => 3016594541, "max_net_usage_workds" => 0, "delay_sec" => 0, "context_free_actions" => [], "actions" => [ [ "account" => "eosio.token", "name" => "transfer", "authorization" => [ [ "actor" => "user", "permission" => "active" ] ], "data" => "00000000007015d6000000005c95b1ca102700000000000004454f53000000000c757365722d3e746573746572" ] ], "transaction_extensions" => [] ], [ "EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4" ], "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f" );
EOS 包装器 API
先决条件
需要设置钱包名称和密码
$eos->setWalletInfo("testwallet", "PW5Jb8RAZP6CBjjMLPser3T8i8k9hZXZkMBJ8kb1p6f6hAg2n68jY");
推送交易
推送一个交易
echo $eos->pushTransaction( [ [ "account" => "eosio.token", "name" => "transfer", "authorization" => [ [ "actor" => "user", "permission" => "active" ] ], "data" => [ "from" => "user", "to" => "tester", "quantity" => "1.0000 EOS", "memo" => "memo" ] ] ] );
制作交易
制作一个交易(对 pushTransactions 有用)
$trx = $eos->makeTransaction( [ [ "account" => "eosio.token", "name" => "transfer", "authorization" => [ [ "actor" => "user", "permission" => "active" ] ], "data" => [ "from" => "user", "to" => "tester", "quantity" => "1.0000 EOS", "memo" => "memo" ] ] ] );
推送交易
推送交易
$trx_ids = $eos->pushTransactions( [ $eos->makeTransaction( [ [ "account" => "eosio.token", "name" => "transfer", "authorization" => [ [ "actor" => "user", "permission" => "active" ] ], "data" => [ "from" => "user", "to" => "tester", "quantity" => "1.0000 EOS", "memo" => "memo" ] ] ] ), $eos->makeTransaction( [ [ "account" => "eosio.token", "name" => "transfer", "authorization" => [ [ "actor" => "tester", "permission" => "active" ] ], "data" => [ "from" => "tester", "to" => "user", "quantity" => "0.5000 EOS", "memo" => "memo" ] ] ] ) ] ); foreach ($trx_ids as $key => $value) { echo $trx_ids[$key]['transaction_id'] . PHP_EOL; }
推送动作
推送一个动作
echo $eos->pushAction("eosio", "buyram", ["payer"=>"tester","receiver"=>"tester","quant"=>"1.0000 EOS"], ["actor"=>"tester","permission"=>"active"]);
转账
转移代币
echo $eos->transfer("user", "tester", "1.0000 EOS", "memo");
创建密钥对
创建密钥对并返回
$keyPair = $eos->createKeyPair("K1"); echo "$keyPair[0], $keyPair[1]";
测试
要运行测试套件,只需执行
vendor/bin/phpunit
如果您想变得花哨并检查代码覆盖率
vendor/bin/phpunit --coverage-html tests/coverage
如果您真的很无聊,您可能想运行一些静态分析
vendor/bin/phpmetrics --report-html="tests/static" .
贡献
所有贡献都受欢迎!只需发起一个PR,确保你的代码风格符合PSR-2规范
vendor/bin/php-cs-fixer fix --verbose
许可证
免费提供给所有人!
MIT许可证