• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

iotaledger / iota / 34916874737
70%

Build:
DEFAULT BRANCH: develop
Ran 15 Sep 2026 02:14AM UTC
Jobs 1
Files 1100
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

14 Sep 2026 05:45PM UTC coverage: 69.974% (+0.01%) from 69.962%
34916874737

push

github

web-flow
fix(iota-types,iota-protocol-config): reject input object versions in or right below the canceled range (#12879)

# Description of change

### Why

When the consensus handler assigns versions for a transaction, it
computes the version of the outputs as one more than the largest input
version, unwraps that increment, and asserts the result is valid.
Versions at or above `Version::MAX_VALID_EXCL` are markers for the
objects of canceled transactions, not regular versions, so an input
named at or above that value, or one below it, makes that computation
fail. That failure halts the node instead of dropping the transaction.

Such a transaction does not reach version assignment today. At
admission, it would be _dropped by the input load_ on honest validators.
At post-consensus validation, it would also be _dropped by the input
load_. Under the P-COOL
[redesign](https://github.com/iotaledger/iota-private/issues/502), the
bookkeeping records would answer the same question and drop it, _but
only after the lookups_. **So this change alters no keep or drop
decision.**

What it adds is an _earlier and cheaper_ route to the same drop. The
transaction bytes are enough to decide it, so the check needs no object
load and no bookkeeping lookup, and it runs at the structural check
before any signature verification, lock lookup, or object read. It is
also independent of the bookkeeping and of where the other checks sit,
which matters because the redesign moves several of them out of the
handler.

### Changes

This PR adds the feature flag `validate_input_object_versions` and sets
it in protocol version 36 on all chains. With the flag set, the validity
check refuses a transaction that names a version at, one below, or above
`MAX_VALID_EXCL` for:

- owned, receiving, and shared call arguments (for a shared argument,
the declared start version);
- gas payment references;
- the object a Move authenticator authenticates.

The existing `InvalidSequenceNumber` error is reused.... (continued)

26 of 29 new or added lines in 3 files covered. (89.66%)

2856 existing lines in 83 files now uncovered.

181121 of 258840 relevant lines covered (69.97%)

451427.02 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
91.5
-0.16% crates/iota-protocol-config/src/lib.rs

Coverage Regressions

Lines Coverage ∆ File
317
42.81
0.0% crates/iota-package-resolver/src/lib.rs
221
71.05
0.0% crates/iota/src/client_commands.rs
180
0.0
0.0% crates/iota-graphql-rpc/src/types/move_package.rs
167
56.83
0.46% crates/iota-json-rpc-types/src/iota_object.rs
162
87.11
-0.03% crates/iota-core/src/authority.rs
114
0.0
0.0% iota-execution/latest/iota-adapter/src/static_programmable_transactions/execution/context.rs
101
84.68
-0.04% crates/iota-transactional-test-runner/src/test_adapter.rs
100
0.0
0.0% crates/iota-core/src/generate_format.rs
94
0.0
0.0% crates/iota-indexer/src/ingestion/primary/prepare.rs
91
63.68
0.95% crates/iota-json-rpc-types/src/iota_transaction.rs
78
39.12
0.0% crates/iota-types/src/storage/read_store.rs
74
6.66
0.0% crates/iota-indexer/src/types.rs
74
79.28
-0.15% iota-execution/latest/iota-move-natives/src/object_runtime/object_store.rs
73
96.87
0.07% crates/starfish/core/src/dag_state.rs
63
78.72
0.0% iota-execution/latest/iota-adapter/src/execution_engine.rs
57
0.0
0.0% crates/iota-replay/src/displays/transaction_displays.rs
54
67.73
0.39% crates/iota-core/src/authority/authority_store.rs
48
83.64
0.02% crates/iota-core/src/authority/authority_store_pruner.rs
48
0.0
0.0% crates/iota-tool/src/genesis_inspector.rs
47
47.09
-0.03% crates/iota-types/src/iota_sdk_types_conversions.rs
44
68.88
0.0% crates/simulacrum/src/lib.rs
43
75.47
-0.39% crates/iota-types/src/object.rs
41
0.0
0.0% crates/iota-indexer/src/optimistic_indexing.rs
40
90.96
0.37% crates/iota-core/src/grpc_indexes.rs
40
21.37
-2.29% crates/iota-json-rpc-types/src/iota_checkpoint.rs
39
89.4
0.0% crates/iota-types/src/messages_checkpoint.rs
33
68.7
0.0% crates/simulacrum/src/store/in_mem_store.rs
29
95.35
0.0% crates/iota-genesis-builder/src/lib.rs
27
78.96
0.42% crates/iota-core/src/storage.rs
27
93.43
-0.0% crates/iota-faucet/src/faucet/simple_faucet.rs
21
77.73
0.0% crates/iota-grpc-server/src/transaction_execution_service/view.rs
21
95.08
0.05% crates/iota-single-node-benchmark/src/benchmark_context.rs
21
82.26
0.0% iota-execution/latest/iota-adapter/src/data_store/linkage_view.rs
16
0.0
0.0% crates/iota-config/src/migration_tx_data.rs
14
76.86
0.0% crates/iota-json-rpc-types/src/displays/transaction_displays.rs
14
89.43
-5.28% iota-execution/latest/iota-move-natives/src/authentication_context.rs
13
89.35
-4.12% crates/iota-core/src/connection_monitor.rs
12
90.74
-1.1% crates/iota-network/src/state_sync/mod.rs
12
87.89
0.0% crates/iota-test-transaction-builder/src/lib.rs
12
89.82
-0.32% crates/iota-types/src/effects/mod.rs
11
89.58
0.0% crates/iota-config/src/genesis.rs
10
66.67
-20.83% crates/iota-network-stack/src/anemo_ext.rs
10
91.5
-0.16% crates/iota-protocol-config/src/lib.rs
9
71.43
0.78% crates/iota-types/src/account_abstraction/authenticator_function.rs
8
94.22
-0.55% crates/iota-core/src/authority/authority_store_types.rs
8
79.72
-2.8% crates/iota-sdk/src/wallet_context.rs
8
78.0
-8.0% crates/iota-vm-sdk/src/executor/types.rs
7
88.04
-1.96% crates/iota-json-rpc/src/object_changes.rs
7
85.0
-0.29% crates/iota-types/src/coin.rs
6
79.46
-2.68% crates/iota-genesis-builder/src/validator_info.rs
6
71.17
-3.68% crates/iota-json-rpc/src/lib.rs
6
52.5
0.0% crates/iota-kvstore/src/bigtable/worker.rs
6
78.32
-2.1% crates/iota-sdk/src/lib.rs
5
83.91
-5.75% crates/iota-traffic-controller/src/sim.rs
4
74.6
0.58% crates/iota-network/src/randomness/mod.rs
4
85.42
0.0% crates/iota-swarm-config/src/test_utils.rs
4
69.7
-0.89% crates/iota-types/src/timelock/timelocked_staked_iota.rs
4
83.06
-0.09% crates/iota-types/src/transaction.rs
4
83.86
-0.52% crates/starfish/core/src/network/tonic_network.rs
4
81.82
2.13% crates/test-cluster/src/lib.rs
3
89.66
-0.26% crates/iota-grpc-server/src/types.rs
3
98.85
0.02% crates/iota-single-node-benchmark/src/single_node.rs
3
66.67
-33.33% crates/iota-types/src/clock.rs
3
95.38
-1.49% crates/iota-types/src/execution.rs
3
0.0
-10.0% crates/simulacrum/src/transaction_executor.rs
3
98.71
0.02% crates/starfish/core/src/cordial_knowledge.rs
2
96.45
-0.57% crates/iota-core/src/checkpoints/causal_order.rs
2
96.77
-0.32% crates/iota-core/src/overload_monitor.rs
2
55.59
-0.66% crates/iota-core/src/transaction_driver/error.rs
2
78.69
-3.28% crates/iota-traffic-controller/src/nodefw_test_server.rs
2
0.0
0.0% crates/iota-types/src/stardust/output/alias.rs
2
0.0
0.0% crates/iota-types/src/stardust/output/basic.rs
2
17.24
0.57% crates/iota-types/src/stardust/output/nft.rs
2
20.37
0.37% crates/iota-types/src/timelock/timelock.rs
1
91.52
0.13% crates/iota-core/src/execution_cache/writeback_cache.rs
1
93.65
-0.12% crates/iota-core/src/execution_scheduler/transaction_manager.rs
1
0.0
0.0% crates/iota-graphql-rpc/src/types/unchanged_shared_object.rs
1
85.14
0.0% crates/iota-json-rpc/src/read_api.rs
1
79.82
-0.18% crates/iota-transaction-checks/src/lib.rs
1
99.6
0.0% crates/iota-types/src/effects/test_effects_builder.rs
1
81.48
-0.66% crates/iota-types/src/governance.rs
1
95.85
0.32% crates/starfish/core/src/authority_service.rs
1
96.02
-0.05% crates/starfish/core/src/transactions_synchronizer.rs
Jobs
ID Job ID Ran Files Coverage
1 nextest+simtest - 34916874737.1 15 Sep 2026 02:14AM UTC 1100
69.97
GitHub Action Run
Source Files on build 34916874737
  • Tree
  • List 1100
  • Changed 180
  • Source Changed 147
  • Coverage Changed 105
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34916874737
  • ab592eb0 on github
  • Prev Build on develop (#34795748002)
  • Next Build on develop (#35043580069)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc