
앱토스(Aptos)는 고성능의 확장 가능한 탈중앙화 애플리케이션(DApp)을 구축하기 위한 블록체인 플랫폼입니다. 앱토스는 독자적인 프로그래밍 언어인 Move를 사용하여 개발자들이 고성능 스마트 계약을 작성할 수 있도록 지원합니다. 앱토스는 높은 트랜잭션 처리 속도와 확장성을 제공하며, 차세대 블록체인 애플리케이션을 구축하는 데 최적화되어 있습니다.
↗ 공식사이트: Aptos Foundation
↗ Explorer: Aptos Explorer
Feature | Mainnet Support | Testnet Support |
---|---|---|
Elastic Node | ✅ | ✅ |
Dedicated Node | ✅ | ✅ |
Web3 Data API | ✅ | ❌ |
Indexer API | ✅ | ✅ |
Webhook | ✅ | ✅ |
Stream | ❌ | ❌ |
Datasquare | ❌ | ❌ |
Understanding Aptos Basics before using Nodit
Aptos는 Move 언어 기반의 객체 중심 블록체인으로, 상태 저장 방식과 리소스 모델, 트랜잭션 처리 방식에서 Ethereum과 같은 EVM 계열 체인과 구조적으로 큰 차이를 보입니다.
Nodit Web3 Data API를 효과적으로 활용하기 위해서는 이러한 Aptos 고유 개념에 대한 이해가 필수적입니다. 이 문서에서는 Nodit API를 사용하기 전에 알아두어야 할 Aptos의 핵심 구조와 데이터 모델을 소개합니다.
Aptos vs. Ethereum
Aptos와 Ethereum은 모두 상태 기반 블록체인이지만, 상태를 저장하고 접근하는 방식에는 구조적 차이가 존재합니다.
Aptos | Ethereum | |
---|---|---|
상태 저장 구조 | 계정이 직접 리소스(Resource) 보유 | 컨트랙트 기반 storage에 저장 |
스마트 컨트랙트 | 모듈(Module)을 배포해 계정에 연결 | 독립적으로 상태 저장 |
데이터 조회 방식 | 계정 address + 리소스 type | 컨트랙트 address + slot |
EVM 기반 체인에 익숙한 사용자라면, Aptos의 이러한 구조가 생소할 수 있습니다. Nodit API를 통해 데이터를 조회할 때에는 단순한 주소만이 아니라, 주소에 연결된 리소스 타입과 모듈 구조를 함께 고려해야 합니다.
Aptos State Structure
Aptos의 상태(State)는 크게 Module과 Resource, 그리고 이를 저장하는 Account와 Object 단위로 구성됩니다.
Description | |
---|---|
Module | 스마트 컨트랙트에 해당하며, Move 언어로 작성되어 특정 계정에 배포됩니다. 함수와 타입 정의를 포함하며, 실행 가능한 기능을 제공합니다. |
Resource | Module에 의해 정의되며, 특정 계정 또는 Object에 저장되는 상태 단위입니다. 외부에서 직접 수정이 불가능하며 오직 모듈 함수 호출을 통해서만 변경 가능합니다. |
Description | |
---|---|
Account | 고유한 주소를 가진 Aptos의 기본 단위로, 사용자가 보유한 리소스(Resource)와 모듈(Module)을 소유합니다. Ethereum의 EOA(Externally Owned Account)와 유사합니다. |
Object | 각 Object는 고유 주소를 가지며 특정 리소스를 담는 컨테이너 역할을 합니다. Account와 마찬가지로 고유 주소를 가지며, 주로 Fungible Asset, LP 토큰 등 다양한 리소스를 구조적으로 분리하여 저장할 때 사용됩니다. |
Token Standards in Aptos
Aptos에서는 두 가지 표준(Coin, Fungible Asset)을 지원합니다.
Description | |
---|---|
Coin (v1) | 초기 표준으로 Account가 직접 토큰을 보유하는 단순한 구조입니다. |
Fungible Asset (v2) | 최신 표준으로 각 토큰은 별도의 Object에 저장되며, 유연한 사용 목적 분리가 가능합니다. |
Fungible Asset 표준은 Coin의 단점을 보완하여, 사용 목적 분리, 구조화된 리소스 저장, 확장성 측면에서 장점을 제공합니다.
용어 혼동 주의: Token의 의미
Aptos 생태계에서 “Token”은 일반적으로 Non-Fungible Token(NFT) 을 의미합니다.
하지만 Nodit 문서와 API에서는 Token을 Fungible Token(FT) 으로 정의합니다.
본 문서에서 "Token"이라는 용어는 모두 Fungible Token을 지칭합니다.
Migration: Coin → Fungible Asset
- Aptos 생태계에서는 대부분의 프로젝트가 Coin(v1)에서 FA(v2)로 전환(migration) 중입니다.
- 그러나 완전히 통일되지 않았기 때문에, 실사용 시에는 두 버전의 자산이 혼재되어 존재합니다.
- 이러한 상황에서 동일 자산으로서의 처리를 위해, 프로젝트들은 Coin과 FA를 동일 자산으로 간주하고 있습니다
Asset Linking in Nodit
Aptos Node API만으로는 동일한 자산(Coin ↔ Fungible Asset)을 연결하기 어렵기 때문에, Nodit에서는 두 자산을 연결하는 식별자(linkedAssetType)를 제공합니다.
- 이 식별자는 Get Token Pair By Asset Type API를 통해 조회할 수 있습니다.
- 사용자는 해당 식별자를 이용해 마이그레이션된 자산 쌍을 필터링할 수 있습니다.
Token Ownership Model
토큰 소유 방식은 표준에 따라 다음과 같이 구분됩니다:
소유 방식 | |
---|---|
Coin (v1) | Account가 직접 소유 |
Fungible Asset (v2) | Object가 소유, Account는 Object를 소유 |
Nodit에서는 모든 Token 소유 주체를 Object 단위로 표기합니다. Coin의 경우 Object가 존재하지 않기 때문에, “Object 주소 = Account 주소”로 간주하여 처리합니다.
Balance Changes
Nodit는 Aptos의 잔액 변화를 이벤트 기반으로 인덱싱하여 제공합니다. 잔액 변화의 유형은 다음과 같습니다:
deposit
: 입금 이벤트withdraw
: 출금 이벤트swap_in
/swap_out
: 토큰 스왑gas_fee
: 가스 사용refund_gas
: 반환된 가스
Nodit는 다음 기준으로 데이터를 가공합니다:
- 표준 이벤트 기반: Deposit, Withdraw 등 Move 표준 이벤트 기반 수집
- 비표준 이벤트 보완: 주요 DEX의 커스텀 이벤트 일부 수집
Aptos의 스왑 이벤트는 표준 이벤트가 아니므로, 일부 DEX의 스왑은 잔액 변화에서 누락될 수 있습니다.
Node API
Network | Endpoint |
---|---|
Mainnet | https://aptos-mainnet.nodit.io/{{API-KEY}} |
Testnet | https://aptos-testnet.nodit.io/{{API-KEY}} |
Indexer API
Web3 Data API
Webhook
Aptos Webhook Quickstart Recommended
Supported Webhook Types
Event Type | Description |
---|---|
EVENT | 이 기능은 사용자가 특정 이벤트 유형(eventType)과 해당 이벤트를 발생시킨 계정(eventAccountAddress)을 사전에 지정하여 API를 설정하면, 지정된 조건에 따라 이벤트가 발생할 때마다 알림을 제공하는 기능입니다. 사용자가 특정 이벤트를 추적하려는 경우, 해당 이벤트 유형과 관련된 계정을 API 설정에 포함시킬 수 있습니다. 이렇게 설정된 API는 실시간으로 이벤트를 감지하고, 사용자에게 알림을 전송함으로써 네트워크 상에서 발생하는 중요한 활동을 빠르게 파악할 수 있습니다. |
TRANSACTION | 이 기능은 사용자가 특정 이벤트 유형(eventType)과 해당 이벤트를 발생시킨 계정(eventAccountAddress)을 입력하여 API를 설정하면, 지정된 이벤트 유형이 발생했을 때 해당 이벤트 유형이 포함된 트랜잭션의 모든 세부 내역을 반환하는 API입니다. 이벤트가 발생하면 해당 트랜잭션의 전체 내역, 발신자, 수신자, 금액, 호출된 함수, 관련 데이터 등 모든 세부 정보를 확인할 수 있어 시스템 모니터링에 유용하게 활용될 수 있습니다. |
Webhook API
Kickstart Your Development
- Tutorial: Go to Aptos Tutorials
- Faucet: Aptos Testnet Faucet