Home / Cardano Foundation / cardano-mpfs-onchain
Feb 12, 4-5 PM (0)
Feb 12, 5-6 PM (0)
Feb 12, 6-7 PM (0)
Feb 12, 7-8 PM (0)
Feb 12, 8-9 PM (0)
Feb 12, 9-10 PM (0)
Feb 12, 10-11 PM (0)
Feb 12, 11-12 AM (0)
Feb 13, 12-1 AM (0)
Feb 13, 1-2 AM (0)
Feb 13, 2-3 AM (0)
Feb 13, 3-4 AM (0)
Feb 13, 4-5 AM (0)
Feb 13, 5-6 AM (0)
Feb 13, 6-7 AM (0)
Feb 13, 7-8 AM (0)
Feb 13, 8-9 AM (0)
Feb 13, 9-10 AM (0)
Feb 13, 10-11 AM (0)
Feb 13, 11-12 PM (0)
Feb 13, 12-1 PM (0)
Feb 13, 1-2 PM (0)
Feb 13, 2-3 PM (0)
Feb 13, 3-4 PM (0)
Feb 13, 4-5 PM (0)
Feb 13, 5-6 PM (0)
Feb 13, 6-7 PM (0)
Feb 13, 7-8 PM (0)
Feb 13, 8-9 PM (0)
Feb 13, 9-10 PM (0)
Feb 13, 10-11 PM (0)
Feb 13, 11-12 AM (0)
Feb 14, 12-1 AM (0)
Feb 14, 1-2 AM (0)
Feb 14, 2-3 AM (0)
Feb 14, 3-4 AM (0)
Feb 14, 4-5 AM (0)
Feb 14, 5-6 AM (0)
Feb 14, 6-7 AM (0)
Feb 14, 7-8 AM (0)
Feb 14, 8-9 AM (0)
Feb 14, 9-10 AM (0)
Feb 14, 10-11 AM (0)
Feb 14, 11-12 PM (0)
Feb 14, 12-1 PM (0)
Feb 14, 1-2 PM (0)
Feb 14, 2-3 PM (0)
Feb 14, 3-4 PM (0)
Feb 14, 4-5 PM (0)
Feb 14, 5-6 PM (0)
Feb 14, 6-7 PM (0)
Feb 14, 7-8 PM (0)
Feb 14, 8-9 PM (0)
Feb 14, 9-10 PM (0)
Feb 14, 10-11 PM (0)
Feb 14, 11-12 AM (0)
Feb 15, 12-1 AM (0)
Feb 15, 1-2 AM (0)
Feb 15, 2-3 AM (0)
Feb 15, 3-4 AM (0)
Feb 15, 4-5 AM (0)
Feb 15, 5-6 AM (0)
Feb 15, 6-7 AM (0)
Feb 15, 7-8 AM (0)
Feb 15, 8-9 AM (0)
Feb 15, 9-10 AM (2)
Feb 15, 10-11 AM (0)
Feb 15, 11-12 PM (5)
Feb 15, 12-1 PM (0)
Feb 15, 1-2 PM (0)
Feb 15, 2-3 PM (0)
Feb 15, 3-4 PM (0)
Feb 15, 4-5 PM (0)
Feb 15, 5-6 PM (0)
Feb 15, 6-7 PM (0)
Feb 15, 7-8 PM (0)
Feb 15, 8-9 PM (0)
Feb 15, 9-10 PM (0)
Feb 15, 10-11 PM (0)
Feb 15, 11-12 AM (0)
Feb 16, 12-1 AM (0)
Feb 16, 1-2 AM (0)
Feb 16, 2-3 AM (0)
Feb 16, 3-4 AM (0)
Feb 16, 4-5 AM (0)
Feb 16, 5-6 AM (0)
Feb 16, 6-7 AM (0)
Feb 16, 7-8 AM (0)
Feb 16, 8-9 AM (6)
Feb 16, 9-10 AM (6)
Feb 16, 10-11 AM (2)
Feb 16, 11-12 PM (0)
Feb 16, 12-1 PM (1)
Feb 16, 1-2 PM (1)
Feb 16, 2-3 PM (0)
Feb 16, 3-4 PM (1)
Feb 16, 4-5 PM (4)
Feb 16, 5-6 PM (0)
Feb 16, 6-7 PM (0)
Feb 16, 7-8 PM (0)
Feb 16, 8-9 PM (0)
Feb 16, 9-10 PM (0)
Feb 16, 10-11 PM (0)
Feb 16, 11-12 AM (0)
Feb 17, 12-1 AM (0)
Feb 17, 1-2 AM (0)
Feb 17, 2-3 AM (0)
Feb 17, 3-4 AM (0)
Feb 17, 4-5 AM (0)
Feb 17, 5-6 AM (0)
Feb 17, 6-7 AM (0)
Feb 17, 7-8 AM (0)
Feb 17, 8-9 AM (0)
Feb 17, 9-10 AM (0)
Feb 17, 10-11 AM (0)
Feb 17, 11-12 PM (2)
Feb 17, 12-1 PM (0)
Feb 17, 1-2 PM (4)
Feb 17, 2-3 PM (0)
Feb 17, 3-4 PM (0)
Feb 17, 4-5 PM (3)
Feb 17, 5-6 PM (0)
Feb 17, 6-7 PM (0)
Feb 17, 7-8 PM (1)
Feb 17, 8-9 PM (0)
Feb 17, 9-10 PM (0)
Feb 17, 10-11 PM (0)
Feb 17, 11-12 AM (0)
Feb 18, 12-1 AM (0)
Feb 18, 1-2 AM (0)
Feb 18, 2-3 AM (0)
Feb 18, 3-4 AM (0)
Feb 18, 4-5 AM (0)
Feb 18, 5-6 AM (4)
Feb 18, 6-7 AM (2)
Feb 18, 7-8 AM (5)
Feb 18, 8-9 AM (2)
Feb 18, 9-10 AM (7)
Feb 18, 10-11 AM (3)
Feb 18, 11-12 PM (0)
Feb 18, 12-1 PM (0)
Feb 18, 1-2 PM (0)
Feb 18, 2-3 PM (0)
Feb 18, 3-4 PM (0)
Feb 18, 4-5 PM (0)
Feb 18, 5-6 PM (0)
Feb 18, 6-7 PM (0)
Feb 18, 7-8 PM (0)
Feb 18, 8-9 PM (2)
Feb 18, 9-10 PM (0)
Feb 18, 10-11 PM (0)
Feb 18, 11-12 AM (0)
Feb 19, 12-1 AM (0)
Feb 19, 1-2 AM (0)
Feb 19, 2-3 AM (0)
Feb 19, 3-4 AM (0)
Feb 19, 4-5 AM (0)
Feb 19, 5-6 AM (0)
Feb 19, 6-7 AM (0)
Feb 19, 7-8 AM (0)
Feb 19, 8-9 AM (2)
Feb 19, 9-10 AM (3)
Feb 19, 10-11 AM (0)
Feb 19, 11-12 PM (0)
Feb 19, 12-1 PM (0)
Feb 19, 1-2 PM (0)
Feb 19, 2-3 PM (0)
Feb 19, 3-4 PM (0)
Feb 19, 4-5 PM (0)
68 commits this week Feb 12, 2026 - Feb 19, 2026
refactor: move process_time and retract_time from validator params to State datum
Per-oracle validator parameters produce different script hashes, breaking
the offchain indexer which scans a single deterministic address. Moving
time params into the State datum (like max_fee) preserves one address for
all oracle configurations.

- Add process_time and retract_time fields to State type
- Change Retract(OutputReference) to reference State UTxO via reference_inputs
- Enforce time param immutability in Modify and Reject outputs
- Add readState helper for safe datum extraction from inputs
- Update all tests to match new signatures

Closes #22
refactor: move process_time and retract_time from validator params to State datum
Per-oracle validator parameters produce different script hashes, breaking
the offchain indexer which scans a single deterministic address. Moving
time params into the State datum (like max_fee) preserves one address for
all oracle configurations.

- Add process_time and retract_time fields to State type
- Change Retract(OutputReference) to reference State UTxO via reference_inputs
- Enforce time param immutability in Modify and Reject outputs
- Add readState helper for safe datum extraction from inputs
- Update all tests to match new signatures

Closes #22
feat: add Lean 4 theorems for lib.ak token handling functions
Model tokenFromValue, valueFromToken, quantity, and fromAsset as
Lean 4 definitions over a flat Value type, with 7 machine-checked
theorems mirroring the Aiken unit tests:

- valueFromToken_roundtrip
- tokenFromValue_ada_only
- tokenFromValue_multi_policy
- tokenFromValue_multi_asset
- quantity_present
- quantity_wrong_policy
- quantity_valueFromToken
feat: add Lean 4 theorems for lib.ak token handling functions
Model tokenFromValue, valueFromToken, quantity, and fromAsset as
Lean 4 definitions over a flat Value type, with 7 machine-checked
theorems mirroring the Aiken unit tests:

- valueFromToken_roundtrip
- tokenFromValue_ada_only
- tokenFromValue_multi_policy
- tokenFromValue_multi_asset
- quantity_present
- quantity_wrong_policy
- quantity_valueFromToken
refactor: separate tests into dedicated modules
Move unit and property tests out of cage.ak and lib.ak into dedicated
test modules (cage.props.ak, lib.tests.ak) for better organization.

Phase property tests (6 fuzz tests mirroring Lean theorems) moved to
cage.props.ak. Library tests (12 tests) moved to lib.tests.ak.
Validator-level tests remain in cage.ak since validators cannot be
imported across modules.

All 73 tests pass. plutus.json unchanged (pure refactor).
refactor: separate tests into dedicated modules
Move unit and property tests out of cage.ak and lib.ak into dedicated
test modules (cage.props.ak, lib.tests.ak) for better organization.

Phase property tests (6 fuzz tests mirroring Lean theorems) moved to
cage.props.ak. Library tests (12 tests) moved to lib.tests.ak.
Validator-level tests remain in cage.ak since validators cannot be
imported across modules.

All 73 tests pass. plutus.json unchanged (pure refactor).