Orbs VM 자세히 살펴보기
저자: 탈 콜 (Tal Kol)
Orbs VM이란 무엇일까요?
탈중앙화 도커(Docker) 기반 가상 머신
Orbs VM은 탈중앙형 가상 머신으로, AWS EC2와 개념이 유사하나 탈중앙형으로 이루어집니다.
Orbs VM 서비스는 도커 컨테이너로 구현되며 Orbs 네트워크에 배포된 후, 네트워크 검증자에 의해 실행됩니다. AWS EC2 컨테이너 서비스와 마찬가지로 오케스트레이션이 자동화됨에 따라 devops는 최소한으로만 필요합니다. AWS EC2와 다른점은, 프로토콜이 완전히 투명하고 탈중앙화되어, 수십 개의 독립 네트워크 검증자에 의해 실행되기에, 사용자와 커뮤니티에 실행을 보장합니다.
모든 프로그래밍 언어 지원
Orbs VM의 서비스는 업계 표준 컨테이너(Docker)로 구현됩니다. 따라서 Go, C++, Rust, JavaScript, Python 및 Java와 같은 익숙한 프로그래밍 언어를 지속 사용 가능합니다. 개발자가 익숙치 않은 스마트 컨트렉트 언어를 별도로 배우거나 잘 모르는 도구 체인을 사용해야할 필요없이 기존 지식을 활용할 수 있습니다.
항상 작동 중
일반 Docker 컨테이너와 마찬가지로 Orbs VM 서비스는 항상 온라인 상태 입니다. 특정 상황에서만 실행되는 것이 아니며 사용하지 않을 때도 휴면 상태가 되지 않습니다. 원하는 조건을 연속적으로 검색하는 로직을 구현해 모든 이벤트 기반 로직을 컨테이너 내부에 구현할 수 있습니다. 예를 들어, 신규 블록을 지속적으로 읽고 해당 내용을 분석해 L-1 블록 체인을 지속적으로 모니터링할 수 있습니다.
기존 스마트 컨트렉트 강화
Orbs Lambda는 기존 L-1 스마트 컨트렉트를 대체하기 위함이 아닙니다. 개발자가 탈중앙화를 유지하면서도 스마트컨트렉트 샌드박스가 실행 할 수 없던 기능을 가능 케 해 비즈니스 로직을 넓힐 수 있는 보완 솔루션입니다. 현재 자체 중앙 집중형 백엔드에 의존하고 있는 Dapp들은 Orbs Lambda로 백엔드를 이전하여 중앙 집중화의 병목 현상 문제를 해결할 수 있습니다.
대안(Alternatives)
Orbs VM을 사용하시기 전, AWS Lambda와 유사하여 더 사용하기 쉽게 설계된 솔루션인 Orbs Lambda를 먼저 사용해 볼 수 있습니다. Orbs VM은 사용법이 더 까다롭지만, 서비스가 항상 실행되어야 하거나 JavaScript가 아닌 종속성이 필요한 복잡한 사용 사례에 맞게 더욱 유연하게 설계되었습니다.
네트워크 다이어그램
Orbs 네트워크는 수십명의 독립 검증자(가디언)가 Proof-of-Stake 컨센서스를 통해 운영하며 Orbs Lambda JavaScript 함수를 탈중앙화 방식으로 실행하고 있습니다.
오브스는 L-1 블록체인이 아니며 기존 스마트 컨트렉트를 대체하려는 것도 아닙니다. L-3에서 돌아가는 체인링크(Chainlink)와 유사한 오라클 네트워크라는 설명이 더 정확합니다. Orbs는 EVM블록체인들과 TON블록체인 같은 유망한 L-1 및 L-2 블록 체인을 실행하는 동시에, Dapp들이 샌드박스화된 L-1,L-2 스마트 컨트렉트에서 지원하지 않는 고급 기능을 제공해 스마트 컨트렉트를 강화할 수 있게 해줍니다.
유즈케이스 (사용 사례) 예시
Orbs Lambda는 기존 스마트 컨트렉트 기능을 향상시키도록 설계되었습니다. 하단 목록은 dapp들이 Orbs를 통해 활용할 수 있는 몇 가지 실제 예시입니다. 하단 예시 대부분이 dapp 자체에서 작동하는 중앙 집중형 백엔드로 구현가능하지만, 이렇게 되면 Orbs 에서는 수십명의 검증자를 통해 피할 수 있는 문제인 중앙 집중식 병목 현상이 발생합니다.
하단의 예시 대부분은, 실행이 필요한 사항이 한계를 넘어서지 않으면(예 :JavaScript에서만 가능) Orbs Lambda로도 구현 가능합니다. Orbs Lambda는 작업이 더 편리하지만 유연성성은 떨어집니다. Orbs Lambda에서 구현가능한 모든 사용 사례는 Orbs VM에서도 구현할 수 있으며, Orbs Lambda 자체가 실제로 Orbs VM을 통해 구현됩니다.
- Chainlink 및 여타 데이터 오라클과 유사한 가격 피드 기능
Orbs VM 컨테이너는 온라인에서 사용 가능한 모든 데이터를 자유롭게 가져올 수 있으며 또한 온체인 상태에만 국한되지 않습니다. 다수의 거래소 및 가격 제공 업체(Coinbase, Binance, CoinMarketCap, Coiningko 등)에서 읽어 올 수 있는 외부 시장의 가격 피드 데이터는 한가지 유용한 예시가 됩니다. 컨테이너가 지속적으로 모든 외부 소스에서 가격을 조회한 후, 오프체인(off-chain)에서 가격에 서명하여 Orbs 쿼럼(quorom)을 확인하고 집계된 가격을 체인에 기록하는 새로운 dapp 스마트 컨트렉트로 서명을 보냅니다.
- dapp 사용자를 위한 온체인 이벤트 모바일 푸시 알림
Aave나 Compound 같은 dapp들은 프로토콜 사용자들의 포지션이 청산 위험에 처할 때, 사용자 보호를 위해 미리 경고를 발송하기를 원할 수 있습니다. Orbs VM 컨테이너가 매 신규 블록이 생성될 때 마다 청산 임계값을 체크하여 위험에 처한 포지션이 있는지 확인하고, 모바일 푸시 알림 웹훅, 트윗, 텔레그램/디스코드 메시지 등을 발송합니다. 컨테이너가 더 발전할 경우 실시간으로 시장 가격에 따라 자동으로 포지션을 줄임으로써 청산이 발생하지 않도록 트랜잭션을 발생시킬 수 있습니다.
- 여러 체인상의 과거 잔고 스냅샷에 따라 스테이킹 보팅 파워 계산
Orbs VM 컨테이너는 온체인 데이터에 접근할 수 있으며, 일반적인 스마트 컨트렉트와 달리 state head에만 국한되지 않고 과거의 잔고도 조회할 수 있습니다. 스마트 컨트렉트와 달리 체인 또한 동일한 블록체인에만 국한되지 않고 이더리움, 폴리곤, BNB 체인 등 여러 블록체인을 조회할 수 있습니다. dapp의 거버넌스 투표는 일반적으로 과거 특정시점의 잔고를 기준으로 해, 투표가 시작된 후 토큰을 구매해 결과를 조작하는 문제를 피합니다. 통상 한가지 토큰이 다양한 체인으로 브릿지 되어 존재하는 경우가 많기 때문에, Dapp 사용자들은 여러 체인 상에 토큰을 보관하고 있는 경우가 많습니다. 투표가 가결되면 람다는 탈중앙형 스마트 컨트렉트 업그레이드를 구현하는 좋은 방법인 온체인 트랜잭션을 생성할 수 있습니다.
- Harvest.finance와 같은 금고(Vault) 전략 고도화 및 자동 복리
금고(Vault)는 스마트 컨트렉트를 이용해 신뢰가 필요 없는 DeFi 투자 전략을 체인에 구현하는 탈중앙형 ‘헤지펀드’입니다. 효율적인 투자 전략을 위해서는 종종 자동으로 포지션을 조정해 주는 트리거가 필요합니다. 보상으로 받은 토큰을 스테이킹한 기초 자산으로 판매하여 포지션의 원금을 늘려 재 스테이킹하는 오토 컴파운딩(자동 복리)가 한 가지 예시입니다. 또 다른 예로는 두 가지 대체 포지션을 비교하고 연이율(APR)이 가장 좋은 포지션으로 자동으로 자금을 이동하는 기능이 있을 수 있습니다. 컨테이너가 모든 신규 블록을 모니터링해 관련 트리거를 확인하고, 포지션을 조정해야 할 때 적절한 응답을 체인에서 트리거하는 트랜잭션을 생성합니다.
- TWAP을 구현해 가격에 영향을 미치지 않고 대규모 DeFi 거래 실행
온체인 DEX/AMM 프로토콜에서 실행되는 거래는 자동으로 즉시 이루어집니다. 거래가 상대적으로 크거나 유동성이 낮은 풀의 거래를 진행하는 경우, 가격 영향(Price impact)문제로 큰 손실이 발생합니다. Orbs VM 컨테이너는 단일 거래를 몇 분마다 시행하는 여러 개의 작은 거래로 나눌 수 있으며, 이로 인해 차익거래자가 해당 거래페어를 다시 시장가격으로 맞출 수 있는 충분한 시간을 제공해 가격 영향을 줄일 수 있습니다. 컨테이너가 소규모 거래 성사를 위해 수많은 거래를 생성하고, 실제 시장 가격에 맞추어 가격 제한을 조정해 단순 실행을 피할 수 있습니다.
단계별 개요
신규 Orbs VM 서비스 개발 프로세스는 다음과 같은 단계를 따릅니다.
- 서비스에 대한 고유 ID를 선택
- 프로젝트 구조를 준수하는 로컬 Git 저장소 생성
- 서비스의 논리(logic)를 원하는 언어로 싱글 도커(docker)에 랩핑(wrap)
- 서비스 로직을 로컬에서 검증하는 간단한 테스트 제품군 작성
- 도커 이미지를 DockerHub와 같은 퍼블릭 도커 레지스트리에 푸시
- GitHub의 공식 Orbs repo에서 PR(git pull request)을 생성해 서비스 배포
- 서비스가 시스템에 의해 전개될 때까지 대기. 오류 및 피드백이 PR에 표시됨
- 네트워크 상태 페이지를 검사하여 프로덕션에서 서비스 실행 분석