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