brianhenryie/bh-php-monero-explorer

dev-master 2023-06-07 00:52 UTC

This package is auto-updated.

Last update: 2024-04-07 02:42:14 UTC


README

PHP 7.4 PHPCS PSR-12 PHPUnit PHPStan

Monero Explorer PHP Client

A thin, strongly typed PHP SDK for Onion Monero Blockchain Explorer instances' HTTP API, e.g. xmrchain.net.

Monero (XMR) is a private, decentralized cryptocurrency, developed with the goals of privacy and security first, ease of use and efficiency second.

Fetching and parsing JSON is very easy with PHP, so this library's value comes from the typed classes and the documentation in PhpDoc. Please contribute clarifications to functions' purposes.

Use

Before v1.0, function signatures are expected to change as they are properly documented.

composer require --fixed brianhenryie/bh-php-monero-explorer@dev

You also need a PSR-7 implementation and a PSR-17 implementation, the most popular being guzzlehttp/guzzle.

ExplorerApi is a direct mapping of API endpoints to PHP functions.

/** @var Psr\Http\Message\RequestFactoryInterface $requestFactory */
$requestFactory = new \GuzzleHttp\Psr7\HttpFactory();
/** @var Psr\Http\Client\ClientInterface $client */
$client = new \GuzzleHttp\Client();

$explorerApi = new \BrianHenryIE\MoneroExplorer\ExplorerApi( $requestFactory, $client );

/** @var \BrianHenryIE\MoneroExplorer\Model\NetworkInfo $networkInfo */
$networkInfo = $explorerApi->getNetworkInfo()

$lastBlockHeight = $networkInfo->getHeight() - 1;

ExplorerTools extends ExplorerApi to add convenience functions.

$explorerTools = new \BrianHenryIE\MoneroExplorer\ExplorerTools( $requestFactory, $client );

$lastBlockHeight = $explorer->getLastBlockHeight();

Accept a Monero payment

To accept a payment with Monero...

  1. Share payment address with customer
  2. Note the blockchain height at that time
  3. Periodically/progressively check new blocks since then inspecting for payment

See: examples/VerifyingPaymentsReceived.php.

Implementation

Initial class-monero-explorer-tools.php extracted from monero-integrations/monerowp.

Goals:

  • Strongly typed: some types are incomplete, some are deserialized as arrays
  • Unit tested: 100% should be achievable on what is just a thin wrapper
  • Use PSR-7 HTTP client | PSR-17 HTTP factory
  • PhpDoc
  • Short tutorial

Notes

  • API is read-only
  • API responses are JSON formatted using the JSend convention

Composer

The required libraries were chosen due to their robust code coverage:

Acknowledgements