이더리움 트랜잭션의 의미를 실시간으로 추출해보자! (Introduction of Real-time and Generic Transaction Semantic Representation on Ethereum)

Disclaimer : 본 아티클은 컴퓨터 과학/공학(Computer Science/Engineering)에서 최우수 학회(Top Conference) 중 하나인 WWW에서 2023년도에 발간한 “Know Your Transactions: Real-time and Generic Transaction Semantic Representation on Blockchain & Web3 Ecosystem” 논문의 내용을 바탕으로 합니다. 본 아티클에는 작성자의 주관적인 의견도 포함되어 있으며, 오타나 내용에 대한 피드백은 언제든지 환영합니다. 이 아티클의 내용은 투자 조언이 아니며, 투자 조언으로 해석되어서도 안 됩니다.

Author

송만섭 of Decipher

Seoul Nat’l Univ. Blockchain Academy Decipher(@decipher-media)

Reviewed By 이현우, 신성헌

목차

  1. TL;DR
  2. Introduction & Motivation
  3. Design of Motif-based Transaction Semantics Representation
    3.1. 트랜잭션 데이터 수집 (Transaction data acquisition)
    3.2. 트랜잭션 의미 추출 (Transaction semantic extraction)
  4. Evaluation
  5. Summary

1. TL;DR

  • 본 아티클에서는 2023년도에 네트워크 분야의 가장 권위 있는 학회 중 하나인 World Wide Web (WWW)에서 발표된 논문 “Know Your Transactions: Real-time and Generic Transaction Semantic Representation on Blockchain & Web3 Ecosystem”의 내용을 바탕으로 구성되어 있습니다.
  • DeFi 및 NFT와 같은 서비스는 이더리움 같은 블록체인의 트랜잭션을 통해 운영되고 있으며 스마트 컨트랙트를 통해 복잡하고 다양한 서비스 로직과 의미(Semantic)를 만들고 있습니다.
  • 금융 사기, 해킹, 자금 세탁과 같은 위험하거나 불법적인 행위가 현재 블록체인 생태계에 존재하고 있기 때문에 트랜잭션의 의도와 의미를 파악하는 것이 점점 중요해지고 있습니다.
  • 이런 문제들을 해결하기 위해, 해당 논문에서는 다양한 트랜잭션의 의미 추출을 16가지 패턴을 통해 실시간으로 처리 가능한 방법(Motif-based Transaction Semantics representation method)인 MoTS를 제안합니다.
  • MoTS는 트랜잭션 데이터의 수집(Acquisition)과 의미 추출(Semantic extraction)을 빠르게 처리하여 실시간으로 수행이 가능하고, 트랜잭션의 다양한 의미를 효과적으로 구별할 수 있는 방법을 제시합니다.
  • 해당 논문의 방법은 실험 결과로 이를 증명하고 있고 다양한 분석에도 활용할 수 있어서 이더리움 생태계를 이해하는데 새로운 통찰력을 제공합니다.
  • 구현은 오픈 소스로 공개되어 있습니다(https://github.com/wuzhy1ng/MoTS).

2. Introduction & Motivation

은행과 주식 시장 같은 전통적인 금융 시스템에서는 시장 규제와 잠재적 위험 예방을 위해 관리자가 고객의 어카운트(Account) 정보를 직접 확인하고 관리합니다. 그러나 블록체인 환경에서는 가명성(Pseudonymity)이라는 블록체인의 특징 때문에 블록체인 어카운트의 계좌신원과 정보를 얻기 어렵습니다. 따라서 블록체인 생태계의 건전한 발전을 위해 트랜잭션 의도를 이해하는 것이 중요합니다.

다양해진 트랜잭션의 의미

이더리움은 스마트 컨트랙트를 통해 DApp을 구축할 수 있는 가장 영향력 있는 블록체인 중 하나입니다. 시간이 지남에 따라 DeFi, NFT, Lending Protocol 등 매우 다양한 DApp들이 등장했으며, 스마트 컨트랙트의 로직도 점점 복잡해져 트랜잭션이 다양한 의미를 갖게 되었습니다. 이전의 연구 조사에 따르면, 2019년 이전에는 전체 트랜잭션의 90% 이상의 목적은 단순히 코인을 송금하는 것이었다고 합니다. 그러나 이더스캔(Etherscan)이 제공한 조사에 따르면, 그림 1에서 볼 수 있듯이 최근 몇 년 동안 트랜잭션의 의미가 다양해지고 있으며 2021년에는 트랜잭션의 30% 이상이 단순히 코인을 송금하는 것이 목적이 아닌 아닌 Swap, Mint 등의 다른 목적을 가지고 있었습니다. 이러한 변화는 이더리움이 실제로 탈중앙화된 서비스가 가능한 블록체인 시스템으로 진화하고 있음을 보여줍니다.

그림 1: 2021년 이더리움 트랜잭션 의미의 비율과 키워드에 대한 시각화 (출처: 해당 논문)

다양해진 트랜잭션의 의미를 추출하려면 트랜잭션 데이터를 수집하고, 의미를 추출하는 방법론이 필요합니다. 하지만 기존의 방법에는 두 가지 한계점이 있습니다.

한계점 #1) 느린 트랜잭션 데이터 수집 속도

이더리움에서 트랜잭션 데이터를 수집하는 세 가지 방법은 다음과 같습니다:

  • Remote Procedure Call(RPC) 인터페이스 호출
  • 웹사이트 API 크롤링
  • 풀 노드 직접 운영

Geth와 같은 대부분의 이더리움 클라이언트는 체인 데이터와 상호 작용하는 사용자에게 RPC 인터페이스를 제공합니다. Infura 및 Alchemy를 포함한 일부 온라인 플랫폼도 사용자에게 무료로 RPC 인터페이스를 제공해 주기도 합니다. 웹사이트 API는 이더스캔에서 사용하는 방식입니다. 하지만 이러한 웹사이트 API는 일반적으로 크롤러 방지 규칙을 설정하여 사용자의 쿼리 빈도를 제한하기 때문에, 모든 트랜잭션 데이터를 쉽게 쿼리하는 것은 어렵습니다.

위에서 언급한 방법들은 노드를 직접 운영하지 않고도 트랜잭션 데이터를 수집할 수 있게 해주지만, 실시간으로 데이터를 수집하는 것은 어렵습니다. 예를 들어, 가장 최신 블록이 합의가 되더라도 이더스캔에서는 바로 볼 수 없고 약 5초 후에야 해당 블록을 조회할 수 있습니다. 풀 노드를 직접 운영한다면 실시간으로 트랜잭션을 수집할 수 있지만, 다른 방법에 비해 많은 운영 비용이 필요합니다.

한계점 #2) 트랜잭션 의미 추출의 보편성 부족

이더스캔은 이더리움 블록체인의 익스플로러이며, 웹사이트 API를 통해 이더리움 네트워크에서 발생하는 모든 트랜잭션을 조회하고 추적할 수 있는 도구로써 매우 활발히 사용되고 있습니다. 그러나 이더스캔은 트랜잭션의 의미를 추출하고 표시하기 위해, 내부적으로 수작업으로 규칙을 설정해야 합니다.

그림 2: 이더스캔의 트랜잭션 의미 예시 (출처: 해당 논문)

예를 들어, 그림 2에서 볼 수 있듯이, 이더스캔은 하단의 빨간 점선 박스의 트랜잭션을 스왑 메소드로 성공적으로 인식하지만, 상단의 빨간 점선 박스의 트랜잭션에서는 의미를 식별하지 못하고 있습니다. 이처럼 이더스캔은 의미 추출이 가능은 하지만 , 이를 수동으로 설정해야 한다는 단점이 있습니다.

3. Design of Motif-based Transaction Semantics Representation

이를 해결하기 위해 논문에서는 Motif 기반의 트랜잭션 의미 추출 방법인 MoTS(Motif-based Transaction Semantics representation)을 제시합니다. Motif는 사전적인 정의로는 문학 및 예술 작품에 자주 반복되어 다루어지거나 나타나는 내용을 의미합니다. Motif란 용어는 [3.2. 트랜잭션 의미 추출 (Transaction semantic extraction)] 파트에서 좀 더 자세히 설명할 예정입니다.

그림 3: MoTS 방식을 이용한 전체적인 흐름 소개

그림 3은 MoTS의 전반적인 전체 트랜잭션 처리 플로우를 보여줍니다. 트랜잭션 데이터 수집 구간에서는 블록체인 클라이언트 네트워크를 통해 RPC 쿼리로 블록체인에서 트랜잭션을 얻습니다. 이 때, 보다 빠른 수집을 위해 기존의 batch-level parallelism 방식 대신, request-level parallelism 방식을 사용합니다. 트랜잭션 의미 추출 구간에서는 수집된 트랜잭션을 활용해 semantic network를 구성하여 의미를 추출하고 semantic vector를 구성하여 의미의 빈도수를 계산합니다. 이를 통해 트랜잭션 분류 및 어카운트 분류 등 이더리움 생태계 분석이 가능합니다. Batch-level/request-level parallelism 및 semantic network/vector에 대한 설명은 아래에서 더 자세히 다루겠습니다.

그렇다면 ToMS에서 어떻게 실시간으로 다양한 트랜잭션 의미를 추출할 수 있는지, 트랜잭션 데이터 수집 구간과 의미 추출 구간에서의 최적화에 대해 좀 더 자세히 알아보겠습니다.

3.1. 트랜잭션 데이터 수집 (Transaction data acquisition)

MoTS는 RPC 호출을 통해 이더리움에서 트랜잭션 데이터를 얻습니다. Geth와 같은 일반적인 이더리움 클라이언트는 eth_getBlockByNumber, trace_block, eth_getLogs와 같은 JSON-RPC 인터페이스를 제공하여 이더리움 트랜잭션 데이터에 접근할 수 있습니다. 데이터 수집 속도를 개선하기 위해 RPC 호출을 병렬로 수행할 수 있습니다. 그림 4의 상단 그림에서 볼 수 있듯이, 기존 방식에서는 여러 RPC 호출을 하나의 batch로 묶어 병렬 처리하는 batch-level parallelism 방식을 사용합니다. 그러나 batch-level parallelism은 현재 batch가 모두 완료되어야만 다음 batch를 병렬로 처리할 수 있다는 단점이 있습니다. 이에 따라 MoTS에서는 각 RPC 타입을 개별적으로 병렬 처리하는 request-level parallelism 방식을 제안합니다(그림 4의 하단 그림 참고). 이를 통해 다른 요청의 완료를 기다리는 동안 발생하는 대기 시간을 줄일 수 있습니다.

그림 4: RPC 기반 두 가지 병렬 호출 유형의 동작 과정 예시

Request-level parallelism 과정을 좀 더 자세히 살펴보면(그림 3의 트랜잭션 데이터 수집 구간 참고), 첫 번째 단계에서 request queue는 블록 번호 순서대로 RPC 액세스 요청(request)을 지속적으로 생성하여 worker에게 전달합니다. 그 후 여러 worker가 request-level parallelism을 통해 RPC 호출을 병렬로 수행하여 트랜잭션 데이터를 가져오고, 트랜잭션의 타입(예: External transaction, Internal transaction)별로 구분한 다음 transaction pipeline에 전달합니다. 마지막으로 transaction pipeline은 병렬 처리된 트랜잭션을 블록 번호에 따라 정렬하여, 트랜잭션 의미 추출 구간에 전달될 트랜잭션의 순서가 이더리움에서 실제로 생성된 순서와 동일하도록 보장합니다.

3.2. 트랜잭션 의미 추출 (Transaction semantic extraction)

MoTS는 semantic network라는 일종의 그래프 형태의 데이터 구조를 사용하여 트랜잭션을 표현할 수 있습니다. 예를 들어, 그림 5는 UniswapV2Router02.sol 의 swapExactTokensForTokens 함수 코드를 오른쪽의 semantic network로 표현합니다. Semantic network에서 회색 동그라미는 어카운트를 나타내고, 화살표는 일련의 트랜잭션을 나타냅니다. 해당 그림은 두 토큰을 교환하려는 swapper, 두 토큰 간 최적의 경로를 찾아주는 router, 그리고 유동성 풀인 pair라는 어카운트 간의 트랜잭션 흐름을 설명하고 있습니다. ①는 swapper가 router에게 트랜잭션을 전송한다는 의미이고 ②는 swapper가 pair에게 트랜잭션을 전송한다는 의미입니다. 마지막으로 ③은 pair가 swapper에게 트랜잭션을 전송한다는 의미입니다.

그림 5: Uniswap-V2에서의 Swap 함수 예시

Semantic network 분석을 가속화하고 단순화하기 위해, MoTS는 하나의 external transaction에 의해 트리거된 스마트 컨트랙트에서 생성된 internal transaction과 토큰 전송으로 구성된 semantic network를 정의하고 시스템에서 전송으로 정의된 트랜잭션만을 고려합니다. DeFiRangerEver-evolving Game과 같은 이전 연구에서는 일반적으로 서로 다른 semantic network 패턴은 서로 다른 의미를 가진다는 것이 증명되었습니다. Semantic network의 패턴을 효율적으로 분석하기 위해, 그림 6에 표현된 16개의 모티프(Motif)를 고려했습니다. 이러한 모티프는 이전의 많은 연구에서 널리 사용되었으며, 다양한 복잡한 네트워크의 특성을 나타내는 것으로 알려져 있습니다. 그림 5에 해당하는 semantic network 패턴도 M₁₆으로 표현할 수 있습니다.

이런 방식으로 길이가 16인 semantic vector를 사용하여 트랜잭션의 의미를 표현합니다. 여기서 semantic vector[1]은 첫 번째 모티프(M₁)의 빈도 수를 의미합니다. semantic vector의 값을 계산하기 위해, MoTS는 노드 쌍 사이에 다중 링크가 없는 모티프 패턴을 분석하는 데 사용되는 2016년도에 제안된 접근 방식을 활용합니다. 여기에 트랜잭션 의미에 부합하는 현실적인 패턴을 고려하여 설계합니다. 접근 방식의 세부 사항은 본 논문의 Table 2를 참조하시기 바랍니다.

그림 6: Network semantic 패턴을 표현하는 16가지의 모티프(Motif)

4. Evaluation

MoTS의 성능을 평가하기 위해 측정한 실험 결과들을 소개하겠습니다. 해당 실험들은 다음 3가지 질문에 대한 답을 제시하는 것을 목표로 합니다.

Q1) 트랜잭션 데이터를 수집하고 트랜잭션 의미를 추출하기에 충분히 빠른가?

