diff --git a/.changeset/base-sepolia-usdt-decimals.md b/.changeset/base-sepolia-usdt-decimals.md deleted file mode 100644 index b83928f..0000000 --- a/.changeset/base-sepolia-usdt-decimals.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@avaprotocol/protocols": patch ---- - -Correct Base Sepolia `USDT` (`0xCE8565457Cca0fC7542608A2c78610Ed7bC66C8C`) to 18 decimals. The row said 6, but the contract's `decimals()` returns 18, so amounts formatted from the catalog were off by 10^12. The contract is an unverified third-party test token, not a Tether deployment. Add `yarn verify:tokens`, a read-only check of every catalog row's code, `decimals()` and `symbol()` against the chain. diff --git a/.changeset/bnb-chain-baseline-tokens.md b/.changeset/bnb-chain-baseline-tokens.md deleted file mode 100644 index 3aa9a2f..0000000 --- a/.changeset/bnb-chain-baseline-tokens.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@avaprotocol/protocols": minor ---- - -Add the BNB Chain baseline to the token catalog: WBNB, Binance-Peg BTCB and ETH, FDUSD, USD1, USDe, sUSDe, Cake, wstETH, slisBNB, LBTC, SolvBTC, XVS, LINK, and BNBx (legacy: Stader discontinued it). Each address was checked against the issuer's or BNB Chain's published list and on-chain. - -`lookupToken(56, WBNB)` now returns `WBNB`. Before, it fell through to `Protocols.uniswapV3.tokens.WETH`, whose BNB Chain entry holds WBNB, and answered with symbol `"WETH"`. BNB Chain's `ETH` symbol is the Binance-Peg ERC-20, not native ETH. diff --git a/.changeset/ethereum-base-baseline-tokens.md b/.changeset/ethereum-base-baseline-tokens.md deleted file mode 100644 index 8659b7e..0000000 --- a/.changeset/ethereum-base-baseline-tokens.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@avaprotocol/protocols": minor ---- - -Fill the Ethereum and Base token-catalog gaps found by the coverage audit (#38). - -- Ethereum: RLUSD, USDG, GHO, cbETH, sDAI, crvUSD, LUSD, USDtb, eUSDe, SKY, BAL, 1INCH, FXS, KNC, STG, ETHx, ezETH, tETH, frxETH, sfrxETH, FBTC, eBTC, BTC.b, mUSD and syrupUSDT. -- Base: RLUSD (`0x8d58C0C60B8D6b88Fa98B291a646dB34d0F98258`, Ripple's L2 address), WBTC, GHO, LBTC, tBTC, weETH, ezETH, wrsETH, syrupUSDC, USDS, sUSDS, USDe and sUSDe. - -Every Aave V3 Core reserve on Ethereum, Base and BNB Chain (except expiring Pendle PTs) is now in `Tokens`, so `lookupToken` recognizes them without the per-protocol fallback. diff --git a/.changeset/eurc-catalog.md b/.changeset/eurc-catalog.md deleted file mode 100644 index 32d0c4b..0000000 --- a/.changeset/eurc-catalog.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@avaprotocol/protocols": minor ---- - -Add Circle EURC to the Ethereum, Base, Sepolia and Base Sepolia token catalogs. Addresses follow https://developers.circle.com/stablecoins/eurc-contract-addresses. diff --git a/.changeset/rename-solvbtc-bbn-xsolvbtc.md b/.changeset/rename-solvbtc-bbn-xsolvbtc.md deleted file mode 100644 index 5273a55..0000000 --- a/.changeset/rename-solvbtc-bbn-xsolvbtc.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@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; `lookupToken` and the Ethereum sidecar (`dist/tokens/ethereum.json`) now return `xSolvBTC` for it. - -Code that reads `Tokens["SolvBTC.BBN"]` must switch to `Tokens.xSolvBTC`. diff --git a/.changeset/token-provenance-coverage.md b/.changeset/token-provenance-coverage.md deleted file mode 100644 index 7169cda..0000000 --- a/.changeset/token-provenance-coverage.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@avaprotocol/protocols": minor ---- - -Record transfer constraints on token rows and pin catalog addresses to their sources. - -- `TokenChainEntry.transferConstraints` lists behaviour that makes a plain `transfer` to an arbitrary address revert or deliver a different amount. Values come from the new `TOKEN_TRANSFER_CONSTRAINT`: `permissionedRecipient` (OUSG, BUIDL, USYC), `rebasing` (stETH, eETH) and `feeOnTransfer` (none listed). No constraints means none is known, not that every transfer succeeds. -- Provenance for each row (canonical sources, native/bridged/test, verification date) lives in `src/tokens/provenance/*.json`. Tests read it; the package does not ship it. -- `tests/token-coverage.test.ts` enforces a defined coverage target per chain, address agreement between provenance, `Tokens` and protocol modules, and one symbol per address across chains. -- `docs/TOKEN_CATALOG.md` documents the inclusion and maintenance policy and how consumers should separate recognizing a holding from deciding whether it can be transferred. `docs/TOKEN_COVERAGE.md` is the generated per-chain matrix (`yarn report:tokens`). diff --git a/CHANGELOG.md b/CHANGELOG.md index 36e9253..07e5002 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # @avaprotocol/protocols +## 1.2.0 + +### Minor Changes + +- 0562978: Add the BNB Chain baseline to the token catalog: WBNB, Binance-Peg BTCB and ETH, FDUSD, USD1, USDe, sUSDe, Cake, wstETH, slisBNB, LBTC, SolvBTC, XVS, LINK, and BNBx (legacy: Stader discontinued it). Each address was checked against the issuer's or BNB Chain's published list and on-chain. + + `lookupToken(56, WBNB)` now returns `WBNB`. Before, it fell through to `Protocols.uniswapV3.tokens.WETH`, whose BNB Chain entry holds WBNB, and answered with symbol `"WETH"`. BNB Chain's `ETH` symbol is the Binance-Peg ERC-20, not native ETH. + +- 0562978: Fill the Ethereum and Base token-catalog gaps found by the coverage audit (#38). + + - Ethereum: RLUSD, USDG, GHO, cbETH, sDAI, crvUSD, LUSD, USDtb, eUSDe, SKY, BAL, 1INCH, FXS, KNC, STG, ETHx, ezETH, tETH, frxETH, sfrxETH, FBTC, eBTC, BTC.b, mUSD and syrupUSDT. + - Base: RLUSD (`0x8d58C0C60B8D6b88Fa98B291a646dB34d0F98258`, Ripple's L2 address), WBTC, GHO, LBTC, tBTC, weETH, ezETH, wrsETH, syrupUSDC, USDS, sUSDS, USDe and sUSDe. + + Every Aave V3 Core reserve on Ethereum, Base and BNB Chain (except expiring Pendle PTs) is now in `Tokens`, so `lookupToken` recognizes them without the per-protocol fallback. + +- b377e71: Add Circle EURC to the Ethereum, Base, Sepolia and Base Sepolia token catalogs. Addresses follow https://developers.circle.com/stablecoins/eurc-contract-addresses. +- 0562978: 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. + + Code that reads `Tokens["SolvBTC.BBN"]` must switch to `Tokens.xSolvBTC`. + +- 0562978: Record transfer constraints on token rows and pin catalog addresses to their sources. + + - `TokenChainEntry.transferConstraints` lists behaviour that makes a plain `transfer` to an arbitrary address revert or deliver a different amount. Values come from the new `TOKEN_TRANSFER_CONSTRAINT`: `permissionedRecipient` (OUSG, BUIDL, USYC), `rebasing` (stETH, eETH) and `feeOnTransfer` (none listed). No constraints means none is known, not that every transfer succeeds. + - Provenance for each row (canonical sources, native/bridged/test, verification date) lives in `src/tokens/provenance/*.json`. Tests read it; the package does not ship it. + - `tests/token-coverage.test.ts` enforces a defined coverage target per chain, address agreement between provenance, `Tokens` and protocol modules, and one symbol per address across chains. + - `docs/TOKEN_CATALOG.md` documents the inclusion and maintenance policy and how consumers should separate recognizing a holding from deciding whether it can be transferred. `docs/TOKEN_COVERAGE.md` is the generated per-chain matrix (`yarn report:tokens`). + +### Patch Changes + +- 0562978: Correct Base Sepolia `USDT` (`0xCE8565457Cca0fC7542608A2c78610Ed7bC66C8C`) to 18 decimals. The row said 6, but the contract's `decimals()` returns 18, so amounts formatted from the catalog were off by 10^12. The contract is an unverified third-party test token, not a Tether deployment. Add `yarn verify:tokens`, a read-only check of every catalog row's code, `decimals()` and `symbol()` against the chain. + ## 1.1.0 ### Minor Changes diff --git a/package.json b/package.json index 5feec84..61f6cd2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@avaprotocol/protocols", - "version": "1.1.0", + "version": "1.2.0", "description": "Multi-chain catalog of DeFi protocol contract addresses, ABI fragments, and event topic hashes — covers AAVE V3, Uniswap V3, Chainlink, Lido, Morpho, and more.", "keywords": [ "defi",