altnara 자금흐름 데스크는 시장 데이터가 어느 창구에서 어떤 모양으로 나오는지를 점검합니다. 이번 노트의 주제는 코인 심볼 확인입니다. 운영자 보유 가능성: 본 매체는 비트코인·주요 알트 및 스테이블코인 보유 가능성을 명시합니다.
먼저 이 노트가 재는 자리를 못박아 둡니다. 여기서 잰 것은 전부 인증 헤더를 한 번도 붙이지 않고 부른 공개 식별자 목록의 내용물입니다. 가격도 거래량도 보지 않았고, 어느 창구가 낫다는 판단도 하지 않습니다. 그리고 이 목록은 분 단위로 늘어나는 살아 있는 데이터라서, 아래 숫자는 전부 호출 시각을 함께 적었습니다.
스프레드시트에 코인 티커를 적어 두고 API로 시세를 붙여 본 적이 있으시다면 한 번쯤 겪는 자리가 있습니다. 분명 티커는 맞는데 값이 엉뚱하게 들어옵니다. 원인은 대체로 하나입니다. 티커가 이름표가 아니기 때문입니다. 이번에 공개 ID 맵 두 곳을 인증 없이 통째로 받아 같은 티커를 쓰는 코인이 몇인지 직접 셌고, 거래소가 화면에 띄우는 티커가 그 목록과 어긋나는 자리를 하나씩 되짚었습니다.
![]()
결론부터 — 제목의 6,580이 정확히 무엇을 센 값인지부터 밝힙니다
첫째, 6,580은 티커가 둘 이상의 코인에 걸려 있을 때 그 코인 항목들의 개수입니다. 중복되는 티커의 종류를 센 값이 아닙니다. 같은 응답에서 중복되는 티커의 종류는 2,285개였습니다. 이 둘은 전혀 다른 수이고 바꿔 쓰면 글이 통째로 틀립니다. 곧 티커 2,285종을 코인 6,580개가 나눠 쓰고 있었다는 뜻입니다.
이 값은 코인게코 공개 ID 맵을 2026년 8월 20일 14시 48분 25초(KST) 에 받은 응답에서 센 것이고, 그때 응답은 2,914,086바이트에 항목 18,496개였습니다. 요청 주소는 이것 하나입니다.
https://api.coingecko.com/api/v3/coins/list?include_platform=true
둘째, 50분 뒤에 같은 주소를 다시 부르니 값이 이미 움직였습니다. 15시 38분 15초(KST) 응답은 2,914,337바이트에 항목 18,498개였고, 같은 방식으로 세니 중복 티커 종류는 2,285개로 같았는데 걸린 항목은 6,581개였습니다. 비율로는 35.58%입니다. 50분 사이에 항목 두 개가 늘었고 그중 하나가 이미 쓰이던 티커로 들어온 것입니다. 아래 절의 나머지 숫자는 전부 이 15시대 응답을 기준으로 적었습니다.
셋째, 거래소가 쓰는 티커와 ID 맵의 티커는 서로 맞춰 놓은 값이 아닙니다. 바이낸스 현물에서 거래 중인 기초자산 485종을 코인게코 티커 공간에 맞대니 174종이 이미 충돌 상태였고, 열 종은 그 문자열이 목록에 아예 없었습니다. 그 열 자리를 자산명과 계약주소로 되짚으니 다섯은 다른 티커로 멀쩡히 들어 있었고, 넷은 계약주소로도 안 잡혔으며, 남은 하나는 코인 목록이 아니라 통화 목록에 있었습니다. 그 다섯은 없었던 것이 아니라 문자열이 달랐던 것입니다.
이 노트가 재는 자리와 재지 않는 자리
같은 주제어로 묶이기 쉬운 자리를 먼저 갈라 둡니다.
첫째, 어느 코인을 사라 마라 하는 글이 아닙니다. 아래에 코인 이름이 여럿 나오지만 전부 식별이 어긋나는 사례로만 씁니다. 가격도 수익률도 다루지 않고, 어떤 자산도 매수 또는 매도 대상으로 지목하지 않습니다.
둘째, 어느 창구가 정확하냐를 가리는 글도 아닙니다. 두 ID 맵의 숫자가 갈리는 이유는 뒤에서 밝히지만, 그것은 창구의 수록 기준 차이이지 한쪽이 틀린 것이 아닙니다.
셋째, 국내 거래소는 이번에 열지 않았습니다. 여기서 부른 곳은 코인게코·코인마켓캡·바이낸스의 공개 창구뿐입니다.
넷째, 계약주소는 오직 식별자로만 씁니다. 어떤 체인이 어떻게 돌아가는지, 브리지가 어떤 구조인지는 이 노트의 범위 밖입니다.
첫째 단계 — 두 공개 ID 맵을 인증 없이 한 번씩 받습니다
식별을 시작하는 자리는 목록입니다. 두 창구 모두 키 없이 전체 목록을 한 번에 내줍니다.
코인게코. 위에 적은 주소 하나입니다. 공식 문서가 이 창구의 용도를 직접 적어 두었습니다. Use this endpoint to get coin IDs for other endpoints that require id or ids parameters. 그리고 Returns the full list of active coins by default. 이어서 No pagination required — the full list is returned in a single response. 입니다. 응답 필드는 넷이고 문서가 각각을 Coin ID, Coin symbol, Coin name, Asset platform and contract address 로 설명합니다. 여기서 유일한 것은 첫 번째뿐입니다.
코인마켓캡. 이쪽도 키 없이 열립니다. 요청 주소는 이것입니다.
https://pro-api.coinmarketcap.com/public-api/v1/cryptocurrency/map
공식 명세가 /public-api 접두어를 붙이라고 안내합니다. 축자로는 Call this endpoint keyless - no API key, no signup. Prefix the path with /public-api 입니다. 15시 39분 27초(KST) 응답은 2,597,246바이트였고, 응답 안의 status.timestamp 가 2026-08-20T06:39:27.853Z, credit_count 가 1이었습니다. 이 창구는 응답이 스스로 협정세계시 기준 시각을 실어 주기 때문에 벽시계를 따로 맞출 필요가 없습니다.
그리고 이 창구의 공식 명세는 티커를 쓰지 말라고 대놓고 적어 두었습니다. Per our Best practices we recommend utilizing CMC ID instead of cryptocurrency symbols to securely identify cryptocurrencies 입니다. 데이터를 파는 쪽이 자기 문서 첫 줄에 적어 둔 문장입니다.
둘째 단계 — 같은 티커를 쓰는 항목을 자기 손으로 세어 봅니다
받은 목록에서 티커 필드만 뽑아 대소문자를 통일하고 개수를 세면 끝입니다. 15시대 응답 기준으로 두 창구의 결과를 나란히 놓습니다.
| 항목 | 코인게코 | 코인마켓캡 |
|---|---|---|
| 응답 시각(KST) | 15시 38분 15초 | 15시 39분 27초 |
| 응답 크기 | 2,914,337바이트 | 2,597,246바이트 |
| 전체 항목 수 | 18,498 | 8,033 |
| 서로 다른 티커 종류 | 14,202 | 6,908 |
| 둘 이상이 나눠 쓰는 티커 종류 | 2,285 | 804 |
| 그 티커들에 걸린 항목 수 | 6,581 | 1,929 |
| 비율 | 35.58% | 24.01% |
셈이 맞는지 손으로 확인하는 방법도 적어 둡니다. 코인게코 쪽은 티커 종류 14,202에서 충돌 종류 2,285를 빼면 혼자 쓰는 티커가 11,917이고, 여기에 6,581을 더하면 18,498로 전체 항목 수와 맞습니다. 코인마켓캡 쪽도 6,908에서 804를 빼면 6,104이고 1,929를 더하면 8,033입니다. 이 덧셈이 안 맞으면 세는 방식이 어딘가 어긋난 것이니 먼저 여기부터 맞춰 보시는 편이 좋습니다.
두 비율이 35.58과 24.01로 갈리는 이유는 추측할 필요가 없습니다. 코인마켓캡 공식 명세가 직접 적어 두었습니다. By default this endpoint returns cryptocurrencies that have actively tracked markets on supported exchanges. 이고, 이어서 listing_status=inactive 와 listing_status=untracked 로 나머지를 따로 받을 수 있다고 설명합니다. 곧 한쪽은 등록된 것을 거의 다 싣고 다른 한쪽은 실제 시장이 붙은 것만 싣습니다. 분모가 다른 두 값을 나란히 놓고 어느 쪽이 맞다고 읽으면 안 되는 자리입니다.
가장 많이 겹친 티커도 창구마다 다릅니다. 코인게코 쪽은 weth 63개, usdc 60개, usdt 48개, wbtc 36개, dai 28개 순이었고, 코인마켓캡 쪽은 CAT 16개, PEPE 16개, DOGE 11개, X 11개, BTC 9개 순이었습니다.
가장 눈에 걸리는 자리는 따로 있습니다. 코인게코에서 티커 btc 로 등록된 항목이 11개입니다. 전수로 옮기면 이렇습니다. Bitcoin, batcat, Big Tom Coin, Bitcoin AI, Bitcoin Base, Bitcoin Second Chance, Bobby The Cat 두 건, Mezo Wrapped BTC, NEAR Intents Bridged BTC, Osmosis allBTC. 티커 세 글자만 들고 자동화를 돌리면 이 열한 개 중 무엇이 잡힐지는 그 도구가 정합니다. 티커 ai 는 12개, eth 는 14개, sol 은 11개였습니다.
셋째 단계 — 거래소 티커를 ID 맵에 맞대면 어긋나는 열 자리
거래소가 화면에 띄우는 티커는 그 거래소 안에서만 유일합니다. 15시 39분(KST) 에 바이낸스 공개 창구를 받았습니다.
https://api.binance.com/api/v3/exchangeInfo
응답은 17,513,401바이트였고 현물 거래쌍이 3,681개였습니다. 여기서 주의할 자리가 하나 있습니다. 3,681개 가운데 실제로 TRADING 상태인 것은 1,361개뿐이고 나머지 2,320개는 BREAK 상태입니다. 기초자산 종류로 세면 전체는 806종인데 거래 중인 쌍만 남기면 485종입니다. 이 485종을 두 ID 맵의 티커 공간에 맞댄 결과가 아래입니다.
| 판정 | 종수 | 485종 대비 |
|---|---|---|
| 코인게코에서 이미 티커 충돌 | 174 | 35.88% |
| 코인마켓캡에서 이미 티커 충돌 | 103 | 21.24% |
| 코인게코 티커 공간에 문자열 없음 | 10 | — |
| 코인마켓캡 활성 티커 공간에 문자열 없음 | 11 | — |
바이낸스 상장 티커 셋 중 하나 이상이 이미 충돌 상태입니다. 그중에서도 많이 겹친 것은 USDC 60개, USDT 48개, WBTC 36개, PEPE 21개, ETH 14개, AI 12개 순이었습니다.
제목에 적은 열 자리가 네 번째 줄입니다. 코인게코 목록에 문자열 자체가 없던 열 종은 AIGENSYN, AMDB, BEAMX, BROCCOLI714, BTTC, EUR, EWYB, INTCB, MSTRB, VELODROME 입니다. 코인마켓캡 쪽에서 없던 열한 종은 1000CAT, 1000CHEEMS, 1000SATS, 1MBABYDOGE, AIGENSYN, BEAMX, BROCCOLI714, BTTC, EUR, RONIN, VELODROME 이었습니다. 두 목록이 서로 다릅니다. 한쪽에서 없다고 다른 쪽에서도 없는 것이 아닙니다.