Q2) Semantic vector가 서로 다른 트랜잭션 의미를 구별할 수 있는가?

Q3) Semantic vector를 활용하여 이더리움 네트워크 분석이 가능한가?

실험을 위해 실제 이더리움의 1,325만 개의 블록 내 트랜잭션들을 활용했습니다.

그림 7: 각 블록의 트랜잭션 데이터 수집에 소요되는 시간 및 트랜잭션 의미 추출 계산 시간에 대한 실험 결과

그림 7은 Q1과 관련된 실험 결과를 보여줍니다. 왼쪽의 (a) 그림에서는 RPC, API 등 여러 가지 방식으로 트랜잭션 데이터를 수집하는 속도를 보여줍니다. 기존 RPC 기반 방식인 Ethereum-ETL, EtherQL과 비교했을 때, MoTS는 약 10배의 속도 향상을 보여줍니다. 또한, API 기반 방식인 Etherscan, BigQuery와 비교하면 약 5배의 속도 향상을 얻었습니다. Etherscan과 같은 API 기반 방식은 특정 트랜잭션 쿼리의 최적화로 인해 기존 RPC 기반 방식보다 빠르지만, MoTS보다는 느리다는 것을 확인할 수 있습니다. 결론적으로, MoTS는 RPC 방식을 채택하여 인터페이스 형식이 유사한 이더리움 계열의 블록체인(e.g., Polygon)에서도 활용 가능할 뿐만 아니라, 1초 미만의 실시간 데이터 수집이 가능해 블록 생성을 빠르게 하는 고성능 블록체인에서도 효과적일 것으로 예상됩니다.

(b) 그림에서는 트랜잭션 데이터 수집과 semantic vector 계산(트랜잭션 의미 추출)까지 고려하더라도 약 1초 정도로 매우 빠르게 처리할 수 있음을 보여줍니다. request 처리에 대한 concurrency가 높을수록 더 좋은 성능을 보이며, concurrency가 그렇게 높지 않아도 충분히 빠른 처리 속도를 보여줍니다.

그림 8: t-SNE를 사용한 semantic vector 시각화 (의미 별 분류 경계는 점선으로 표시됨)

그림 8은 Q2와 관련된 실험 결과입니다. 이를 위해 2021년 이더스캔의 트랜잭션 의미 라벨링을 기반으로, MoTS에서 구별한 트랜잭션 의미를 비교하여 타당성을 검증했습니다. 딥러닝 모델에서 feature의 유사도를 파악하기 위해 시각화를 할 때, 자주 사용되는 방법 중 하나인 t-SNE를 이용해 그림 1에서 Transfer 의미를 제외한 가장 빈도가 높은 9개의 트랜잭션 의미가 구별되는지를 시각화했습니다. 본 논문에서는 이 결과를 바탕으로, 이러한 구분이 제법 잘 이루어졌다고 주장합니다. 그러나 제 개인적인 의견으로는, 그림에서 회색으로 표시된 Claim이 한 곳에 모여 있지 않고, 주황색 Swap의 경우에도 모여 있는 분포보다 흩어져 있는 점선의 수가 더 많아 보입니다. 이로 인해 구분이 명확하지 않아 조금 아쉬운 결과라고 생각합니다.

