Skip to main content

Epoch

Operation of the IOTA network is temporally partitioned into non-overlapping epochs, and the network aims to keep epochs roughly the same duration as each other. During a particular epoch the following data is fixed:

  • the protocol version
  • the reference gas price
  • the set of participating validators
type Epoch {
epochId: UInt53!
referenceGasPrice: BigInt
validatorSet: ValidatorSet
startTimestamp: DateTime!
endTimestamp: DateTime
totalCheckpoints: UInt53
totalTransactions: UInt53
totalGasFees: BigInt
totalStakeRewards: BigInt
fundSize: BigInt
netInflow: BigInt
fundInflow: BigInt
fundOutflow: BigInt
protocolConfigs: ProtocolConfigs!
storageFund: StorageFund
safeMode: SafeMode
systemStateVersion: UInt53
iotaTotalSupply: BigInt
iotaTreasuryCapId: IotaAddress
systemParameters: SystemParameters
liveObjectSetDigest: String
checkpoints(
first: Int
after: String
last: Int
before: String
): CheckpointConnection!
transactionBlocks(
first: Int
after: String
last: Int
before: String
filter: TransactionBlockFilter
scanLimit: Int
): TransactionBlockConnection!
}

Fields​

Epoch.epochId ● UInt53! non-null scalar​

The epoch's id as a sequence number that starts at 0 and is incremented by one at every epoch change.

Epoch.referenceGasPrice ● BigInt scalar​

The minimum gas price that a quorum of validators are guaranteed to sign a transaction for.

Epoch.validatorSet ● ValidatorSet object​

Validator related properties, including the active validators.

For epochs other than the current the data provided refer to the start of the epoch.

Epoch.startTimestamp ● DateTime! non-null scalar​

The epoch's starting timestamp.

Epoch.endTimestamp ● DateTime scalar​

The epoch's ending timestamp.

Epoch.totalCheckpoints ● UInt53 scalar​

The total number of checkpoints in this epoch.

Epoch.totalTransactions ● UInt53 scalar​

The total number of transaction blocks in this epoch.

Epoch.totalGasFees ● BigInt scalar​

The total amount of gas fees (in NANOS) that were paid in this epoch.

Epoch.totalStakeRewards ● BigInt scalar​

The total NANOS rewarded as stake.

Epoch.fundSize ● BigInt scalar​

The storage fund available in this epoch. This fund is used to redistribute storage fees from past transactions to future validators.

Epoch.netInflow ● BigInt scalar​

The difference between the fund inflow and outflow, representing the net amount of storage fees accumulated in this epoch.

Epoch.fundInflow ● BigInt scalar​

The storage fees paid for transactions executed during the epoch.

Epoch.fundOutflow ● BigInt scalar​

The storage fee rebates paid to users who deleted the data associated with past transactions.

Epoch.protocolConfigs ● ProtocolConfigs! non-null object​

The epoch's corresponding protocol configuration, including the feature flags and the configuration options.

Epoch.storageFund ● StorageFund object​

IOTA set aside to account for objects stored on-chain, at the start of the epoch. This is also used for storage rebates.

Epoch.safeMode ● SafeMode object​

Information about whether this epoch was started in safe mode, which happens if the full epoch change logic fails for some reason.

Epoch.systemStateVersion ● UInt53 scalar​

The value of the version field of 0x5, the 0x3::iota::IotaSystemState object. This version changes whenever the fields contained in the system state object (held in a dynamic field attached to 0x5) change.

Epoch.iotaTotalSupply ● BigInt scalar​

The total IOTA supply.

Epoch.iotaTreasuryCapId ● IotaAddress scalar​

The treasury-cap id.

Epoch.systemParameters ● SystemParameters object​

Details of the system that are decided during genesis.

Epoch.liveObjectSetDigest ● String scalar​

A commitment by the committee at the end of epoch on the contents of the live object set at that time. This can be used to verify state snapshots.

Epoch.checkpoints ● CheckpointConnection! non-null object​

The epoch's corresponding checkpoints.

Epoch.checkpoints.first ● Int scalar​
Epoch.checkpoints.after ● String scalar​
Epoch.checkpoints.last ● Int scalar​
Epoch.checkpoints.before ● String scalar​

Epoch.transactionBlocks ● TransactionBlockConnection! non-null object​

The epoch's corresponding transaction blocks.

scanLimit restricts the number of candidate transactions scanned when gathering a page of results. It is required for queries that apply two or more complex filters (on function, affected address, recipient, input object, changed object, or wrapped or deleted object), and can be at most serviceConfig.maxScanLimit. A kind filter cannot be combined with any of them.

When the scan limit is reached the page will be returned even if it has fewer than first results when paginating forward (last when paginating backwards). If there are more transactions to scan, pageInfo.hasNextPage (or pageInfo.hasPreviousPage) will be set to true, and PageInfo.endCursor (or PageInfo.startCursor) will be set to the last transaction that was scanned as opposed to the last (or first) transaction in the page.

Requesting the next (or previous) page after this cursor will resume the search, scanning the next scanLimit many transactions in the direction of pagination, and so on until all transactions in the scanning range have been visited.

By default, the scanning range consists of all transactions in this epoch.

DEPRECATION NOTICE: Support for the combination of two or more complex filters as discussed above will stop with the v1.38 release. scanLimit will thus become obsolete and will be removed as well.

Epoch.transactionBlocks.first ● Int scalar​
Epoch.transactionBlocks.after ● String scalar​
Epoch.transactionBlocks.last ● Int scalar​
Epoch.transactionBlocks.before ● String scalar​
Epoch.transactionBlocks.filter ● TransactionBlockFilter input​
Epoch.transactionBlocks.scanLimit ● Int deprecated scalar​
DEPRECATED

scanLimit will be removed with v1.38, along with the support for combining complex filters.

Returned By​

epoch query

Member Of​

ChangeEpochTransaction object ● ChangeEpochTransactionV2 object ● Checkpoint object ● ConsensusCommitPrologueTransaction object ● RandomnessStateUpdateTransaction object ● StakedIota object ● TransactionBlock object ● TransactionBlockEffects object ● TransactionDenyRulesUpdateTransaction object