넷째 단계 — 이름으로 되찾고 계약주소로 못박습니다
여기서 "없다"로 적으면 글이 무너집니다. 열 자리를 두 경로로 다시 열었습니다.
첫 번째 경로는 거래소가 알려 주는 자산명입니다. 바이낸스 웹이 자산 목록을 공개 주소로 내주는데, 이 주소는 뒤에서 다시 말씀드리듯 개발자 문서에 실려 있지 않은 비공식 경로입니다. 여기서 읽은 이름이 결정적이었습니다. 거래소가 내려준 문자열 그대로 옮기면 AIGENSYN은 Gensyn, BEAMX는 Beam (Formerly Merit Circle), BTTC는 BitTorrent, VELODROME은 Velodrome Finance, BROCCOLI714는 CZ’s Dog(CZ의 개), EUR는 Euro 였습니다. 티커만 보고는 절대 안 나오는 이름들입니다.
두 번째 경로는 계약주소입니다. 같은 웹 창구가 티커별 입출금 네트워크와 계약주소를 함께 줍니다. 그리고 코인게코 목록에는 항목마다 체인과 계약주소가 이미 실려 있으니, 받아 둔 목록만으로 주소에서 항목으로 가는 역색인을 만들 수 있습니다. 추가 호출이 필요 없습니다. 결과는 이렇습니다. 표의 맨 아래 AI 줄은 열 자리에 들어 있지 않은 대조군입니다. 바이낸스 티커 AI는 코인게코 티커 공간에 문자열이 멀쩡히 있는데도(티커 ai 항목이 12개입니다) 그 문자열로는 엉뚱한 항목을 집는다는 것을 보이려고 함께 실었습니다.
| 바이낸스 티커 | 자산명 | 계약주소 앞자리 | 코인게코 id | 코인게코 티커 |
|---|---|---|---|---|
| BEAMX | Beam (Formerly Merit Circle) | 0x62d0a845… | beam-2 | beam |
| AIGENSYN | Gensyn | 0x4d7078dd… | gensyn | ai |
| BROCCOLI714 | CZ’s Dog | 0x6d5ad159… | czs-dog | broccoli |
| VELODROME | Velodrome Finance | 0x9560e827… | velodrome-finance | velo |
| BTTC | BitTorrent | TAFjULxiVg… | bittorrent | btt |
| AI | Sleepless AI | 0xbda011d7… | sleepless-ai | ai |
열 자리 가운데 이렇게 되짚어 낸 것은 다섯입니다. 없었던 것이 아니라 티커 문자열이 달랐던 것입니다. 되짚지 못한 나머지 다섯 자리는 뒤의 절에서 따로 다룹니다. 넷은 계약주소로도 안 잡힌 토큰화 주식이고, 하나는 애초에 코인이 아닌 EUR입니다. 그리고 표의 AIGENSYN 줄과 AI 줄을 나란히 보시면 이 절차가 왜 필요한지가 분명해집니다. 바이낸스에서 AIGENSYN이라 부르는 것이 코인게코에서는 티커 ai 이고, 바이낸스에서 그냥 AI라 부르는 것은 코인게코에서 역시 티커 ai 인데 서로 다른 항목입니다. 티커로 맞추면 둘이 한 칸에 겹쳐 앉습니다.
BROCCOLI714는 이름 경로도 통하지 않았습니다. 코인게코 이름 필드를 broccoli 로 훑어도 대응 항목이 안 잡힙니다. 바이낸스가 붙인 이름이 CZ’s Dog 이고 코인게코 쪽 이름도 CZ's Dog 이라 broccoli 라는 글자가 양쪽 어디에도 없기 때문입니다. 두 이름은 아포스트로피 문자까지 서로 다릅니다. 계약주소라는 세 번째 지렛대에서야 czs-dog 로 잡혔습니다.
티커 문자열로 맞추면 다른 코인을 집는 자리 — RONIN
가장 선명한 사례를 하나만 자세히 적습니다.
바이낸스 자산 목록에서 티커 RONIN 의 이름은 Ronin 이고, 티커 RON 의 이름은 Romanian Lei, 곧 루마니아 화폐입니다. 그런데 코인게코 목록에서 티커 ronin 을 가진 항목은 딱 하나인데 그것은 id ronin-2, 이름 RONIN, 솔라나 계약주소 2JVEVXoRsskapZ8T56MjMNJq6Dk3feEUYSRmzkkipump 를 가진 별개의 토큰입니다. 바이낸스가 말하는 Ronin은 코인게코에서 id ronin, 티커는 ron 으로 들어 있습니다.
15시 42분(KST) 에 시총순위를 확인해 보니 id ronin 은 522위, id ronin-2 는 5,138위였습니다. 곧 티커 문자열로 맞추면 500위권 코인 자리에 5,000위권 토큰이 들어옵니다. 다만 이 순위는 아주 빠르게 움직이는 값입니다. 같은 날 14시 48분 조회에서 id ronin-2 는 3,926위였습니다. 한 시간도 안 되어 천 자리가 움직였으니 순위 자체를 결론으로 삼으시면 안 됩니다. 결론은 순위가 아니라 두 항목이 서로 다른 물건이라는 사실입니다.
코인마켓캡 쪽도 사정이 같습니다. map?symbol=RON 으로 부르면 다섯 건이 옵니다. Ronin, Romanian Leu, RON, Rocket Raccoon, President Ron DeSantis 입니다. RON 세 글자로 자동화를 돌리면 이 다섯 중 하나가 잡힙니다.
창구가 스스로 적어 둔 문장과, 그 문장을 실행으로 재현해 본 결과
코인마켓캡 공식 명세를 직접 받아 확인했습니다. 처음 부른 주소는 HTTP 301로 리다이렉트되었고 최종 응답은 1,106,996바이트였습니다.
문제의 문장은 이렇습니다. due to the fact that a symbol is not unique, if you request by symbol each data response will contain an array of objects containing all of the coins that use each requested symbol. The v1 endpoint will still return a single object, the highest ranked coin using that symbol.
여기서 출처를 정확히 적어 둡니다. 이 문장은 ID 맵 항목이 아니라 다른 네 항목의 파라미터 설명에 붙어 있습니다. 명세 전체를 훑어 그 문자열이 있는 자리를 세니 /v2/cryptocurrency/info, /v1/cryptocurrency/info, /v1/tools/price-conversion, /v2/tools/price-conversion 네 곳이었고 ID 맵 항목에는 없었습니다. ID 맵 쪽 설명은 Optionally pass a comma-separated list of cryptocurrency symbols to return CoinMarketCap IDs for. If this option is passed, other options will be ignored. 한 줄뿐입니다. 문서를 인용하실 때 어느 항목의 설명인지를 함께 적지 않으면 이 자리에서 어긋납니다.
문장을 옮기는 데서 그치지 않고 실행해 봤습니다. 명세가 /v2/cryptocurrency/info 도 키 없이 열린다고 적어 두었기에 15시 44분 3초(KST) 에 직접 불렀습니다.
https://pro-api.coinmarketcap.com/public-api/v2/cryptocurrency/info?symbol=RON
HTTP 200에 4,727바이트가 왔고, 응답의 data.RON 자리가 길이 5짜리 배열이었습니다. 위에서 본 다섯 건이 그대로 들어 있었습니다. 문서가 적어 둔 동작이 그대로 재현됐습니다. 반대로 같은 파라미터를 v1 쪽에 넣으니 HTTP 403에 An API Key is required for this call. 이 왔습니다. 곧 "v1은 최상위 하나만 준다"는 뒷절은 이번에 재현하지 못했고, 문서 인용까지만 남깁니다.
한 가지 더 눈에 걸린 자리가 있습니다. 기본 ID 맵 응답에서 티커 AI 를 쓰는 항목은 7개인데, 같은 창구에 symbol=AI 를 붙여 부르면 19개가 옵니다. 앞서 본 수록 기준 차이가 같은 창구 안에서도 파라미터 하나로 갈리는 것입니다. "같은 티커를 쓰는 코인이 몇 개냐"는 질문은 창구와 파라미터를 함께 적지 않으면 답이 정해지지 않습니다.

