블록체인 공부하기(1) 블록체인에 대해서

개발개발·2021년 5월 27일
0

2017년 이후 4년만에 다시 암호화폐시장이 들썩이는것 같다. 2017년에는 따로 준비하던 공부가 있어서 관심을 가지지 못했었다. 2018년 초에 공부를 끝내고 블록체인에 관심을 가져볼까 하던 무렵 폭락장이 오면서 자연스레 관심이 시들었다.

하지만 2021년 다시 암호화폐 시장이 큰 관심을 받으면서 다시 블록체인에 대해서 관심이 가게 되었고 이곳저곳 포스팅된 글과 유튜브를 통해 열심히 공부해보게 되었다. 틀린 내용도 있겠지만 내가 이해한 내용들을 작성하면서 다른 분들의 조언도 받고 내가 확실히 아는지 점검하는 차원에서 벨로그를 작성하게 되었다.

어렴풋이 이해한 부분, 잘못 이해한 부분, 이해하지 못한 부분들이 뒤섞여있어서 글을 쓰면서 공부하고 앞선 세가지 부분들이 명확히 구분되어서 이해한 부분이 넓어졌으면 한다.

목차
1. 블록체인이란?
#1 블록체인이란
#2 블록의 기능과 블록 이어붙이기
2. 합의알고리즘(pow)
3. 트랜잭션
4. 샘플코드 따라치면서 이해해보기

  1. 블록체인이란>
    #1 블록체인이란 블록체인은 탈중앙화된 관리와 투명성을 가장 큰 특징으로하는 거래장부다. 앞선 특징을 실현하기 위해서 블록을 생성하고 블록들을 연쇄적으로 이러놓은 것이 블록체인이다. 여기서 세부적으로 알아야 하는 것은 블록이 하는 일이 무엇인지, 그리고 블록들을 이어놓은 방식이다.


    #2 블록의 기능과 블록 이어붙이기 블록은 거래장부의 기능을 한다.블록의 고유 정보를 담은 정보와(헤더) 누가 누구에게 얼마를 보냈는지 기록들을 저장하고 있다. 이런 기록들을 트랜잭션(transation)이라 부르고 위조할 수 없도록 보내는 사람은 디지털 서명을 한다.(트랜잭션은 추후에 설명하겠습니다.)

    블록이 하나만 있다면 기존에 중앙화된 관리와 차이가 없다. 하지만 블록을 이어붙이면서 탈중앙화를 시도한다.

    거래 장부를 예시로 들어서 설명을 해보겠다. 거래장부가 하나밖에 없다면 거래장부를 위조하기 쉽다. 기존의 장부를 바꾸기만 한다면 내용이 맞는지, 원본인지 파악할 수 없기 때문이다. 이런 문제를 해결하기 위해서 같은 거래장부를 모두가 공유하고, 거래장부를 공유하는사람들끼리 진본임을 검증하기로 한다. 각각의 거래장부에 거래와 관련없이 진본임을 증명하기 위한 내용과 거래내용들, 그리고 서명을 작성하고 다음 거래장부에 이전 거래장부의 서명을 남긴다. 서명에는 진본증명을 위한 내용과 임의의 숫자를 통해서 만들어 낸다.이 방식을 통해서 거래장부끼리 순서를 가지고 연결되도록 한다. 이때 서명에는 한가지 약속이 들어가서 거래장부를 공유하는 사람들끼리 올바른 장부인지 검증하도록 정한다.
    블록체인에서는 위와같은 기능을 위해서 블록을 여러개 만들고 블록들을 이어놓기로 한다. 이것을 블록체인이라고 한다. 블록의 헤더에는 이전 블록의 서명과 블록채굴난이도, 몇번째 블록인지 등 정보들을 담고 있다. 그렇기때문에 중간에 새로운 블록을 밀어넣으려면 뒤에 있는 모든 정보들을 바꿔야 한다. 그럼 위조된 새로운 블록을 마지막에 연결한다면 어떻게 배제할 수 있을까. 위조된 블럭을 체인에 연결시키더라도 블록체인에서는 진짜인지 검증하는 활동을 멈추지 않는다. 블록 채굴자들은 계속해서 새로운 블록을 만들어서 블록체인에 연결시키는데 위조된 블록에 연결하지 않고 진짜 블록에 이어나간다. 그러다 보면 위조된 블록이 붙은 블록체인의 길이보다 진짜 블록체인의 길이가 더욱 길어지고 위조된 블록에 담긴 거래내용을 가짜로 보고 되돌려버린다.
    이제 진본임을 검증하는 hash에 대해서 알아보자. hash는 암호화된 내용이다. hash가 가지는 특징은 단방향 암호화방식이고 원본의 내용이 아주 미세하게 바뀌어도 나오는 값은 완전히 달라진다는 것이다. 단방향 암호화라는 것은 일단 암호화를 하고나면 원래내용이 무엇인지 알아낼 방법이 없다는 것이다. 다만 같은 내용을 hashing하면 항상 같은 값이 나온다.
    (믹서기를 예시로 들 수 있을 것 같다. 갈아버리면 원래 무엇인지 알 수 없지만 같은 재료를 넣어서 갈으면 항상 같은 음료가 나오는것과 같다.)
    두번째 특징을 이용해서 블록체인은 진짜인지 아닌지를 검증하는 약속을 만든다. 여기서 약속은 다음과 같다. "이전 블록의 내용에 임의의 숫자를 더해서 만든다. 이때 암호화된 내용에서 앞의 n자리 까지는 0이어야만 한다."


    n이 클수록 약속된 숫자를 찾는 난이도는 어려워진다. 약속된 숫자는 계산을 많이 한사람이 찾을 수 있고 위조하기 위해서는 전체 계산력의 51%이상을 가져야지 모두를 속이고 블록체인을 위조하게 되는 것이다.


지금까지 블록체인에 대해서 간단하게 알아보았다. 간단하게 요약하자면
1. 블록체인은 블록들이 하나의 약속을 통해 연결된 것이다.
2. 블록은 헤더, 거래내역(transaction), 서명(hash) 정보를 담고있다.
3. 서명은 이전 블록의 서명에 임의의 숫자를 입력해서 만들어진다.
이때 만들어진 서명의 앞자리에 0의 개수가 n개면 블록체인에 이어지게 된다.

다음편에서 합의 알고리즘과 트랜잭션에 대해서 설명을 이어나가보겠습니다.


참조
https://developer.bitcoin.org/devguide/block_chain.html
http://wiki.hash.kr/index.php/%EB%8C%80%EB%AC%B8
https://kr.cointelegraph.com/bitcoin-for-beginners/how-does-blockchain-work
https://medium.com/programmers-blockchain/blockchain-development-mega-guide-5a316e6d10df
https://medium.com/@dongha.sohn

profile
청포도루이보스민트티

1개의 댓글

comment-user-thumbnail
2022년 5월 19일

좋은 기사

답글 달기