Skip to content

feat(iota-core, iota-types): Add advance epoch v4#9424

Merged
cyberphysic4l merged 11 commits intoprotocol-research/feat/score-integration-scoring-functionfrom
protocol-research/feat/score-integration-advance-epoch-v4
Dec 1, 2025
Merged

feat(iota-core, iota-types): Add advance epoch v4#9424
cyberphysic4l merged 11 commits intoprotocol-research/feat/score-integration-scoring-functionfrom
protocol-research/feat/score-integration-advance-epoch-v4

Conversation

@oliviasaa
Copy link
Contributor

@oliviasaa oliviasaa commented Nov 25, 2025

Description of change

Enables the creation of a new version of advance epoch transaction and new advance epoch function in iota-framework to modify rewards based on scores. The existing validator reporting system remains whereby rewards can be slashed entirely when a validator is reported. Now we additionally modulate the rewards with the score provided as an argument to the new version of the advance epoch function.

How the change has been tested

  • Basic tests (linting, compilation, formatting, unit/integration tests)
  • Patch-specific tests (correctness, functionality coverage)
  • I have added tests that prove my fix is effective or that my feature works
  • I have checked that new and existing unit tests pass locally with my changes

Release Notes

  • Protocol: Enables the creation of a new version of advance epoch transaction and new advance epoch function in iota-framework to modify rewards based on scores.
  • Nodes (Validators and Full nodes):
  • Indexer: Enables a new ChangeEpochV4 system transaction which may appear in checkpoints for networks where score_based_rewards protocol config is enabled. Consequently a dependency bump is necessary for iota_data_ingestion_core library consumers (custom indexers) to prevent outages.
  • JSON-RPC:
  • GraphQL:
  • CLI:
  • Rust SDK:
  • REST API:

@vercel
Copy link

vercel bot commented Nov 25, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

6 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
apps-backend Ignored Ignored Preview Dec 1, 2025 2:47pm
apps-ui-kit Ignored Ignored Preview Dec 1, 2025 2:47pm
iota-evm-bridge Ignored Ignored Preview Dec 1, 2025 2:47pm
iota-multisig-toolkit Ignored Ignored Preview Dec 1, 2025 2:47pm
rebased-explorer Ignored Ignored Preview Dec 1, 2025 2:47pm
wallet-dashboard Ignored Ignored Preview Dec 1, 2025 2:47pm

@oliviasaa oliviasaa marked this pull request as ready for review November 25, 2025 08:13
@oliviasaa oliviasaa requested review from a team as code owners November 25, 2025 08:13
@cyberphysic4l cyberphysic4l requested a review from a team as a code owner November 27, 2025 09:31
@cyberphysic4l cyberphysic4l changed the title feat(iota-core, iota-types): Add advance epoch v4 creation feat(iota-core, iota-types): Add advance epoch v4 Nov 27, 2025
Copy link
Member

@alexsporn alexsporn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left small nitpicks, but rest lgtm

@lzpap
Copy link
Member

lzpap commented Nov 28, 2025

Updated the release notes with a warning for the iota_data_ingestion_core consumers. Please keep in mind, that any change in checkpoint contents makes custom indexer deployments break without a dependency update, causing downtime.
For our own indexer it is usually not a problem since we release the new sw together with the node.

Copy link
Contributor

@valeriyr valeriyr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me!
Just in case, some simulation tests are broken, but probably it is ok for this PR, since I don't see the snapshots update included that is required for ChangeEpochV4 execution.

self.feature_flags.score_based_rewards
let score_based_rewards = self.feature_flags.score_based_rewards;
assert!(
score_based_rewards || self.scorer_version.is_none(),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
score_based_rewards || self.scorer_version.is_none(),
!score_based_rewards || self.scorer_version.is_some(),

Just to double-check the condition, from the related message, it looks like we need to check that scorer_version is set when score_based_rewards is enabled.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right, thanks for catching that.

Base automatically changed from protocol-research/feat/score-integration-report-creation to protocol-research/feat/score-integration-scoring-function December 1, 2025 14:36
…on' into protocol-research/feat/score-integration-advance-epoch-v4
@cyberphysic4l cyberphysic4l merged commit 2ad7814 into protocol-research/feat/score-integration-scoring-function Dec 1, 2025
22 checks passed
@cyberphysic4l cyberphysic4l deleted the protocol-research/feat/score-integration-advance-epoch-v4 branch December 1, 2025 14:47
cyberphysic4l added a commit that referenced this pull request Dec 1, 2025
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
cyberphysic4l added a commit that referenced this pull request Dec 1, 2025
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
cyberphysic4l added a commit that referenced this pull request Dec 2, 2025
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
cyberphysic4l added a commit that referenced this pull request Dec 2, 2025
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
cyberphysic4l added a commit that referenced this pull request Dec 2, 2025
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
cyberphysic4l added a commit that referenced this pull request Dec 4, 2025
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
cyberphysic4l added a commit that referenced this pull request Dec 9, 2025
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
cyberphysic4l added a commit that referenced this pull request Dec 10, 2025
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
cyberphysic4l added a commit that referenced this pull request Dec 17, 2025
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
oliviasaa added a commit that referenced this pull request Jan 26, 2026
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
oliviasaa added a commit that referenced this pull request Jan 26, 2026
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
oliviasaa added a commit that referenced this pull request Jan 29, 2026
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
oliviasaa added a commit that referenced this pull request Jan 29, 2026
Enables the creation of a new version of advance epoch transaction and
new advance epoch function in iota-framework to modify rewards based on
scores. The existing validator reporting system remains whereby rewards
can be slashed entirely when a validator is reported. Now we
additionally modulate the rewards with the score provided as an argument
to the new version of the advance epoch function.

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [ ] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have checked that new and existing unit tests pass locally with
my changes

- [x] Protocol: Enables the creation of a new version of advance epoch
transaction and new advance epoch function in iota-framework to modify
rewards based on scores.
- [ ] Nodes (Validators and Full nodes):
- [x] Indexer: Enables a new `ChangeEpochV4` system transaction which
may appear in checkpoints for networks where `score_based_rewards`
protocol config is enabled. Consequently **a dependency bump is
necessary for `iota_data_ingestion_core` library consumers (custom
indexers) to prevent outages**.
- [ ] JSON-RPC:
- [ ] GraphQL:
- [ ] CLI:
- [ ] Rust SDK:
- [ ] REST API:

---------

Co-authored-by: Andrew <i.am.andrew.cullen@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants