·
29 commits
to main
since this release
Patch Changes
-
#105
98b59faThanks @solidsnakedev! - Add deferred redeemer construction for dynamic index resolutionRedeemerBuilder module (
RedeemerBuilder.ts):IndexedInputtype:{ index: number, utxo: UTxO }- provides the final sorted index and original UTxO after coin selection- Three modes for redeemer construction:
Static: Direct Data value when index not neededSelf: Per-input function(input: IndexedInput) => Datafor single UTxO indexBatch: Multi-input function(inputs: IndexedInput[]) => Datafor stake validator coordinator pattern
- Type guards:
isSelfFn,isBatchBuilder,isStaticData - Internal types:
DeferredRedeemer,toDeferredRedeemer
Evaluation phase updates:
- Add
resolveDeferredRedeemersto convert deferred redeemers after coin selection - Build
refToIndexandrefToUtxomappings from sorted inputs - Invoke Self/Batch callbacks with resolved
IndexedInputobjects
Operations updates:
collectFromandmintTokensnow acceptRedeemerArg(Data | SelfRedeemerFn | BatchRedeemerBuilder)- Store deferred redeemers in
state.deferredRedeemersfor later resolution
Test coverage (
TxBuilder.RedeemerBuilder.test.ts):- Tests for all three modes with mint_multi_validator.ak spec
Architecture docs (
redeemer-indexing.mdx):- Document the circular dependency problem and deferred construction solution
- Explain stake validator coordinator pattern with O(1) index lookup