Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .changeset/rename-solvbtc-bbn-xsolvbtc.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
"@avaprotocol/protocols": major
"@avaprotocol/protocols": minor
---

Rename Ethereum `Tokens["SolvBTC.BBN"]` to `Tokens.xSolvBTC` (`0xd9D920AA40f578ab794426F5C90F6C731D159DEf`). Solv rebranded the token: the contract's `name()` and `symbol()` both return `xSolvBTC`. The address and decimals are unchanged, and `lookupToken` now returns symbol and name `xSolvBTC` for it.
Rename Ethereum `Tokens["SolvBTC.BBN"]` to `Tokens.xSolvBTC` (`0xd9D920AA40f578ab794426F5C90F6C731D159DEf`). Solv rebranded the token: the contract's `name()` and `symbol()` both return `xSolvBTC`. The address and decimals are unchanged; `lookupToken` and the Ethereum sidecar (`dist/tokens/ethereum.json`) now return `xSolvBTC` for it.

BREAKING CHANGE: `Tokens["SolvBTC.BBN"]` no longer exists, and the Ethereum sidecar (`dist/tokens/ethereum.json`) carries `xSolvBTC` for this address. Callers keying on the old symbol must switch to `xSolvBTC`.
Code that reads `Tokens["SolvBTC.BBN"]` must switch to `Tokens.xSolvBTC`.
4 changes: 2 additions & 2 deletions docs/TOKEN_CATALOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,15 @@ Assets outside the target may still be listed — the catalog also carries rows

Symbols follow the issuer's on-chain casing (`stETH`, `Cake`, `cbBTC`). A symbol appears once per chain. An address names one asset on every chain where it appears, because `lookupToken` falls back across chains; the test enforces this.

Symbol keys are API: consumers index `Tokens` by them, and the sidecar carries them. When an issuer rebrands on-chain, follow it (Ethereum `SolvBTC.BBN` became `xSolvBTC`), ship the rename as a major changeset, and record the old symbol in the provenance notes.
Symbol keys are API: consumers index `Tokens` by them, and the sidecar carries them. When an issuer renames a token on-chain, follow it (Ethereum `SolvBTC.BBN` became `xSolvBTC`) in a minor changeset that names the old key, and record the old symbol in the provenance notes. The token is the same contract under a corrected label, as token lists treat a symbol change; issuers rebrand often enough (MKR→SKY, RNDR→RENDER, MATIC→POL) that a major release each time would hold back every other fix.

## Maintenance

- **Before a release**, run `yarn verify:tokens`. It needs network access, so it is not part of `yarn test`. A scheduled CI job running it weekly would catch address drift between releases; it is proposed, not yet added.
- **After regenerating Aave reserves** (`yarn generate:aave-reserves`), the coverage test lists any new Core reserve. Add it, or record a known gap with a reason.
- **`KNOWN_GAPS`** in `scripts/token-catalog/coverage.ts` is the explicit list of target assets not yet listed. The test fails when a gap is filled but still listed.
- **`PROVENANCE_PENDING`** lists rows that predate provenance tracking. It may only shrink: a new row needs a provenance row, and a pending row that gains provenance must leave the list.
- **Removing a row** breaks consumers that key on it. Prefer marking it `legacy` in provenance; remove only addresses that are wrong.
- **Removing a row, or changing a row's address,** is a major changeset: the token consumers recognized is gone. Prefer marking it `legacy` in provenance; remove only addresses that are wrong.

## Transfer constraints

Expand Down
Loading