Skip to content
This repository was archived by the owner on Jun 10, 2026. It is now read-only.
This repository was archived by the owner on Jun 10, 2026. It is now read-only.

Parse full TransactionData from archive once @mysten/sui/bcs adds missing TransactionKind variants #1

Description

@tamashi095

Context

jun replay fetches checkpoints from the Sui checkpoint archive and decodes them. Currently we decode:

  • CheckpointSummary BCS → timestamp, epoch
  • TransactionEffects BCS → tx digest, status, gas
  • TransactionEvents BCS → events with BCS contents
  • TransactionData BCS → sender, transaction kind, commands

Problem

@mysten/sui/bcs defines TransactionKind with only 4 of 10+ variants:

// SDK (packages/sui/src/bcs/bcs.ts)
export const TransactionKind = bcs.enum('TransactionKind', {
    ProgrammableTransaction: ProgrammableTransaction,
    ChangeEpoch: null,
    Genesis: null,
    ConsensusCommitPrologue: null,
});

The Rust source (sui/crates/sui-types/src/transaction.rs) has:

  • AuthenticatorStateUpdate (variant 4)
  • EndOfEpochTransaction (variant 5)
  • RandomnessStateUpdate (variant 6)
  • ConsensusCommitPrologueV2 (variant 7)
  • ConsensusCommitPrologueV3 (variant 8)
  • ConsensusCommitPrologueV4 (variant 9)
  • ProgrammableSystemTransaction (variant 10)

Every mainnet checkpoint has a V3 or V4 prologue, so bcs.TransactionData.parse() fails on all recent data.

Impact

  • transactions.sender is null for archive-sourced data
  • Can't decode transaction commands/inputs from archive

Action

Once MystenLabs/ts-sdks adds the missing variants, update jun's archive client to decode transaction.bcs.value and populate the sender field.

Upstream issue: https://github.com/MystenLabs/ts-sdks/issues/TBD

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions