Back to Blog

솔라나 간단 정리 03: 5분 만에 솔라나 트랜잭션 이해하기

MetaSleuthPhalcon Explorer
June 27, 2024
8 min read
Key Insights

"Solana Simplified" 시리즈에 오신 것을 환영합니다. 이 시리즈는 Solana의 복잡한 생태계를 마스터하는 데 도움을 드리기 위해 설계되었습니다. 첫 번째 글에서는 Solana의 운영 메커니즘, 계정 모델, 트랜잭션 구조를 살펴보았습니다. 두 번째 글에서는 Rust로 첫 번째 Solana 프로그램을 작성하고 테스트하는 과정을 안내해 드렸습니다.

이 시리즈의 세 번째이자 마지막 파트인 이 글에서는 Phalcon Explorer를 사용하여 간단한 Solana 트랜잭션을 분석하는 방법을 안내합니다. 실제 Solana 트랜잭션 분석에 앞서, 트랜잭션 흐름을 이해하는 데 있어 기본적인 측면인 Solana에서 토큰이 어떻게 구현되는지 먼저 살펴보겠습니다.

Solana 토큰 구현 이해하기

Solana의 토큰은 크게 두 가지 범주로 분류할 수 있습니다: 네이티브 토큰과 기타 토큰(SPL 토큰). 효과적인 Solana 트랜잭션 분석을 위해 이러한 차이점을 파악하는 것이 중요합니다.

네이티브 토큰 (SOL)

네이티브 토큰은 Solana의 기본 암호화폐인 SOL을 말합니다. 첫 번째 글에서 언급했듯이, Solana의 모든 계정에는 해당 계정의 SOL 잔액을 기록하는 Lamports 필드가 있습니다. Lamports는 SOL의 최소 단위로, 1 SOL은 10억 Lamports에 해당합니다. SOL은 트랜잭션 수수료, 스테이킹, 네트워크 참여에 사용됩니다.

기타 토큰 (SPL 토큰)

기타 토큰의 경우, Solana는 프로그램 계정(Token Program)과 두 가지 유형의 데이터 계정인 Mint AccountToken Account를 중심으로 구축된 강력한 프레임워크를 활용합니다. 이 아키텍처는 Solana 블록체인에서 다양한 토큰을 관리하고 상호작용하는 데 필요한 모든 기능을 제공합니다.

Solana Token Program

Token Program 구조 다이어그램 Token Program은 Solana Program Library(SPL)에서 제공하는 프로그램 계정으로, AccountInfo 내의 Executable 필드가 True로 설정되어 있습니다.

System Program과 마찬가지로, Token Program은 Solana의 고정된 주소에 배포되어 있으며, 그 소유자는 BPF Loader입니다. 강력한 프로그램 계정으로서 다양한 토큰 기능을 제공하기 위해 수많은 명령어를 구현합니다. 예를 들어, 일부 명령어는 새로운 토큰을 초기화하기 위한 Mint Account 생성이나, 특정 주소가 보유한 토큰 수량을 기록하기 위한 Token Account 생성에 사용됩니다. 다른 명령어들은 토큰 공급량을 늘리기 위한 MintTo 명령어나 두 주소 간 토큰을 전송하기 위한 Transfer 명령어와 같은 필수적인 토큰 작업을 지원합니다.

Token Program이 Mint Account와 Token Account를 생성하는 역할을 담당하기 때문에, 이 계정들의 소유자이기도 하며, 이를 통해 해당 계정들의 수명 주기와 데이터에 대한 제어권을 갖는다는 점을 주목해야 합니다.

Mint Account 구조

Mint Account 구조 다이어그램 Mint Account는 데이터 계정으로, AccountInfoExecutable 필드가 False입니다. Solana에서 각각의 고유한 토큰(예: USDC, RAY 등)은 하나의 Mint Account에 대응합니다. 이 계정은 토큰의 총 공급량, 소수점 자리수, 토큰을 발행(새로 생성)하거나 소각(파기)할 권한을 가진 계정의 주소와 같은 중요한 정보를 저장합니다.

Token Account 구조

Token Account는 개인 또는 다른 프로그램이 보유한 특정 토큰의 수량을 기록합니다. 각 토큰 유형에 대해, 해당 토큰을 보유한 모든 주체는 대응하는 Token Account를 가집니다. 예를 들어, 사용자가 다섯 가지 다른 SPL 토큰을 보유하고 있다면, 각 토큰 유형별로 하나씩 총 다섯 개의 Token Account를 갖게 됩니다.

Token Account는 데이터 계정이며, AccountInfoData 필드는 일반적으로 세 가지 주요 하위 필드로 구성됩니다:

  • Mint: 해당 Token Account가 어떤 토큰을 보유하는지 식별하는, 이 특정 Token Account에 대응하는 Mint Account의 주소입니다.
  • Owner: 이 Token Account에서 토큰을 전송할 권한을 가진 계정의 공개 키입니다. 이것이 토큰의 진정한 "소유자"입니다.
  • Amount: 이 Token Account에 현재 보유된 토큰의 수량입니다.

Token Account 구조 다이어그램 AccountInfoowner 필드(계정의 데이터를 수정할 수 있는 주체를 지정)와 Token Account의 Data 내의 owner 필드(토큰을 소유한 주체를 지정)는 완전히 다른 개념임을 강조해야 합니다. 전자는 일반적인 Solana 계정 속성이고, 후자는 SPL Token Account에 특화된 것입니다.

이 개념들을 연결하면 아래의 계정 관계 다이어그램을 시각화할 수 있습니다. System Program과 Token Program 모두 블록체인의 고유하고 고정된 주소에 배포되어 핵심 라이브러리로 기능합니다. 지갑 계정은 여러 Token Account를 보유할 수 있으며, 이 Token Account 내 토큰의 진정한 "소유자"입니다. 동일한 유형의 Token Account에 있는 Mint 필드는 해당 토큰의 고유한 Mint Account를 가리키며, 이 Mint Account는 토큰의 총 공급량과 같은 정보를 기록합니다.

Solana 계정 관계 다이어그램
Solana 계정 관계 다이어그램

Phalcon Explorer로 Solana 트랜잭션 분석하기

Solscan과 같은 전통적인 익스플로러는 귀중한 데이터를 제공하지만, 상세한 Solana 트랜잭션 분석에는 직관적이지 않은 방식으로 정보를 표시할 때가 있습니다. 먼저 Solscan에서 트랜잭션을 살펴본 다음, BlockSec의 Phalcon Explorer가 어떻게 더 명확하고 포괄적인 뷰를 제공하는지 살펴보겠습니다.

Solscan에서 Token Account 조회하기

Solscan을 사용하여 이 예시 트랜잭션 내 Token Account의 변화를 확인해 볼 수 있습니다:

Solscan 토큰 잔액 변화 뷰 Address 열에는 트랜잭션에 관련된 모든 Token Account가 나열됩니다. Owner 열은 토큰의 진정한 "소유자"(Token Account Data 필드의 owner)를 나타냅니다. Token 열은 현재 토큰의 Mint Account에 해당합니다. 첫 번째 행 오른쪽의 "$SON"을 클릭하면 더 자세한 정보를 확인할 수 있습니다:

Solscan 토큰 프로필 요약 Profile Summary의 Owner Program은 현재 Mint Account의 소유자가 Token Program임을 나타냅니다. 이제 Solscan에서 세 가지 유형의 계정을 모두 대응시켰습니다.

그러나 Solscan의 이러한 표시 방식은 다소 혼란스러울 수 있습니다. 예를 들어, 이전 이미지에서 첫 번째 행의 잔액 증가가 CHS9WajyFfuaAZRk2JC7hRJvPHXmG5fC94gtAPbnLjuY 주소에 속하는지, 아니면 Raydium Authority V4에 속하는지 명확하지 않습니다. 이러한 모호함은 사용자가 트랜잭션의 실제 흐름을 이해하는 데 어려움을 더합니다. 또한 독자들은 Solscan에서 SOL 토큰과 기타 토큰이 별도 섹션에 표시된다는 것을 알아챌 수 있습니다. 이러한 분리는 기술적으로 합리적이지만, 자산 변화를 전체적으로 볼 수 있도록 통합된 토큰 섹션 아래에 함께 표시된다면 더 이해하기 쉬울 것입니다.

