gndlf / xrpl_php
PHP Client for the XRP Ledger
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-10-25 14:36:46 UTC
README
PHP SDK / Client Library to interact with the XRP Ledger. It offers all the functionality available in the JavaScript and Java Versions emphasizing robustness and code readability for those interested in looking under the hood and getting into the nitty-gritty of XRPL development.
Features
- Managing keys & creating test credentials
- Submitting transactions to the XRP Ledger
- Sending requests to observe the ledger
- Creating and signing transactions (e.g. Payments) to modify the ledger state
- Parsing ledger data into more convenient formats
Installation
This library is installable via Composer:
composer require hardcastle/xrpl_php
Requirements
This library requires PHP 8.1 or later as well as the PHP extension GMP.
Examples
The "Quickstart" Examples
These examples reproduce the functionality from the JavaScript quickstart examples:
php 1.get-accounts-send-xrp.php php 2.create-trustline-send-currency.php php 3.mint-nfts.php
How-to Examples
These examples show how to use key features:
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...
Core Examples
These examples can be used to explore XRPL core functionality:
php examples/internal/address-codec.php php examples/internal/binary-codec.php etc...
Run the project via Docker
- In the project directory, start the project and open a shell:
docker-compose up -d docker-compose exec -u 0 php bash
- In the container shell, install the composer dependencies:
composer install
Run Tests
You can run the tests with the following command:
./vendor/bin/phpunit tests
You can perform static code analysis with psalm with the following command:
./vendor/bin/psalm --config=psalm.xml
Try it yourself
Issuing an Account Info request:
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);
Making a payment:
// 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); }