Summary
The oracle node uploads and prepares publication artifacts even when the source data has not changed, trie operations are empty, and the Merkle root is identical to the current anchored state.
Observed behavior
On repeated cycles with no source data changes, the node still:
- fetches oracle data items
- calculates trie operations (insertions: 0, updates: 0, deletions: 0)
- computes the same trie root hash as the currently anchored state
- uploads to cloud
- builds and submits a recreate transaction
The node treats an unchanged state as a publishable cycle.
Why this matters
- unnecessary IPFS/cloud uploads
- unnecessary tx preparation and submission
- makes no-op cycles indistinguishable from meaningful state updates
- adds cost and noise without changing oracle state
Expected behavior
If:
- insertions = 0
- updates = 0
- deletions = 0
- and the computed root hash matches the current on-chain anchored state
then the cycle should be treated as a no-op and skipped entirely.
Proposed behavior
- after diff calculation, explicitly check whether the diff is empty
- compare computed root against the currently anchored root
- if unchanged, skip upload and skip tx submission
Acceptance criteria
Summary
The oracle node uploads and prepares publication artifacts even when the source data has not changed, trie operations are empty, and the Merkle root is identical to the current anchored state.
Observed behavior
On repeated cycles with no source data changes, the node still:
The node treats an unchanged state as a publishable cycle.
Why this matters
Expected behavior
If:
then the cycle should be treated as a no-op and skipped entirely.
Proposed behavior
Acceptance criteria