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
80 changes: 68 additions & 12 deletions coins_details.json
Original file line number Diff line number Diff line change
Expand Up @@ -154193,7 +154193,7 @@
},
"evil-larry": {
"coingecko_id": "evil-larry",
"id": "erc20:sty:0x693c7acf65e52c71bafe555bc22d69cb7f8a78a2",
"id": "erc20:data:0x693c7acf65e52c71bafe555bc22d69cb7f8a78a2",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

for new in \
  'erc20:data:0x693c7acf65e52c71bafe555bc22d69cb7f8a78a2' \
  'erc20:data:0x543374350269cce6651358769512875faa4cccff' \
  'erc20:data:0xa4f5c615f72ddeb2220471694fff1c0c3de051e1' \
  'erc20:data:0x1514000000000000000000000000000000000000'
do
  old="${new/erc20:data/erc20:sty}"
  printf '\nOLD: %s\n' "$old"
  rg -n --hidden --glob '!.git' -F "$old" . || true
  printf 'NEW: %s\n' "$new"
  rg -n --hidden --glob '!.git' -F "$new" . || true
done

Repository: trezor/definitions

Length of output: 1004


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf 'Files matching coins/chains/config names:\n'
git ls-files | rg -n '(^|/)(coins_details\.json|supported_coins_list\.txt|.*chains.*|.*chain.*|.*config.*|.*ethereum-lists.*|.*data.*chains.*)$' | head -200

printf '\nReferences to sty/data chain keys (excluding generated builds/dist likely irrelevant by name):\n'
rg -n --hidden --glob '!node_modules/**' --glob '!dist/**' --glob '!build/**' --glob '!*.min.js' --glob '!*.map' \
  'erc20:(sty|data):0x(693c7acf65e52c71bafe555bc22d69cb7f8a78a2|543374350269cce6651358769512875faa4cccff|a4f5c615f72ddeb2220471694fff1c0c3de051e1|1514000000000000000000000000000000000000)|"key":\s*"sty"|"key":\s*"data"|chainId|chain_key|coin_key' . | head -300

printf '\nRecord contexts in coins_details.json:\n'
sed -n '154188,154204p;215079,215095p;253457,253473p;470301,470317p' coins_details.json

Repository: trezor/definitions

Length of output: 3620


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf 'ethereum-lists/chains tracked metadata:\n'
git ls-files ethereum-lists/chains | sed -n '1,120p'

printf '\nChain named data / story entries:\n'
rg -n '("id"|"chainId"|"slug"|"key"|"title"|"network_name"|"name"|"status"|"links"|"symbol"|"network_logo"|1514|377|0x1514|data|story)' ethereum-lists/chains -S | head -200

printf '\nChain files matching Data/Story addresses (brief):\n'
python3 - <<'PY'
import pathlib,re,json
pattern=re.compile(r'(Story|Story|Story|Story|Story|Story|story|Data|DATA|data|1514|377|0x1514|0x377)', re.I)
for p in pathlib.Path('ethereum-lists/chains').glob('*'):
    if p.is_file() and (p.name.endswith('.json') or p.name.endswith('.metadata.json')):
        try:
            text=p.read_text(encoding='utf-8', errors='ignore')
            if pattern.search(text):
                data=json.loads(text)
                print(f'\n--- {p} ---')
                for k in ['id','chainId','key','name','network_name','slug','status','network_logo']:
                    if k in data:
                        print(f'{k}: {data[k]!r}')
                snippets=' | '.join(text[max(0,text.find(s)-60):min(len(text),text.find(s)+120)] for s in ['id','chainId','key'] if s in text)
                print(snippets[:400])
        except Exception as e:
            print(f'--- {p}: parse error {type(e).__name__}: {e} ---')
PY

printf '\nCheck for direct chain identifier in definition metadata around migrated tokens:\n'
python3 - <<'PY'
import json
from pathlib import Path
p=Path('coins_details.json')
data=json.loads(p.read_text())
for k,v in data.items():
    if v.get('id') in (
        'erc20:data:0x693c7acf65e52c71bafe555bc22d69cb7f8a78a2',
        'erc20:data:0x543374350269cce6651358769512875faa4cccff',
        'erc20:data:0xa4f5c615f72ddeb2220471694fff1c0c3de051e1',
        'erc20:data:0x1514000000000000000000000000000000000000',
    ):
        print(k)
        for field in ['chain_key','chainKey','networks','id','token_contract','decimals']:
            if field in v:
                print(f'  {field}: {v[field]!r}')
PY

Repository: trezor/definitions

Length of output: 253


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf 'Top-level ethereum-lists directories:\n'
find ethereum-lists -maxdepth 1 -mindepth 1 -type d -print | sort

printf '\nTracked files under ethereum-lists/chains:\n'
git ls-files ethereum-lists/chains | sort | tail -n 20 || true

printf '\nFile type / symlink for ethereum-lists/chains:\n'
file ethereum-lists/chains 2>/dev/null || true
ls -ld ethereum-lists/chains 2>/dev/null || true

printf '\nAll files in ethereum-lists/chains (first 200):\n'
find ethereum-lists/chains -maxdepth 3 -type f -print | sort | head -200 || true

printf '\nSearch for story/data/1514/377 across ethereum-lists:\n'
rg -n -i '\b(data|story|1514|377|0x1514)\b' ethereum-lists || true

Repository: trezor/definitions

Length of output: 527


Confirm erc20:data is the intended chain key and migrate external references.

The migrated tokens still list networks: ["story"], but their coins_details.js IDs now use erc20:data; confirm the ethereum-lists/chains source rev resolves to data as the story network key. If it does, update external consumers, balance/key mappings, and migration/compatibility paths so clients do not expose duplicate assets or lose existing holdings.

🤖 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 `@coins_details.json` at line 154196, Verify that the ethereum-lists/chains
source revision maps the Story network to the data key, then update all external
consumers, balance/key mappings, and migration or compatibility paths to use
erc20:data consistently while preserving existing holdings and preventing
duplicate assets; focus on the token ID migration surrounding the coins_details
entries.

"name": "Evil Larry",
"networks": [
"story"
Expand Down Expand Up @@ -215084,7 +215084,7 @@
},
"ippy": {
"coingecko_id": "ippy",
"id": "erc20:sty:0x543374350269cce6651358769512875faa4cccff",
"id": "erc20:data:0x543374350269cce6651358769512875faa4cccff",
"name": "IPPY",
"networks": [
"story"
Expand Down Expand Up @@ -253462,7 +253462,7 @@
},
"lyra-3": {
"coingecko_id": "lyra-3",
"id": "erc20:sty:0xa4f5c615f72ddeb2220471694fff1c0c3de051e1",
"id": "erc20:data:0xa4f5c615f72ddeb2220471694fff1c0c3de051e1",
"name": "LYRA",
"networks": [
"base",
Expand Down Expand Up @@ -296950,6 +296950,36 @@
}
]
},
"nong-wan": {
"coingecko_id": "nong-wan",
"id": "solana:Dh5GKcPQFBJXw74yP4u7BCHYQzHoG6JX8dXQaNwvpump",
"name": "\u0e19\u0e49\u0e2d\u0e07\u0e27\u0e31\u0e19 (Nong Wan)",
"networks": [
"solana"
],
"shortcut": "WAN",
"support": {
"T1B1": false,
"T2B1": true,
"T2T1": true,
"T3T1": true,
"T3W1": true
},
"wallets": [
{
"name": "Trezor Suite",
"url": "https://trezor.io/trezor-suite"
},
{
"name": "Backpack",
"url": "https://backpack.app/"
},
{
"name": "NuFi",
"url": "https://nu.fi"
}
]
},
"nong-yan": {
"coingecko_id": "nong-yan",
"id": "solana:3ooAahNToKYqPicvJ2npU6uyWvoqJEhHptq6wBC6pump",
Expand Down Expand Up @@ -452445,6 +452475,32 @@
}
]
},
"vladhood-2": {
"coingecko_id": "vladhood-2",
"id": "erc20:robinhoodchain:0x601fda468bdd8096067dfc1c86654ce2d8d7ab03",
"name": "Vladhood",
"networks": [
"robinhood"
],
"shortcut": "VHOOD",
"support": {
"T1B1": true,
"T2B1": true,
"T2T1": true,
"T3T1": true,
"T3W1": true
},
"wallets": [
{
"name": "MetaMask",
"url": "https://metamask.io/"
},
{
"name": "Rabby",
"url": "https://rabby.io/"
}
]
},
"vlaunch-2": {
"coingecko_id": "vlaunch-2",
"id": "erc20:bnb:0xf574ba6bde97cc09784e616ebaed432b4e896b49",
Expand Down Expand Up @@ -470250,7 +470306,7 @@
},
"wrapped-ip": {
"coingecko_id": "wrapped-ip",
"id": "erc20:sty:0x1514000000000000000000000000000000000000",
"id": "erc20:data:0x1514000000000000000000000000000000000000",
"name": "Wrapped IP",
"networks": [
"story"
Expand Down Expand Up @@ -489801,13 +489857,13 @@
},
"info": {
"support_counter": {
"T1B1": 11063,
"T2B1": 16029,
"T2T1": 16036,
"T3T1": 16029,
"T3W1": 16029
},
"updated_at": 1785324456,
"updated_at_readable": "Wed Jul 29 13:27:36 2026"
"T1B1": 11064,
"T2B1": 16031,
"T2T1": 16038,
"T3T1": 16031,
"T3W1": 16031
},
"updated_at": 1785342745,
"updated_at_readable": "Wed Jul 29 18:32:25 2026"
Comment on lines +489866 to +489867

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

rg -n -C3 'updated_at(_readable)?' --hidden --glob '!.git' .

python - <<'PY'
from datetime import datetime, timezone

print(datetime.fromtimestamp(1785342745, timezone.utc).isoformat())
PY

Repository: trezor/definitions

Length of output: 1506


Generate readable and epoch timestamps from the same timezone.

coins_details.py writes updated_at=int(time.time()) and updated_at_readable=time.asctime(), so updated_at_readable represents local time while updated_at is UTC. Use a timezone-aware value such as an ISO 8601 UTC timestamp for both fields, or store an explicit timezone/offset with the readable time.

🤖 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 `@coins_details.json` around lines 489866 - 489867, Update the timestamp
generation in coins_details.py so updated_at and updated_at_readable derive from
the same timezone-aware instant. Use UTC consistently, preferably with an ISO
8601 UTC representation for the readable field, while preserving the epoch value
in updated_at.

}
}
Loading