Cardano의 스마트 컨트랙트 지원 연구 개요 - 올가 흐리뉴크, 2022년 6월 23일

저자:

올가 흐리뉴크 - 테크니컬 라이터

요약:

Cardano에 대한 연구 파트 2. Cardano의 혁신적인 EUTXO 모델과 그것이 스마트 컨트랙트를 어떻게 보다 효율적이게 만드는지 자세히 살펴보기.

기사:

이전 블로그 게시글에서는 스테이킹, 위임 및 보상 공유를 포함하여 Cardano의 일부 핵심 요소를 뒷받침하는 연구에 대해 논의했다. 이번에는 EUTXO( Extended Unspent Transaction Output ) 회계 모델 을 통해 탈중앙화 애플리케이션(DApp) 개발을 위한 기능적 스마트 컨트랙트 플랫폼을 구축하는 데 도움이 되는 논문을 간략히 설명한다.

UTXO vs. 계정 기반 모델

비트코인과 이더리움은 오늘날 가장 인기 있는 블록체인 중 하나이다. 그들은 사용자 자금의 분배와 소유권을 추적하기 위해 다소 다른 두 가지 원장 회계 모델을 사용한다. 이러한 모델은 비트코인의 UTXO(Unspent Transaction Output) 모델과 다른 블록체인 중에서 이더리움이 사용하는 계정 기반 모델( account-based model)이다.

UTXO 모델은 금융 활동의 핵심에서 보안을 보장한다. UTXO의 시맨틱 모델은 복잡한 동시 및 분산 컴퓨팅 환경에서 단순하게 유지되지만 스마트 컨트랙트 지원에는 다소 제한적이다. 이더리움은 보다 표현력 있는 스마트 컨트랙트가 가능하도록 명시적으로 계정 기반 모델을 선택했다.

IOG 연구진은 UTXO 모델의 의미론적 단순성을 유지하면서 표현적인 스마트 컨트랙트가 가능한지에 대한 질문을 해결하기 위해 ’ 확장된 UTXO 모델 '과 ’ 확장된 UTXO 모델의 네이티브 커스텀 토큰 ’ 솔루션을 제시했다. 두 연구 논문 모두 2020년에 발표되었으며, Cardano에서 구현된 EUTXO 모델을 정확히 잘 설명한다.

Input Output Global, Inc.의 Lambda 과학자이자 Plutus 설계자인 마누엘 차크라바티(Manuel Chakravarty)는 다음과 같이 말한다.

비트코인에 의해 검증된 UTXO 원장 모델은 보안 및 확장성의 최고의 표준으로 남아 있다. 우리는 이더리움이 개척한 스마트 컨트랙트 표현 수준을 얻으면서 UTXO의 독보적인 보안성과 확장성을 유지하기 위해 Extended UTXO(EUTXO) 모델을 만들었다. 우리는 단지 두 세계의 최고를 원했다!

‘확장된 UTXO 모델’ 연구 논문은 EUTXO가 컨트랙트 상태를 지속적으로 유지하고 전체 거래 순서에 따라 동일한 컨트랙트 코드를 사용할 수 있는 능력을 보여준다. EUTXO 모델의 또 다른 강력한 기능은 유효한 트랜잭션에 필요한 수수료를 게시하기 전에 정확하게 예측할 수 있다는 것이다. 이는 EUTXO 모델의 결정론적 설계에 의해 구동되는 고유한 기능으로, 계정 기반 모델에서는 볼 수 없는 것이다.

Plutus

스마트 컨트랙트는 Cardano에서 거래 실행의 원동력이다. 자체적으로 실행되기 때문에 제3자에 의존하지 않는다.

ICFP’19(ACM SIGPLAN International Conference on Functional Programming)에서 Manuel Chakravarty는 기능적 블록체인에 대해 논의했으며 특히 스마트 컨트랙트에 대한 기능적 접근법으로 Plutus를 제시했다.

빠르게 움직이고 부수는 것은 블록체인 플랫폼을 구축하는 올바른 방법이 아니다. 고장난 것은 쉽게 고칠 수 없다. 따라서 Plutus는 함수형 프로그래밍의 견고한 수학적 기반 위에 세워졌다. 스마트 컨트랙트를 위한 프로그래밍 플랫폼으로, 스마트 컨트랙트 작성을 위한 하스켈(Haskell) 라이브러리, 하스켈에서 Plutus Core 온체인 코드로의 컴파일러, 개발을 지원하는 다양한 도구 등의 요소가 포함되어 있다.

