IntersectMBO / IntersectMBO/evolution-sdk

feat(builder): lazy UTxO resolvers for retry-safe buildEffect

Ouverte
#199 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

enhancement
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>>
  • resolveAvailableUtxos in TransactionBuilder.ts — yield the Effect at build time when lazy
  • CollectFromParams.inputs — same lazy extension
  • createCollectFromProgram in Collect.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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.