Phalcon Explorer는 이러한 문제들을 해결할 뿐만 아니라, 상세한 Solana 트랜잭션 분석을 위한 다양한 혁신적인 기능을 도입했습니다. 이제 Phalcon Explorer를 사용하여 동일한 트랜잭션을 살펴보겠습니다.

Phalcon Explorer의 트랜잭션 링크를 열고 저희의 단계를 따라 함께 분석해 보시기를 강력히 권장합니다. 이 인터랙티브한 접근 방식을 통해 트랜잭션 세부 사항을 더 잘 이해하고 Solana 트랜잭션 분석을 위한 Phalcon Explorer의 강력한 기능을 직접 체험해 보실 수 있습니다!

Get Started with Phalcon Explorer

Dive into Transactions to Act Wisely

Try now for free

Phalcon Explorer에서 트랜잭션 조회 및 분석하기

Phalcon Explorer 트랜잭션 개요 페이지 왼쪽 상단에서 현재 트랜잭션이 JITO MEV 트랜잭션으로 식별되었음을 확인할 수 있습니다. 이는 보안 분석가에게 귀중한 정보입니다. 또한 필요한 경우 트랜잭션 서명 옆의 Solana 아이콘을 클릭하여 Solscan으로 바로 이동할 수 있습니다.

이 Solana 트랜잭션에 관한 정보는 논리적으로 네 가지 주요 섹션으로 나뉩니다: Basic Info, Fund Flow, Balance Changes, Invocation Flow. 오른쪽 상단의 아이콘을 클릭하여 이 섹션들 사이를 원활하게 전환할 수 있어, 포괄적인 Solana 트랜잭션 분석이 가능합니다.

Basic Info

Phalcon Explorer Basic Info 섹션 Basic Info 섹션은 현재 Solana 트랜잭션에 대한 필수적인 세부 정보를 제공합니다. 블록 번호와 서명자의 주소를 클릭하면 Solscan으로 이동하여 교차 참조하거나 추가 컨텍스트를 확인할 수 있습니다. 이 섹션은 트랜잭션 실행의 세부 사항을 파악하기 전에 빠른 개요를 제공합니다.

Fund Flow

Phalcon Explorer Fund Flow 섹션 Fund Flow 섹션은 트랜잭션 실행 중 자금의 이동과 타이밍을 명확하고 시각적으로 표현하여, Solana 트랜잭션 분석을 직관적으로 만들어 줍니다:

  • 트랜잭션 개시자이자 서명자인 59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F는 먼저 Raydium Authority V4로 레이블된 주소에 일정량의 토큰을 전송했습니다.
  • 다음으로, Raydium Authority V4는 서명자 59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F에게 약 6.747 Wrapped SOL 토큰을 반환했습니다.
  • 마지막으로, 서명자는 트랜잭션 실행을 위한 Jito 검증자에 대한 팁으로 Jito에 0.000003 SOL을 제공했으며, 이는 MEV 관련 활동을 나타냅니다.

아래는 비교를 위한 Solscan의 자금 흐름 다이어그램입니다. Solscan과 비교했을 때, Phalcon Explorer의 자금 흐름 다이어그램에서는 각 주소가 단일 노드에 고유하게 대응되어, 주소 간의 관계를 파악하기가 훨씬 쉽고 특히 복잡한 Solana 트랜잭션에서 분석 효율성이 향상됩니다.

Solscan 자금 흐름 다이어그램 사고 대응이나 포렌식 조사 등을 위해 트랜잭션의 자금 흐름을 더 깊이 분석하고 싶다면, 오른쪽 상단의 갈색 아이콘을 클릭하여 BlockSec의 고급 온체인 분석 도구인 MetaSleuth로 이동할 수 있습니다.

Explore MetaSleuth Investigation

Trace flows and build evidence for investigations

Try now for free

Balance Changes

Phalcon Explorer Balance Changes 섹션 Balance Changes 섹션은 Solana 트랜잭션이 완료된 후 다양한 계정의 토큰 변화를 명확하게 보여줍니다. 이 통합된 뷰는 Solana 트랜잭션 분석에 있어 중요한 장점입니다.