대부분의 블록체인 프로그래밍 플랫폼은 이더리움의 솔리디티(Solidity)와 같은 맞춤형 언어(custom language)에 의존한다. Plutus는 Haskell 위에서 구현되었다. Haskell을 선택함으로써 IOG 연구 및 엔지니어링 팀은 기존에 존재하던 Haskell 인프라와 라이브러리, 그리고 높은 신뢰를 가진 소프트웨어로 실적이 있는 도구들을 재사용할 수 있었다. Haskell은 간결하고 재사용 가능한 코드를 용이하게 하는 동시에, 비형식적 추론과 테스트, 그리고 원하는 수준의 보안을 달성하기 위한 형식적 방법의 사용을 단순화한다. 코드 정확성에 대한 가장 엄격한 추론 형태인 형식적 방법은 높은 가치를 지닌 스마트 컨트랙트에 특히 관련성이 높으며 기능적 프로그래밍 패러다임에 잘 맞다.

IOG 연구진 및 엔지니어링 팀은 ‘The Extended UTXO Model’과 ‘Native Custom Tokens in the Extended UTXO Model’, ‘Unraveling recursion: compiling an IR with recursion to System F’, ‘System F in Agda, for fun and profit’ 등의 논문을 기반으로 Plutus 스마트 컨트랙트를 선보였다. 또한 이 논문들은 Cardano의 스마트 컨트랙트 지원 원장 모델과 컨트랙트 코드의 온체인 표현을 소위 람다(lambda)라는 용어로 정의한다. ‘System F in Agda, for fun and profit’ 논문에는, Agda 이론 검증기(Agda theorem prover)의 도움으로 컴퓨터로 확인된 엄격한 수학적 정의가 포함되어 있다.

Plutus는 이제 Cardano의 스마트 컨트랙트를 위한 살아 있고 진화하는 프로그래밍 플랫폼이다. IOG 교육팀은 또한 Plutus Pioneer Program을 시작하여 Cardano 생태계를 위해 Plutus의 개발자를 모집하고 교육했다. 프로그램에 대한 자세한 내용은 여기에서 확인할 수 있다 .

말로(Marlowe)

Plutus는 기능적인 스마트 컨트랙트 프로그래밍 언어인 반면 Marlowe는 깊은 프로그래밍 지식 없이도 시각적으로 저비용 금융 스마트 컨트랙트를 구축하고 실행할 수 있는 웹 기반 플랫폼이다. 프로그래머가 아닌 사람도 금융 거래를 위해 간단하고 최적화된 컨트랙트를 실행할 수 있는 다양한 활용 사례를 제공한다.

Marlowe를 처음으로 선보인 연구 논문인 ‘Marlowe: financial contracts on blockchain’은 2018년에 발표되었다. 이 논문은 금융 컨트랙트의 실행을 목표로 하는 특정 도메인 언어의 설계를 탐구한다. 실제 Marlowe의 예인 Haskell에서 Marlowe의 실행 가능한 의미 체계를 제시하고 사용자가 Marlowe 컨트랙트 시뮬레이션과 브라우저 내에서 상호 작용할 수 있는 도구를 설명한다.

이후 2020년에 IOG 연구팀은 'Efficient static analysis of Marlowe contracts’에 관한 논문을 발표했는데, 이 논문은 Marlowe 컨트랙트에 대한 정적 분석을 최적화하는 작업을 정리했다. ‘Marlowe: implementing and analysing financial contracts on blockchain’에 이어 Cardano에서 Marlowe를 구현하고 웹 기반 개발 및 시뮬레이션 환경인 Marlowe Playground에 대해 설명했다. 이 논문은 또한 Marlowe 컨트랙트를 실행하기 전에 철저하게 분석할 수 있으므로 컨트랙트 참여자에게 강력한 보증을 제공할 수 있음을 보여준다.

Marlowe는 스마트 컨트랙트 작성 프로세스를 개발, 시뮬레이션 및 테스트할 수 있는 브라우저 기반 샌드박스 환경인 Marlowe Playground에서 사용해 볼 수 있다. IOG는 현재 Marlowe 테스트넷 출시를 준비하고 있으며 Marlowe Pioneers Program을 통해 Marlowe 제품군 전체에 대한 피드백 및 사용 사례를 수집하고 있다. 이 팀은 최근 사용자가 명령줄 인터페이스를 사용하여 트랜잭션을 제출하고 Marlowe 컨트랙트와 상호 작용할 수 있도록 하는 Marlowe CLI 도구를 제공했다. 메인넷에서 출시되면 Marlowe 컨트랙트는 다양한 DeFi 기능을 제공할 것이다.

이제 Cardano의 EUTXO 모델의 특성과 그것이 어떻게 Cardano에서 스마트 컨트랙트 개발을 용이하게 하는지 논의했으므로 멀티에셋(multi-asset) 지원을 가능하게 한 연구에 대해 더 자세히 논의할 것이다. 다음 블로그 게시글을 기대해 주세요!