들어가며
웹3.0 시대를 맞이하는 현재 시점에 스마트 콘트랙트(smart contract)의 기본개념에 조금이나마 이해를 돕고자 이번 블로그 글을 작성했습니다.
스마트 콘트랙트란?
스마트 콘트랙트는 전산으로 이루어지는 전자 계약 기술을 뜻합니다.
스마트 콘트랙트의 특징은 블록체인 기반 기술을 사용해 상호 간 계약에 있어서 제3의 인증기관이나 중개인이 필요 없이 계약 당사자 간 사전에 협의한 내용을 미리 프로그래밍하여 전자 계약서 문서 안에 넣어두고, 이 계약 조건이 모두 충족되면 자동으로 계약 내용이 실행되도록 하는 시스템입니다.
동작 원리
블록체인 기반 스마트 콘트랙트는 기본적으로 모든 트랜잭션 로그가 저장된 블록체인 데이터베이스와 스마트 콘트랙트의 상태를 저장하는 데이터베이스 두 가지가 존재합니다. 여기에서 스마트 콘트랙트는 상태를 변경할 수 있는 애플리케이션이라고 할 수 있고, 스마트 콘트랙트의 상태는 해당 애플리케이션에서 사용하는 변수라고 할 수 있으며, 이를 변경하기 위한 입력값은 트랜잭션에 포함되어 있습니다.
스마트 콘트랙트는 두 가지 인터페이스를 공개하고 있는데, 하나는 트랜잭션(transaction)이고, 하나는 쿼리(query)입니다. 트랜잭션을 통한 인터페이스는 트랜잭션 데이터베이스에 저장되고, 스마트 콘트랙트의 상태를 변경시키는 접근방법입니다.
쿼리는 트랜잭션 데이터베이스에 기록이 남지 않으면서 스마트 콘트랙트의 상태를 읽는 작업입니다. 트랜잭션은 쓰기, 삭제, 수정을 실행하고, 쿼리는 읽기를 통한 조회만을 실행합니다.
예를 들어, ‘상품 거래’는 스마트 콘트랙트 시스템에서 다음과 같이 동작합니다.
기록 저장
- 판매자가 상품을 올리겠다는 내용을 코딩하여 트랜잭션을 만든 후 블록체인에 전송.
- 상품 등록 트랜잭션 발생 시, 네트워크의 모든 노드는 상품 등록 트랜잭션을 공유하고 블록을 생성한 후 블록을 브로드캐스팅.
- 블록을 전달받은 각 노드는 해당 블록을 자신의 블록체인 맨 끝에 추가하고, 해당 블록에 저장되어 있는 트랜잭션을 적용시켜 자신의 스마트 콘트랙트 데이터베이스를 동기화.
이러한 과정을 통해 모든 블록체인의 노드들이 스마트 콘트랙트 상태 데이터베이스를 공유하게 됩니다.
상품 조회
- 구매자는 블록체인 네트워크에서 상품을 조회.
- 스마트 콘트랙트에 쓰는 것은 트랜잭션을 발생시키지만, 이미 저장되어 있던 값을 읽어 오는 것은 트랙잭션을 발생하지 않음.
- 블록체인의 어떤 데이터도 변경시킬 필요 없이 스마트 콘트랙트 데이터베이스 내 저장된 상태 값만 조회하면 되기 때문에 쿼리 정보는 블록체인에 동기화할 필요 없고, 블록 동기화 타이밍에 상관없이 바로 응답.
계약 이행
구매자가 상품 구매 트랜잭션을 보내면 트랜잭션을 공유하고 블록체인 네트워크에 동기화합니다. 모든 노드의 스마트 콘트랙트 데이터베이스에 상품 구매자를 등록하고 돈을 판매자에게 전송합니다. 그러면 등록된 콘텐츠의 소유권이 구매자에게로 이동합니다.
이렇듯 스마트 콘트랙트는 모든 데이터를 서로 공유하기 때문에 특정한 사용자가 스마트 콘트랙트의 실행 결과를 조작하려 해도 조작할 수 없습니다. 블록체인이 모든 트랜잭션의 무결성을 보장해 주는 방식으로 스마트 콘트랙트의 무결성도 보장할 수 있습니다. 또한, 조건이 충족된 경우 계약을 자동으로 이행함으로써 계약의 집행 비용 및 분쟁 가능성을 줄일 수 있습니다. 다만, 일상 언어를 프로그래밍하는 과정에서 계약 작성 단계의 비용이 발생할 수 있고, 이 과정에서 프로그래밍 오류 문제가 발생할 가능성이 존재합니다.
가치
스마트 콘트랙트는 현재 디지털 계약에 비해 다양한 가치를 제공하고 있습니다.
- 보안성: 분산된 인프라에서 계약을 실행하기 때문에 공격당할 수 있는 단일장애지점, 뇌물을 받을 수 있는 중앙 기관 및 당사자 또는 중앙 관리자가 결과를 조작할 수 있는 메커니즘이 없습니다.
- 신뢰성: 다수의 개별 노드가 콘트랙트 로직에 대한 중복 처리 및 검증을 하기 때문에 유저들은 조작 저항 및 네트워크 가동시간을 보장받을 수 있어 콘트랙트가 늘 계약 조건에 따라 시간에 맞춰 실행된다는 것 또한 보장받을 수 있습니다.
- 효율성: 계약의 백엔드 프로세스(에스크로, 유지 보수, 실행 및 지불)가 자동화되면서 계약의 당사자들은 수동 데이터 입력, 계약 당사자의 의무 이행 여부 및 중개인의 거래 처리 등을 기다리지 않아도 됩니다.
- 자율성: 블록체인 내에서 진행되기 때문에 공신력을 가진 제 3자, 혹은 기관이 필요하지 않습니다. 이에 따라 거래 당사자들이 계약에 대한 온전한 권한, 통제성을 갖게 됩니다.
- 비용절감: 블록체인에서 관련 계약, 거래 내역 등을 보증할 수 있는 제3자나 공신력 있는 기관이 필요하지 않기 때문에 비용 절감의 효과를 가질 수 있습니다.
리스크(Risk)
위와 같이 스마트 콘트랙트는 많은 장점과 가치성을 보유하고는 있습니다만 아직은 한계점과 위험성도 분명 존재하며 장점이던 부분이 단점으로 바뀌어 다가올수도 있습니다.
변경 불가성
블록체인 기술 기반으로 작동하는 스마트 콘트랙트는 누구나 쉽게 위조할수 없기에 보안성 측면으로는 우수하지만 동시에 수정,변경에 있어서 어렵다는 단점이 있습니다 따라서 초기 계약 조건 설정을 보다 신중히 진행해야 합니다.
기술적 문제
현재 스마트 콘트랙트는 솔리디티(Solidity)라는 프로그래밍 언어를 사용합니다. 그런데 솔리디티는 비교적 최근에 개발된 언어로 아직은 지원되는 타입 및 명령어가 부족하며 라이브러리 또한 많이 부족한 상황입니다 그리고 보안 취약점이 나타나 해킹 공격을 받은 사례가 있었습니다.
정책적 문제
- 가스(Gas)수수료: 스마트 콘트랙트를 이용해 특정 기능, 특히 상태값을 변경하려면, 수수료인 가스(Gas)가 필요하다. 결국 가스 수수료 때문에 무료로 사용할 수 있는 서비스를 구현하는게 어렵다. 해당 문제를 해결하기 위해, 몇몇 스마트 계약 플랫폼은 디앱 운영업체들의 수수료를 정책적으로 대납해 주기도 합니다.
- 오라클문제: 스마트 콘트랙트 시스템은 오라클 문제라는 근본적 문제를 가지고 있습니다. 오라클 문제란 블록체인 외부에 있는 데이터를 블록체인 안으로 가져올 때 발생하는 문제를 말합니다 블록체인은 데이터의 위변조가 거의 불가능한 분산 저장 기술이지만, 데이터가 블록체인 안으로 들어와야 블록체인으로 관리할 수 있습니다. 데이터가 블록체인 안으로 들어오지 않거나, 혹은 블록체인 안으로 들어오는 과정에서 위변조가 발생한다면, 설령 그 데이터가 블록체인으로 관리된다고 할지라도 신뢰할수 없습니다. 이러한 오라클 문제를 해결을 위해, 중간자를 두거나 상호인증 블록체인 방법을 사용할 수 있습니다.
마치며
우선 참고문서를 찾아가며 글을 작성하는데 사실 용어들이 다소 생소하고 어려운 부분이 많아 이러한 부분들까지 일일이 전부 풀어내 설명하지 못한점 죄송합니다🙏
블록체인을 이용한 스마트 계약은 보다시피 계약의 과정이 중개자나 인증기관 없이 네트워크로 자동화되어 기존의 계약 방식에 비해 효율성과 가치가 뛰어납니다 또한 스마트 계약 활용 사례도 많아지고 있으며 많은 주목과 관심을 받는 분야이죠 하지만 그만큼 아직은 보완해야 할 부분이 많은 영역이기도 합니다.
우리는 새로운 기술의 시대를 맞이하고 있습니다 앞으로 꾸준히 개선과 보완을 거듭하게 된다면 블록체인을 활용한 수많은 기술과 서비스들이 쏟아져 나오게 될것으로 예상됩니다
새로운 기술에 대한 두려움도 물론 있겠지만 향후 전망을 생각하면 설레고 기대가 됩니다 블록체인으로 꿈꾸는 세상을 바라보며 이번 포스팅을 마칩니다.