온체인 읽기 3편, 누가 벌고 누가 물렸나 (1편의 그 사람은 울고 있었다)
이 글은 개인 공부 기록이며 투자 조언이 아닙니다. 등장하는 토큰과 주소는 설명을 위한 예시이자 누구나 볼 수 있는 공개 온체인 데이터이며, 추천이 아닙니다.

2편에서 코드로 매수자를 전부 뽑았는데, 끝에 두 가지 숙제가 남았다. 하나는 목록에 라우터 같은 배관이 섞여 있던 것, 다른 하나는 매수만 봐서는 손익을 모른다는 것이다. 이번 편에서 둘 다 해결한다. 그리고 2편 마지막에 던진 질문에 답한다. 1편의 그 사람은 지금 웃고 있을까 울고 있을까.
배관은 생각보다 쉽게 걸러졌다
2편에서 "1위 매수자"가 사실 라우터였던 문제. 해결책이 허무할 만큼 간단했다. 거래를 실제로 시작한 지갑을 보면 된다. 거래마다 그걸 보낸 주인 지갑이 있는데(from 필드), 라우터나 풀은 거래를 대신 처리하는 컨트랙트라 절대 이 자리에 오지 않는다. 그러니까 이 지갑을 기준으로 세면 배관은 저절로 빠진다.
배운 점. 누가 무엇을 받았는지가 아니라 누가 그 거래를 일으켰는지를 기준으로 삼으면, 사람과 장치가 자연스럽게 갈린다.
매도를 붙이고 손익을 세는 법
매수만으로는 반쪽이다. 산 사람이 나중에 팔았을 수도 있으니까. 그래서 각 지갑마다 네 가지를 모았다. 살 때 낸 ETH, 팔 때 받은 ETH, 아직 들고 있는 토큰, 그리고 그 토큰의 현재 가치다.
매수는 유동성 풀에서 토큰이 나오고 ETH가 풀로 들어간 거래, 매도는 그 반대다. 한 거래 안에서 토큰이 오간 쪽과 ETH가 오간 쪽을 짝지으면, 이 사람이 얼마 내고 얼마 받았는지가 나온다. 손익은 단순하다. 받은 ETH에서 낸 ETH를 빼고, 아직 든 토큰의 현재 값을 더한다.
결과는 냉정했다
매매한 지갑 18개 중에 플러스는 딱 하나였다.
| 지갑 | 낸 ETH | 받은 ETH | 아직 보유 | 손익 |
|---|---|---|---|---|
| 0xb213… | 0.095 | 0.098 | 7,870만 | +0.003 |
| 0xf32f…79d2 | 0.090 | 0.068 | 5,000만 | -0.022 |
| 0x27f4… | 0.040 | 0.000 | 7,380만 | -0.040 |
| 0x99dd… | 0.096 | 0.000 | 1억 6천만 | -0.096 |
| 0x4a8d… | 0.097 | 0.000 | 1억 5천만 | -0.097 |
유일한 승자인 맨 위 지갑은 특징이 명확하다. 사고, 팔았다. 낸 0.095 ETH보다 받은 0.098 ETH가 많다. 그래서 플러스다. 반대로 아래쪽 지갑들은 공통점이 있다. 사기만 하고 안 팔았다. 낸 ETH는 있는데 받은 ETH가 0이고, 토큰만 잔뜩 들고 있다. 그런데 그 토큰의 현재 가치가 거의 0에 수렴해서, 낸 돈이 통째로 물렸다.
1편의 그 사람은 울고 있었다
표에 굵게 표시한 0xf32f…79d2가 1편에서 우리가 처음부터 끝까지 지켜본 그 사람이다. 답이 나왔다. 울고 있었다.
이 사람은 0.090 ETH를 들여 네 번에 걸쳐 샀고, 나중에 일부를 팔아서 0.068 ETH를 회수했다. 그런데 여전히 5천만 개를 들고 있고 그건 이제 거의 값이 없다. 결국 넣은 돈의 사분의 일쯤을 잃었다. 크게 물린 아래쪽 사람들만큼은 아니어도, 분명히 손해다.
여기서 뭉클했던 건, 이게 얼마 전에 내가 요약했던 어떤 온체인 분석의 결론과 똑같았다는 거다. 큰돈을 들고 와서 안 팔고 버틴 사람은 잃고, 사고 빠르게 나간 사람만 벌었다는 그 이야기. 그때는 남의 분석을 읽고 고개만 끄덕였는데, 이번엔 내가 짠 코드로 내가 고른 토큰에서 같은 결론을 직접 확인했다. 읽어서 아는 것과 내가 뽑아서 아는 건 확실히 다른 무게였다.
3편에서 배운 것, 그리고 정직한 한계
거래 하나를 손으로 읽던 데서 시작해서, 이제 한 토큰의 모든 참가자 손익을 코드로 계산하는 데까지 왔다. 세 편 만에 "누가 벌고 누가 물렸나"에 답할 수 있게 된 거다.
다만 솔직히 남는 한계가 있다. 나는 최근 구간만 긁었기 때문에, 그 전부터 들고 있던 사람의 전체 그림은 잘려 있다. 실제로 계산해보니 보유량이 음수로 나오는 이상한 지갑이 몇 개 있었는데, 내 구간 밖에서 이미 산 사람들이다. 그리고 사람인 척하지만 봇인 지갑도 아직 완벽히 못 걸러냈다. 현재가도 마지막 거래 기준의 근사치다. 진짜 포렌식이 되려면 전체 역사를 긁고, 봇에 라벨을 붙이고, 클러스터로 묶어야 한다. 그게 다음 단계다.
그래도 오늘 확인한 건 분명하다. 이 밈코인을 산 사람들은 거의 다 잃었고, 판 사람만 겨우 벌었다. 그리고 그 결론을 이제 나는 남의 글이 아니라 내 손으로 안다.