크로스체인 시리즈 : LayerZero 프로토콜 분석

Junhoo Park
IOTRUST : Team Blog
13 min readAug 10, 2022

본 글에서는 LayerZero 백서를 분석합니다. 백서는 실제 구현 및 운영과 다를 수 있으며, 여기에서는 아이디어와 개념에 대해서 다루고자 합니다. 본 글은 어떠한 종류의 투자도 권유하지 않고 있음을 밝힙니다. 투자는 개인의 책임입니다.

같은 네트워크에서 토큰을 스왑(Swap) 하거나, 다른 블록체인 네트워크간의 자산을 교환(Exchange)하는 지갑의 기능과 관련하여 최근 크로스체인 솔루션에 관심을 갖게 되었다. 멀티체인과 크로스체인의 차이가 무엇인지부터 알아가다보니 마주하게된 LayerZero 백서가 프로토콜 관점에서 꽤 재미있어서 이에 대한 글을 작성하게 되었다. 백서의 원본은 다음 링크에 있다.

한글 자료 중에서 폴카닷이나 코스모스 백서 관련 내용은 이미 많은 분들이 다루었기 때문에 비교적 한글 자료가 적은 LayerZero를 시작으로, 여건이 된다면 MPC를 적용한 크로스체인 브릿지인 Anyswap과 오라클 네트워크를 구축하는 체인링크의 상호운용성 프로토콜인 CCIP 에 대해서 이어서 다뤄볼 계획이다.

멀티체인과 크로스체인

멀티체인은 일반적으로 여러 개의 블록체인 메인넷들이 함께 공존하는 생태계, 즉 인프라 혹은 환경이라는 뜻을 내포하고 있다. 현재도 100개가 넘는 메인넷이 존재하고 이들의 생태계에는 수 많은 Dapp들이 배포되어 있다. 하지만, 이들이 아직까지 별개의 네트워크로 작동할 뿐, 메인넷 간의 자산의 이동이나 데이터를 주고받은 환경이 구축되어, 멀티체인 Dapp이 활발하게 작동하는 단계까지는 조금 더 시간이 남은 것 같다. 당연한 얘기이지만, 비트코인이나 이더리움 네트워크가 지금의 시점을 예상하고 설계한 것이 아니기 때문에 (설령 예상했다 하더라도) 수 많은 메인넷들이 서로 자유롭게 호환되고 확장되기란 쉽지 않다.

하지만 사람들은 변화와 새로운 기대감을 주는 또 다른 메인넷으로 이전하고 싶어하고, 초기 커뮤니티를 중심으로 발전하는 생태계에 기여하면서 그 만큼의 보상도 가져갈 수 있는 이 매력적인 환경 덕택에 다양한 메인넷의 자산을 보유하고 있는 사람이 점점 많아지고 있다. 이러한 결과로 이더리움 뿐 아니라 카르다노, 솔라나, 아발란체 등 많은 Layer 1에서 De-Fi와 NFT 프로젝트가 등장하고 또 성장한 것은 어찌보면 당연한 수순이라고 할 수 있다.

이렇게 다양한 메인넷에 자산을 가진 사람은 점점 증가하고 있는데 이 자산을 하나의 플랫폼에서 관리하거나, 손쉽게 교환하는 될 수 있는 기능이 필요해졌고, 서로 다른 메인 넷 간에 자산 혹은 메시지(데이터)를 이동할 수 있는 기능을 개발하는 분야를 크로스체인이라고 하며, 흔히 ‘크로스체인 브릿지’라는 용어로 알려져 있기도 하다.

멀티체인이라는 환경에서 자체 합의 메커니즘을 탑재하고, 전반적인 생태계를 구축해 나가는 플랫폼으로는 폴카닷과 코스모스가 있다. 반면 크로스체인 브릿지는 생태계를 형성하기 보다는 자산을 이동시키는 기능을 제공하여 Dapp에서 활용할 수 있도록 서비스한다. 현재 개발된 크로스체인 브릿지는 굉장히 많이 있지만, 본 글에서 중점적으로 다루고자 하는 내용은 아니므로 이에 대해 더 알고 싶으면 해당 글을 참고하도록 하자.

자산을 이동하는 방법

간단하게 A 블록체인과 B 블록체인을 이용하려는 사용자가 있을 때, A에서 B로 자산을 옮기는 방법을 생각해보자. 가장 간단하게 중앙화된 거래소를 이용할 수 있다.

  • A 블록체인의 자산을 중앙화된 거래소로 보낸 후, 거래소 내의 B 블록체인의 자산과 교환하여 B 블록체인 주소로 송금한다.

이러한 방식의 경우 거래소를 신뢰해야 하는 문제가 있으며, 자산과의 연결의 확장성(거래소가 지원하지 않는 자산의 유형은 거래할 수 없음), 기능(De-Fi 나 NFT 거래, DAO 참여 등)면에서 한계를 가진다.

다음으로 가장 일반적인 크로스체인 브릿지를 활용하여 탈중앙화된 방식을 이용할 경우 다음과 같은 시나리오로 진행된다.

  • 사용자는 A 블록체인의 자산에 대해 B 블록체인의 자산으로의 교환을 요청한다.
  • 브릿지에서는 A 블록체인의 자산을 잠그고(lock), 확인 후에 B 블록체인의 중개 토큰 혹은 래핑된 토큰을 발행(mint)한다.
  • B 블록체인에서 새롭게 발행된 자산이 사용자에게 토큰이 전달된다.
  • B 블록체인에서 다시 A 블록체인으로 옮길 때는 B 블록체인의 토큰이 소각(burn)되고 A 블록체인의 잠금이 해제된다.

크로스체인 브릿지를 통해 자산을 옮기려고 할 경우 가장 큰 문제점 중 하나는 ‘브릿지를 구성하는 노드에 의존하게 된다’는 것이다. 브릿지를 구성하는 노드들은 합의 알고리즘을 도입하여 멀티체인 생태계를 형성하는 폴카닷, 코스모스 등과는 다르게 탈중앙화 방식으로 설계되기는 어렵다.

예를 들어, Anyswap의 경우 다수의 노드들이 A 블록체인의 내용을 확인 후 MPC(Multi-Party Computation)를 통해 동의한 결과로부터 B 블록체인에 결과를 전송하는 방식으로 분산된 보안성을 확보하고 있지만, 어쨌든 ‘하나의 이해 관계로 묶여있는 노드들에게 의존’해야 한다는 것만은 어쩔 수 없는 한계이다.

LayerZero 프로토콜은 하나의 이해관계로 묶여있는 브릿지 노드를 분산시킨다. 크로스체인 브릿지를 구성하는 노드들은 하나의 엔터티처럼 표현이 되는데, 이를 두개의 엔터티로 분산한 프로토콜을 제시하였다. 두 엔터티간의 공모가 없는 한, 이 프로토콜은 신뢰하지 않아도(Trustless) 되는 안전한 프로토콜이 된다. 개인적으로 이 아이디어가 (실제 성공 여부와는 별개로) 재미있었다.

대략적인 그림으로 나타내면 다음과 같다. A 블록체인에서 B 블록체인으로 자산을 옮기고자 할 때 프로토콜의 엔드포인트는 각 블록체인 내의 스마트 컨트랙트로 구축된다. 그리고 이 스마트 컨트랙트의 상태를 보장해주는, 즉 B 블록체인 입장에서 A 블록체인의 스마트 컨트랙트 엔드포인트의 상태를 보장할 수 있도록 두 개의 엔티티(Relayer, Oracle)가 참여한다. 여기서 Oracle은Chain A에서 발생한 요청 트랜잭션이 포함된 블록 헤더의 정보를 제공하며, Relayer는 트랜잭션과 관련된 증명을 제공하는 역할을 한다. 블록체인 B에서 스마트 컨트랙트는 두 엔터티의 내용이 동일하게 유효할 때만 작동한다.

출처 : LayerZero Whitepaper

LayerZero 프로토콜에서는 두 개의 서로 다른 엔터티가 프로토콜에 비동기식으로 참여 하기 때문에, 하나의 엔터티에 의존하였던 기존 브릿지에 비해 보안성이 강화되는 장점을 얻을 수 있다. 예를 들어, Relayer가 악의적으로 행동한다 하더라도, Oracle이 올바로 행동할 경우 공격은 성공하지 못한다.

블록체인 A에서 블록체인 B로의 유효한 전달(Valid Delivery)을 Trustless 하게 만드는 것이 LayerZero 프로토콜의 가장 큰 목적이다.

LayerZero 프로토콜

