Skip to content

Add RKLB, and tags that can say what a token is - #42

Open
thedavidmeister wants to merge 1 commit into
mainfrom
rklb-and-token-tags
Open

Add RKLB, and tags that can say what a token is#42
thedavidmeister wants to merge 1 commit into
mainfrom
rklb-and-token-tags

Conversation

@thedavidmeister

@thedavidmeister thedavidmeister commented Jul 23, 2026

Copy link
Copy Markdown

The list could only express one thing: is this an ST0x wrapped token. Every entry carried tags: ["st0x"] and category: "ST0x" except USDC, which carried neither — so "collateral" was a fact readers inferred from an absence.

RKLB forced the question, because it fits neither slot.

What RKLB actually is

Verified on Base and Ethereum: deployed, owned by the token-owner Safe, wired to the production authoriser. Also:

  • st0x.liquidity config/prod/st0x-hedge.tomltrading = "disabled", rebalancing = "disabled", wrapped_equity_recovery = "disabled"
  • st0x.issuance — referenced only from fn test_metadata()
  • st0x.pricing"wtRKLB — not in the st0x.registry snapshot yet (RKLB onboarding, RAI-1411), but the oracle-server already resolves orders to it, so pricing must serve it"

So it is live, integrators already resolve it, and it is deliberately not offered. Under the old schema the only options were to list it as an ordinary tradeable equity or leave it out — and it was being left out while services resolved against it anyway.

Two tags

"collateral": "Backing asset held by ST0x vaults, not itself a tokenized equity."
"test":       "Deployed and live on-chain, but not offered: excluded from hedging,
               rebalancing and recovery. Present so integrators resolve it, not so
               users trade it."

USDC is now ["collateral"] rather than untagged, and RKLB is ["st0x", "test"].

tags is the Uniswap token-list standard's own mechanism, so this needs no schema change — but consumers currently treat every entry as tradeable, and nothing filters on tags today. Anything that should exclude test tokens has to opt in; that is the follow-up this PR does not do.

The entry

Identity is read from the chain, not transcribed: name, symbol and decimals are what the wrapped vault returns, so the registry-vs-chain identity check cannot mismatch on arrival. (wtASML currently shows exactly that kind of mismatch on the health dashboard.)

field value source
address 0xF4f8c66085910d583c01f3b4e44Bf731D4e2c565 wrapped vault
name / symbol / decimals Wrapped Rocket Lab USA Inc ST0x / wtRKLB / 18 read on Base
unwrappedAddress 0xf6744fd9… receipt vault
receiptAddress 0x34bf3d8d… ERC-1155 receipt
logoURI https://st0x.io/images/RKLB.png verified 200 image/png

tokenMap updated in step with tokens (keys asserted identical), and the version bumped 1.3.0 → 1.4.0 per the token-list spec.

No ISIN. RKLB's does not appear anywhere in the org, and a securities identifier is not something to guess. It is the only ST0x entry without one — worth filling before RKLB is ever tagged tradeable.

Why this matters beyond RKLB

productionReceiptVaults() in st0x.deploy is about to carry 29 entries (#259) against this list's 28. The org-health dashboard reconciles those two directions, so without this RKLB would render as a permanent "governed vault not in the registry" discrepancy on every scan.

Summary by CodeRabbit

  • New Features
    • Added support for the Wrapped Rocket Lab USA Inc ST0x (wtRKLB) token, including metadata and trading details.
    • Added new collateral and test classifications for supported tokens.
  • Updates
    • Updated the USD Coin listing with collateral classification and refreshed metadata.
    • Advanced the token list version and timestamp.

The list could only express "is this an ST0x wrapped token". USDC was
distinguished from the equities purely by having no tag and no category, so
"collateral" was a fact readers had to infer from an absence.

RKLB forced the question. It is deployed and live on Base and Ethereum, owned
by the token-owner Safe and wired to the production authoriser, but it is not
offered: st0x.liquidity disables trading, rebalancing and recovery for it, and
st0x.issuance references it only from a test fixture. Under the old schema it
could only be listed as an ordinary tradeable equity or left out entirely,
and it was already being left out while the oracle server resolved orders to
it.

Identity read from Base rather than transcribed: name, symbol and decimals are
what the wrapped vault returns, so the registry-vs-chain check cannot mismatch
on arrival.

No ISIN: RKLB's does not appear anywhere in the org, and inventing a
securities identifier is not a thing to guess at. It is the only ST0x entry
without one.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@thedavidmeister thedavidmeister self-assigned this Jul 23, 2026
@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The base token list version and timestamp were updated, new collateral and test tags were defined, USD Coin received the collateral tag, and wtRKLB was added to both token representations with extensions.

Changes

Base token list

Layer / File(s) Summary
Metadata and tag definitions
token-lists/base.json
The list timestamp and minor version were advanced, and collateral and test tag definitions were added.
Token and tokenMap registration
token-lists/base.json
USD Coin received the collateral tag, while wtRKLB was added to the tokens array and tokenMap with test tags and trading extensions.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: siddharth2207, findolor

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: adding RKLB and introducing semantic token tags.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch rklb-and-token-tags

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Checkov (3.3.8)
token-lists/base.json

Traceback (most recent call last):
File "/usr/local/bin/checkov", line 2, in
from checkov.main import Checkov
ModuleNotFoundError: No module named 'checkov'


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
token-lists/base.json (1)

1113-1120: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Mirror USDC’s collateral tag in tokenMap.

The tokens entry has tags: ["collateral"], but the corresponding tokenMap entry ends after logoURI. Map-based consumers will receive different metadata and may fail to classify USDC as collateral.

Proposed fix
             "symbol": "USDC",
-            "logoURI": "https://static.optimism.io/data/USDC/logo.png"
+            "logoURI": "https://static.optimism.io/data/USDC/logo.png",
+            "tags": [
+                "collateral"
+            ]
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@token-lists/base.json` around lines 1113 - 1120, Update the tokenMap entry
for USDC identified by address 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 to
include the same collateral tag as its corresponding tokens entry, preserving
all existing metadata.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@token-lists/base.json`:
- Around line 574-578: Remove the wtRKLB entry from the live base token list in
base.json until tag-based filtering is enforced by the consumers synced through
settings.yaml. Keep it only in a separate test-only list if needed, and do not
add it to both live representations while the test tag remains unenforced.

---

Outside diff comments:
In `@token-lists/base.json`:
- Around line 1113-1120: Update the tokenMap entry for USDC identified by
address 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 to include the same
collateral tag as its corresponding tokens entry, preserving all existing
metadata.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 82a4d3a7-091d-4051-a610-7a84d3e058c2

📥 Commits

Reviewing files that changed from the base of the PR and between bd2d582 and 654c82b.

📒 Files selected for processing (1)
  • token-lists/base.json

Comment thread token-lists/base.json
Comment on lines +574 to +578
"tags": [
"st0x",
"test"
],
"extensions": {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Do not publish wtRKLB in the live base list until test is enforced.

settings.yaml:40-41 syncs consumers from this raw list, while the PR notes that consumers do not currently filter tags. Adding RKLB to both representations can therefore expose a token explicitly marked as unavailable for trading, hedging, rebalancing, and recovery. Gate those consumers first or keep RKLB in a separate test-only list.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@token-lists/base.json` around lines 574 - 578, Remove the wtRKLB entry from
the live base token list in base.json until tag-based filtering is enforced by
the consumers synced through settings.yaml. Keep it only in a separate test-only
list if needed, and do not add it to both live representations while the test
tag remains unenforced.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant