구글에 스마트컨트랙트를 검색하면 아래와 같이 나온다.
이..잉??
우선 블록체인의 개념을 조금 더 명확히 이해하고 여기로 넘어와야 하기에 필자의 "블록체인 개발 -2"를 정독하고 와보자.
스마트 컨트랙트를 이해하기 위해서는 우선 먼저 "볼록체인1.0"에 대해 먼저 이해해야 한다. 앞서 말한거와 같이 "블록체인1.0"은 한 블록에 "A가 B에게 XXX만큼의 비트코인을 주었다" 라는 거래내역를 담고 그 내용(데이터)에 의거한 고유의 Hash값을 그 블록에 부여 하였다.
"A가 B에게 XX비트코인을 주었다" 가 아닌, "A가 B에게 XX비트코인을 주면" 라는 조건을 데이터에 넣을 수 있게 된 것을 블록체인2.0 (이더리움) 이라고 하는 것이다.
블록체인1.0 에서는 비트코인을 주고받는 것 외에 할 수 있는 것이 없었지만, 스마트컨트랙트, 즉 특정 조건을 코딩으로 담은 거래를 시작함으로서 수많은 분야가 블록체인을 통해 이루어질 수 있게 되었다.
다시 말해, "A가 B에게 이더리움 10개를 주면, B는 A에게 비트코인 1개를 주겠다"라는 간단한 예시부터, 우리에게 익숙한 각종 계약서, 매매계약서, 무역에 필요한 서류들도 전부 스마트컨트랙트에 포함시킬 수 있게 되었다.
EX) A가 B와 중고거래를 한다고 하자. 스마트 컨트랙트가 구현되는 방식은 다음과 같다.
1) A가 '받는 주소 없이' 1이더를 전송한다. 받는 주소가 없는 대신 거래 안에 '스마트 컨트랙트를 만들어라','스마트 컨트랙트가 발동되는 조건(if)은 A가 약속한 물건을 받았다고 인증했을 때' '조건이 만족되면(then) B에게 1이더를 보낸다'.라는 코드를 작성해서 전송한다.
2) 블록체인에 거래가 기록되면, 모든 참여자들이 안에 담긴 코드를 실행한다. 이더리움 블록체인 상에서 코드에 의해 운영되는 컨트랙트 계정(contract account)이 생긴다. 1이더가 컨트랙트 계정에 보관된다.
참고: 이더리움 내의 계정은 사용자가 통제하는 외부 소유 계정(Externally owned account)과 내부 코드에 의해서 통제되는 컨트랙트 계정(contract account)이 있다.
3) B는 1이더가 담긴 컨트랙트 계정과 담겨있는 코드의 내용('조건이 만족되면 B에게 돈을 준다')을 보고 물건을 택배로 보내준다.
4) 물건을 택배로 받은 A는 컨트랙트 계정을 받는 사람으로 해서 소량의 이더를 보낸다. 그 거래 안에는 'X조건이 만족되었음'이라는 코드를 써서 보낸다.
5) 이 거래가 블록체인에 기록되고 실행되면, 컨트랙트는 주어진 조건에 반응하게 되고, 정해진 대로 B에게 돈을 전송한다.
이 과정을 통해 어떤 제3자의 개입도 없이 두 사람은 완전한 거래를 할 수 있게 되며, 이 과정은 모두 투명하게 블록체인에 기록된다.
개발자는 코딩을 통해(스마트컨트랙트를 담은) 이더리움 네트워크에 올릴 수 있게 되었다. 이것을 DAPP (decentralized application)이라고 한다. 현재는 3000개가 넘는 어플리케이션이 이더리움 네트워크 상에 존재한다고 한다.
기존의 APP은 중앙서버에 나의 코딩을 등록한다고 하면, DAPP은 이더리움 네트워크 상에 올리는 것을 말한다.
코인과 토큰이란? 독립된 메인넷(블록체인 네트워크)을 소유한 경우 코인이라고 하고, 메인넷을 소유하고 있지 않고 다른 메인넷에서 파생된 경우 토큰이라 한다.
블록체인 기술의 가장 핵심적인 개념은 탈중앙화로 중앙화된 데이터베이스가 없다는 것을 뜻한다. 이에 분산된 정보 저장 구조를 가질 수밖에 없는데, 이런 분산 정보 저장 구조 및 장치를 노드(Node)라고 한다.
노드는 정보의 왜곡과 변경을 방지하는 기능을 갖고 있으며 블록체인에서 노드를 독자적으로 보유했다는 것을 메인넷을 가졌다고 표현한다.
메인넷은 네트워크 세스템 운영을 통해 암호화폐 생성뿐만 아니라 탈중앙화 애플리케이션 디앱(Dapp)을 탄생하게 하는 기반을 제공해 독자적인 생태계를 구성하는 것을 의미한다.