3장까지는 블록체인의 기초에 대해 알아보았다. 4장에서부터는 블록체인의 활용에 대해 공부한다.
이 장에서는 이더리움 블록체인의 코어라고 할 수 있는 '스마트 컨트랙트'를 이해해보도록 한다.
스마트 컨트랙트의 개념의 이해를 돕기 위해, 먼저 전통적인 계약에 대해 살펴보자.
예를 들어 부동산을 사고 팔려고 하는 참여자 2명이 있다고 하자. 매수인은 매도인에게 돈을 지불해야 하고, 매도인은 매수인에게 부동산의 소유권을 주어야 한다. 그런데 만약 두 명만이 이 거래에 참여한다면, 매수인과 매도인은 서로 상대가 약속한 금액과 약속한 부동산을 줄지에 대해 확신할 수 없다. 그래서 전통적인 계약 방식은 중개인을 필요로 한다. 이 예시에서는 부동산 중개업자와 변호사 등에 해당한다. 매수인과 매도인이 합의한 금액에 대해, 지불이 이루어지면 부동산의 소유권을 이전하는 거래가 실행되도록 하는 것은 중개인인 것이다.
이 방식은 계약에 참여자의 수를 더하면서 당연히 더 오래 걸리고, 더 많은 비용을 필요로 한다.
스마트 컨트랙트는 이 중개인의 필요를 없앰으로써 이 문제를 해결한다.
Smart Contract
: 스마트 계약이란 미리 정해진 조건이 충족될 때 자동으로 실행되는 디지털 계약으로, 블록체인에 저장된다.
계약의 참여자가 계약의 결과를 확신할 수 있게 하기 위해 중개인이 필요한 전통적 방식의 계약과 달리, 특정 조건의 만족을 프로그램이 확인함으로써 계약을 자동화할 수 있는 것이다.
스마트 계약을 간단하게 비유하자면, 자판기와 같다. 자판기는 스마트 계약처럼 특정 입력이 미리 정해진 출력을 보장한다.
1. 제품을 선택한다.
2. 자판기가 가격을 표시한다.
3. 가격을 지불한다.
4. 자판기가 올바른 금액이 지불되었는지 확인한다.
5. 자판기가 선택한 제품을 준다.
자판기는 모든 요구 조건이 충족된 후에만 원하는 제품을 준다. 제품을 선택하지 않거나 충분한 돈을 넣지 않으면, 자판기는 제품을 주지 않는다. 그리고 이 모든 과정에서, 중개인의 개입은 없다.
스마트 계약의 주요 이점은 특정 조건이 충족될 때, 인간의 언어와 달리 모호하지 않은 코드를 실행함으로써 계약을 실행한다는 것이다. 결과를 해석하거나 협상하기 위해 사람을 기다릴 필요가 없으며, 이로 인해 신뢰할 수 있는 중개인이 필요 없어지게 된다.
전통적인 계약은 인간이 해석하고 실행하기 때문에 모호하다. 예를 들어, 어떤 두 판사는 계약을 다르게 해석할 수 있어 일관성 없는 결정과 불평등한 결과가 나올 수 있다. 하지만, 스마트 계약은 계약 코드에 작성된 조건에 따라 정확하게 실행된다. 이 정밀성 덕분에 같은 상황에서는 항상 동일한 결과를 낳는다. 또한, 블록체인 기반 시스템이기 때문에 감사와 추적에 유용하다. 동시에, 이더리움은 익명성을 유지하는 네트워크이기 때문에 (거래가 고유한 암호화된 주소에 공개적으로 연결되지만 실제 신원은 공개되지 않는다), 투명성을 제공하면서도 관측자로부터 개인 정보를 보호한다.
이렇게 많은 장점이 있지만, 스마트 계약의 한계점도 있다. 가장 대표적인 한계로는 단독으로 "현실 세계"의 이벤트에 대한 정보를 얻을 수 없다는 것이다. 이는 오프체인(off-chain) 소스에서 데이터를 가져올 수 없기 때문인데, 따라서 현실 세계의 이벤트에 반응할 수 없다. 예를 들면, 현실세계의 어떤 이벤트를 계약의 조건으로 삼을 수 없다. 이것은 의도된 설계인데, 외부 정보에 의존하는 것은 보안과 탈중앙화에 중요한 합의를 위태롭게 할 수 있기 때문이다.
이제 전통적인 거래와 비교하여 스마트 계약이 뭘 위한 것인지, 어떤 방식으로 작동하는지 어느 정도 안다. 그런데, '그래서 도대체 '스마트 컨트랙트'라는 게 뭐지?' 라는 의문이 남아있을 것이다.
"스마트 계약"은, 단순히 이더리움 블록체인에서 실행되는 프로그램이다. 특정 주소에 위치한 코드와 데이터의 모음이라고 볼 수 있다.
그러니까, 계약에 누가 참여하는지, 어떤 조건이 만족되어야 하는지 등 계약의 내용을 명시하는 일종의 계약서인 것이다.
예를 들어, 특정 날짜 이후에만 자금을 인출할 수 있도록 자금을 에스크로로 보관하는 스마트 계약을 작성할 수 있다. 만약 그 날짜 이전에 인출을 시도하면, 스마트 계약은 실행되지 않는다. 또는 딜러에게 결제할 때 자동으로 차량 소유권의 디지털 버전을 제공하는 계약을 작성할 수도 있다. 이 때에 스마트 계약을 작성한다는 건, 블록체인 네트워크에 배포될 프로그램을 작성하는 일이라는 것을 이제 이해할 것이다. 스마트 컨트랙트는 solidity 언어로 작성한다.
앞서 예로 든 자판기 예시를 이용해 다음과 같이 스마트 컨트랙트를 작성할 수 있다.
위 코드에 대한 설명을 비롯해 solidity 언어로 smart contract를 작성하는 법은 다음 장에서 공부한다.
'Study > Blockchain' 카테고리의 다른 글
[Blockchain] #07_Smart Contract & Solidity 스마트 컨트랙트 배포 (0) | 2024.07.18 |
---|---|
[Blockchain] #06_Smart Contract & Solidity 스마트 컨트랙트 작성 (0) | 2024.07.18 |
[Blockchain] #04_Wallet & MetaMask 블록체인지갑과 메타마스크 (0) | 2024.07.18 |
[Blockchain] #03_Merkle Tree in Blockchain 머클트리&트랜잭션 (0) | 2024.07.18 |
[Blockchain] #02_Blockchain structure 블록체인 구조 (0) | 2024.07.16 |