Skip to content

0.11.0

Choose a tag to compare

@AlexanderBuzz AlexanderBuzz released this 08 Nov 11:52
· 3 commits to master since this release
bf257b6

Xahau is the third chain. It speaks the XRP Ledger's protocol on its own network, so it gets no sibling stack like Stellar: the XRPL classes take the chain as a parameter, every new parameter defaults to XRPL, and the XRPL tests are unchanged. An order can be quoted in XAH, paid by destination tag, synced from Xahau's nodes and settled under the same rule as on the XRPL.

Added

Chain XAHAU. ChainCatalog lists it: label "Xahau", XAH native with 5 places, type xahau-xah-payment, the XRPL account format and checksum, "Destination tag", no issued assets. PaymentIntent knows XAH as its native asset.

Endpoints. Xrpl\XrplClient takes the chain; Xahau's nodes are https://xahau.network/ and https://xahau-test.net/, fixed like the XRP Ledger's. A refused call (any non-2xx, so 429 and 503 too) carries the node's Retry-After in its message; nothing sleeps inside a shop request. Messages name the chain.

Price. Price\XahPriceProvider reads Coingecko (xahau) and the new Price\Oracle\BitrueOracle (XAHUSDT, no key), averaged through the divergence filter like every oracle set. XAH trades on Bitrue alone, so the two feeds report one market: they catch a stale or broken aggregator, not a manipulated market. Bitrue quotes USDT only; an EUR quote rests on Coingecko.

Quote, tables, root. Payment\PaymentIntentService takes the chain and reads the configuration under it; PriceService::getCryptoPriceForOrder() prices XAH like XRP. Xrpl\Schema::tables('XAHAU') and mysql(…, chain: 'XAHAU') describe ledger_direct_xahau_tx and ledger_direct_xahau_destination_tag, the XRPL columns under names of their own, index names carrying xahau. LedgerDirect::create(…, chain: 'XAHAU') passes the chain on; a shop that takes both chains holds two roots with two repositories.

Payment request. On Xahau Payment\PaymentUri adds network=XAHAU or network=XAHAUTESTNET, so Xaman offers the switch when it is set to another network (verified on the Xahau testnet, 2026-11-06). XRPL requests are unchanged.

Contract. INVARIANTS.md has a section "Xahau": names in the record, tables (nothing shared with the XRP Ledger, not even for an account that exists on both), endpoints, oracles, payment request, and the known gaps Remit, Hooks and AccountDelete. docs/testing.md has the Xahau rows; the fixtures under tests/Xahau/fixtures/ are account_tx answers recorded on the Xahau testnet.

Changed

Xrpl\SyncThrottle keys. The chain is part of the key (the same r… address can receive on the XRP Ledger and on Xahau), and the account is in it as a digest: PSR-16 guarantees 64 characters, and a Stellar key spelled out never fit. Prefix ledger-direct.sync.v2; a mark lives five seconds, so nothing carries over. The Stellar root passes STELLAR.

PaymentIntentService refuses an asset the chain does not have with "Unsupported base_asset"; on XRPL the message used to point to quoteAmount().

Fixed

XrplClient::tx() by CTID. A CTID was sent as transaction, which rippled and Xahau read as a malformed hash and refuse with notImpl; it goes as ctid now. The plugins' ledger-direct:xrpl-transaction:lookup --ctid never worked before this. The sync does not use this path.

PriceService rate cache. A cached rate that is not a positive, finite number reads as a miss instead of failing the quote with a division by zero.

Tests

338, 24 of them for Xahau. The opt-in integration suite is unchanged.