IntersectMBO / IntersectMBO/evolution-sdk
feat(builder): lazy UTxO resolvers for retry-safe buildEffect
Personne n'a encore pris cette issue.
- Langage dominant
- TypeScript
- Étoiles
- 22
- Forks
- 30
- Merge moyen
- 13 h
- PR mergées (30 j)
- 14
Description
Problem
BuildOptions.availableUtxos and collectFrom inputs are static arrays resolved before buildEffect() runs. When an action is retried via Effect.retry, the same stale UTxO arrays are reused — the provider is never queried again.
Proposed Solution
Allow availableUtxos and collectFrom.inputs to also accept a lazy resolver () => Effect<ReadonlyArray<UTxO>> evaluated at build time:
client.newTx()
.collectFrom({ inputs: () => client.Effect.getUtxos(scriptAddress), redeemer })
.buildEffect({ availableUtxos: () => client.Effect.getWalletUtxos() })
.pipe(Effect.flatMap(s => s.Effect.signAndSubmit()))
.pipe(Effect.retry(Schedule.recurs(3)))
Each retry calls the resolver fresh, so UTxOs are always up to date with no extra boilerplate required from the user.
Affected Areas
BuildOptions.availableUtxos— extend type to accept() => Effect<ReadonlyArray<UTxO>>resolveAvailableUtxosinTransactionBuilder.ts— yield the Effect at build time when lazyCollectFromParams.inputs— same lazy extensioncreateCollectFromPrograminCollect.ts— evaluate resolver at program execution time
Non-breaking — static arrays continue to work as-is.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par BuildOptions et resolveAvailableUtxos dans TransactionBuilder.ts, puis examinez CollectFromParams.inputs et createCollectFromProgram dans Collect.ts. Confirmez comment les tableaux statiques sont gérés avant d’étendre les deux inputs pour prendre en charge les lazy Effects. C’est terminé lorsque le comportement statique reste compatible et que les lazy resolvers sont évalués au moment du build ou de l’exécution du programme, afin que les retries obtiennent des UTxOs à jour.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- backend-api-design
- Type d'issue
- Fonctionnalité
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 55/100