hardcastle / xrpl_php
用于 XRP 账本(XRP Ledger)的 PHP 客户端
0.9.4
2024-06-25 14:00 UTC
Requires
- ext-bcmath: *
- brick/math: ^0.11.0
- codedungeon/php-cli-colors: ^1.12
- guzzlehttp/guzzle: ^7.4
- hardcastle/buffer: ^0.2.0
- php-ds/php-ds: ^1.4
- simplito/bn-php: ^1.1.4
- simplito/elliptic-php: ^1.0.12
Requires (Dev)
- donatj/mock-webserver: ^2.6.2
- phpunit/phpunit: ^10.3.1
- vimeo/psalm: ^5.14
- dev-master
- 0.9.4
- 0.9.3
- 0.9.2
- v0.9.1
- v0.9.0
- v0.8.8
- v0.8.7
- v0.8.6
- v0.8.5
- v0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.6
- v0.7.5
- v0.7.4
- v0.7.3
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.5-alpha
- v0.6.4-alpha
- v0.6.3-alpha
- v0.6.2-alpha
- v0.6.1-alpha
- v0.6.0-alpha
- v0.5.0-alpha
- v0.4.0-alpha
- dev-issue/base-response-return-type
- dev-tech-stack-file
- dev-issue/remove-optional-dependencies
This package is auto-updated.
Last update: 2024-09-25 14:32:07 UTC
README
PHP SDK / 客户端库,用于与 XRP 账本交互。它提供了 JavaScript 和 Java 版本中所有可用的功能,强调稳健性和代码可读性,对于那些有兴趣深入了解 XRPL 开发细节的人来说非常有用。
功能
- 管理密钥和创建测试凭证
- 向 XRP 账本提交交易
- 发送请求以观察账本
- 创建和签署交易(例如付款)以修改账本状态
- 将账本数据解析为更方便的格式
安装
此库可以通过 Composer 安装
composer require hardcastle/xrpl_php
要求
此库需要 PHP 8.1 或更高版本以及 PHP 扩展 GMP。
示例
“快速入门”示例
这些示例复制了 JavaScript 快速入门示例 的功能
php 1.get-accounts-send-xrp.php php 2.create-trustline-send-currency.php php 3.mint-nfts.php
如何使用示例
这些示例展示了如何使用关键功能
php examples/client.php php examples/fundWallet.php php examples/payment.php php examples/token-create.php // IOU + Token + CBDC - Wallet Matrix with Trustlines etc...
核心示例
这些示例可以用来探索 XRPL 核心功能
php examples/internal/address-codec.php php examples/internal/binary-codec.php etc...
通过 Docker 运行项目
- 在项目目录中,启动项目并打开一个 shell
docker-compose up -d docker-compose exec -u 0 php bash
- 在容器 shell 中,安装 composer 依赖项
composer install
运行测试
您可以使用以下命令运行测试
./vendor/bin/phpunit tests
您可以使用以下命令使用 psalm 进行静态代码分析
./vendor/bin/psalm --config=psalm.xml
自己试试
发出一个 账户信息请求
require __DIR__.'/../vendor/autoload.php'; use Hardcastle\XRPL_PHP\Client\JsonRpcClient; use Hardcastle\XRPL_PHP\Models\Account\AccountObjectsRequest; // Those will be purged from the Testnet in regular intervals, you can use fundWallet() // to generate prefunded Wallets on the Testnet $testnetAccountAddress = 'raKXrkYfbh4Uzqc481jTXbaKsWnW5XRMjp'; $client = new JsonRpcClient("https://s.altnet.rippletest.net:51234"); $request = new AccountObjectsRequest( account: $testnetAccountAddress, ledgerIndex: 'validated', deletionBlockersOnly: true ); // Using synchronous request $response = $client->syncRequest($request); $json = json_decode($response->getBody()); print_r($json); // Using asynchronous request // $response = $client->request($request)->wait(); // $json = json_decode($response->getBody()); // print_r($json);
进行付款
// Use your own credentials here: $testnetStandbyAccountSeed = 'sEdTcvQ9k4UUEHD9y947QiXEs93Fp2k'; $testnetStandbyAccountAddress = 'raJNboPDvjLrYZropPFrxvz2Qm7A9guEVd'; $standbyWallet = Wallet::fromSeed($testnetStandbyAccountSeed); // Use your own credentials here: $testnetOperationalAccountSeed = 'sEdVHf8rNEaRveJw4NdVKxm3iYWFuRb'; $testnetOperationalAccountAddress = 'rEQ3ik2kmAvajqpFweKgDghJFZQGpXxuRN'; $operationalWallet = Wallet::fromSeed($testnetStandbyAccountSeed); $client = new JsonRpcClient("https://s.altnet.rippletest.net:51234"); $tx = [ "TransactionType" => "Payment", "Account" => $testnetStandbyAccountAddress, "Amount" => xrpToDrops("100"), "Destination" => $testnetOperationalAccountAddress ]; $autofilledTx = $client->autofill($tx); $signedTx = $standbyWallet->sign($autofilledTx); $txResponse = $client->submitAndWait($signedTx['tx_blob']); $result = $txResponse->getResult(); if ($result['meta']['TransactionResult'] === 'tecUNFUNDED_PAYMENT') { print_r("Error: The sending account is unfunded! TxHash: {$result['hash']}" . PHP_EOL); } else { print_r("Token payment done! TxHash: {$result['hash']}" . PHP_EOL); }