[UDC2022] Ava Labs, Smart Contract

Seokhun Yoon·2022년 10월 30일
1

UDC2022

목록 보기
7/9

“서브넷을 통해 커스터마이징이 자유로운 체인을 구축할 수 있다”

아바랩스 소프트웨어 엔지니어 애런 버치왈드가 이번 연사로 나와 아발란체에 대해서 소개해주었어요.

아발란체는 사용자가 자신만의 체인을 운영할 수 있도록 서브넷을 제공하고 있어요. 그리고 서브넷에서는 커스텀 가능한 EVM을 사용할 수 있고, Go언어로도 스마트 컨트랙트를 구현할 수 있다고 해요.

자세한 내용을 한 번 살펴볼게요!

Contents

아발란체에는 세 종류의 체인, Platform Chain (P-Chain), Contract Chain (C-Chain) and Exchange Chain (X-Chain)가 있는데, 각각 특정 서브넷을 구성하는 밸리데이터가 검증하며 이를 통틀어서 Primary Network라고 불러요.

아발란체 생태계를 이해하기 위해서 VMSubnet에 대한 개념을 먼저 살펴볼게요.

VM(Virtual Machine)은 블록체인의 어플리케이션 레벨 로직을 정의해요. 기술적으로 보면 VM은 블록체인의 상태, 상태 변화, 트랜잭션, 그리고 사용자가 블록체인과 상호작용할 수 있는 API를 지정해요.

Subnet은 밸리데이터 집합과 이 집합이 검증하려고 하는 블록체인 집합으로 구성되어있어요. 각 서브넷은 독립적인 네트워크로 멤버십과 토큰 이코노믹에 관련된 자체 규칙을 가지고 있어요. 각 체인은 하나의 서브넷에 의해 검증되며, 서브넷은 여러 체인을 가질 수 있어요. 그리고 밸리데이터는 여러 서브넷의 구성원이 될 수 있다고 해요.

만약 여러분이 자체 서브넷을 생성하게 되면, 이 서브넷의 체인은 Primary Network의 밸리데이터(X-chain이나 C-chain를 검증하는 밸리데이터 )가 검증하는 것이 아니라, 여러분이 선택한 밸리데이터만 검증이 가능해요.

블록체인은 본질적으로 VM(Virtual Machine)의 인스턴스로 볼 수 있어요. 사용자는 Subnet-EVM을 사용할 수 있고, 이것으로 부터 여러개의 인스턴스를 가질 수도 있죠. 따라서 서브넷은 한 개 또는 여러개의 블록체인 될 수 있어요.

그렇다면 Subnet-EVM은 무엇일까요? Subnet-EVM은 사용자가 EVM 기반의 체인을 자체 서브넷에 배포하기 위해 사용되는 VM이에요. 사용자는 공통 VM을 사용할 수도 있지만 각자의 유스케이스에 최적화된 자체 VM을 만들 수도 있어요. 이런 특징들 덕분에 Subnet은 높은 유연성을 가지고 사용자가 원하는 것을 만들 수 있다고 해요.

EVM에서 Cryptographic 작업과 같이 비싼 함수를 솔리디티로 실행 하는 건 비효율적이기 때문에, 이런 부분은 precompile을 통해 진행하게 돼요. 아래 그림의 코드는 precompile 실행 작업을 Go로 작성한 예시에요. sha256 해시 작업을 위해 사용자는 Go 언어로 몇몇 키워드만 입력하면, precompile을 발생시키는 op code를 호출하게 돼요. 즉, 어떤 언어로 작성해도 EVM 실행을 할 수 있게 돼요.

Precompile은 정말 유용한 기능이지만, 실제로는 많은 기능을 제공하지 않아요. 즉, EVM의 인스턴스를 원하는대로 커스터마이징 할 수 없다면 사용하기 어려운 기능이에요. 하지만 만약 나만의 subnet과 subnet-evm을 만든다면, 나에게 맞게 코드를 바꿀 수 있게 돼요.

Stateful precompile은 위에서 언급한 precompile에 state 접근을 더한 개념이에요. 이를 통해서 EVM 인스턴스를 원하는 대로 커스터마이징이 가능해요.

Stateful Precompile 인터페이스를 자세히 보면, 솔리디티 인터페이스와 마찬가지로 fallback function과 function selector, function map 등이 있어요. 즉, 원하는 함수를 정의할 수 있으며, 여기에 function signature를 쉽게 매핑할 수도 있어요.

(좀 더 자세한 내용을 원하신다면 미디엄 글을 참고하세요! 그리고 비슷한 강연이 유튜브에도 있어요!)

저는 개인적으로 서브넷이라는 개념이 확장성을 높이는데 큰 도움이 될 것 같다는 생각이 들면서, 규모가 큰 서브넷이 영향력이 더 커지는 구조가 아닌가 하는 생각도 들었어요. (이건 저의 추측이기 때문에 틀릴 수도 있어요!) 그래도 이런 접근 자체가 매우 흥미롭고 앞으로가 더 기대되네요!

주요 Q&A

Q: C-chain 대신 서브넷을 사용했을 때 제한점이나 단점은 무엇이 있을까요?

A: 서브넷 사용자들은 C-chain에서 자신만의 디앱을 운영해본, 익숙한 사람들이 대부분입니다. 서브넷은 입문자에게는 생소하고 복잡할 수 있고, 여러가지 모니터링이 필요합니다. 먼저 C-chain을 사용해보고 서브넷을 사용하는 것을 추천합니다.

profile
블록체인 개발자를 꿈꾸다

0개의 댓글