Skip to content

Tx logs: Rust batch and block kernel integration #3832

Description

@partylikeits1983

Part of #3803. Depends on tx log integration in #3831 and the types and commitment specification in #3830.

Preserve and validate tx log payloads throughout the Rust batch and block kernels.

  1. Include complete log records alongside transaction headers in the Rust data types, construction logic, serialization, and proving interfaces used by the batch and block kernels.
  2. Validate that each transaction's log records match its log commitment. Reject missing or unexpected log collections and duplicate associations with a transaction.
  3. Preserve transaction associations and emission order so that block bodies contain the public log data required for historical retrieval, including logs from private transactions.
  4. Enforce the transaction limits from Tx logs: Rust types and commitment specification #3830 and define aggregate log count and payload limits for batches and blocks. The transaction payload budget is 16 KiB, with at most 64 logs and 8 KiB per individual payload; metadata is additional and bounded by the record format and count limits.
  5. Verify that the updated transaction IDs bind logs through the existing batch and block transaction commitments, without a separate log root. Preserve replay protection and transaction conflict checks.

Tests should cover serialization and deserialization, payload preservation, invalid transaction associations, commitment mismatches, and aggregate size limits.

This issue covers Rust only. Batch and block kernel MASM, recursive verification changes, node storage and query APIs, and SDK integration are outside its scope.

edit: Renamed transaction events to tx logs and aligned the integration scope with #3830 and #3831, including the 16 KiB transaction payload budget and public logs from both public and private transactions.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions