Release v0.11.0 - #11
Merged
Merged
Conversation
Bitcoin, Litecoin, and Dogecoin are where the platform runs today, not the definition of it; the README says so where it names them.
The mempool table is deliberately excluded from replication (it is node-local, non-deterministic observation state), so an explorer serving from synced replicas has no database path to pending actions. Add a getmempool JSON-RPC method as that path: it returns the node's total mempool tx count (snapshotted each poll cycle), the count of action-carrying rows, and a bounded 500-row window of tx_hash / source / data / first_seen. The method is TTL-cached so an unauthenticated request burst cannot amplify into pooled-connection contention against the block loop. Pending rows also gain a first_seen timestamp (server-side insert default; automatic additive migration) so clients can show when a pending action was first observed.
The mempool table holds a row for EVERY transaction the decoder observes in its node's mempool, not just ones carrying an action: the shared storage gate blanks the payload to an empty string when a money-bearing transaction's action was invalid or unknown, which on a public chain is nearly all of them (measured on testnet: 32 of 32 rows). So the unfiltered count getmempool reported was the size of the whole node mempool, which a consumer publishing it as the pending-action count turns into every unrelated payment on the chain reading as a pending action. The unfiltered row window had a worse failure: on a busy chain all 500 slots fill with actionless rows, so the feed renders empty while real pending actions sit deeper in the table. Both now filter to rows that carry a payload, matching what consumers already keep after decoding.
This service asserts three schema shapes at startup and crash-loops when one is unmet, but none of those migrations said so in a way the deploy tool could read, so a fleet upgrade discovered the requirement as an outage instead of a refusal. Each of the three now carries the deploy-precondition tag in its header, and a registry names the assertion, the file and the symptom so the error an operator reads points at the exact file. A parity test keeps the halves in step: every registered entry must exist, be gated, and carry the tag. Tagging alone would have refused every database built fresh from the schema files, which satisfies all three by construction while recording none of them. The two shape preconditions that were missing are added alongside, so such a database records what is already true instead of being turned away. The tags are header comments; no executable statement changes. The recorded checksums move with them, so the immutability guard heals forward rather than tripping fleet-wide.
The block-loop reads and the operator log line spelled wire field positions as bare numeric literals beside the indexer-derived constants they must track.
…fixture The fee-destination comment in the vendored coin bundles said the override was env-overridable after it had been restricted to regtest. Those three files are vendored byte-identically across the fleet behind conformance guards, so the correction is propagated rather than applied in one place. Cumulative log-shipper totals were registered as gauges, so a _total-suffixed series read to a scraper as a resettable level and rate() over it was undefined. They are counters now, written through the monotonic setter that refuses a backwards step; buffer depth is a real level and stays a gauge. Vendored through the observability sync script, not hand-edited. The shared roundtrip conformance fixture pinned every carrier lane except the taproot envelope, which was the newest and the only unpinned one.
# Conflicts: # CHANGELOG.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.11.0 for
xchain-decoder. The diff is the release: the version bump, this repo's changelog entry, and any release-time fields the ceremony sets.Changelog entry
Added
getmempoolmethod so remote explorers can read the live mempool, including the node's total unconfirmed count.Changed
Fixed