아발란체(Avalanche) 블록체인 시작하기

English (N/A)

아발란체(Avalanche)는 이더리움의 확장성 문제를 해결하기 위해 등장한 고성능 블록체인 플랫폼이다. 가장 눈에 띄는 특징은 하나의 네트워크 안에 세 개의 체인이 공존한다는 점인데, 이 구조를 이해하면 아발란체를 효과적으로 활용할 수 있다.

세 개의 체인 구조

아발란체는 X-Chain, P-Chain, C-Chain이라는 세 개의 블록체인으로 구성되어 있다. 각각의 역할이 명확하게 분리되어 있어서 목적에 맞게 사용하면 된다.

X-Chain(Exchange Chain) 은 AVAX 토큰의 생성과 거래를 담당하는 체인이다. DAG(Directed Acyclic Graph) 구조로 되어 있어서 병렬 트랜잭션 처리가 가능하고, 내장된 탈중앙화 거래소 기능도 갖추고 있다. 거래소에서 AVAX를 구매해서 아발란체 지갑으로 보내면 기본적으로 X-Chain 주소로 들어오게 된다.

P-Chain(Platform Chain) 은 검증자(Validator) 관리와 서브넷(Subnet) 운영을 담당한다. 여기서 서브넷이란 자신만의 블록체인 네트워크를 구축할 수 있는 기능인데, 합의 알고리즘이나 수수료 정책 등을 커스터마이징할 수 있다. 금융기관이나 게임 회사들이 자체 블록체인을 만들 때 주로 활용한다.

C-Chain(Contract Chain) 은 스마트 컨트랙트 실행을 위한 체인이다. EVM(Ethereum Virtual Machine)과 완벽하게 호환되기 때문에 Solidity로 작성된 이더리움 스마트 컨트랙트를 그대로 배포할 수 있다. 개발자 입장에서는 기존 이더리움 개발 경험을 그대로 살릴 수 있어서 진입 장벽이 낮다.

스노우볼(Snowball) 합의 알고리즘

아발란체의 합의 메커니즘은 기존 블록체인과 다른 방식으로 동작한다. 비트코인의 PoW나 이더리움의 PoS와 달리 확률적 샘플링 기반의 합의를 사용하는데, 이를 스노우볼 프로토콜이라고 부른다.

동작 방식은 이렇다. 네트워크의 각 노드가 무작위로 20개의 다른 노드를 선택해서 "이 트랜잭션이 유효한가?"를 물어본다. 14개 이상이 동의하면 해당 의견에 대한 신뢰도가 올라가고, 이 과정을 반복하다가 특정 임계값을 넘으면 트랜잭션이 확정된다.

이 방식의 장점은 네트워크 규모가 커져도 합의에 필요한 메시지 수가 일정하다는 점이다. 항상 20개 노드만 샘플링하기 때문에 수천 개의 노드가 있어도 확장성에 문제가 없다. 덕분에 초당 수천 건의 트랜잭션을 1초 내에 확정할 수 있다.

지갑 연동과 크로스체인 전송

아발란체에서 스마트 컨트랙트를 사용하려면 C-Chain에 AVAX가 있어야 한다. 그런데 거래소에서 출금하면 보통 X-Chain 주소로 들어오기 때문에 체인 간 전송이 필요하다.

크로스체인 전송 과정은 다음과 같다.

먼저 거래소에서 AVAX를 아발란체 지갑(Avalanche Wallet)의 X-Chain 주소로 보낸다. 그다음 아발란체 지갑에서 X-Chain → C-Chain으로 크로스체인 전송을 실행한다. 이 과정은 아발란체 공식 지갑에서 제공하는 크로스체인 전송 기능을 사용하면 된다.

C-Chain으로 자금이 이동하고 나면 그다음부터는 메타마스크로 작업할 수 있다. 메타마스크에 아발란체 C-Chain 네트워크를 추가하면 되는데, 폴리곤이나 다른 EVM 호환 체인을 추가하는 것과 동일한 방식이다.

