Skip to content

v0.4.0

Latest
Compare
Choose a tag to compare
@mkysel mkysel released this 09 Jun 19:28
· 17 commits to main since this release
0d18054

⚠️ Important Notes

  • Contract Changes: Upgrading to v0.4.0 requires pointing your nodes to new smart contracts. Refer to the xmtpd-infrastructure repo for updated contract addresses.
  • Pruning Support: This release introduces database pruning. You can now configure data retention limits and automatically discard older messages.

🧩 Major Features

Multi-Chain Indexing

Indexing support has been expanded to multiple chains, including smart chain selection, deployment-aware block tracking, and support for parameterized chain registries.

Parameter Registry Integration

The RateRegistry and NodeRegistry contracts now integrate with a central Parameter Registry, simplifying on-chain configuration and unifying admin flows.

Pruning and Data Retention

Initial support for node-side data pruning. Operators can configure how much data to retain and initiate pruning cycles via the new CLI tooling.

Improved Indexer + Blockchain Metrics

Even deeper visibility into system behavior with new metrics for the indexer, blockchain backfill, congestion, and storage layer performance.

gRPC Improvements

  • gRPC API responses are now sanitized, hiding internal error messages.
  • New API: GetNewestEnvelope
  • New API: GetReaderNode for payers

CLI & Dev Enhancements

  • Added get rates and prune commands to the CLI
  • Docker Compose and DevContainer improvements for easier local development
  • Stress test tooling now includes TPS tracking and concurrency limits

📊 Metrics Additions

  • Payer gRPC client metrics
  • Indexer stress test metrics (TPS, envelope rate)
  • MLS method invocation statistics
  • OpenMetrics negotiation format now supported

Stay tuned for the updated Grafana dashboards that incorporate these.

