본 포스팅은 < 원본 : Unmarshaling Blockchain Data >의 번역본으로 Unmarshal 언마샬 프로젝트에 관심이 있는 커뮤니티 투자자분들의 편의를 위해 작성되었습니다.

오타나 번역 관련 문의가 있으시다면 댓글로 부탁드립니다!

 

블록체인에서 제공되는 데이터는 그 자체만으로는 별로 소용이 없으며, 개발자들이 당장 DeFi 애플리케이션을 개발하기 위해 즉시 사용하기에는 무리가 있습니다. 블록체인의 데이터를 유용한 ‘정보’로 바꾸기 위한 일련의 프로세스가 필요하며, 이 과정을 거치고 나서야 탈중앙화 애플리케이션에서 사용 가능한 형태로 데이터가 이용됩니다. 

 

데이터는 블록체인에 어떻게 저장됩니까?

블록체인은 단순히 말해 블록들의 리스트로, 각 블록은 그 이전 블록과 그다음 블록에 연결됩니다. 한 블록에는 일련의 트랜잭션들이 들어 있습니다. 각 트랜잭션은 해당 블록체인에서의 작업에 대한 함수입니다. 예를 들어 전송, 민트, 유동성 추가 등의 작업이 있습니다. 트랜잭션에는 작업을 수행하고 로그 이벤트를 내보내기 위한 기능이(함수) 내재되어 있습니다. 블록체인에서의 모든 작업은 해시 코드를 사용합니다.

BSC에서 임의의 트랜잭션 ID를 예로 들어 더 알아보겠습니다.

0xca629c082f180c57180fbc6c030fcd23dd3982a614a1a9d6f127569a5461c976

위의 트랜잭션은 PancakeSwap에서 두 토큰에 유동성을 추가하는 것입니다. 위의 트랜잭션은 BSC에서 PancakeSwap 내 “유동성 추가” 기능을 활성화합니다. 

트랜잭션을 처리하기 위해 전송되는 입력된 데이터는 다음 사진과 같습니다.

0x를 제외한 처음 8자 e8e33700은 함수 이름을 나타냅니다. 비슷한 방식으로, 데이터는 다른 세부 정보를 찾기 위해 abi-decoder로 전달될 수 있습니다.

PancakeSwap addLiquidity(유동성 추가) ABI는 다음과 같습니다

addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)

 

함수 정의는 Keccak-256을 통해 해시되어 e8e33700이 됩니다. 

완전한 함수의 계산을 위해 일련의 내부 함수들이 있습니다. 위 함수의 경우엔 approve(승인), 전송 그리고 민트 함수가 소환되며, 여기에서 확인할 수 있습니다. 

 

블록체인에서 데이터를 검색하는 방법

데이터를 인덱싱하는 과정에서 여러 난관을 마주칠 수 있습니다. 첫 번째 단계는 Genesis Block의 데이터를 인덱싱하는 것입니다. 이더리움 체인은 11960866개의 블록을 갖고 있으며, 하루 1.5M에 육박하는 트랜잭션이 진행됩니다(글 작성 시점 기준). 메인넷의 속도가 느리기에 우리가 찾고 인덱스화할 수 있는 양이 한정적입니다. 

메인넷을 실행하는 교점에서 데이터를 추출하는 방법은 여러 가지가 있습니다. JSON RPC, WebSocket 이용이 그 예입니다. 

트랜잭션 세부 정보를 가져오는 JSON RPC

마찬가지로 여기에서 다양한 API 지원을 찾을 수 있습니다.

위의 방법들로 데이터를 추출할 수 있지만, 해시 코드와 16진법으로만 결론을 얻을 수 있어 쉽게 이해하기는 어렵습니다. 

 

Unmarshal에서는

우리는 블록체인 데이터를 가공되지 않은 형태로 찾아내고, 가치 있고 사용 가능한 데이터로 만들기 위해 자체 디코더와 변환기를 이용해 모든 데이터를 검수합니다. 또 우리는 지속적으로 노드와 동기화하고 가장 적절한 방법으로 우리의 인덱서에 저장하여 이용자가 그들의 편의에 맞게 검색할 수 있게 돕습니다. Unmarshal에서는 여러 노드를 실행하고 있으며, 이를 통해 데이터를 병렬로 가져오고 저장하며, 각 블록을 검증하고 오류 발생 시 오류를 추적합니다. 

아래는 블록체인에서 가져온 가공되지 않은 데이터와 Unmarsal이 제공하는 가공된 데이터입니다.

왼쪽: 가공 전 노드 아웃풋 & 오른쪽: Unmarshal 공정 후 데이터

데이터의 일관성, 독립성 그리고 지속성은 Unmarshal이 가장 중시하는 가치입니다. 우리는 인덱서들이 변칙 없이 가장 최신의 블록들로 업데이트될 수 있도록 끊임없이 노력하고 있습니다. 소비자 애플리케이션은 데이터를 디코딩하고 변환하는 등의 수고 없이도 우리의 작업물과 통합할 수 있습니다.

 

결론:

블록체인은 해시의 언어만 이해합니다. 주소 거래내역, 계약과의 상호작용, 기존 유동성의 위치 등과 같은 데이터는 블록체인을 통해 찾을 수 없습니다. 이 글은 블록체인에서 데이터를 찾는 데의 어려움에 대해서만 논했습니다. 트랜잭션으로 발생하는 수령증, 로그, 이벤트 등의 측면에서 오는 복잡함도 많습니다. Unmarshal에서는 DeFi 사용에 있어서 다양하게 활용될 수 있는 적합한 데이터를 만들기 위한 작업들을 하고 있습니다. 

 

* 해당 포스팅은 투자 관련 정보 공유의 목적으로 포스팅된 글이며 투자 권유가 아닙니다. 그러므로 개인 투자의 책임은 모두 본인에게 있으니 참고하셔서 투자하시기 바랍니다.

 

잘못된 정보 혹은 재미있게 보셨다면 댓글 부탁드립니다.

보다 빠른 정보는 텔레그램 채널과 채팅방, 카카오톡 채팅방을 통해 받아보세요 :)

텔레그램 공지방 : https://t.me/minted_labs

텔레그램 채팅방 : https://t.me/minted_chat

카카오톡 오픈 채팅방 : http://open.kakao.com/o/gDtWugpb (입장코드 : 0311)

언마샬 한국 공지방 : https://t.me/unmarshalKoreaAnn

언마샬 한국 채팅방 : https://t.me/UnmarshalKorea

+ Recent posts