이번에는 스마트 컨트랙트가 실제로 어떻게 동작하는지 알아보도록 하겠습니다.

이전 블록체인 기술 개요 글에서 송금 서비스 예제를 통해서 블록체인 네트워크에 참여하는 노드의 종류와 역할, 그리고 각 노드가 가지고 있는 데이터에 대해서 알아봤는데요, 이번 글에서는 이 내용을 바탕으로 기술할 것입니다.

블록체인 네트워크의 노드는 두 가지 데이터베이스를 가지고 있습니다. 하나는 모든 거래 내용이 보관된 트랜잭션 데이터베이스고 또 하나는 저장된 트랜잭션을 기반으로 서로 사전에 약속한 어플리케이션에 적용하는 어플리케이션 데이터베이스입니다.

비트코인의 경우 스마트 컨트랙트가 지원되지는 않지만, 비트코인이라는 자산이 이동되는 단 하나의 송금 어플리케이션이 블록체인에 올라간 서비스라고 볼 수 있습니다.

Ethereum 같은 스마트 컨트랙트 지원 블록체인의 경우 스마트 컨트랙트의 상태를 변경시키는 트랜잭션 보관 데이터베이스와 스마트 컨트랙트의 최신 상태를 보관하고 있는 스마트컨트랙트 데이터베이스를 가지고 있습니다.

여기서 스마트 컨트랙트는 상태를 변경할 수 있는 어플리케이션이라고 할 수 있고 스마트 컨트랙트의 상태는 해당 어플리케이션에서 사용하는 변수라고 할 수 있으며 이를 변경하기 위한 입력값은 트랜잭션에 포함되어 있다고 볼 수 있습니다.

스마트 컨트랙트 상태(State)를 저장하는 데이터베이스의 경우 Ethereum처럼 높은 압축률을 위해 트랜잭션을 저장하는 데이터베이스와 합쳐져 있는 경우도 있고 아니면 분산합의와 스마트 컨트랙트의 낮은 의존성을 달성하기 위해 완전히 분리된 경우도 있습니다.

 

예제 스마트 컨트랙트 설명 

스마트 컨트랙트 블록체인은 두 가지 인터페이스를 공개하고 있습니다. 하나는 트랜잭션(Transaction) 이고 하나는 쿼리(Query)입니다. 트랜잭션을 통한 인터페이스는 트랜잭션 데이터베이스에 저장되고 스마트 컨트랙트의 State를 변경시키는 접근방법입니다. 쿼리는 트랜잭션 데이터베이스에 기록이 남지 않으면서 스마트 컨트랙트의 State를 읽는 작업입니다. 트랜잭션은 Write, Delete, Modify를 실행한다면 보면 되고 Query는 Read만을 실행한다고 생각하시면 됩니다.

본 글에서는 스마트 컨트랙트를 통한 디지털 콘텐츠 거래 예제를 통해 스마트 컨트랙트가 실제로 어떻게 동작하는지 알아보도록 하겠습니다. 거래되는 디지털 콘텐츠는 DNS와 같은 온라인 자산일 수도 있고, Hash나 금 일련번호와 같은 다른 자산을 나타내는 증거 데이터일 수도 있습니다.

본 예제 스마트 컨트랙트에서 제공할 인터페이스는 다음과 같습니다.

Transaction

  • 콘텐츠 등록
  • 콘텐츠 구매

Query

  • 콘텐츠 조회

디지털 컨텐츠 거래 예제를 통한 스마트 컨트랙트 동작 방식

SoWkIImgAStDuKfCBialKdZRC-7ryYLlvas0ybzjNGFbmsKKTEqKNk-OydhXt3URjhoPkqF1Ik7DxXLlMoUysR50uVNaZK09BhWsl8hVBDpmTbOFaOeXghWSKlDIWCu50000.png
디지털 컨텐츠 거래 순서

스마트 컨트랙트를 통한 디지털 컨텐츠 거래 시나리오는 위의 예제 시나리오와 같이 동작할 것입니다. 각 내용에 따라 어떤 일을 실제로 수행하는지 알아보도록 하죠.

  1. 컨텐츠 판매자가 컨텐츠 등록 트랜잭션을 블록체인에 보낸다.

컨텐츠 등록 트랜잭션 발생 시 블록체인 네트워크 내부에서는 위의 다이어그램과 같이 동작합니다. 네트워크의 모든 노드는 컨텐츠 등록 트랜잭션을 공유하고 트랜잭션 데이터베이스에 저장하게 됩니다. 여기까지가 비트코인과 같은 스마트 컨트랙트가 지원되지 않는 데이터 공유 기반의 블록체인이라고 할 수 있습니다. 스마트 컨트랙트 지원 블록체인은 이 단계 이후에 트랜잭션의 내용에 따라 스마트 컨트랙트 어플리케이션을 실행하고 그 결과를 스마트 컨트랙트 데이터베이스를 반영합니다. 이후 모든 트랜잭션은 전부 위 그림과 같은 방식으로 동작합니다.

  1. 구매자는 블록체인 네트워크에서 컨텐츠 조회한다

위의 다이어그램은 컨텐츠 조회 동작 방식을 나타낸 것입니다. 매우 간단합니다. 클라이언트가 검색 쿼리를 보내면 노드는 그에 대해 응답을 해줍니다.

블록체인의 어떤 데이터도 변경시킬 필요 없이 스마트 컨트랙트 데이터베이스 내 저장된 상태 값만 조회하면 되기 때문에 쿼리 정보는 블록체인에 동기화할 필요 없고 블록 동기화 타이밍에 상관없이 바로 응답할 수 있습니다. 블록체인의 트랜잭션 속도는 다른 네트워크보다 느리지만 쿼리 속도는 같은 머신의 내부 DB를 사용해서 쿼리 해주고 어떤 노드에 접속해도 같은 결과를 얻을 수 있기 때문에 중계자를 통한 서비스보다 오히려 속도가 빠를 수도 있습니다.

  1. 콘텐츠 구매
    구매자가 컨텐츠 구매 트랜잭션을 보내면 1의 다이어그램과 같이 트랜잭션을 공유하고 블록체인 네트워크에 동기화합니다. 모든 노드의 스마트 컨트랙트 데이터베이스에 컨텐츠 구매자를 등록하고 돈을 판매자에게 전송합니다. 또한, 등록된 컨텐츠의 소유권을 구매자로 이동합니다.

이번 포스팅에서는 스마트 컨트랙트 동작 방식을 스마트 컨트랙트를 통한 디지털 컨텐츠 거래를 통해 알아보았습니다. 특히 Transaction과 Query는 모든 스마트 컨트렉트 블록체인에서 동작하는 방식이 거의 유사하므로 대부분 블록체인이 이와 같은 방식으로 동작합니다.

R3 Corda나 Hyperledger Fabric 1.0처럼 블록체인에 참여한 모든 노드가 거래를 공유하지 않고 해당 거래에 참여한 노드끼리만 거래를 공유하고 스마트 컨트랙트를 실행하는 것도 해당 거래에 있어서는 이와 동일하다고 할 수 있습니다.