____  ___    _  _     _   _ _____     _______
 / ___|/ _ \  | || |   | | | |_ _\ \   / / ____|
| |  _| | | | | || |_  | |_| || | \ \ / /|  _|
| |_| | |_| | |__   _| |  _  || |  \ V / | |___
 \____|\___/     |_|   |_| |_|___|  \_/  |_____|

 --- A GOPHER-LIKE INTERFACE FOR HIVE BLOCKCHAIN ---

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

BY: @jsralph | CREATED: Sept. 27, 2017, 2:32 a.m. | VOTES: 20 | PAYOUT: $9.53 | [ VOTE ]

https://steemitimages.com/DQmYH1aPczkRn2QzT6rQaM26s1m1ghbR1urrWirjieFPD3P/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B81.jpg

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

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

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

[IMAGE: https://steemitimages.com/DQmV8KuXHMMU5T2uDCJjd7un8TbUPy5fGyPbN8T537Fu4D4/%EB%B9%84%ED%8A%B8%EC%BD%94%EC%9D%B8.jpg]

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

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

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

[IMAGE: https://steemitimages.com/DQmSSKXs6d1yYKpiyyCUN1QykjJkJc2Enhq64qcRdjF34oz/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B82.jpg]

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

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

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

[IMAGE: https://steemitimages.com/DQmVCJALZki6ABuK7znwLtkMfVQXF9GrqxjU4yieHauDugV/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B83.jpg]

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

[IMAGE: https://steemitimages.com/DQmPEEv6xYogWYhJRCwmyyXtJuDizBMKrYuyNvGX8fYKfva/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B84.jpg]

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

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

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

[IMAGE: https://steemitimages.com/DQmdJkLyERA2tBKpm5N9UfVAFD1TWz12AxUPE9MLHwnc8uN/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B85.jpg]
[IMAGE: https://steemitimages.com/DQmcJfHFxqzxvUqXi8fKc2ATVwYZPGxsDNJgU2xuKD7TBfQ/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B86.jpg]

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

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

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

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

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

TAGS: [ #kr ] [ #coinkorea ] [ #bitcoin ] [ #blockchain ] [ #script ]

Replies

@gaibandha365 | Sept. 27, 2017, 2:32 a.m. | Votes: 0 | [ VOTE ]

Your post is very effective and powerful, Thanks for sharing

Upvoted !

By the way ,I started following you and I would appreciate your follow back too .
please visit my blog and Upvote me too.

@jsralph | Sept. 27, 2017, 2:37 a.m. | Votes: 0 | [ VOTE ]

Thanks for the comment. I've also FOLLOWED you @gaibandha365. I hope you should come again and get something useful.

@runicar | Sept. 30, 2017, 11:46 a.m. | Votes: 0 | [ VOTE ]

@jsralph please remove the follow. This is just a fake account spamming every post with this message. Check his comments.

@wooklym | Sept. 27, 2017, 2:41 a.m. | Votes: 0 | [ VOTE ]

쉬운 설명글 감사드립니다!
다음 포스팅도 기대하고 있을게요

@jsralph | Sept. 27, 2017, 2:45 a.m. | Votes: 0 | [ VOTE ]

@wooklym 네~ 찾아주셔서 감사합니다. 개발자 분들과 같이 공유하고 이야기도 나누고 싶네요 팔로우 하고 갑니다!

@jsl | Sept. 27, 2017, 3:18 a.m. | Votes: 0 | [ VOTE ]

잘 봤습니다. 대단하십니다. 열정에 감탄하고 갑니다!

@jsralph | Sept. 27, 2017, 3:21 a.m. | Votes: 0 | [ VOTE ]

@jsl 감사합니다~

@cheerup | Sept. 27, 2017, 2:50 p.m. | Votes: 1 | [ VOTE ]

Cheer Up!
- from Clean STEEM activity supporter

@unieye | Sept. 28, 2017, 9:24 a.m. | Votes: 0 | [ VOTE ]

잘 보고 갑니다. 사실 블록체인 자체가 이해하기가 어려운 개념이지만 그래도 잘 이해하고 갑니다~

@jsralph | Sept. 28, 2017, 4:47 p.m. | Votes: 0 | [ VOTE ]

네 그래도 정독해주시고 이해해주시는것에 대해 항상 감사드립니다 @unieye 님~ 제가 볼땐 충분히 이해하고 계신것 같습니다. 사실 누구나 알수 있도록 설명하고 싶지만 또 어려운 내용도 많은지라 마냥 간단하고 쉽게만은 설명이 힘든것 같네요. 좋은 공부 되셨길 바라고 @unieye 님분들 같이 공부하시고 투자하시는 건전한 마인드를 가진분들이 많아지길 바라는 마음입니다ㅎㅎ

@easyblockchain | Nov. 27, 2017, 5:44 a.m. | Votes: 0 | [ VOTE ]

안녕하세요 쉽게 설명하는 블록체인 게시자 jsralph입니다.
계정 비밀번호 분실로 인하여 새로 포스팅을 하게 되었습니다ㅜㅜ
http://steemit.com/@easyblockchain 에서 더 많고 다양한 자료 포스팅하고 있으니 많이 찾아주세요~

@rbaggo | Dec. 2, 2017, 7:19 p.m. | Votes: 0 | [ VOTE ]

이렇게 그림으로 보니까 좀 더 쉬운 것 같네요!
팔로우해서 다음 글도 보겠습니다 ㅎ

[ BACK TO TRENDING ] [ BACK TO MENU ]
CMD>