예를 들어, 트랜잭션 서명자 59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F는 세 가지 유형의 토큰 변화를 경험했습니다: 네이티브 토큰 SOL, 61Hh8Udg7zruvG3BhyNiHF4UmULnC8reB9RBFtwi8uKp라는 이름의 토큰(SPL 토큰으로 추정), 그리고 Wrapped SOL 토큰입니다.

Balance Changes에 나타나는 각 Account Address에는 하나 이상의 Token Account가 연결되어 있습니다. 해당 주소를 클릭하면 주소를 복사하거나 Solscan으로 이동하여 추가 컨텍스트를 확인할 수 있습니다.

Phalcon Explorer는 이 뷰에서 SOL 토큰과 기타 SPL 토큰을 구분하지 않아, 특정 계정의 모든 토큰 변화를 직접적으로 반영합니다. 이 통합된 표현 방식은 Token Account와 그 Owner 간의 관계를 시각화하는 것을 훨씬 쉽게 만들어, Solana 트랜잭션 중 자산 이동에 대한 더 완전한 그림을 제공합니다.

Invocation Flow

Phalcon Explorer Invocation Flow 섹션 Invocation Flow는 트랜잭션 명령어의 실행 과정을 기록하며, 각 줄은 Solana 트랜잭션 중 실행된 명령어에 해당합니다. 이 섹션은 스마트 컨트랙트 상호작용이나 프로그램 호출 내에서 정확한 작업 순서를 이해하는 데 매우 유용합니다.

여기서는 토큰 전송과 관련된 명령어 2와 4에 초점을 맞춥니다.

두 번째 명령어는 Raydium AMMswapBaseIn을 호출하여 토큰을 판매합니다. 이 명령어를 확장하면 Raydium Authority V4와 트랜잭션 서명자 간의 토큰 전송을 촉진하는 두 개의 CPI(Cross Program Invocation) 명령어로 구성되어 있음을 알 수 있습니다. 네 번째 명령어는 서명자가 Jito에 팁을 지불하는 과정으로, 트랜잭션의 MEV 특성을 확인해 줍니다.

아래 그림과 같이, 각 명령어 다음의 Accounts 탭을 클릭하면 해당 특정 명령어에 관련된 모든 계정을 확인할 수 있습니다. Solscan과 비교하여, 이 표시 방식은 더 간결하여 분석가들이 불필요한 세부 사항에 압도되지 않고 트랜잭션의 더 중요한 정보에 집중할 수 있습니다. 이 세밀한 뷰는 심층적인 Solana 트랜잭션 분석 및 디버깅에 필수적입니다.

Phalcon Explorer Invocation Flow Accounts 탭
Phalcon Explorer Invocation Flow Accounts 탭

결론

이 글에서는 먼저 네이티브 SOL, Token Program, Mint Account, Token Account를 다루며 Solana 토큰의 구현 원리를 소개했습니다. 그런 다음 Solscan을 사용하여 특정 트랜잭션의 Token Account 변화를 살펴보며 그 한계점을 부각시켰습니다. 마지막으로 BlockSec의 Phalcon Explorer를 사용하여 동일한 Solana 트랜잭션을 더욱 심층적으로 분석하고, Solana 트랜잭션 분석에 있어 탁월한 명확성과 인사이트를 제공하는 혁신적인 기능들을 소개했습니다.

이로써 "Solana Simplified" 시리즈를 마칩니다. Solana의 핵심 개념과 실제 트랜잭션 분석을 이해하는 데 도움이 되었기를 바랍니다. 특정 보안 사고, 생태계 소개, 또는 기타 BlockSec 제품과 같이 배우고 싶은 다른 주제가 있다면 댓글을 남겨 주세요! 🫡

이 시리즈의 다른 글 읽기:

Go Deeper with MetaSleuth Investigation

Extend your crypto compliance capabilities with Blocksec's MetaSleuth Investigation, the first platform for tracing funds, mapping transaction networks and revealing hidden on-chain relationships.

Move from detection to resolution faster with clear visual insights and evidence-ready workflows across the digital assets ecosystem.

MetaSleuth Investigation

Visualize Transactions With Phalcon Explorer

Use the Most Trusted Multi-Chain Explorer. Dive into Transactions to Act Wisely.

Phalcon Explorer