ton에서 토큰의 총량을 계산하는 방법은 2가지가 있음. (꼭 ton이 아니라도 data platform에서 쿼리를 처리하는 방식이 대부분 이럼)
1. [raw] ton.messages와 ton.jetton_events를 통해 토큰의 움직임을 하나하나 계산하여 사용. TON 외 토큰은 jetton events에 내역을 파싱해야 함.
2. [decoded] ton.balancce_history로 그냥 가져오기
그래서 일단 2로 하기 위해 ton explorer에서 제공하는 주소(address)로 쿼리하는데 아무것도 나오지 않는 것임.
이게 왜인가 데이터를 보니 주소 구조가 완전 다른 것. 익스플로러에는 "
UQC90~~" 인데 dune에는 "0:bdd" 로 제공되고 있었음.
이 이유는 TON이 단일 블록체인이 아닌 확장성을 위한 여러 개의 멀티체인으로 구성되어 있다는 것인데 현재는 2체인이 존재. (앞으로 늘어날 수 있음)
- Master chain (workchain_id = -1): 주로 검증자의 PoS 서명 내용 공유
- Base chain (workchain_id = 0): 유저 트랜잭션
그래서 이를 구분하기 위해 기본적으로는 -1:bdab~ 와 0:d1ea~ 이런 식으로 기록되고, 더 유저가 사용하기 쉽게(?) Base64로 인코딩한게 보여지는 주소인 것. 그래서 참고로 토큰들도 주소도 2개 있고, 이런 내용은 tonviewer에 보면 두 주소 모두 확인할 수 있음.
+ Dune에서 쿼리할려면 0:bd 이것도 대문자 처리를 별도로 해줘야함. 왜냐면 evm은 주소 테이블을 varbinary로 처리하지만 이런 단순 16진수가 아닌 추가적인 처리가 있는 non-evm 체인은 varchar로 주소를 처리하기 때문.