한 창구에는 있고 다른 창구에는 없는 자리
앞의 열 자리 중 네 개는 계약주소로도 못 잡았습니다. 바이낸스가 토큰화 주식으로 올려 둔 AMDB, INTCB, MSTRB, EWYB 입니다. 거래소가 내려준 자산명은 각각 Advanced Micro Devices (bStocks), Intel (bStocks), Strategy (bStocks), iShares MSCI South Korea ETF (bStocks) 로 전부 bStocks 라는 표기가 붙어 있습니다.
이 자리는 부정 주장이라 네 경로를 모두 열어 확인했습니다. 2026년 8월 20일 15시 38분부터 15시 46분(KST) 사이의 결과입니다. 첫째, 티커 문자열 완전일치로 18,498개 항목을 훑어 0건. 둘째, 계약주소 역색인으로 네 주소를 조회해 0건. 셋째, 이름에 bStocks가 들어간 항목 63개를 전부 꺼내 훑었는데 이 네 회사·펀드는 없었습니다. 넷째, 검색 창구에 AMDB 를 넣어 0건. 검색 창구 자체가 죽은 것이 아님은 nvdab 를 넣어 한 건이 오는 것으로 대조했습니다.
다만 여기서 한 칸 더 넓히면 틀립니다. 없는 것은 이 네 티커 문자열이지 그 회사가 아닙니다. 같은 기초자산을 다른 발행사가 토큰화한 항목은 코인게코에 여럿 있고, 티커가 발행사마다 갈립니다.
아래 표는 앞과 같은 15시 38분 15초(KST) 응답 하나를 다시 훑어 센 값입니다. 세는 규칙을 먼저 적어 둡니다. 이름만으로 훑으면 반드시 놓칩니다. 코인게코가 같은 회사를 Advanced Micro Devices (Dinari Tokenized Stock) 로도 적고 AMD xStock 으로도 적어 두기 때문입니다. 그래서 이름과 티커를 함께 훑었고, 래핑 판도 별개 항목이라 넣었으며, 같은 회사가 발행한 우선주 토큰(strc·strd·strf·strk 계열)은 기초 증권이 달라 뺐습니다.
| 기초자산 | 코인게코에 있는 항목 수 | 코인게코 티커 | 바이낸스 티커 |
|---|---|---|---|
| Intel | 6 | intc · intcon · intcx · wintcx | INTCB |
| Advanced Micro Devices | 5 | amd · amdon · amdx | AMDB |
| Strategy(구 MicroStrategy) | 9 | mstr · mstron · mstrx · bmstr · wbmstr · wmstrx · wtmstr | MSTRB |
| iShares MSCI South Korea | 2 | ewy · ewyon | EWYB |
인텔 하나가 코인게코에 여섯 항목으로 들어 있고 티커가 네 가지로 갈리는데, 바이낸스가 쓰는 INTCB는 그중 아무것도 아닙니다. Strategy 쪽은 더 벌어져서 아홉 항목에 티커가 일곱 갈래입니다. 그리고 바이낸스의 이 네 티커는 코인마켓캡 기본 응답에는 전부 들어 있었습니다. AMDB는 id 40538, 이름 Advanced Micro Devices Tokenized bStocks 입니다. 어느 창구를 열었느냐가 "있다"와 "없다"를 정합니다.
같은 함정이 EUR에도 있습니다. 코인게코 코인 목록에 티커 eur 는 0건입니다. 그런데 이 창구가 통화를 따로 두고 있어서 지원 통화 목록을 부르면 63종이 오고 그 안에 eur 와 krw 가 둘 다 있습니다. "코인 목록에 없다"를 "그 창구가 안 다룬다"로 넓히면 틀립니다.
이 조회의 한계와 확인하지 못한 것
- 바이낸스 BEAM이 어느 항목인지 못박지 못했습니다. 이 자산은 자체 체인이라 계약주소가 비어 있어 지렛대가 없고, 코인마켓캡에서 티커 BEAM으로 오는 두 건은 이름이 둘 다 Beam 이라 이름으로도 갈리지 않습니다. 두 건은 slug가 onbeam과 beam으로, 최초 기록 시각이 2023년 10월과 2019년 1월로 갈릴 뿐입니다. BEAMX 쪽은 계약주소로 못박았지만 BEAM 쪽은 이번 방법으로 못 했습니다.
- 비활성 코인은 못 받았습니다. 코인게코 문서에
status=inactive파라미터가 적혀 있어 그대로 불렀는데 HTTP 401이 왔고, 본문이InActive coin data access is only available for pro-api users only였습니다. 문서에 적힌 기능이지만 이 접근 경로로는 열리지 않습니다. 그래서 상장 폐지분까지 포함한 충돌 규모는 이 노트가 세지 않았습니다. - v1 쪽 동작은 재현하지 못했습니다. 위에 적은 대로 키가 필요합니다.
- 바이낸스 자산명과 계약주소를 읽은 두 주소는 비공식 경로입니다. 바이낸스 공식 현물 REST 문서 181,189바이트 안에서
bapi라는 문자열은 0회 등장합니다. 반면 이 노트가 세는 데 쓴/api/v3/exchangeInfo는 같은 문서에 8회 나옵니다. 세는 일은 문서에 있는 창구로만 했고, 비공식 경로는 이름과 계약주소를 대조하는 데만 썼습니다. 이 주소는 예고 없이 사라지거나 응답이 바뀔 수 있습니다. - 값의 유효 기간. 위 숫자는 2026년 8월 20일 오후 한국 시각에 한 회선에서 한 번 받은 스냅샷입니다. 목록은 계속 늘어나고, 시총순위는 특히 빠르게 움직입니다.
- 거래소는 한 곳만 열었습니다. 다른 거래소의 티커가 두 ID 맵과 얼마나 어긋나는지는 이번에 재지 않았습니다.
지금 바로 해 볼 수 있는 네 단계 자가 점검
- 지금 쓰시는 표에 코인 식별자가 티커로만 적혀 있습니까. 그렇다면 그 표는 위 6,581개 자리 중 하나를 밟았을 때 조용히 틀린 값을 받습니다. 오류가 나지 않고 다른 코인의 값이 들어옵니다. 티커 옆에 창구별 고유 id 칸을 하나 만들어 두시는 것이 첫 단계입니다.
- 그 id를 한 번은 계약주소로 대조해 보셨습니까. 이름이 같거나 티커가 같은 자리는 계약주소가 갈라 줍니다. 목록 응답에 체인과 주소가 이미 들어 있으니 추가 호출 없이 역색인을 만들 수 있습니다. 다만 자체 체인 자산은 주소가 비어 있어 이 방법이 통하지 않습니다.
- 거래소 티커를 그대로 ID 맵에 넣고 계십니까. 이번 485종 중 열 종은 문자열 자체가 없었고, 그중 다섯은 다른 티커로 멀쩡히 있었습니다. 안 잡히면 거래소가 주는 자산명부터 읽고, 그래도 안 되면 계약주소로 가시면 됩니다.
- "없다"고 적기 전에 창구를 하나 더 열어 보셨습니까. 이번에 코인게코에 없던 네 건이 코인마켓캡에는 전부 있었고, 코인 목록에 없던 EUR는 통화 목록에 있었습니다. 응답이 정상으로 오는데도 원하는 값이 조용히 빠져 있는 자리가 있다는 점은 코인 과거 시세 데이터 소급 한계를 잰 노트에서도 다뤘습니다.
FAQ
Q: 6,580이라는 숫자는 티커 종류를 센 건가요, 코인 개수를 센 건가요? A: 코인 개수입니다. 정확히는 그 티커 문자열을 둘 이상의 항목이 나눠 쓰고 있을 때, 그 항목들을 전부 센 값입니다. 같은 응답에서 중복되는 티커의 종류는 2,285개였습니다. 두 수를 바꿔 쓰면 규모가 세 배 가까이 어긋나므로 인용하실 때 어느 쪽인지 반드시 밝혀 주셔야 합니다.
Q: 왜 코인게코는 35%대이고 코인마켓캡은 24%대인가요?
A: 수록 기준이 다르기 때문입니다. 코인마켓캡 공식 명세가 기본 응답을 cryptocurrencies that have actively tracked markets on supported exchanges 로 못박아 두었고, 나머지는 listing_status 파라미터로 따로 받게 해 두었습니다. 코인게코는 활성 코인 전체를 한 번에 줍니다. 분모가 다른 두 비율이라 어느 쪽이 맞다고 읽으면 안 됩니다.
Q: 티커로 조회하면 오류가 나나요?
A: 대체로 오류가 나지 않는 것이 문제입니다. 값이 그냥 들어옵니다. 코인마켓캡 공식 명세가 이 사정을 직접 적어 두었고, 이번에 v2 정보 창구를 실제로 불러 보니 티커 RON 하나에 다섯 건짜리 배열이 왔습니다. 다만 티커 문자열 자체가 그 창구에 없으면 오류가 옵니다. BEAMX, BTTC, VELODROME, AIGENSYN, BROCCOLI714 다섯은 HTTP 400에 Invalid value for "symbol" 이 왔습니다.
Q: 계약주소만 알면 항상 못박을 수 있나요? A: 아닙니다. 자체 체인을 쓰는 자산은 계약주소가 비어 있습니다. 이번에 바이낸스 RONIN과 BEAM이 그랬습니다. RONIN은 자산명이 갈려서 이름으로 좁혔지만, BEAM은 후보 두 건의 이름이 둘 다 Beam이라 이번 방법으로는 못박지 못했습니다. 이럴 때 남는 단서는 발행 시점이나 slug 같은 부수 정보인데, 그것만으로 확정하는 것은 이 노트가 하지 않았습니다.
Q: 거래소가 붙인 숫자 접두어는 어떻게 처리하나요? A: 코인마켓캡 활성 티커 공간에 없던 열한 종에 1000CAT, 1000CHEEMS, 1000SATS, 1MBABYDOGE가 들어 있었습니다. 이런 표기는 거래 단위를 묶어 부르려고 거래소가 만든 이름이라 ID 맵에는 그 문자열이 없습니다. 접두어를 떼고 다시 찾아보시는 것이 먼저이고, 그다음은 역시 자산명과 계약주소입니다.
Q: 이 숫자들은 얼마나 오래 쓸 수 있나요? A: 오래 못 씁니다. 이번에 같은 주소를 50분 간격으로 두 번 불렀는데 항목이 18,496개에서 18,498개로, 충돌에 걸린 항목이 6,580개에서 6,581개로 이미 움직였습니다. 시총순위는 더 빨라서 한 자리가 한 시간도 안 되어 3,926위에서 5,138위로 옮겨 갔습니다. 그래서 이 노트는 절마다 호출 시각과 요청 주소를 함께 적었습니다. 직접 다시 부르셔서 그날의 값을 세시는 편이 정확합니다.
Q: 그럼 티커는 어디에 쓰나요? A: 사람에게 보여 주는 자리에는 그대로 쓰시면 됩니다. 문제는 기계가 대조하는 자리입니다. 창구가 스스로 권하는 방식도 같습니다. 코인마켓캡 명세는 자기 id를 쓰라고 적었고, 코인게코 문서는 목록 창구의 용도를 다른 창구에 넣을 id를 얻는 것이라고 설명합니다. 곧 두 창구 모두 티커를 입구로 쓰고 그다음부터는 id로 넘어가라는 구조입니다.
함께 보면 좋은 글
- 코인 거래소 API 호출 제한을 잰 노트: 공개 창구를 인증 없이 부를 때 응답 머리글이 무엇을 알려 주고 무엇을 알려 주지 않는지를 정리했습니다.
- 거래소 보험기금 풀 구조를 잰 노트: 같은 이름의 값이 창구마다 다른 것을 가리키는 자리를 다룹니다.
- 코인 거래소 서버 시간을 잰 노트: 응답 안의 시각 필드가 창구마다 갈리는 사정과 요청 타임스탬프 허용 창을 정리했습니다.
데이터·개념 출처
본 노트의 수치는 2026년 8월 20일에 직접 호출해 받은 응답을 읽은 것입니다. 시각은 두 덩어리입니다. 제목에 적은 6,580은 14시 48분 25초(KST) 응답에서 센 값이고, 본문의 나머지 실측은 전부 15시 38분 15초부터 15시 46분(KST) 사이의 응답에서 센 값입니다. 전부 인증 헤더 없이 부른 공개 호출입니다.
부른 주소를 그대로 적습니다. 코인게코 ID 맵은 https://api.coingecko.com/api/v3/coins/list?include_platform=true(15시 38분 15초, 2,914,337바이트), 시총순위는 같은 도메인의 coins/markets 창구(15시 42분, 7,039바이트), 비활성 목록 시도는 같은 목록 창구에 status=inactive 를 붙인 것(15시 42분 27초, HTTP 401), 지원 통화 목록은 simple/supported_vs_currencies(382바이트, 63종), 검색은 search 창구입니다. 코인마켓캡 ID 맵은 https://pro-api.coinmarketcap.com/public-api/v1/cryptocurrency/map(15시 39분 27초, 2,597,246바이트)이고, 티커별 조회는 같은 주소에 symbol 파라미터를 붙였으며, 정보 창구는 /public-api/v2/cryptocurrency/info(15시 44분 3초, 4,727바이트)입니다. 바이낸스 현물 정보는 https://api.binance.com/api/v3/exchangeInfo(15시 39분, 17,513,401바이트)입니다.
문서 문구는 같은 날 직접 받아 축자로 확인했습니다. 코인마켓캡은 공식 OpenAPI 명세를 받았고 처음 부른 주소가 HTTP 301로 옮겨져 최종 응답이 1,106,996바이트였습니다. ID 맵 항목의 설명과 티커 파라미터 설명, 그리고 정보 창구의 티커 파라미터 설명을 각각 구분해 옮겼습니다. 코인게코는 https://docs.coingecko.com/reference/coins-list(385,764바이트)의 Notes 절과 응답 필드 설명에서 옮겼습니다. 바이낸스 공식 현물 REST 문서는 공식 저장소의 rest-api.md(181,189바이트)를 받아 /api/v3/exchangeInfo 8회, bapi 0회를 세었습니다. 자산명과 계약주소를 읽은 바이낸스 웹 창구 두 곳은 이 공식 문서에 실려 있지 않은 비공식 경로이며 본문에 그렇게 밝혔습니다.
이 글은 공개 API 응답과 개발자 문서를 정리한 정보 제공 목적의 자료이며 특정 종목이나 거래소의 이용을 권하는 글이 아닙니다. 본 노트는 진입가나 정리 가격을 제시하지 않고, 어떤 자산도 매수 또는 매도 대상으로 지목하지 않으며, 어느 창구가 더 정확하다는 판단도 하지 않습니다. 본문에 나온 코인 이름은 전부 식별이 어긋나는 사례를 보이기 위한 것입니다. 가상자산은 원금 손실이 발생할 수 있습니다. 위 항목 수와 순위는 특정 시각에 특정 회선에서 받은 한 번의 스냅샷이라 다시 부르시면 달라지고, 각 창구가 언제든 수록 기준을 바꿀 수 있어 이후에도 같은 값인지는 이 글에서 확인하지 않았습니다. 투자 판단과 그 결과는 전적으로 본인 책임입니다.