manamine/php-eos-rpc-sdk

EOS RPC API 的 PHP SDK

v1.5 2019-03-04 05:24 UTC

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许可证