좀 더 자세히 하나씩 절차를 살펴보면, 아래 그림과 같이 표현할 수 있다. 그림은 블록체인 A에서 블록체인 B로 메시지(자산 포함)를 보내기 위한 프로토콜 작동의 순서이며, 보라색 부분은 스마트 컨트랙트로 구현된 엔드포인트이다. Communicator는 사용자의 요청과 응답을 처리하고, Validator는 컨트랙트는 Relayer와 연동되어 있으며, Network 컨트랙트는 Oracle과 연동되도록 구성된다.

출처 : LayerZero Whitepaper

각 단계별 내용에 대한 설명은 다음과 같다.

  1. 블록체인 A의 사용자 앱은 Comunicator를 호출한다. 이 때, 목적지(dst), 메시지(payload), 지정된 relayer(relayer_args)를 파라미터로 전달한다. 이 트랜잭션의 고유 식별 값(txid)을 t라고 한다.
  2. Communicator 컨트랙트는 Relayer를 식별하여 Validator 컨트랙트를 호출하고, 목적지(dst)와 메시지(payload)를 하나의 패킷으로 묶어서 전달한다.
  3. Validator 컨트랙트에서는 목적지(dst) 값을 Network로 전달한다. 여기까지는 사용자가 요청한 트랜잭션 t의 결과로 결정론적으로 수행된다.
  4. Relyaer는 Validator 컨트랙트 내용을 확인하고,
  5. Oracle은 Network 컨트랙트의 내용을 확인한다. Oracle은 현재 트랜잭션 t가 포함된 블록 식별 값(cur_blk_id)을 모니터링 한다.
  6. Oracle은 블록체인 A에서 블록 헤더(blk_hdr) 값을 읽고,
  7. Relayer는 트랜잭션과 관련된 증명을 가져와 저장한다. 여기에서 증명 값이란 이더리움의 경우 계정의 상태를 저장한 머클 패트리샤 트리를 통해 유효성 검사를 할 수 있는 값을 생성하는 것을 의미한다. 트리 내에 값이 존재하는 것을 증명하는 것은 추 후 영지식 증명 방식으로 대체 될 수 있다. 6번 과정과 7번은 서로 다른 엔터티가 비동기적으로 수행한다.
  8. Oracle은 블록헤더 정보 blk_hdr을 블록체인 B의 Network 컨트랙트에 보고한다. 이 때, 오라클은 블록체인의 최종성을 고려하여 보고 시기를 결정해야 한다. 예를 들어, 이더리움의 경우 트랜잭션 발생 이 후 15블록 이후에 보고하도록 구성해야 한다.
  9. Network 컨트랙트는 블록 헤더 정보의 해시 값을 Validator에게 전달하고,
  10. Ralayer는 Validator의 컨트랙트 상태를 모니터링하는 중에 전달해야 할 블록 헤더 정보의 해시 값과 일치하는 요청이 생성된 경우,
  11. 3에서 받은 패킷과 트랜잭션(t), 트랜잭션의 증명 값(proof(t)를 Validator에 전송한다.
  12. Validator 컨트랙트는 Oracle이 보고한 블록 헤더 정보와, 트랜잭션 t가 존재하고 유효한지를 Relayer의 증명 값을 통해 검증 후, 유효하면 패킷 정보를 Communicator에 전달한다.
  13. Communicator는 패킷을 블록체인 B의 앱으로 내보낸다.

스마트 컨트랙트(Comunicator, Validator, Network)가 처리되는 순서를 보면, 블록체인 A에서는 C-V-N인 반면에 블록체인 B에서는 N-V-C로 처리하는 방식으로 캡슐화함으로써 마치 TCP/IP Layer와 같은 방식으로 표현한 점이 인상깊다. 예를 들어, 송신을 처리할 때는 오라클이 제일 나중에 관여하지만, 수신을 할 때는 가장 먼저 처리되어야 한다.

기타 특징

백서에 따르면, LayerZero 프로토콜이 달성하고자 하는 Trustless Valid Delivery에서 필요한 요구사항은 Oracle과 Relayer 사이의 ‘약한 독립성 조건’뿐이다. 이는 두 엔터티 사이에 악의적인 공모가 없는 한 LayerZeor는 Valid Devlivery를 보장함을 의미한다.

또한, 구현 관련해서 다음과 같은 특징들이 나타난다.

  • (확장성) 엔드포인트를 스택으로 구분하여 특정 체인에 대한 통신을 처리하는 방법을 부가적인 스마트 컨트랙트 라이브러리를 통해 확장할 수 있다. 이를 LayerZero 프로토콜을 다양한 블록체인에 빠르고 쉽게 확장할 계획을 가지고 있다.
  • (비용) 엔드포인트의 스마트 컨트랙트 구현 방식은 On-chain에서 많은 실행을 요구하기에 비용에 매우 비싸질 수 있다. 이를 실용적으로 하기 위해서, LayerZero의 클라이언트는 가장 간단한 형식의 요청을 하고, 실제 증명과 데이터 전달은 Ralayer와 Oracle에 위임하여 매우 가볍게 설계하였다. 따라서, 이더리움과 같은 실행 비용이 비교적 비싼 블록체인에서도 효율적으로 운영될 수 있다.
  • (엔터티 설정) 프로토콜 상에서 Oracle의 운영사로 현재 오라클 시장을 대부분 점유하고 있는 체인링크를 언급하고 있으나, 오라클 노드를 어떻게 운영하는지 혹은 Relayer가 누가 될 지 등은 자유롭게 선택이 가능하다. 즉, LayerZero 프로토콜을 LayerZero Labs가 직접 운영하기도 하지만 누구든지 프로토콜을 활용하여 Ralyer나 Oracle을 도입하여 프로토콜을 운영할 수 있다.

응용 사례

LayerZero와 같은 프로토콜을 통해 기존에 없던 다음과 같은 것들이 가능할 것으로 예상된다. 주로 멀티체인 환경의 Dapp에서 기대할 수 있는 것들이다.

  • 크로스체인 DEX : LayerZero를 통해 기존에 래핑된 토큰을 발행하거나, 중개 사이드체인을 거치는 DEX와 달리, 두 체인에 유동성 풀이 존재하고 사용자는 단순히 하나의 풀에 기본 자산을 예치하고 인출할 수 있다. 또한, LayerZero 프로토콜을 통해 크로스체인을 지원하는 AMM(Automated Market Maker)이나 파생 상품 같은 것들로 확장될 수 있다.
  • 멀티 체인 yield 어그리게이트 : 현재 수익률 어그리게이터는 단일 블록체인에서만 집계되는 방식으로 되어 있다. 예를 들어, Yearn Finance는 이더리움 생태계 내에서 작동한다. 만약 멀티체인 환경에서 수익률을 집계할 수 있다면, 다양한 전략을 바탕으로 높은 수익률에 대한 기회를 사용자에게 제공할 수 있으며, 최악의 경우라 하더라도 단 하나의 블록체인에서 이점을 취하는 것과 동일하기 때문에 보다 나은 Dapp으로 발전할 수 있다.
  • 멀티체인 대출 : 현재 자산을 가지고 있지 않은 블록체인에서는 담보 대출을 수행할 수가 없다. LayerZero 프로토콜을 통해서 자산을 이동 후 원하는 블록체인으로 옮겨서 담보 대출을 하거나 현재 자산이 존재하는 블록체인에서 원하는 블록체인의 자산을 대출 받는 등의 기회로 확장될 수 있다.

정리

LayerZero 프로토콜은 브릿지의 노드를 두 개의 엔터티로 분리시켜서 기존의 단일 엔티티(분산 되어 있지만)와는 다르게 프로토콜을 구성한 점이 꽤나 재미있는 아이디어였고, 이러한 방식의 운영이 정말로 잘 유지될 수 있다면 비슷한 방식의 아이디어가 앞으로도 많이 나올 수 있을 것 같다. 다만, 백서에서는 Oracle의 탈중앙화가 어려운 점이나, 하나의 프로토콜에 두 개의 의사를 가진 엔티티의 행동을 강제할 수 있는 암호경제학 등의 설계가 없기에 Trustless Valid Delivery가 얼마나 잘 운영될 수 있을 지는 지켜봐야 할 것 같다.

LayerZero는 스시스왑의 0xMaki가 합류하고, 주요 투자자들로 부터 투자를 받은 내용이나 올 해 Stargate 토큰을 발행하는 등의 행보를 통해 국내에도 조금씩 알려져 가고 있다. 크로스체인에 관심이 있다면 초기 백서를 이해하고, 앞으로 LayerZero Labs의 행보에도 관심을 가져보면 크로스체인 생태계를 폭넓게 이해하는데 도움이 될 것 같다.

--

--