그림 9: 2021년 시간에 따른 4개 모티프의 빈도 변화

그림 9는 Q3와 관련된 실험 결과입니다. 그림 6에서는 16가지 모티프 중 4가지(M₁, M₂, M₃, M₁₁) 모티프에 대해 2021년 동안의 빈도(Frequency) 추세를 보여줍니다. M₁과 M₂는 외부 트랜잭션의 대표적인 패턴이며, M₁₁은 스마트 컨트랙트의 대표적인 패턴입니다. 이 결과를 통해 2021년에는 단순히 ETH 코인을 전송하는 트랜잭션의 사용 증가량보다 스마트 컨트랙트를 호출하는 트랜잭션의 사용 증가량이 더 많았음을 알 수 있으며, 실제 이더스캔 분석에서도 비슷한 경향성을 확인할 수 있습니다.

M₃는 NFT에서 executeFundsTransfer 함수를 사용할 때 발생하는 모티프 패턴입니다. M₃과 M₁₁의 추세를 비교했을 때, 스마트 컨트랙트를 호출하는 패턴(M₁₁)의 사용 증가량에 비해 M₃의 사용 증가량이 더 많음을 알 수 있습니다. 이는 2021년 기준으로 NFT 거래가 다른 스마트 컨트랙트에 비해 유난히 활발했음을 나타냅니다.

