2022년 08월 10일 01:42

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




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


멀티체인과 크로스체인


자산을 이동하는 방법


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

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





출처 : LayerZero Whitepaper

LayerZero 프로토콜






출처 : 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의 앱으로 내보낸다.

기타 특징


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

응용 사례


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

정리

함께 보면 좋은 콘텐츠