done/php-altcoinrpc

基于GuzzleHttp的Altcoin JSON-RPC客户端

1.1 2022-04-26 04:54 UTC

This package is auto-updated.

Last update: 2024-09-26 10:28:56 UTC


README

安装

在项目目录中运行php composer.phar require done/php-altcoinrpc,或者将以下行添加到composer.json中

"require": {
    "done/php-altcoinrpc": "^1.0"
}

然后运行php composer.phar install

需求

PHP 7.1或更高版本

使用方法

使用url作为参数创建新对象

/**
 * Don't forget to include composer autoloader by uncommenting line below
 * if you're not already done it anywhere else in your project.
 **/
// require 'vendor/autoload.php';

use DOne\Altcoin\Client as AltcoinClient;

$altcoind = new AltcoinClient('http://rpcuser:rpcpassword@localhost:8332/');

或使用数组定义您的altcoind设置

/**
 * Don't forget to include composer autoloader by uncommenting line below
 * if you're not already done it anywhere else in your project.
 **/
// require 'vendor/autoload.php';

use DOne\Altcoin\Client as AltcoinClient;

$altcoind = new AltcoinClient([
    'scheme'        => 'http',                 // optional, default http
    'host'          => 'localhost',            // optional, default localhost
    'port'          => 8332,                   // optional, default 8332
    'user'          => 'rpcuser',              // required
    'password'      => 'rpcpassword',          // required
    'ca'            => '/etc/ssl/ca-cert.pem',  // optional, for use with https scheme
    'preserve_case' => false,                  // optional, send method names as defined instead of lowercasing them
]);

然后使用魔法调用在Bitcoin Core API文档中定义的方法

/**
 * Get block info.
 */
$block = $altcoind->getBlock('000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f');

$block('hash')->get();     // 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
$block['height'];          // 0 (array access)
$block->get('tx.0');       // 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
$block->count('tx');       // 1
$block->has('version');    // key must exist and CAN NOT be null
$block->exists('version'); // key must exist and CAN be null
$block->contains(0);       // check if response contains value
$block->values();          // array of values
$block->keys();            // array of keys
$block->random(1, 'tx');   // random block txid
$block('tx')->random(2);   // two random block txid's
$block('tx')->first();     // txid of first transaction
$block('tx')->last();      // txid of last transaction

/**
 * Send transaction.
 */
$result = $altcoind->sendToAddress('mmXgiR6KAhZCyQ8ndr2BCfEq1wNG2UnyG6', 0.1);
$txid = $result->get();

/**
 * Get transaction amount.
 */
$result = $altcoind->listSinceBlock();
$altcoin = $result->sum('transactions.*.amount');
$satoshi = \DOne\Altcoin\to_satoshi($altcoin);

要发送异步请求,请将异步添加到方法名称中

$altcoind->getBlockAsync(
    '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f',
    function ($response) {
        // success
    },
    function ($exception) {
        // error
    }
);

您还可以使用请求方法发送请求

/**
 * Get block info.
 */
$block = $altcoind->request('getBlock', '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f');

$block('hash');            // 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
$block['height'];          // 0 (array access)
$block->get('tx.0');       // 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
$block->count('tx');       // 1
$block->has('version');    // key must exist and CAN NOT be null
$block->exists('version'); // key must exist and CAN be null
$block->contains(0);       // check if response contains value
$block->values();          // get response values
$block->keys();            // get response keys
$block->first('tx');       // get txid of the first transaction
$block->last('tx');        // get txid of the last transaction
$block->random(1, 'tx');   // get random txid

/**
 * Send transaction.
 */
$result = $altcoind->request('sendtoaddress', 'mmXgiR6KAhZCyQ8ndr2BCfEq1wNG2UnyG6', 0.06);
$txid = $result->get();

或使用requestAsync方法进行异步调用

$altcoind->requestAsync(
    'getBlock',
    '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f',
    function ($response) {
        // success
    },
    function ($exception) {
        // error
    }
);

多钱包RPC

您可以使用wallet($name)函数进行多钱包RPC调用

/**
 * Get wallet2.dat balance.
 */
$balance = $altcoind->wallet('walletfilename.dat')->getbalance();

echo $balance->get(); // 0.10000000

异常

  • DOne\Altcoin\Exceptions\BadConfigurationException - 在客户端配置错误时抛出。
  • DOne\Altcoin\Exceptions\BadRemoteCallException - 在从守护进程获取错误消息时抛出。
  • DOne\Altcoin\Exceptions\ConnectionException - 在守护进程连接错误(例如超时)时抛出。

助手

包提供以下助手以帮助处理值。

to_altcoin()

将satoshi中的值转换为altcoin。

echo DOne\Altcoin\to_altcoin(100000); // 0.00100000

to_satoshi()

将altcoin中的值转换为satoshi。

echo DOne\Altcoin\to_satoshi(0.001); // 100000

to_ubtc()

将altcoin中的值转换为ubtc/bits。

echo DOne\Altcoin\to_ubtc(0.001); // 1000.0000

to_mbtc()

将altcoin中的值转换为mbtc。

echo DOne\Altcoin\to_mbtc(0.001); // 1.0000

to_fixed()

截断浮点值到无舍入的精度。

echo DOne\Altcoin\to_fixed(0.1236, 3); // 0.123

许可

此产品在MIT许可下分发。