스마트 컨트랙트란?
스마트 컨트랙트는 블록체인에 거래 내용을 코드로 기록하고, 계약 조건이 충족되었을 때 자동으로 거래가 이행되는 시스템이다. 스마트 컨트랙트를 이용해 다양한 형태의 계약(금융거래, 부동산, 공증 등)을 체결할 수 있다. 스마트 컨트랙트는 중앙화된 제3자 없이 계약을 자동으로 이행할 수 있어 경제적이고 탈중앙화를 실현했다는 평가를 받는다.
등장 배경
디지털 데이터는 복제가 쉽기 때문에 기존 계약 방식은 데이터 무결성과 보안을 위해 수많은 제3자를 거쳐야 하고 복잡한 절차를 가진다. 이는 시간이 오래 걸리고 비용이 발생한다는 단점이 있다. 이러한 단점을 개선하기 위해 제3자 없이 개인과 개인이 직접 거래를 할 수 있는 방안이 연구되기 시작했다.
1994년 Nick Szabo의 Formalizing and Securing Relationships on Public Networks라는 논문에서 스마트 컨트랙트를 제안했다. 이 논문에서 스마트 컨트랙트는 “a computerized transaction protocol that executes the terms of a contract”(계약 사항을 이행하는 전산화 된 거래 프로토콜)로 정의되었지만 데이터 무결성을 구현할 기술이 충분하지 않아 구현되지 않았다.
2013년, Vitalik Buterin은 자신의 블로그에 ‘Ethereum: The Ultimate Smart Contract and Decentralized Application Platform’를 공개하며 스마트 컨트랙트라는 개념을 이더리움 블록체인에 도입하고 구현하면서 사용되기 시작했다. 스마트 컨트랙트가 사용되기 시작하면서 디지털 자산을 이용한 블록체인 활용 범위가 넓어졌다.
기본 성질
스마트 컨트랙트의 기본적인 성질은 다음과 같다.
- 관측가능성 (observability) : 서로의 계약 이행 가능성을 관찰하거나 성과를 입증할 수 있어야 한다.
- 검증가능성 (verifiability) : 계약을 이행하거나 위반할 경우 계약 당사자들이 이를 알 수 있어야 한다.
- 프라이버시 (privity) : 계약 내용은 계약 당사자들만이 알 수 있어야 한다.
- 강제가능성 (enforceability) : 계약이 이뤄질 수 있도록 구속력이 있어야 한다.
장점
스마트 컨트랙트는 데이터 무결성, 신뢰성, 효율성, 자율성 등의 장점을 가진다.
-
데이터 무결성
스마트 컨트랙트는 블록체인 네트워크상에서 실행되며, 코드와 수행 내역을 네트워크에 참여한 모든 노드에 공유된다. 따라서 계약을 조작하기 위해서는 모든 노드의 데이터를 변조해야 하기 때문에 조작이 어렵다. -
신뢰성
코드에 작성된 조건이 만족되면 계약이 이행된다. 계약 당사자뿐만 아니라 여러 노드에 의해 검증되고, 문제가 발생하면 계약 자체가 취소된다. -
효율성
코드를 작성하고 배포하면 계약에 참여하는 당사자들이 데이터를 수동으로 입력하지 않아도 된다. 또한, 제3자를 거치지 않기 때문에 경제적인 면과 시간적인 면에서 효율성이 높다. -
자율성
계약이 블록체인 안에서 진행되기 때문에 거래 당사자들이 계약에 대한 권한과 통제성을 갖게 된다.
한계와 취약점
스마트 컨트랙트는 코드 변경의 어려움, 네트워크 환경에 따른 제약 사항, 보안 취약, 오라클 문제 등의 한계가 있다.
- 컨트랙트 코드 변경의 어려움
스마트 컨트랙트는 바이트코드와 ABI 형태로 컴파일된 후 블록체인상에 올라가면 코드를 수정할 수 없다. 코드에 문제가 생기거나 업그레이드가 필요할 땐 수정된 코드를 반영한 새로운 스마트 컨트랙트를 배포해야 하고, 기존에 사용한 컨트랙트를 사용할 수 없도록 해야 한다. - 네트워크 환경에 따른 제약 사항
스마트 컨트랙트를 배포하거나 함수를 호출하는 것 모두 트랜잭션으로 처리되는데 트랜잭션 처리 속도와 비용은 네트워크 환경에 영향을 받는다. 블록체인 네트워크에서 트랜잭션을 처리할 때 채굴자에게 수수료를 지불해야 하며, 빠른 속도를 원하는 경우 더 많은 수수료를 내야 한다. - 보안 취약
스마트 컨트랙트는 이더스캔 등에 컨트랙트 코드를 검증하기 때문에 전체 코드를 공개하는 것이 일반적이다. 코드가 공개되면 공격자가 코드의 취약점을 파악할 수 있어 공격의 대상이 될 수 있다. - 오라클 문제
스마트 컨트랙트 실행 시 외부 데이터를 내부로 가져오는 과정에서 문제가 발생할 수 있다. 데이터가 누락되거나 안으로 들어오는 과정에서 데이터의 위변조가 발생할 수 있기 때문에 데이터 신뢰성에 문제가 생긴다.