MODULE 3 - SMART CONTRACT INTUITION
02. WHAT IS A SMART CONTRACT?
스마트컨트랙트은 블록체인에서 실행되는 프로그램이다.
프로그램을 실행하게 하는 것은 코드인데, 블록체인에서의 코드라는 것은 굉장히 흥미롭고 어떻게 코드를 실행하는지 공상 과학 소설처럼 느껴지기도 하다.
좀 더 자세히 살펴보자면,
먼저 비트코인에는 프로그래밍 언어인 비트코인 스크립트가 있고 이것으로 블록체인에서 코드를 작성할 수 있다.
이더리움에도 솔리디티라는 프로그래밍 언어가 있고 코드를 작성할 수 있도록 한다.
주로 이더리움의 솔리디티를 다루는데 그 이유는 튜링 완전성 때문이다.
비트코인 스크립트는 튜링이 완전하지 않지만 솔리디티는 튜링이 완전하다.
튜링 완전성(turing completeness)
튜링 완전성이이란 어떤 프로그래밍 언어나 추상 기계가 튜링 기계와 동일한 계산 능력을 가진다는 의미이다.
즉, 프로그램 언어가 튜링이 완전하면 해당 언어로 모든 로직을 완벽하게 코딩할 수 있다는 것이다.
비트코인 스크립트는 튜링이 완전하지 않고 솔리디티는 튜링이 완전한 이유는 뭘까?
비트코인 스크립트에는 아주 중요한 컴포넌트인 루프(loop)가 없다.
루프가 비트코인 스크립트에 없는 이유는 우연이 아니라 의도적이다.
스마트컨트랙트나 블록체인에서의 프로그램은 체인의 각 노드에서 실행되고 이는 체인의 속도를 늦추기 때문이다.
즉, 누군가 의도적이든 의도적이지 않든 예를 들어, 끝이 없는 루프인 무한 루프를 생성했다면 전체 블록체인을 파괴 또는 중단시키거나 모든 것을 상당히 느리게 만들고 심지어 무한 루프조차도 누군가에게는 매우 크고 지루한 루프가 될 수 있다.
그래서 프로그래밍에서의 루프는 올바르게 사용하지 않으면 정말 위험한 도구이며, 이러한 잠재적인 문제를 방지하기 위해 비트코인 스크립트는 루프를 포함하지 않기로 한 것이다.
하지만 솔리디티는 루프를 포함하는 방법을 찾아서 튜링 완전성을 확보하였다.
Vitalik Buterin은 이전에 비트코인 스크립트에 루프를 포함해서 튜링이 완전해지는 것을 지지하였지만 커뮤니티에 반대에 부딪혀 이더리움과 솔리디티를 생성한 것이다.
이제 블록체인에서 살펴보자.
여기에서는 트랜잭션 데이터나 다른 데이터를 추가하는 대신 스마트컨트랙트가 존재한다.
따라서 네트워크의 전부가 이 스마트컨트랙트의 복사본을 가진다.
이러한 상황에서 각각의 노드는 아래 사항들을 가지고 있다.
이러한 스마트컨트랙트는 블록체인의 특성과 결합하여 다양한 방법으로 활용될 수 있다.
"바보들을 위한 스마트컨트랙트" - Nik Custodio
Nik Custodio, (2017), Smart Contracts for Dummies