[연재글] BlockChain - 07. UTXO와 거래 검증
게시글 주소: https://i9.orbi.kr/00012424441
1편 : https://orbi.kr/00012313138
2편 : https://orbi.kr/00012318427
3편 : https://orbi.kr/00012334500
4편 : https://orbi.kr/00012341994
5편 : https://orbi.kr/00012367982
6편 : https://orbi.kr/00012401564
이 글은 암호화폐와 그 근간을 이루고 있는 블록체인에 대해 살펴보는 글이지 비트코인과 이더리움 시장을 예측해 투자 타이밍을 조언하는 글이 아님을 알려드립니다. 이걸 본다고 투자하는데 도움이 되지 않습니다. 기술은 개발자에게 투자는 주갤러에게.
안녕하세요 이번 글에서는 거래에 대해 집중적으로 살펴보려 합니다. 다들 앞에서 보셔서 기본적인 내용은 아실거라 생각합니다. 내 잔고에 사인을 해서 사용한다. 그 거래는 블록에 실리는 것으로 검증된다. 뭐 그런 내용이요. 이번에는 거기에 있는 디테일을 하나씩 꺼내보겠습니다.
보통 화폐에 대해 제기되는 두 개의 큰 문제는 다음과 같다고 합니다.
1. 그 돈이 사용자의 돈인지 어떻게 증명하는가?
2. 그 돈이 다른 곳에서 쓰이지 않았다는 것을 어떻게 증명하는가? (이중지불)
우리가 흔히 쓰는 현금을 생각해보겠습니다. 1번에 대해서는 사실상 완벽한 증명이 불가능하죠. 하지만 내 통장에 있는 돈을 은행에 가서 현금으로 찾았고, 그 영수증과 거래기록이 남아있음을 보여준다면 그 돈이 내것이라는 것을 증명하는 것은 불가능하지 않습니다. 2번에 대해서는 아주 명확하죠? 현금은 계산을 위해 지불하는순간 내게서 사라져 상대방에게 전달되기 때문에 같은 돈을 다른데서 쓰고 와서 또 쓸 수가 없습니다. 이중지불이란 말 자체가 생소한건 우리가 겪을 수 없는 상황에 가깝기 때문입니다. 그럼 블록체인 기반의 암호화폐는 어떻게 이 문제를 해결할까요?
0. 공개키 암호화(비대칭 암호화)
글을 쓰다보니 공개키 암호화가 뭔지 설명을 좀 해야 이해하시기 수월할 것 같다는 생각이 들어서 0번 섹션을 추가했습니다. 어렵게 들어가지는 않고 개념적으로, 아래에서 설명하는 내용에 집어넣을 수 있을 정도로만 설명드릴게요. 보통의 암호화 방법은 암호화 키라는 것을 가지고 평문을 암호문으로 만듭니다. 그리고 이 키를 가지고 역연산을 해서 복호화를 하는데요, 하나의 키로 암호화와 복호화를 둘 다 하기 때문에 대칭키 암호화 방식이라고 합니다. 이 방식의 장점은 키를 생성하고 암호화/복호화를 하는데 드는 노력이 상대적으로 적다는 것이구요, 단점은 이 키로 암호화/복호화를 둘 다 할 수 있기 때문에 키가 탈취되면 이 암호키를 사용한 암호체계가 몽땅 망가집니다.
이 방식을 개선하기 위해 나온 게 비대칭 암호화 또는 공개키 암호화 방식이라고 하는데요, 이건 키가 두 개 존재합니다. 먼저 일반적인 방식으로 암호 키를 생성합니다. 이 키는 나만 들고있는 개인키가 됩니다. 그리고 이 개인키에 적당한 연산을 해서(보통 타원곡선곱셈함수 같은걸 쓴다고 합니다) 개인키에서 도출한 또 하나의 키를 생성합니다. 이 키는 공개키라고 불리며, 이 키는 공개해놓고 모두가 공유합니다. 암호화 키를 공유한다니 이상하죠? 그런데 신기한 게 공개키를 안다고 해서 개인키를 역연산으로 찾아내는 것은 불가능하다고 하네요. 쉽게 생각하면 SHA256 collision을 찾는 정도의 난이도라고 보시면 됩니다. 그래서 개인키에서 공개키를 만들 수는 있지만 공개키에서 개인키를 만들 수는 없습니다. 그리고 이 암호화 기법의 신기한 점은 개인키로 암호화한 암호문은 공개키로만 풀 수 있고, 공개키로 암호화한 암호문은 개인키로만 풀 수 있다는 겁니다. 어느 하나만 가지고는 암호화/복호화를 할 수 없는거죠. 그래서 비대칭이라는 이름이 붙습니다.
기본적인 시나리오는 다음과 같습니다. 내가 친구에게 편지를 보내고자 하면 편지를 써서 친구가 공개해놓은 공개키로 암호화를 합니다. 그리고 친구에게 보내는거죠. 친구는 자신의 개인키를 가지고 있을테니 이 암호문을 풀 수 있습니다. 하지만 다른사람은 이 암호문을 탈취해도 풀 수 있는 방법이 없네요. 친구는 내게 제가 공개해놓은 공개키로 암호화한 답장을 보내고, 전 제 개인키를 이용해 이를 복호화합니다.
네 아주 신기하고 강력한 방법이죠? 아래의 글을 읽기 위해 기억해야 하는 것은 이것밖에 없습니다. 개인키와 공개키 두 개를 한번씩 사용해야 암호화/복호화를 할 수 있다. 그럼 이걸 가지고 본격적인 내용을 살펴보겠습니다.
1. 잔고의 증명
비트코인은 우리가 흔히 아는 지갑처럼 담겨있는 잔고를 꺼내서 쓰는거에요. 쉽게 생각하면 그렇지만, 이게 사실은 그렇지 않습니다. 정확히 말하자면 우리가 만든 비트코인 지갑에 비트코인은 1사토시(1억분의 1 BTC로, 비트코인의 최소단위)도 들어있지 않아요. 이게 무슨소리냐면, 결국 모든 거래는 블록에 담기잖아요? 그 거레 내용에 보면 input, output이 있는데, input은 그 거래를 위해 지불한 금액이 들어가고, output에는 그 지불한 돈의 소유권이 누구에게 이전되는지에 대한 정보가 들어갑니다. 내 돈이 어디서 왔고 그럼 그 돈은 어디서 왔고... 를 자꾸 생각하면 어려우니까 아주 쉽게 내가 채굴보상으로 받은 돈을 사용한다고 생각해봅시다.
내가 새 블록을 채굴했어요. 그래서 블록 채굴에 대한 보상으로 12.5 비트코인을 받았습니다(축하드립니다 소나타를 사실 수 있겠네요). 이 블록의 맨 첫 거래는 코인베이스 거래라는 것으로, input 없이 output만 존재하는 유일한 거래입니다. 무에서 유를 창조하는 거래죠. 여기에는 output에 내 지갑 주소가 적혀있어요. 네 내 돈이라는 뜻입니다. 근데 이게 내 돈인지 어떻게 알죠? 이 돈을 누가 훔쳐가며 어떡하죠? 블록체인에서 잔고의 증명은 다음과 같이 할 수 있습니다.
모든 지갑은 자신의 주소를 가지고 있습니다. 이 주소는 조금 변조된 공개키라고 볼 수 있어요. 그래서 거래의 output에 이 사람이 주인이라고 하기 위해 그 액수에 해당하는 데이터를 이 사람의 지갑 주소로 암호화해버립니다. 그럼 이 돈을 꺼내기 위해서는 복호화를 해야 하는데, 그걸 누구만 가능해요? 개인키를 가진 사람만 가능하겠죠? 이런 식으로 블록체인 시스템이 잔고의 소유자를 증명합니다. 다른 사람은 암호화된 잔고 데이터를 봐도 열지를 못해요. 개인키는 나만 가지고 있으니까요. 이렇게 나만 사용할 수 있도록 남아있는 output들의 모임을 UTXO(Unused Transaction Output) 이라고 합니다. 지갑에 표기되는 잔고는 내 개인키로 풀 수 있는 UTXO들의 모임이에요. 돈을 사용하면 이 UTXO에 내 개인키로 사이닝을 해서(암호를 풀어서) input에 집어넣게 됩니다. 그리고 이 돈을 받게될 사람의 지갑 주소로 암호화해서 output에 넣는거죠. 이런식으로 소유권이 계속 옮겨가면서 또 다른 누군가의 UTXO가 됩니다.
2. 거래의 증명(이중지불 검증)
그럼 또 하나의 이슈인 이중지불 문제를 생각해보죠. 이 문제는 더 해결하기 쉬워요. 노드가 새 거래 정보를 전달받았을 때 우선 검증을 한 뒤에 Tx. Pool에 들어간다고 했었죠? 이 검증에는 input에 들어있는 UTXO가 이전에 쓰인 적이 있는지를 확인하는 것도 포함되어 있어요. 이전 블록중에 input에 들어있는 UTXO가 사용된 적이 있다면 이 거래를 무효라고 하고 거절하면 되겠죠? 이런 식으로 블록체인은 이중지불에 대한 문제도 쉽게 해결할 수 있습니다.
이와는 조금 별개로, 거래 자체가 잘못된 거래가 아닌지는 어떻게 확인할까요? Full Node 같은 경우에는 쉽습니다. 모든 거래기록을 내가 다 가지고 있기 때문에 그냥 그 거래가 들어있는 블록의 Body 안에 있는 거래 정보를 확인하고, 블록의 해시값이 우리가 알고있는 해시값과 같은지 확인하면 돼요. 그러면 이 거래가 존재하고 유효하다는 것을 증명할 수 있죠.Lightweight Node 같은 경우에는 모든 블록 데이터가 아닌 헤더만 가지고 있다고 했었죠? 그럼 이 경우에는 어떻게 알 수 있을까요? SPV 라는 방법을 이용해 검증하는데, 한 가지는 내가 검증하고자 하는 거래가 든 블록의 깊이를 확인하는 겁니다. 다시 말해 내가 보고자 하는 블록 뒤에 몇 개의 블록이 더 생성됐나를 보는거죠. 다시 계산해야 할 블록이 많을수록 변조가 어려워지니까요. 또 다른 하나는 Merkle Tree(머클 트리라고 합니다)를 만들어보는 겁니다. Lightweight Node는 주변의 Full Node에게 이 거래와 같은 블록에 있는 거래들의 Hash 정보를 요청합니다. 이걸 가지고 Merkle Tree를 만드는데요, 트리의 최상위 값인 Merkle Root가 블록 헤더에 있는 Merkle Root 값과 일치하는지 확인합니다. Merkle Tree는 쉽게 말하면 거래의 해시를 두개씩 묶어서 또 해시를 만들고, 이걸 묶어서 또 해시를 만들고... 를 반복한 것을 말해요. 그러면 단계를 반복할수록 갯수가 적어지는 구조가 되겠죠? 토너먼트 대진표처럼요. 맨 위에는 1개만 남게 될 것이구요. 이 값이 블록 헤더에 들어가는 Merkle Root라는 값입니다. 해시는 값이 조금만 변경돼도 예측할 수 없이 변하기 때문에 거래가 변조되었다면 제대로 된 Merkle Tree가 생성되지 않겠죠? 당연히 루트의 값도 다를것이구요. 이런 방식으로 Lightweight Node는 필요할 때마다 주변 Full Node에게 약간의 정보(해시 몇개만 받으면 되니까요)를 받아서 거래를 검증할 수 있습니다.
뭔가 거래만 확인하면 되는 것 같은데 공개키 암호화부터 시작해서 머클트리니 뭐니 하는 어려운 것들이 잔뜩 붙어버렸네요. 이번 글은 말 그대로 심화과정이었습니다. 몰라도 큰 문제는 없지만 내부가 어떻게 되어있는지 구체적으로 알려면 필요한 그런 내용들이었죠. 아마 교양글로 읽기에는 적합하지 않을 것 같기도 합니다만, 기왕에 쓰는거 가능한 많은 범위를 커버하는 것이 좋다고 생각해 조금 무리해서 글을 작성해봤습니다.
이정도면 대충 블록체인 기술에 대해 다 설명을 드린 것 같네요. 10편까지 써야되나 하고 있었는데 애매하게 7편 정도에서 글이 마무리될 것 같습니다. 제가 까먹고 설명드리지 않은 부분이 있다면 알려주세요 기꺼이 8편 또는 그 이상의 글을 써드리도록 하겠습니다. 며칠 기다려보고 더 쓸 내용이 없는 것 같다 싶으면 총정리글을 한개 올리고 마무리짓도록 하겠습니다. 댓글과 쪽지는 언제나 환영합니다.
작성자 아들딸 까까사주기:
BTC 14eM4cd28q77Q4AujrV6jGBDH9unX3zD3f
ETH 0xf05C7196CF4e3494023aeABB6053d053ecB3937A
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
[인문논술] 궁금증을 가져야 독해를 잘한다 (설명을 요구하는 현상을 설명해 내기) 9
우리 주변에는 설명을 요구하는 현상들이 많이 일어납니다. 오늘 제게도 그랬습니다....
-
2025 모의논술 일정 #1 (성대/중대/가대 등) 7
2025 모의논술 신청이 시작됐습니다. 모의논술은 대학의 유형을 인지하고, 자신의...
-
[칼럼] 고려대 인문논술 준비 part. 3 독해와 요약 (소설의 3요소) 6
안녕하세요. 생각보다 현생이 바빠서 다음 글이 많이 늦었습니다. "너가...
-
생각보다 빈출 단원입니다도움이 되기를 바래요
-
안녕하세요. 이투스 인문논술 5년 연속 1타 강사. 논술을 가르치는 최은식T입니다....
-
[칼럼] 고려대 인문논술 준비 part. 2 평가하기 11
생각보다 많은 분들이 "[칼럼] 고려대 인문논술 준비 part. 1 문제해결방안"...
-
[칼럼] 고려대 인문논술 준비 part. 1 문제해결방안 10
안녕하세요. 제 소개를 먼저 하자면 대학교 4학년에 재학 중인 그저 평범한...
-
평균값 정리와 연계되는 내용이며 고난이도 파트입니다 중경시이 이상부터 빈출소재고...
-
5월 4일 토요일 저녁 6시. 최강논술 X 오르비 5월반이 재개강합니다. 최강논술...
-
마감했습니다. 학림논술 일요일 저녁반 마감했습니다. 최강논술 임호일Pro입니다....
-
인문논술 공개특강 - 연세대 기출로 알아보는 논술의 기본 유형 0
안녕하세요 :) 오르비에서 인문논술을 가르치는 문해력 훈련 전문가 최은식입니다....
-
드디어 합니다. 오르비에서도. 무료 공개특강! 최강논술 임호일Pro입니다. 5월...
-
대부분의 논술강사들이 열심히 자료도 올리고 칼럼도 쓰는뉴 노멀이 오는 그때를...
-
최강논술 임호일Pro입니다. ■ 설명회 및 공개특강 일정 ① 4월 17일(수) 저녁...
-
내신, 왜 하는데? 17
“선생님 저 이번주부터 중간고사 대비 들어가요~” 이 친구 서울 일반고, 2학년까지...
-
lim x->∞ 다항식/e^x=0 최단증명 발견했어요!! 4
저기서 수렴하는 극한의 성질을 쓰면 모든 다항식에 대해 일반화 가능해요 또...
-
지난번의 『원고지 사용법』에 이어, 오늘은 『논술답안 작성법』 들어갑니다. 최강논술...
-
최강논술 임호일Pro, 4월 공개특강과 설명회 일정입니다. 1. 학생 무료 공개특강...
-
논술 단원별 분류 배포 1편 - 최대최소정리 (1/2) 2
매주 배포될 단원순서는 아래와 같습니다 최대최소정리 2주평균값 정리 1주샌드위치...
-
아이들의 답안을 첨삭하다보면 내용 이전에 눈에 들어오는 게 있어요. 바로 원고지...
-
[사례]논술 수업을 들으면 어떻게 변할까요?(2주 수업 후) 6
안녕하세요~ 광쌤입니다. 제 칼럼을 읽어주셔서 감사합니다. 먼저, 제 소개를...
-
이 글의 목적은 두 가지입니다. 첫째는, 제 수강생 학부모님들께 제가 수업에서...
-
[칼럼]논술은 돈을 많이 써야 하는 전형입니다 2. 0
안녕하세요~ 광쌤입니다. 제 칼럼을 읽어주셔서 감사합니다. 먼저, 제 소개를...
-
[칼럼]논술은 돈을 많이 써야 하는 전형입니다 1. 2
안녕하세요~ 광쌤입니다. 제 칼럼을 읽어주셔서 감사합니다. 먼저, 제 소개를...
-
고려대학교 수학과 / 기대모의고사 9년차 저자 대학재학시절 수능(평가원) 현장응시...
-
사람의 본성은 이타적이냐 이기적이냐먼저 이타적이냐 이기적이냐 그 경계선 어떻게 나눌...
-
3월 2일, 토요일 저녁 6시, 인문논술 3월 프로그램이 시작됩니다. 최강논술...
-
안녕하세요~ 광쌤입니다. 제 칼럼을 읽어주셔서 감사합니다. 먼저, 제 소개를...
-
[임호일Pro] 3.1절 인문논술 공개특강! (접수중) 3
3.1절 인문논술 공개특강을 진행합니다. 최고의 강의를 누구나 경험해볼 수 있도록...
-
고려대학교 수학과 / 기대모의고사 9년차 저자 대학재학시절 수능(평가원) 현장응시...
-
“우리 아이가 지난주부터 선생님 수업을 들었습니다. 우리 아이 답안도...
-
안녕하세요~ 광쌤입니다. 제 칼럼을 읽어주셔서 감사합니다. 먼저, 제 소개를...
-
고려대학교 수학과 / 기대모의고사 9년차 저자 대학재학시절 수능(평가원) 현장응시...
-
2월 3일, 토요일 저녁 6시! 최강논술X오르비 2월 정규반 개강합니다. 이번달...
-
[인문논술] 합격생들의 인문논술 공부법(2024학년도 수강생들의 합격 수기 공개) 2
1. A 학생: 연세대학교 노어노문학과 최초합격 / 성균관대학교 인문과학계열...
-
학생들은 6모 전까지는 보통 자신의 학업적 성취, 그리고 이와 연동되는 지원 가능...
-
논술은 수능최저가 중요해요. 논술을 아무리 잘써도, 최저 미충족이면 탈락이거든요....
-
연세대 경영 24학번 ㄱ○○ (87:1) 연세대 경영 23학번 ㅇ○○ (75:1)...
-
[칼럼]논술에서도 쓸일 없는 테일러 급수 증명법 (ver.고등학생) 8
첫 글 쓴지 얼마 안되서 두번째 글을 써보네요... 그리고 이륙 지원해주신 분들...
-
연세대 경영 합격자는 고려대 문제를 어떻게 풀까? #인문논술 0
요약 1. 고려대 논술에 대한 참고 자료로서 고려대 편입논술 기출 문제를 하나...
-
정시 면접 가이드 세 번째입니다. 며칠 늦어진 이유가 있는데 대학 답변을 직접...
-
고대 이즈 백! 15
“고대가 돌아왔다!” 8년 만에 고려대 논술이 부활했습니다. 덕분에 논술로 연고대...
-
정시 면접 가이드 '2'입니다. 정시에 면접을 보는 모든 대학/모든 학과에...
-
작년 23학년도 아주의 시험 후 정리해 둔 소소한 내용 공유합니다. [아주대의학]...
-
안녕하세요, 연고대 3회합격자 연상논술입니다. 이화여대 논술을 위한 특강을 추가로...
-
경북의 아주의 수업때 학생들에게 이야기 해주는 작년도의 시험 후기입니다. 연원의의...
-
인문 수리논술 무료특강 학습자료 (경희, 중앙, 한양, 건국 등) 0
안녕하세요, 연고대 3회합격자 연상논술입니다. 올해는 다른 학교들 특강을 제공하기는...
-
거두절미, 이번엔 경희대 기출입니다. 최강논술 임호일Pro입니다. 경희대 역시 매년...
-
수리논술 답안지 적는 팁) 답안지를 누구라도 읽을 수 있도록 만들어야 합니다. 가장...
-
오늘 시험보느라 다들 수고 많았습니다. 원하는 만큼, 혹은 그 이상 좋은 결과...
블록체인의 '체인'이라는 특징을 잘 살리는 구조 같네요.
개.발.조.아
야.근.조.아.?
잘 읽었습니다^^