쉽게 설명하는 블록체인 avatar

쉽게 설명하는 블록체인, 스크립트란 뭔가요? [비트코인의 언어]

jsralph

Published: 27 Sept 2017 › Updated: 27 Sept 2017쉽게 설명하는 블록체인, 스크립트란 뭔가요? [비트코인의 언어]

쉽게 설명하는 블록체인, 스크립트란 뭔가요? [비트코인의 언어]

가장 첫 글에 언급한 바 있지만, 나는 컴퓨터공학을 전공하지 않아서 블록체인에 대한 공부를 하는데 시간과 노력이 더 필요했다.

그래서 가능한한 쉽게 설명하여 정보를 제공하고 또한 공부한 내용을 정리하는 것도 용이하기에 이렇게 포스팅을 하고 있고 누구나가 이해하도록 한번 글을 써보자는 것이 내 블로깅의 취지이지만 이번 포스팅은 기술적인 내용이 다소 들어간다.

조금 어려울 수 있지만 이해가 된다면 비트코인과 정말 더 가까이 친해질 수 있는 기회일 것이다. 조금 어렵게 얻은 내용인만큼 느낌이 확 와닿을 것이라 확신한다. (사실 그렇게 어려운 내용도 아니다.)

비트코인.jpg

비트코인 생태계에도 언어가 있다. 그것이 스크립트라고 하는 프로그래밍 언어인데, 단순하면서도 어떻게 보면 비트코인이 비트코인으로서 역할을 하게 하는 적합한 언어라고 할 수 있다. 즉, 비트코인의 모든 거래를 유효화 시키는 것이 스크립트이다.

또한 비트코인은 고정적인 패턴화된 형태의 시스템이 아니라 스크립트 언어를 통해 실행되기 때문에 무한대에 가까운 표현 가능한 조건들이 만들어질 수 있는데 이것이 비트코인이 화폐로서 역할을 하게하는 힘이다.

먼저 비트코인 거래를 작동시키는 두 가지 엔진을 알아보자.

스크립트2.jpg

  • 잠금 스크립트는 'scriptPubKey'라고도 불리는데, 이는 UTXO를 소비하기 위한 요건을 명시하고 있고 그 뿐 아니라 공개키 또는 비트코인 주소를 포함한다. 왜냐, UTXO는 특정 지갑에서 소유하고 있는 '비트코인 덩어리'이기 때문에 이 소비 요건에 비트코인 주소와 공개키도 포함하는 것이다. 따라서 해당 지갑주소를 포함하는 이 잠금 스크립트를 풀수 있는 조건을 달성하면 해당 지갑주소에서 UTXO를 소비할 수 있게 된다.

  • 해제 스크립트는 'ScriptSig'라고도 불리는데, 거래의 입력값에 포함 되어 있다. 쉽게 말해 얼마를 보낼지 '보낼 금액'란에 적어 넣는다면 그 명령어에는 잠금 스크립트의 조건을 충족할 해제 스크립트가 있어 해당 비트코인 주소의 UTXO에 대한 소유권을 입증하고 그 UTXO를 소비하도록 한다.(UTXO에 대한 개념설명)

정리하자면 블록체인상에서 기록되어 있는 모든 UTXO들은 그것들을 소비하기 위한 조건이 있는데 그 조건들을 스크립트로 구현한 것이 '잠금 스크립트'인 것이고 그 조건을 풀 수 있는 특정 입력값이 '해제 스크립트'인데 이 데이터가 복사되어 잠금 스크립트와 함께 연산이 실행됐을때 결과가 'TRUE'값이 나오면 그 입력값은 유효해지고 UTXO를 소비할 수 있게 되는 것이다.

그렇다면 스크립트 언어는 어떻게 작동할까?

스크립트는 스택(Stack)이라 불리는 데이터 구조를 사용한다. 생소한 용어가 계속 등장하는데 아래 그림을 보자.

스크립트3.jpg

그림이 스택(Stack)의 데이터 구조이고 이 스택(Stack)은 푸시(push)와 팝(pop)연산을 가능하게 한다. 푸시(push)는 데이터 최상단에 데이터를 추가하는 연산이고 팝(pop)은 데이터 최상단에서 데이터를 제거하는 연산이다.

스크립트4.jpg

그림처럼 8을 푸시연산 하게되면 8이 들어가고 거기에 또 3과 -1을 각각 푸시하면 쌓인 데이터의 가장 위에 데이터가 쌓여 들어가는 것이고, 그와 반대로 팝 연산을 하게되면 최상단에 있는 데이터를 제거해주는 시스템이 스택(stack) 데이터 구조이다.

그런데 팝 연산에서는 <더하기, 빼기, 곱하기, 나누기> 등의 명령어를 넣으면 위의 그림처럼 그냥 가장 위의 데이터가 제거되는 것이 아닌 명령했던 <더하기, 빼기, 곱하기, 나누기>가 연산 과정을 거친 후 제거된다.

이해가 쉽도록 아래 그림을 보자.

스크립트5.jpg
스크립트6.jpg

위 그림은 2+3을 했을때 5가 나오는지 확인을 하는 과정을 스크립팅 언어로 나타낸 것인데,

위 그림은 아주 간단하게 예를 든것이다. 만일 +3=5'잠금 스크립트'라면 2'해제 스크립트'인 것인데, 이 말은 +3을 했을때 5가 나오는 입력값인 2를 찾는 것이 잠금 스크립트의 조건을 만족하는 해제 스크립트를 찾는다고 하는 것이다.

해제 스크립트에는 비트코인 지갑의 소유권을 인증하는 서명이 포함되어 있는데 이 서명 값과 출력값(UTXO)의 잠금 스크립트 값이 위 그림처럼 '푸시'연산과 '팝'연산을 거쳐 TRUE값이 도출되면 비트코인을 소비할 수 있는 것이다.

이것이 스크립트가 비트코인 거래를 작동시키는 방법이다.

최대한 쉽게 설명하려고 하지만 모르시는 분들을 위해 언제든지 어떤 내용이든 댓글로 질문을 받습니다. 질문의 내용이 길 경우는 jsralphh@gmail.com으로 보내주시면 감사하겠습니다.

Leave 쉽게 설명하는 블록체인, 스크립트란 뭔가요? [비트코인의 언어] to:

Written by

비트코인, 블록체인 쉽고 빠르게 이해하고 투자하자!

Read more #kr posts


Best Posts From 쉽게 설명하는 블록체인

We have not curated any of jsralph's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From 쉽게 설명하는 블록체인