이전 포스팅에서는 블록체인 기술 시리즈 1부로 블록체인의 기능과 블록체인의 메인 자료구조 그리고 블록체인 네트워크가 어떻게 동작하는지에 대해 거래 시나리오를 통해 설명하였습니다.

블록체인 기술 개요

본 포스팅에서는 블록체인을 단순한 원장 기반의 디지털 화폐 거래 플랫폼을 넘어 다양한 서비스에 적용할 수 있도록 만들어준 스마트 컨트랙트(Smart Contract)에 대해 알아보도록 하겠습니다.

Smart Contract 

스마트 컨트랙트는 Nick Szabo가 1994년 최초 제안한 개념입니다. 기존 계약서(Contract)는 서면으로 되어있어 계약 조건을 이행하려면 실제 사람이 계약서 대로 수행을 해야 하지만 디지털 명령어로 계약을 작성하면 조건에 따라 계약 내용을 자동으로 실행할 수 있다고 주장하였습니다.

SmartContract

디지털로 된 계약서는 조건에 따른 계약 결과가 명확하고, 계약 내용을 즉각 이행할 수 있습니다. 각자의 자산이 연결된 디지털로 양자 합의를 하고 계약서를 작성하고 실행하기로 한다면 계약을 이행하는데 복잡한 프로세스를 엄청나게 간소화 될 것 입니다. 또한 다양한 그러나 디지털로 된 자료들은 쉽게 복사되고 조작이 쉬워 1994년에 제안한 스마트 컨트랙트는 개념으로만 존재하고 구체적인 서비스에 이용될 수 없었습니다.

블록체인(Blockchain)과 스마트 컨트랙트 (Smart Contract)

이전 포스팅 들에서 설명하였듯이 블록체인은 디지털 데이터를 신뢰할 수 있게 만들어 주는 기술입니다. 다수의 노드가 같은 데이터를 공유하고 검증하는 방식을 통해 디지털상에 신뢰관계를 만들었죠.

스마트 컨트랙트는 이러한 블록체인과 함께 급부상하게 됐습니다. 스마트 컨트랙트를 만들 수 있는 환경이 20여 년이 지나 구체화 된 것이죠. 최초의 블록체인 기반 스마트 컨트랙트는 비트코인 스크립트입니다. 비트코인 트랜잭션에 원시 언어인 OPCODE로 스크립트를 작성해서 보내면 조건에 따라 자동으로 거래를 수행합니다. 스크립트가 정상이면(기존에 보유한 비트코인의 잔액이 정확하고 거래를 보낸 사람의 서명이 정확한지 보는 것이 가장 기본적인 스크립트) 거래를 정상으로 본다는 일종의 계약(Contract) 개념이 있으므로 Contract Code로 불리기도 합니다.

하지만 비트코인 스크립트는 반복문을 사용할 수 없고, 비트코인 잔고 외의 다른 정보를 관리 할 수 없는 한계가 있습니다. 이는 블록체인의 특이한 구조 때문인데 비트코인 스크립트에서 반복문을 허용할 경우 만약 스크립트 조건 때문에 무한 루프가 발생할 경우 네트워크 전체가 멈출 수 있습니다. 사용자는 무한루프를 통해 쉽게 DoS(Denial of Service) 공격을 할 수 있습니다.

이더리움(Ethereum)은 이러한 비트코인 스크립팅 시스템의 한계를 극복하고자 나온 스마트 컨트랙트 특화 블록체인 플랫폼입니다. 사실 스마트 컨트랙트란 용어가 본격적으로 사용하기 시작한 것은 이더리움 이후라고 보면 됩니다. 이더리움은 비트코인 스크립팅 시스템의 한계인 다양한 상태 저장과 반복문을 허용한 스마트 컨트랙트를 만들었습니다. 여기에 각 라인을 실행할 때마다 수수료를 발생시키고 네트워크상에 수수료의 한계를 설정하여 무한루프를 막았습니다. 무한히 반복되는 조건을 만들어 스마트 컨트랙트를 실행시키면 돌다가 중간에 수수료 한계점에 도달하면 중단됩니다.

이는 기발하지만 뜻밖에 간단한 논리에 의해 구현되게 되었는데 블록체인을 통해 함수 내용과 함수의 입력을 공유하면서 무결성을 보장한다면, 함수의 결과는 별도로 공유하지 않더라도 그 무결성이 보장된다는 것이죠. 이더리움은 함수를 컴파일된 코드 형태로 거래에 포함하여 블록체인을 통해 동기화합니다. 이때 거래에 포함된 정보를 함수의 입력으로 하여 코드로 표현된 함수를 실행한 후 그 결과를 별도의 상태로 보관하는 방식으로 스마트 컨트랙트를 구현하게 되었습니다.

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

참고로 DAO는 DAO 스마트 컨트랙트 코드의 논리 오류 때문에 해커의 공격을 당해 엄청난 피해가 발생하게 되자 이더리움 전체를 Hard fork, 즉 롤백하는 등 우여곡절이 있었습니다. 기회가 되면 다음에 이 사례에 관해서도 설명하도록 하겠습니다.

이더리움 기반 다양한 스마트 컨트랙트들은 여기서 확인하실 수 있습니다.

본 포스팅에서는 스마트 컨트랙트의 개념을 설명하였습니다. 스마트 컨트랙트에 대한 개념 설명이라 잘 이해가 안 되실 수 있습니다. 다음 포스팅에서는 스마트 컨트랙트가 실제로 어떻게 동작하는지에 대해 예제를 통해 구체적으로 설명하도록 하겠습니다.