5. Summary

본 아티클에서 소개한 이번 논문에서는 블록체인 생태계에서 실시간으로 트랜잭션의 의미를 수집, 추출 및 분석하기 위해 MoTS라는 방법을 제안했습니다. MoTS는 트랜잭션 데이터 수집과 트랜잭션 의미 추출이라는 두 가지 주요 단계를 최적화했습니다. 트랜잭션 데이터 수집 단계에서는 request-level parallelism을 통해 수집 시간을 획기적으로 줄였습니다. 트랜잭션 의미 추출 단계에서는 16개의 모티프 빈도를 계산하여 semantic vector를 얻었습니다. 또한, 여러 방면의 실험 결과로, MoTS 방식은 외부에서 RPC 통신을 통해 데이터를 수집해도 풀 노드를 운영하는 것과 비슷한 수집 속도를 보여주었습니다. 이와 더불어, semantic matrix로 계산된 semantic vector를 통해 2021년에 스마트 컨트랙트(특히 NFT 거래)가 활발히 사용되었음을 분석할 수 있었습니다. 다만, 본 논문에서는 MEV나 Flash Loan과 같은 현상은 다루지 않았습니다. 이러한 현상들은 최근 이더리움 생태계에 큰 영향을 미치고 있으므로, MEV와 Flash Loan 등을 고려한 다양한 트랜잭션 의미를 분석한다면 더 완성도 높은 접근 방식이 될 것으로 기대하며 글을 마치겠습니다.

References

--

--

Maximillian Song
Decipher Media |디사이퍼 미디어

Ph.D. student (Dept. of Computer Science and Engineering, SNU) / Decipher 12th member / Blockchain system(core) engineer