의견.png

"스마트 계약"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
30번째 줄: 30번째 줄:
 
스마트 컨트랙트는 두 가지 인터페이스를 공개하고 있다. 하나는 트랜잭션(Transaction)이고, 하나는 쿼리(Query)이다. 트랜잭션을 통한 인터페이스는 트랜잭션 데이터베이스에 저장되고, 스마트 컨트랙트의 상태를 변경시키는 접근방법이다. 쿼리는 트랜잭션 데이터베이스에 기록이 남지 않으면서 스마트 컨트랙트의 상태를 읽는 작업이다. 트랜잭션은 쓰기, 삭제, 수정을 실행하고 쿼리는 읽기만을 실행한다.
 
스마트 컨트랙트는 두 가지 인터페이스를 공개하고 있다. 하나는 트랜잭션(Transaction)이고, 하나는 쿼리(Query)이다. 트랜잭션을 통한 인터페이스는 트랜잭션 데이터베이스에 저장되고, 스마트 컨트랙트의 상태를 변경시키는 접근방법이다. 쿼리는 트랜잭션 데이터베이스에 기록이 남지 않으면서 스마트 컨트랙트의 상태를 읽는 작업이다. 트랜잭션은 쓰기, 삭제, 수정을 실행하고 쿼리는 읽기만을 실행한다.
  
 
+
==비트코인캐시 스크립트 연산 부호==
 +
비트메인 대표인 [[우지한]]은 비트코인캐시(BCH)는 의사결정 방식인 합의 알고리즘 변화 없이 다양한 프로젝트를 시도할 수 있는 방안을 도출했다며 [[BCH]]에 내재된 ‘스크립트 연산 부호(OP_RETURN)’을 활용하면 스마트 계약 등 다양한 기능을 자유롭게 구현할 수 있다고 했다. BCH는 최근 업데이트를 통해 40바이트였던 스크립트 연산 부호 용량을 220바이트로 늘려 새로운 프로토콜을 개발하기에 훨씬 쉬운 환경이 됐다고 한다. 이어 비트코인의 스크립트 연산 부호 용량이 컸다면 이더리움 창시자인 비탈릭 부테린도 이더리움을 만드는 대신 이 부호를 활용하여 스마트 계약을 만들었을 것이란 언급도 했다.
  
  

2019년 2월 12일 (화) 15:15 판

스마트 계약 또는 스마트 컨트랙트(smart contract)는 계약 당사자가 사전에 협의한 내용을 미리 프로그래밍하여 전자 계약서 문서 안에 넣어두고, 이 계약 조건이 모두 충족되면 자동으로 계약 내용이 실행되도록 하는 시스템이다. 2013년 당시 19세의 천재 프로그래머였던 비탈릭 부테린(Vitalik Buterin)은 스마트 계약 플랫폼인 이더리움(ethereum)을 개발할 것을 제안[1]하고, 2015년 7월 30일 이더리움 개발에 성공하여 실제 서비스를 시작했다. 솔리디티(solidity)라는 프로그래밍 언어를 사용하여, 계약 기간, 금액, 조건 등을 미리 코딩해 두면, 부동산 거래, 중고 자동차 거래, 무역 거래 등 어떠한 종류의 계약도 자동 실행되도록 만들 수 있다. [2]

닉 재보의 비트골드

스마트 계약은 1994년 닉 재보(Nick Szabo)[3]가 고안한 개념이다. 닉 재보는 스마트 계약을 "계약에 필요한 요소를 코드를 통해 스스로 실행되게 하는 전산화된 거래 약속"이라고 정의했다. 그는 스마트 계약이 자동판매기와 비슷하다[4]고 말했다. 자동판매기에 미리 정해진 액수 이상의 돈을 투입하면, 자동으로 원하는 상품을 구매할 수 있듯이, 스마트 계약을 통해 일정한 조건이 충족되면 자동으로 계약이 실행되도록 한다는 것이다.

1996년 닉 재보는 스마트 계약 설계의 기본 원칙으로 관측 가능성, 검증 가능성, 사생활 보호, 강제 가능성 등 4가지를 제시했다.

  • 관측 가능성(observability) : 스마트 계약은 서로의 계약 이행 가능성을 관찰하거나 성과를 입증할 수 있어야 한다.
  • 검증 가능성(verifiability) : 계약을 이행 또는 위반했을 때 이를 알 수 있어야 한다.
  • 사생활 보호(privacy) : 계약 내용은 계약에 관련된 당사자들에게만 알려져야 한다.
  • 강제 가능성(enforceability) : 계약을 강제로 이행할 수 있는 구속력이 있어야 한다. 단, 강제 가능성은 최소화해야 한다.

닉 재보는 스마트 계약을 위해 비트골드(bit gold)라는 디지털 화폐를 고안했지만, 당시의 기술적 한계로 인해 실제로 개발되거나 사용되지는 못하였다.[5]

비트코인 스크립트

비트코인 프로토콜도 낮은 수준의 '스마트 계약' 기능이 가능하다. 기술적인 관점에서 보았을 때, 비트코인의 장부는 하나의 상태변환시스템(state transition system)으로 생각해볼 수 있다. 이 시스템은 현재 모든 비트코인의 소유권 현황으로 이루어진 하나의 “상태(state)” 와 이 현재 상태와 트랜잭션을 받아서 그 결과로써 새로운 상태를 출력해주는 “상태변환함수(state transition function)”로 구성되어 있다. 이러한 비트코인의 결제 시스템인 UTXO(소비되지 않은 트랜잭션 출력)은 간단한 스택-기반 프로그래밍 언어로 표현된 복잡한 스크립트에 의해서도 작동한다.[1] 즉, 최초의 블록체인 기반 스마트 컨트랙트는 바로 비트코인 스크립트이다. 비트코인 트랜잭션에 원시 언어인 OPCODE로 스크립트를 작성해서 보내면 일종의 계약(Contract) 개념이 있으므로 조건에 따라 자동으로 거래를 수행할 수 있다. 하지만 비트코인 스크립트는 튜링불완전성 언어를 사용하고, 반복문을 사용할 수 없고, 다양한 상태를 표현할 수 없으며 비트코인 잔고 외의 다른 정보를 관리 할 수 없다는 한계가 있다. 이는 블록체인의 특이한 구조 때문인데 비트코인 스크립트에서 반복문을 허용할 경우, 스크립트 조건 때문에 무한 루프가 발생할 경우 네트워크 전체가 멈출 수 있다.[6]

이더리움 스마트 컨트랙트

이더리움(Ethereum)은 이러한 비트코인 스크립팅 시스템의 한계를 극복하고자 나온 스마트 컨트랙트 특화 블록체인 플랫폼이다. 이더리움은 비트코인 스크립팅 시스템의 한계인 다양한 상태 저장과 반복문을 허용한 스마트 컨트랙트를 만들었다. 여기에 각 라인을 실행할 때마다 수수료를 발생시키고 네트워크상에 수수료의 한계를 설정하여 무한루프를 막았다. 무한히 반복되는 조건을 만들어 스마트 컨트랙트를 실행시키면 돌다가 중간에 수수료 한계점에 도달하면 중단된다. 이는 뜻밖에 간단한 논리에 의해 구현되게 되었는데 블록체인을 통해 함수 내용과 함수의 입력을 공유하면서 무결성을 보장한다면, 함수의 결과는 별도로 공유하지 않더라도 그 무결성이 보장된다는 것이다. 이더리움은 함수를 컴파일된 코드 형태로 거래에 포함하여 블록체인을 통해 동기화한다. 이때 거래에 포함된 정보를 함수의 입력으로 하여 코드로 표현된 함수를 실행한 후 그 결과를 별도의 상태로 보관하는 방식으로 스마트 컨트랙트를 구현하게 되었다.

이더리움이 제공하려는 것은 튜링 완전(turing-complete) 프로그래밍 언어가 심어진 블록체인이다. 이 프로그래밍 언어는 코딩된 규칙에 따라 '어떤 상태'를 다르게 변환시키는 기능(arbitrary state transition functions)이 포함된 "계약(contracts)"을 사용자들이 작성할 수 있게 함으로써 인간이 상상할 수 있는 모든 종류의 계약을 자동으로 실행할 수 있게 만들고, 다른 많은 앱플리케이션도 쉽게 만들 수 있도록 돕는다.[1]

그리하여 독자 코인인 이더 외에 다른 디지털 객체의 상태를 저장하는 방식을 허용하여 다양한 재화를 이더리움 네트워크 위에 만들고 거래할 수 있게 되었다. 이더리움 상에서의 가장 유명한 스마트 컨트랙트의 예는 DAO(Decentralized Autonomous Organization)라고 불리는 탈중앙화된 자율 조직이다. 이는 회사의 의결권을 토큰(DAO Token)으로 행사할 수 있도록 크라우드 펀딩을 통해 토큰을 이더로 구입할 수 있도록 판매하였고, 그 과정에서 모인 약 2000억원 가량의 이더를 어떻게 사용할지 토큰을 기반으로 투표할 수 있도록 한 스마트 컨트랙트로서 특정 운영주체가 없이 참여자의 투표로 운영되도록 했다.

작동 방법

비트코인의 경우 스마트 컨트랙트가 지원되지는 않지만, 비트코인이라는 자산이 이동되는 단 하나의 송금 애플리케이션이 블록체인에 올라간 서비스라고 볼 수 있다. 이더리움 스마트 컨트랙트의 경우, 스마트 컨트랙트의 상태를 변경시키는 트랜잭션 보관 데이터베이스와 스마트 컨트랙트의 최신 상태를 보관하고 있는 스마트 컨트랙트 데이터베이스를 가지고 있다. 여기서의 스마트 컨트랙트는 상태를 변경할 수 있는 애플리케이션이라고 할 수 있고, 스마트 컨트랙트의 상태는 해당 어플리케이션에서 사용하는 변수라고 할 수 있으며 이를 변경하기 위한 입력값은 트랜잭션에 포함되어 있다. 즉, 비트코인의 경우, 네트워크의 모든 노드는 트랜잭션을 공유하고 트랜잭션 데이터베이스에 저장하게 된다. 여기까지가 비트코인과 같은 스마트 컨트랙트가 지원되지 않는 데이터 공유 기반의 블록체인이라면 이더리움의 스마트 컨트랙트는 이 단계 이후에 트랜잭션의 내용에 따라 스마트 컨트랙트 애플리케이션을 실행하고 그 결과를 스마트 컨트랙트 데이터베이스를 반영한다.

스마트 컨트랙트는 두 가지 인터페이스를 공개하고 있다. 하나는 트랜잭션(Transaction)이고, 하나는 쿼리(Query)이다. 트랜잭션을 통한 인터페이스는 트랜잭션 데이터베이스에 저장되고, 스마트 컨트랙트의 상태를 변경시키는 접근방법이다. 쿼리는 트랜잭션 데이터베이스에 기록이 남지 않으면서 스마트 컨트랙트의 상태를 읽는 작업이다. 트랜잭션은 쓰기, 삭제, 수정을 실행하고 쿼리는 읽기만을 실행한다.

비트코인캐시 스크립트 연산 부호

비트메인 대표인 우지한은 비트코인캐시(BCH)는 의사결정 방식인 합의 알고리즘 변화 없이 다양한 프로젝트를 시도할 수 있는 방안을 도출했다며 BCH에 내재된 ‘스크립트 연산 부호(OP_RETURN)’을 활용하면 스마트 계약 등 다양한 기능을 자유롭게 구현할 수 있다고 했다. BCH는 최근 업데이트를 통해 40바이트였던 스크립트 연산 부호 용량을 220바이트로 늘려 새로운 프로토콜을 개발하기에 훨씬 쉬운 환경이 됐다고 한다. 이어 비트코인의 스크립트 연산 부호 용량이 컸다면 이더리움 창시자인 비탈릭 부테린도 이더리움을 만드는 대신 이 부호를 활용하여 스마트 계약을 만들었을 것이란 언급도 했다.


기존의 비트코인이 블록체인 기술을 활용하여 가치의 저장과 전달이 가능한 암호화폐를 만들었다면, 이더리움은 한 단계 더 나아가 블록체인 기술을 활용하여 인간이 상상할 수 있는 모든 종류의 계약을 자동으로 실행할 수 있는 스마트 계약 플랫폼을 개발했다. 비탈릭 부테린이 이더리움을 통해 스마트 계약 기능을 구현함으로써, 블록체인 기술을 비트코인과 같은 암호화폐에만 사용하는 것이 아니라, 위변조 방지가 필요한 각종 계약서 작성 등에 활용할 수 있게 되었다. 이런 점에서 기존의 비트코인을 '블록체인 1.0'이라고 부르고, 스마트 계약 기능을 구현한 이더리움을 '블록체인 2.0'이라고 부른다.


각주

  1. 1.0 1.1 1.2 Vitalik Buterin, "A Next-Generation Smart Contract and Decentralized Application Platform", 2013.
  2. Peter Sayer, 〈블록체인에 대한 기본 상식 5가지〉, 《CIO Korea》, 2016-04-12
  3. 닉 재보(Nick Szabo)는 로스쿨을 졸업한 컴퓨터 과학자이다. '닉 자보'라고도 한다.
  4. 김인경 기자, 〈(IT열쇳말) 스마트 계약〉, 《블로터》, 2018-02-05
  5. 이정훈 기자, 〈(이정훈의 암호화폐 읽기)<2>`빅 브라더` 가라…혁신 넘어선 혁명〉, 《이데일리》, 2018-01-10
  6. 더루프, 〈스마트 컨트랙트 개요(Smart Contract)-2〉, 《더루프 블로그》, 2017-04-04

참고자료

같이 보기


  의견.png 이 스마트 계약 문서는 블록체인 기술에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.