gndlf / xrpl_php
XRP分类账的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:26:11 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); }