Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

bug: hidden reserves are still offered as collateral swap targets

Ouverte Adaptée aux débutants
#3,131 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@shivam-V8 y travaille déjà.

Depuis le 11/10/2026.

  • #3126 par @shivam-V8 — ouverte
  • #3129 par @shivam-V8 — ouverte
  • #3130 par @shivam-V8 — ouverte
  • #3132 par @shivam-V8 — ouverte
  • #3136 par @shivam-V8 — ouverte

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
88/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
react, typescript
Domaine
frontend, web-dev

Piste de recherche

Lis getTokensTo dans src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx et compare son filtre avec ceux de src/modules/dashboard/lists/SupplyAssetsList/SupplyAssetsList.tsx et de src/modules/dashboard/lists/Swap/modals/request/DebtSwapModalContent.tsx. Vérifie comment isAssetHidden reçoit le marché actuel, puis vérifie que les réserves masquées sont exclues des destinations du swap de collatéral, tandis que les règles existantes concernant les actifs gelés et en pause, ainsi que GHO, restent appliquées.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Describe the bug

Reserves hidden via HIDDEN_ASSETS or the NEXT_PUBLIC_HIDDEN_RESERVES environment variable are still offered as destination assets in the collateral swap modal. Every other asset list in the app filters them out, including the neighbouring debt-swap modal, so this one list is the outlier.

getTokensTo in src/components/transactions/Swap/modals/request/CollateralSwapModalContent.tsx:217-221 filters only on frozen/paused and the GHO rule:

const tokensToSupply = reserves.filter(
  (reserve: ComputedReserveData) =>
    !(reserve.isFrozen || reserve.isPaused) &&
    !displayGhoForMintableMarket({ symbol: reserve.symbol, currentMarket: currentMarket })
);

The supply list applies the same predicate plus the hidden check (src/modules/dashboard/lists/SupplyAssetsList/SupplyAssetsList.tsx:85-91):

const tokensToSupply = reserves
  .filter(
    (reserve: ComputedReserveData) =>
      !(reserve.isFrozen || reserve.isPaused) &&
      !displayGhoForMintableMarket({ symbol: reserve.symbol, currentMarket }) &&
      !isAssetHidden(currentMarketData.market, reserve.underlyingAsset)
  )

isAssetHidden is defined at src/modules/dashboard/lists/constants.ts:39 and is applied consistently elsewhere — BorrowAssetsList.tsx:104, BorrowedPositionsList.tsx:111, SuppliedPositionsList.tsx:101, MarketAssetsListContainer.tsx:90, and Swap/modals/request/DebtSwapModalContent.tsx:173. Only the collateral-swap target list omits it.

To Reproduce

Steps to reproduce the behavior:

  1. Deploy (or run locally) with a reserve address listed in NEXT_PUBLIC_HIDDEN_RESERVES, or use a market with an entry in HIDDEN_ASSETS (e.g. aCRED on Horizon)
  2. Confirm the reserve is correctly absent from "Assets to supply" on the Dashboard
  3. Open a supplied position's Swap (collateral swap) modal
  4. Open the destination token selector
  5. The hidden reserve is listed and can be selected as the swap target

Expected behavior

A reserve hidden by HIDDEN_ASSETS or NEXT_PUBLIC_HIDDEN_RESERVES should not be offered as a collateral-swap destination, matching the supply list and the debt-swap modal.

Screenshots

n/a — reproducible from the source as described above.

Desktop (please complete the following information):

  • OS: any
  • Browser: any (not browser-specific)
  • Version: main @ 32cc548b9

Smartphone (please complete the following information):

  • Device: any
  • OS: any
  • Browser: any (same code path)
  • Version: main @ 32cc548b9

Additional context

The fix is to add !isAssetHidden(currentMarket, reserve.underlyingAsset) to that filter, mirroring DebtSwapModalContent. One detail: getTokensTo's currentMarket parameter is currently typed string while isAssetHidden takes a CustomMarket; the value passed in is store.currentMarket, which is already a CustomMarket, so the parameter type can simply be narrowed — again matching the debt-swap modal, which types it CustomMarket. Happy to open a PR.

Langage dominant
TypeScript
Étoiles
537
Forks
495
Merge moyen
1 j 18 h
PR mergées (30 j)
15

Préparer son environnement

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.

Autres issues de aave/interface

Toutes les issues de aave/interface

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

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