1. Resources

Changelog

Carbon's release history, from 0.3.0 to 2.0.0, with the breaking changes and migration notes for each version.

On this page

What changed in each Carbon release. 2.0.0 comes from CHANGELOG.md at the v2.0.0 tag; earlier versions come from the GitHub release notes, which are the only record for them. Numbers like (#587) are pull requests in sevenlabs-hq/carbon. To upgrade from Carbon 1, follow Migrate to 2.0.

2.0.0 (2026-09-04)#

Carbon 2.0 is the Agave 4 compatibility release. It upgrades the supported Solana dependency cohort, adds end-to-end Transaction V1 handling, and standardizes account-closure delivery without introducing the larger datasource and pipeline redesign planned for Carbon 3.

Highlights#

  • Upgraded the workspace to the Agave 4.2-compatible Solana crates and Rust 1.96.1 (#587).
  • Added Transaction V1 conversion and instruction traversal, including runtime inner instructions and V1 account metadata.
  • Added strict Yellowstone protobuf conversion for legacy, V0 and V1 transactions.
  • Classified zero-lamport account updates as Update::AccountDeletion consistently while preserving the final Account state.
  • Added an optional starting slot to Helius LaserStream (#585) and opt-in tonic client reconnection to Yellowstone (#589).
  • Added native Codama event rendering (#575, #578), event-CPI discriminator exports (#583), encoded discriminator handling, and base58 instruction-metadata serialization (#576).
  • Hardened instruction handling for short log events (#582) and invalid CPI stack heights (#584), and sanitized exported Prometheus metric names (#570).
  • Updated projects generated by @sevenlabs-hq/carbon-cli and @sevenlabs-hq/carbon-codama-renderer to depend on Carbon 2 crates.
  • Corrected the CLI package's ESM and CommonJS export paths.
  • Made the CLI reject GraphQL scaffolds without the Postgres storage layer they require.
  • Fixed template lookup through the renderer's CommonJS entry point.
  • Raised the npm packages' runtime requirement to Node.js 20.18.0.

Also in this release#

  • carbon-token-program-decoder decodes accounts with the SPL Pack layout (#569).
  • Yellowstone gRPC datasource: accepts a ping as the first event after a disconnect (#573), backs off between failed subscribe attempts (#581), and keeps the subscription filters on the ping resubscribe (#588).
  • carbon-helius-atlas-ws-datasource uses the latest published Helius SDK crate (#567).

Migration from Carbon 1#

Toolchain and dependencies#

Carbon 2 requires Rust 1.96.1. The companion CLI, renderer and version-registry packages require Node.js 20.18.0 or newer. Update every directly declared Carbon crate to 2.0.0 and keep direct Solana dependencies compatible with the Agave 4.2 cohort. Do not mix Carbon 2 with Carbon 1 datasource or decoder crates in one dependency graph.

If Carbon types appear in your public API, update imports and fix type mismatches after resolving the new Solana crates. A single version of each Solana type crate should resolve in the final graph.

Transaction source configuration#

Caller-owned RPC block configurations must opt into Transaction V1 and request a binary transaction encoding. Carbon cannot reconstruct the original transaction from Json or JsonParsed payloads.

Rust
RpcBlockSubscribeConfig {
    encoding: Some(UiTransactionEncoding::Base64),
    transaction_details: Some(TransactionDetails::Full),
    max_supported_transaction_version: Some(1),
    ..RpcBlockSubscribeConfig::default()
}

Use the equivalent fields on RpcBlockConfig when constructing RpcBlockCrawler. Carbon's RPC transaction crawler and Helius GTFA datasource set V1 and Base64 internally.

For Helius Atlas transaction subscriptions, override the SDK's JSON-parsed default and keep V1 enabled:

Rust
TransactionSubscribeOptions {
    encoding: Some(UiEnhancedTransactionEncoding::Base64),
    max_supported_transaction_version: Some(1),
    ..TransactionSubscribeOptions::default()
}

Account deletions#

AccountDeletion now contains the source's final account: Account. Custom datasources should construct an AccountUpdate and call into_update() so every zero-lamport account is normalized at the same boundary.

The former account_deletions_tracked constructor argument and fields were removed. Remove that argument when constructing:

  • HeliusWebsocket
  • LaserStreamGeyserClient
  • YellowstoneGrpcGeyserClient
  • StreamMessageClient

If you construct AccountDeletion directly, provide its new account field.

Datasource configuration changes#

  • LaserStreamClientConfig::new has a new trailing from_slot: Option<u64> argument. Pass None to preserve the previous starting behavior, or use LaserStreamClientConfig::default() and set the field.
  • Yellowstone tonic client reconnection is disabled by default. Opt in with YellowstoneGrpcClientConfig::with_reconnect(ReconnectConfig) when the upstream supports replay appropriate for your pipeline.

SPL Token account helpers#

The Mint::decode, Multisig::decode and Token::decode convenience methods in carbon-token-program-decoder were removed. Direct callers should unpack with solana_program_pack::Pack and convert the result:

Rust
let token = spl_token_interface::state::Account::unpack(data)
    .ok()
    .map(carbon_token_program_decoder::accounts::token::Token::from);

Normal decoding through TokenProgramDecoder requires no special migration.

The step-by-step version of this section, with before-and-after code, is Migrate to 2.0.

Carbon 2 datasource set#

The Carbon 2 publication contains these twelve datasource crates:

  • Helius Atlas WS, GPA V2, GTFA and LaserStream
  • RPC block crawler, block subscribe, GPA, program subscribe and transaction crawler
  • Stream message
  • Validator snapshot
  • Yellowstone gRPC

carbon-jito-shredstream-grpc-datasource and carbon-jetstreamer-datasource are not published on the 2.0 line. Jito ShredStream does not yet support Transaction V1, while Jetstreamer does not yet support the Solana v4 stack. Existing versions remain available, but they must not be selected as Carbon 2 dependencies.

1.0.0 (2026-06-04)#

The first stable release: a core refactor with atomic metrics, a filtering redesign, versioned decoders and CPI events, four new datasources, and regenerated decoders. Release notes.

Core#

  • Atomic metrics (#531) and datasource-level metrics flushing (#538).
  • Filtering redesign (#534).
  • Versioned decoders (#535).
  • Transaction pipe refactor (#537) and performance updates (#532).
  • ArrangeAccounts refactor (#529).
  • CPI events support (#550).
  • Transaction index field on TransactionUpdate and TransactionMetadata (#503).
  • Datasource disconnection tracking with gap detection (#471).
  • Better identification of writable accounts (#542).
  • Precompile offsets handled in instruction log extraction (#526).
  • Consistency pass and workspace doc comments (#562).
  • Rust toolchain 1.88.0 (#488).

Datasources#

  • New: Jetstreamer (#487), RPC GPA (#492), Helius GPA v2 (#493), Helius GTFA (#505) and validator snapshot (#497).
  • Helius WebSocket: configurable timeouts and reconnection on idle transaction streams (#507).

Decoders#

  • New: Onchain Labs DEX router v1 (#518) and v2 (#519), Jupiter Lend Liquidity (#524).
  • Optional base58 serialization for Pubkey fields in decoder structs (#514).
  • All decoders regenerated with the new generator (#540) and updated from the latest IDLs (#564).
  • Fixes: Token-2022 accounts without extensions (#510) and an extensions panic (#513); Pump.fun, PumpSwap and Pump fees decoders (#517, #545), including OptionBool deserialization (#555, #556); program ID validation in the Meteora DBC decoder (#516); Meteora DAMM v2 from the latest IDL (#522); Orca Whirlpool event discriminator (#547); Jupiter swap (#490); bugs found in a decoder survey (#565).

CLI and tooling#

  • The CLI generates workspace decoders (#539) and passes clippy on generated decoders (#536); CI fixes for generated decoders and indexers (#489).
  • Packages: removed an unused base64 dependency and made serde-big-array conditional (#523).
  • New examples (#544, #558).
  • Corrected path typos in workspace.dependencies (#557).

0.12.0 (2025-11-27)#

Release notes.

  • Upgraded the Solana crates (#435, #470, #482) and other outdated dependencies (#474).
  • Added the instruction_decoder_collection_fast macro (#447).
  • Fixed the filter in decode_log_events() (#448).
  • New decoders: Bonkswap (#450), PancakeSwap (#462), DFlow aggregator v4 (#480), Swig (#483).
  • Pump.fun: create_v2 (#465) and buy_exact_sol_in (#467) instructions. PumpSwap: buy_exact_quote_in (#466, #473) and the is_mayhem_mode pool field (#472).
  • Updated Meteora DAMM v2 (#457) and fixed the Token-2022 decoder with extensions (#479).
  • CLI: code generation enhancements and fixes (#453, #458, #460), BorshDeserialize instead of CarbonDeserialize in generated code (#485), README (#451).

0.11.0 (2025-10-18)#

Release notes.

  • New Codama renderer and a new Carbon CLI (#386).
  • Helius LaserStream datasource with replay (#433).
  • Circle CCTP decoders (#444).
  • Raydium AMM v4 SwapBaseInV2 and SwapBaseOutV2 (#441); Jupiter swap decoder update (#438).
  • Rust tuple structs in IDLs; track_volume field type updated in Pump.fun and PumpSwap (#442).
  • Attributes required by instruction_decoder_collection (#439).
  • Associated Token Account decoder accepts empty data as Create (#437).

0.10.0 (2025-09-16)#

Release notes.

  • Generic stream message datasource (#372).
  • Log events extraction (#413).
  • Optional accounts in decoders (#370).
  • Account updates carry the transaction signature (#398).
  • Configurable Yellowstone gRPC client (#371, #405).
  • RPC transaction crawler fix for newly sent transactions (#380).
  • New decoders: WaveBreak (#390), Bubblegum (#393), Meteora DBC (#407, #409, #410, #424), Heaven (#414), Meteora Vault (#415), Vertigo (#418), Pump fees (#420).
  • Updated decoders: PumpSwap (#385, #389, #430), Pump.fun (#392), Raydium CPMM (#403), Raydium Launchpad (#404), Orca Whirlpool (#406, #408, #416), Token-2022 Scaled UI Amount and Pausable extensions (#382), System program legacy accounts (#401), Metaplex Token Metadata account discriminators (#426).
  • CLI: m and d shortcuts for mainnet-beta and devnet (#431).

0.9.1 (2025-07-18)#

Release notes.

  • The "not all bytes read" warning is now logged at debug level (#361).
  • Discriminators are exported from decoders (#374).
  • Missing derives on Raydium AMM v4 accounts and other types (#373, #379).
  • Boop decoder update (#364).
  • Solana crates locked to ~2.2 (#381).

0.9.0 (2025-07-06)#

Release notes.

  • The Filter trait and DatasourceFilter (#355).
  • The pipeline stops automatically after all datasources complete (#317).
  • Configurable channel sizes (#340).
  • InstructionMetadata::absolute_path (#293).
  • Raw account and instructions returned to processors (#330).
  • Retries in the RPC transaction crawler (#337).
  • Configurable Prometheus metrics port (#350).
  • Yellowstone gRPC block filters (#324) and pipeline cancellation fix (#348).
  • Shutdown clean-up (#341).
  • carbon-fetch-ix for generating transaction fixtures (#305); fixtures and tests for Raydium CLMM, Meteora DLMM and Orca Whirlpool (#303, #297, #347).
  • New decoders: Meteora DAMM v2 (#327, #329), Gavel (#318), Raydium stable swap (#351).
  • Decoder updates and fixes: Pump.fun IDL (#301), Meteora DLMM 0.9.0 (#308), Meteora virtual curve events (#328), PumpSwap owner check (#333), Raydium CPMM PoolState (#339).
  • Linting and a pre-commit hook (#306); examples read RUST_LOG from the environment (#335); rand no longer required for solana-signature and solana-pubkey (#310).

0.8.1 (2025-05-12)#

Release notes.

  • GraphQL server (#284).
  • Postgres support in the Token program decoder (#229).
  • block_hash on transactions for fork detection (#278).
  • Block-only subscriptions (#283).
  • Serialize for DecodedInstruction (#252); IntoIter for NestedInstructions (#289).
  • Nested instructions parsed inside TransactionPipe (#267); faster extract_instructions_with_metadata (#273) and gRPC transaction metadata handling (#261).
  • Lenient deserialization that warns about remaining bytes (#291).
  • Vendored Jito protos (#253); Jito ShredStream deduplication (#257) and is_vote: false (#254).
  • Fixed a duplicate WebSocket connection (#270), account meta is_signer (#274) and the log export used by the proc macro (#292).
  • New decoders: Meteora virtual curve (#256), Boop (#280), Address Lookup Table (#290).
  • Fixes: Jupiter nested empty instructions (#268), Raydium CLMM event discriminators (#294), Meteora DLMM addLiquidityByStrategy2 (#295), doc tests (#281).
  • Pinned rustls 0.23 with the aws_lc_rs crypto provider in an example to stop a startup panic (#260).

0.8.0 (2025-04-18)#

Release notes.

  • Jito ShredStream gRPC datasource (#249).
  • The RPC transaction crawler discovers newly sent transactions (#248).
  • CPI instructions parsed (#221), including the third depth level (#242).
  • Direct Solana crates instead of solana-sdk (#233, #245).
  • serde Serialize and Deserialize derived for generated accounts (#238), with BigArray support (#239).
  • Raydium Launchpad decoder (#250); Pump.fun account layouts and instructions updated (#236).

0.7.0 (2025-03-30)#

Release notes.

  • Bounded update channel (#219), default size 1,000 (#220).
  • RPC block crawler datasource (#222).
  • Meteora Pools (#224) and Virtuals (#225) decoders.
  • Started the move from solana-sdk to direct dependencies (#226).
  • Fixes to the Associated Token Account and System program decoders (#204).

0.6.2 (2025-03-21)#

Release notes.

  • Instruction index in instruction metadata (#216).
  • PumpSwap decoder (#214).
  • Project scaffolding in the CLI (#197).
  • Corrected Raydium CLMM program address (#206).

0.6.1 (2025-03-17)#

Release notes.

  • Interactive CLI (#184).
  • Datasource cancellation token on the pipeline (#198).
  • Program IDs exported from decoders (#203).
  • Several new program decoders (#199); Fluxbeam (#192) and Pump.fun (#195) fixes; Jupiter DCA fixtures and tests (#191).

0.6.0 (2025-03-12)#

Release notes.

  • block_time on TransactionUpdate and TransactionMetadata (#181).
  • carbon-test-utils crate (#167).
  • New decoders: Associated Token Account (#178), OKX DEX (#183), Stake program (#186).
  • Corrected the Jupiter Limit Order 2 program address (#177).
  • A README for every crate (#182), crate keywords and categories (#188), release scripts (#189), Lifinity fixtures and tests (#190).

0.5.1 (2025-02-22)#

Release notes.

  • Decoders pre-filter by program ID (#175) and check accounts (#176).
  • New decoders: Zeta (#168), Phoenix v1 (#169), Lifinity AMM v2 (#170), Stabble stable swap (#171) and weighted swap (#172), Raydium liquidity locking (#173).

0.5.0 (2025-02-20)#

Release notes.

  • Performance optimizations (#120).
  • Codama IDL parsing in the CLI (#136).
  • Dependency fixes, Yellowstone bump and pinned Solana crates (#144, #166).
  • New decoders: Moonshot (#148), Name Service (#151), Token-2022 (#150), Raydium CPMM (#154), Jupiter Perpetuals (#158), Fluxbeam (#159), Drift v2 (#160).
  • Fixes to slice handling and extra remaining-account fields for swaps (#152).
  • Workspace dependencies, lints and formatting (#156).

0.4.1 (2025-02-18)#

Release notes.

  • Reconnection logic for datasources and a cluster option for the Atlas WebSocket datasource (#112).
  • Conventional From traits for instruction extraction (#114).
  • Removed the "pipes against update types" checks (#135).
  • Anchor PDA IDL parsing in the CLI (#124).
  • New decoders: Raydium CLMM (#118), OpenBook v2 (#140); Sharky decoders moved into the repository (#131).
  • Fixes: regenerated Meteora DLMM decoders (#130), Raydium AMM account parsing (#134), mint account in TransferChecked (#138).

0.4.0 (2024-12-19)#

Release notes.

  • Access to the transaction's VersionedMessage on transaction metadata (#106).

0.3.1 (2024-12-02)#

Release notes.

  • CLI code generation for IDLs of native Rust programs (#101).
  • Helius Atlas WebSocket datasource on Helius SDK 0.2.2 (#104).
  • Metaplex decoders regenerated with the fixed CLI for non-Anchor programs (#103).

0.3.0 (2024-11-21)#

Release notes.

Added#

  • A solana_transaction_status::TransactionStatusMeta field on TransactionMetadata (#92).
  • The transaction pipe processor type includes Vec<DecodedInstruction> in its instruction type (#95).
  • Type aliases for processor input types: AccountProcessorInputType, InstructionProcessorInputType, TransactionProcessorInputType (#95).
  • carbon-kamino-lending-decoder and carbon-kamino-vault-decoder.

Changed#

  • Schemas are optional inside transaction pipes (#95).
  • Pipeline-level updates_process_time is measured in both milliseconds and nanoseconds (#96).
  • The RPC block subscribe, RPC program subscribe, Yellowstone gRPC and Helius Atlas WebSocket datasources measure time in nanoseconds instead of milliseconds (#96).
  • ArrangeAccounts::arrange_accounts is a static function on instruction data structs (#97).

Fixed#

  • carbon-raydium-amm-v4-decoder uses the right instruction discriminators and size matching for accounts (#82).
  • System program decoder structs have public fields (#84).
  • Inner instructions are schema-matched (#89).

Your endpoints

Code samples use these instead of the placeholders, so you can copy and run them as they are. They’re stored only in this browser and never sent anywhere.