스마트 컨트랙트란 어떤 개념인가요?
A하면 B한다는 조건을 걸어둔 거래 약속인가요?
그런데 왜 스마트 컨트랙트 생성에 비용이 드나요?
'A하면 B한다는 조건을 걸어둔 거래 약속인가요?' 라는 것 그대로 해석하셔도 좋을 것 같습니다.
스마트컨트랙트를 생성하고, 유저가 스마트 컨트랙트를 사용하는 것에 비용이 들어가는 것은 대표적으로 이더리움이 있죠.
블록체인은 컴퓨터(노드)들이 모여 하나의 거대한 컴퓨터를 구성하게 되고, 그 컴퓨터들이 모두 같은 일을 진행 하게 됩니다.
그렇기 때문에 신뢰성은 증가되는 반면, 속도는 떨어지게 되죠.
모든 컴퓨터들이 각자의 연산을 수행하지 않고, 똑같은 연산을 진행하고 이를 검증하기 때문입니다.
다양한 애플리케이션(스마트컨트랙트)를 지원하기 위해서는 스크립트 언어가 필요했고, 스크립트 언어를 지원하게 되면 반복문에 대한 보호를 할 수 없었습니다. 모든 컴퓨터들이 같은 일을 하게 되는 데. 누군가 악의적으로 탈출이 불가능한 반복문을 기입하고 스마트 컨트랙트를 발생 시킨다면, 모든 노드들이 마비 될 것입니다.
이에 대한 해결 책으로 이더리움에서는 GAS라는 개념을 도입했습니다. "너희가 쓰는 연산량 만큼 비용을 지불해!!" (물은 셀프)
그렇기 때문에 이더리움에서는 스마트컨트랙트를 생성 (이더리움의 노드들에게 나의 계약서를 저장 시키는 비용)하고, 유저가 스마트컨트랙트를 사용 (이더리움 노드들에게 연산을 요청하는 비용)에 대하여 수수료를 지불 하는 것입니다.
물론, 다른 방법들로 이런 수수료 문제를 해결한 블록체인도 있습니다. (eos의 경우, 유저의 스마트컨트랙트 접근 비용을 다른 방식으로 풀어냈죠.)
'스마트 컨트랙트'라는 용어는 유명 암호학자 닉 사보(Nick Szabo)에 의해 1994년 만들어졌으며, 계약 조건을 실행하는 컴퓨터화된 거래 프로토콜로 정의된 바 있다. 한 마디로 코드로 약속하고 코드로 이행한다란 개념이네요. 스마트 컨트랙트는 블록체인 플랫폼 상에서 이루어지는데, 블록체인 플랫폼에선 특정 행동을 취할 때 즉, 거래(Transaction)마다 수수료가 발생합니다. 수수료는 중앙화된 관리자없이 플랫폼이 자생하기 위해 필요한 장치입니다. 플랫폼 운영 및 유지에 기여하는 노드들에게 보상으로 주어지거든요:)
컴퓨터로 코딩한 함수로
일정 조건이 갖춰지면 거래가 수행되게 하는 것입니다.
사람이 몇일몇시에 어떤 것을 300원 이하에서 구입하라고 컨트랙트를 생성하면 컴퓨터가 알아서 조건에 맞으면 이를 수행합니다