Skip to main content

CheckpointSummary

Namespace: IotaSdk

A header for a Checkpoint on the IOTA blockchain.

On the IOTA network, checkpoints define the history of the blockchain. They are quite similar to the concept of blocks used by other blockchains like Bitcoin or Ethereum. The IOTA blockchain, however, forms checkpoints after transaction execution has already happened to provide a certified history of the chain, instead of being formed before execution.

Checkpoints commit to a variety of state including but not limited to:

  • The hash of the previous checkpoint.
  • The set of transaction digests, their corresponding effects digests, as well as the set of user signatures which authorized its execution.
  • The object's produced by a transaction.
  • The set of live objects that make up the current state of the chain.
  • On epoch transitions, the next validator committee.

CheckpointSummarys themselves don't directly include all of the above information but they are the top-level type by which all the above are committed to transitively via cryptographic hashes included in the summary. CheckpointSummarys are signed and certified by a quorum of the validator committee in a given epoch in order to allow verification of the chain's state.

BCS

The BCS serialized form for this type is defined by the following ABNF:

checkpoint-summary = u64 ; epoch
u64 ; sequence_number
u64 ; network_total_transactions
digest ; contents_digest
(option digest) ; previous_digest
gas-cost-summary ; epoch_rolling_gas_cost_summary
u64 ; timestamp_ms
(vector checkpoint-commitment) ; checkpoint_commitments
(option end-of-epoch-data) ; end_of_epoch_data
bytes ; version_specific_data
public class CheckpointSummary : ICheckpointSummary, System.IDisposable

Inheritance ObjectCheckpointSummary
Implements ICheckpointSummary, IDisposable
Attributes NullableContextAttribute, NullableAttribute

Constructors

CheckpointSummary(UInt64)

public CheckpointSummary(ulong pointer)

Parameters

pointer UInt64

CheckpointSummary(UInt64, UInt64, UInt64, CheckpointContentsDigest, CheckpointDigest, GasCostSummary, UInt64, CheckpointCommitment[], EndOfEpochData, Byte[])

public CheckpointSummary(ulong epoch, ulong sequenceNumber, ulong networkTotalTransactions, CheckpointContentsDigest contentsDigest, CheckpointDigest? previousDigest, GasCostSummary epochRollingGasCostSummary, ulong timestampMs, CheckpointCommitment[] checkpointCommitments, EndOfEpochData? endOfEpochData, Byte[] versionSpecificData)

Parameters

epoch UInt64

sequenceNumber UInt64

networkTotalTransactions UInt64

contentsDigest CheckpointContentsDigest

previousDigest CheckpointDigest?

epochRollingGasCostSummary GasCostSummary

timestampMs UInt64

checkpointCommitments CheckpointCommitment[]

endOfEpochData EndOfEpochData?

versionSpecificData Byte[]

Methods

Destroy()

public void Destroy()

Dispose()

public void Dispose()

CheckpointCommitments()

Commitments to checkpoint-specific state.

public CheckpointCommitment[] CheckpointCommitments()

Returns

CheckpointCommitment[]

ContentsDigest()

The hash of the CheckpointContents for this checkpoint.

public CheckpointContentsDigest ContentsDigest()

Returns

CheckpointContentsDigest

Digest()

public CheckpointDigest Digest()

Returns

CheckpointDigest

EndOfEpochData()

Extra data only present in the final checkpoint of an epoch.

public EndOfEpochData? EndOfEpochData()

Returns

EndOfEpochData?

Epoch()

Epoch that this checkpoint belongs to.

public ulong Epoch()

Returns

UInt64

EpochRollingGasCostSummary()

The running total gas costs of all transactions included in the current epoch so far until this checkpoint.

public GasCostSummary EpochRollingGasCostSummary()

Returns

GasCostSummary

NetworkTotalTransactions()

Total number of transactions committed since genesis, including those in this checkpoint.

public ulong NetworkTotalTransactions()

Returns

UInt64

PreviousDigest()

The hash of the previous CheckpointSummary.

This will be only be None for the first, or genesis checkpoint.

public CheckpointDigest? PreviousDigest()

Returns

CheckpointDigest?

SequenceNumber()

The height of this checkpoint.

public ulong SequenceNumber()

Returns

UInt64

SigningMessage()

public Byte[] SigningMessage()

Returns

Byte[]

SigningMessageHex()

public string SigningMessageHex()

Returns

String

TimestampMs()

Timestamp of the checkpoint - number of milliseconds from the Unix epoch Checkpoint timestamps are monotonic, but not strongly monotonic - subsequent checkpoints can have same timestamp if they originate from the same underlining consensus commit

public ulong TimestampMs()

Returns

UInt64

VersionSpecificData()

CheckpointSummary is not an evolvable structure - it must be readable by any version of the code. Therefore, in order to allow extensions to be added to CheckpointSummary, we allow opaque data to be added to checkpoints which can be deserialized based on the current protocol version.

public Byte[] VersionSpecificData()

Returns

Byte[]