All PR's

  • Reentrant add node to network by @fbac in #707
  • Add from-0.3.0 upgrade tests by @mkysel in #710
  • No more image baking (lets leave that to the bakeoff shows) by @mkysel in #711
  • Bump github.com/prometheus/client_golang from 1.21.0 to 1.22.0 in the gomod-updates group by @dependabot in #714
  • chore: fix some struct names in comment by @fivecut in #716
  • Bump golang.org/x/net from 0.36.0 to 0.38.0 by @dependabot in #718
  • chore: fix comment by @closeobserve in #713
  • Bump golang.org/x/net from 0.36.0 to 0.38.0 in /tools by @dependabot in #717
  • Bump the gomod-updates group with 2 updates by @dependabot in #724
  • Generate metrics catalog by @mkysel in #719
  • Sanitize gRPC API error responses to prevent exposure of internal error details in the logging interceptor by @mkysel in #728
  • Add pkg merkle by @fbac in #712
  • Fix docker down by @mkysel in #729
  • fix err logging_test.go by @sky-coderay in #731
  • Expose MLS method invocation statistics by @mkysel in #730
  • docs(readme): add license and twitter badge by @Ocheretovich in #732
  • CalculateBalanceNodesCount to handle int by @fbac in #733
  • Add Prometheus metrics to Payer gRPC client operations and consolidate MLS validation service initialization by @mkysel in #735
  • ci: bump actions/checkout to v4 by @dizer-ti in #737
  • Add DevContainer setup by @neekolas in #723
  • Even more indexer/blockchain metrics by @mkysel in #736
  • Add poor's man identity updates stress test by @fbac in #738
  • Handle concurrency limiter in stress test and dump analytics by @mkysel in #739
  • Add TPS to stress test by @mkysel in #740
  • Do not block forever on read-your-own-commits by @mkysel in #743
  • Fix issue with identity update storer by @neekolas in #744
  • Do not require 0x prefix for stress tests by @mkysel in #742
  • Add GetNewestEnvelope API Endpoint by @neekolas in #741
  • Add more test coverage for pkg/merkle by @fbac in #734
  • Bump the gomod-updates group with 2 updates by @dependabot in #746
  • Teach CLI the get rates command by @mkysel in #748
  • Add dummy chain watcher by @fbac in #747
  • Add expiry field to gateway envelopes by @mkysel in #752
  • Clarify error to help with support by @mkysel in #757
  • Manual protos build by @mkysel in #758
  • Update docker-compose-register.yml to use latest xmtpd-cli version (sha-a96bf04) by @finnfisher-de in #766
  • Add scaffolding for XMTPD DB prune / data retention by @mkysel in #772
  • Add GetReaderNode payer API endpoint by @fbac in #771
  • Remove nightly PAT by @fbac in #773
  • Update Protos by @github-actions in #775
  • Bump the gomod-updates group with 2 updates by @dependabot in #776
  • Set payer expiration all the way through from client to XMTPD database by @mkysel in #769
  • Initial prune implementation by @mkysel in #774
  • Update Protos by @github-actions in #782
  • Add multi-chain support by @fbac in #755
  • Derive DB name from primary key in pruner by @mkysel in #778
  • Test pruner and refactor newDB by @mkysel in #788
  • Migrate test cleanup functions to use Go's built-in t.Cleanup mechanism across test utilities and test files by @mkysel in #789
  • Add prune release to rel from tag by @mkysel in #791
  • Fix junit-upload-github-action deprecation warning by @mkysel in #790
  • Fix deployments by @fbac in #793
  • Require MLS validation service by @fbac in #798
  • feat: Matched Sequential Proof Implementation by @deluca-mike in #749
  • Validate hex addresses by @fbac in #801
  • refactor: replace context.WithCancel with t.Context in tests by @pengqiseven in #799
  • Modular multi-chain indexer by @fbac in #800
  • Enable openmetrics negotiation format by @mkysel in #809
  • Rework compose up/down by @mkysel in #822
  • Speed up generation by removing all cruft from builder by @mkysel in #821
  • Use pre-baked image for all anvil-based tests by @mkysel in #823
  • Propagate ctx cancellation to IndexLogs by @fbac in #811
  • Fix problematic tests using risky pattern by @mkysel in #824
  • Add header to metrics catalog by @mkysel in #825
  • Remove paths from CI by @mkysel in #826
  • Speed up CLI container construction in dev/up by @mkysel in #829
  • Migrate RateRegistry and NodeRegistry contracts to 0.4.0 version with parameter registry integration and updated data types by @mkysel in #810
  • Add parameter registry ABI and implement set maxcanonical by @mkysel in #830
  • Migrate to V4 rates contract by @mkysel in #833
  • Allow operator defined backfill block size by @mkysel in #834
  • Update structure of docs by @jhaaaa in #806
  • Do not require BIN for abigen by @mkysel in #853
  • Use 040 contracts with ABI and new addresses by @mkysel in #854
  • Update Protos by @github-actions in #856
  • Add settlement chain and PayerRegistry indexing by @fbac in #847
  • Start indexing at custom block height by @fbac in #827
  • Load env config via JSON by @mkysel in #855
  • Bump github.com/docker/docker from 28.1.1+incompatible to 28.2.2+incompatible in the gomod-updates group by @dependabot in #861
  • Update Protos by @github-actions in #859
  • Move to 0.4.3 contracts by @mkysel in #864
  • Revamped reorg detection by @fbac in #858
  • Refactor large options configs using the functional options pattern by @mkysel in #866
  • Introduce XDBG integration tests by @mkysel in #865
  • Use JSON-RPC wrappers only by @fbac in #871
  • Honor start at deployment blocks by @fbac in #873
  • Check wallet balance before attempting to execute CLI commands by @mkysel in #874
  • Set proper log levels by @fbac in #875
  • Nuke RpcURL by @fbac in #876
  • Size backfill buffers according to expected messages by @fbac in #877
  • Estimate gas before sending tx by @fbac in #878
  • Bump the gomod-updates group with 4 updates by @dependabot in #879
  • Minor migrator cleanup by @mkysel in #881

New Contributors

Full Changelog: v0.3.0...v0.4.0