네트워크 이름: Avalanche C-Chain
RPC URL: https://api.avax.network/ext/bc/C/rpc
체인 ID: 43114
통화 기호: AVAX
블록 탐색기: https://snowtrace.io

테스트넷을 사용하려면 다음 설정을 사용하면 된다.

네트워크 이름: Avalanche Fuji Testnet
RPC URL: https://api.avax-test.network/ext/bc/C/rpc
체인 ID: 43113
통화 기호: AVAX
블록 탐색기: https://testnet.snowtrace.io

스마트 컨트랙트 개발

C-Chain은 EVM 호환이기 때문에 이더리움에서 컨트랙트를 개발하던 것과 동일한 방식으로 개발하면 된다. Hardhat, Remix, Truffle 같은 기존 이더리움 개발 도구들이 모두 동작한다.

컨트랙트를 배포할 때는 네트워크 설정만 아발란체 C-Chain으로 변경해주면 된다. Hardhat 기준으로 hardhat.config.js에 네트워크를 추가하면 된다.

module.exports = {
  networks: {
    avalanche: {
      url: 'https://api.avax.network/ext/bc/C/rpc',
      chainId: 43114,
      accounts: [process.env.PRIVATE_KEY]
    },
    fuji: {
      url: 'https://api.avax-test.network/ext/bc/C/rpc',
      chainId: 43113,
      accounts: [process.env.PRIVATE_KEY]
    }
  }
};

트랜잭션 확인은 Snowtrace에서 할 수 있다. 이더스캔과 거의 동일한 인터페이스를 제공해서 익숙하게 사용할 수 있다. 테스트넷 트랜잭션은 testnet.snowtrace.io에서 확인한다.

서브넷(Subnet)으로 커스텀 블록체인 만들기

아발란체의 또 다른 강점은 서브넷 기능이다. P-Chain을 통해 자신만의 블록체인을 구축할 수 있는데, 이렇게 만들어진 체인은 이제 독립적인 L1으로 취급된다.

서브넷을 만들 때는 Avalanche-CLI를 사용한다.

# 서브넷 생성
avalanche subnet create mysubnet

# 로컬 테스트 네트워크에 배포
avalanche subnet deploy mysubnet

생성 과정에서 VM 타입(주로 Subnet-EVM 선택), 체인 ID, 토큰 심볼, 가스비 정책 등을 설정할 수 있다. 금융기관에서는 KYC가 적용된 허가형 서브넷(Evergreen Subnet)을 만들어서 규제 요건을 충족하면서 블록체인의 이점을 활용하기도 한다.

외부 지갑 vs 내부 지갑

서비스에서 아발란체를 도입할 때 지갑 관리 방식을 결정해야 한다.

외부 지갑 방식 은 사용자가 직접 메타마스크 같은 지갑을 연결해서 트랜잭션에 서명하는 방식이다. 이 경우 사용자가 X-Chain으로 자금을 받아서 C-Chain으로 전송하는 과정을 직접 수행해야 한다. 처음 사용하는 유저에게는 진입 장벽이 될 수 있다.

내부 지갑 방식 은 서비스에서 C-Chain 주소를 관리하는 방식이다. 컨트랙트 월렛을 사용한다면 서비스 측에서 주소 생성과 자금 관리를 할 수 있다. 사용자 경험은 좋아지지만 키 관리에 대한 책임이 생긴다.

어떤 방식을 선택하든 실제 테스트넷에서 전체 플로우를 돌려보면서 리스크를 체크하는 과정이 필요하다. X-Chain에서 C-Chain으로의 전송, 컨트랙트 호출, 트랜잭션 확인까지 한 사이클을 직접 경험해보면 예상치 못한 이슈를 미리 발견할 수 있다.

마무리

아발란체는 세 개의 체인으로 역할을 분리하고, 스노우볼 합의로 빠른 확정성을 제공하며, EVM 호환으로 이더리움 생태계의 자산을 그대로 활용할 수 있는 플랫폼이다. 이더리움 개발 경험이 있다면 C-Chain에서 바로 개발을 시작할 수 있고, 서브넷을 통해 필요에 맞는 커스텀 블록체인도 구축할 수 있다.