블록체인 TIL-8Week-50Day

디오·2023년 5월 1일
1

오늘은 한달여 시간의 React 강의가 끝나고 오랜만에 만나는 민서강사님과의 수업이 시작되는날이였다. 오랜만에 강사님을 만났는데도 마치 얼마전까지도 수업을 들었던것처럼 어색한 느낌이 없었고, 굉장히 반가웠다. 오늘은 전반적으로 강사님께서 이전에 블록체인 이론에 대해서 알려주셨던 부분들에 대해 복습하는 시간과 추가적으로 조금 더 깊게 알려주신 부분이 있는데 그것에 대해서 정리를 해보고자 한다. 앞으로 시험도 볼거라고 하셨으니 다시 TIL 좀 더 꼼꼼히 적어야할 것 같다..



😊SmallTalk.

오랜만에 수업을 시작하는 만큼 강사님께서 역시나 가벼운 스몰토크로 수업을 시작하셨다. 간단하게 스몰토크에 대한 내용을 적어보자면

  • 밈코인은 손대는게 아니다.(ex.페페코인 같은거)

  • 목표의식을 가지고 목표를 정해두고 수업을 들으면 도움이 많이 된다.

  • 국내거래소 한개, 해외거래소 한개를 만들어서 10~20만원정도 암호화폐를 사놓는것도 좋다. 아니면 업비트에만 두는것도 나쁘지 않다.
    (이 부분에 대해서는 해보고 싶지만 정확히 어떤걸 해야하는지 어떻게 해야하는지 몰라서 잘 모르겠다;)

    • DeFi - 탈중앙화된 금융으로 인터넷을 사용할 수 있는 모든 사람에게 열려 있는 금융서비스. 기존의 금융서비스와 다르게 블록체인 기술을 사용하며, 중앙 기관 없이 탈중앙화된 환경에서 누구나 자유롭게 이용할 수 있는 금융서비스를 총칭.



  • 앞으로 수업하며 배우게 될 4가지

    • BTC 복습.

    • 이더리움 자료구조 밒 연결된 다양한 내용들.

    • web3.js (상호작용할때 연결시켜주는 아이.)

    • Solidity



☑️ 이전 블록체인 이론 복습.

🔸합의알고리즘.

  • 합의알고리즘이 나온 이유.

    • 탈중앙화가 된 네트워크를 기반으로 되어있기 때문에 모든 노드가 동등한 위치를 가지고 있어 옳은정보를 결정해 줄 사람이 없기때문에

    • 누구나 평등하다라는건 모든사람이 데이터를 읽거나 쓸 수 있고, 거기에 익명성까지 보장이 되어있다면 공유된 데이터의 질의 높고 낮음을 명확하게 판단할 수 없지만 그럼에도 높은 퀄리티를 지속적으로 유지할 수단이 없다는것은 확실하다.

    • 매우 정확하고 있는 사실만 공유가 되어야 함.

    • 낮은 퀄리티의 정보가 아닌 항상 높은 퀄리티의 정보를 유지해야함.

    • 결과적으로 누구나 쓸 수 있지만 높은 퀄리티를 유지하려면 누구나 쓸 수 있지만 아무나 쓸 수 없는 규칙을 만들어야 함.

      • 규칙에 따라 이행하고 이행하는게 어렵도록 만들어야 함.

      • 어렵게 이행하고 나면 사람들이 이 내용을 쉽게 검증할 수 있어야함.

      • 이렇게 도입이 된것이 바로 채굴.

    1. 마지막 블록헤더 비교
    1. 일치하지 않을 시 길이 비교
    1. 더 긴 체인을 보유한 노드가 짧은 체인을 보유한 노드에게 블록을 넘김
    1. 받은 블록 검증(채굴 결과 검증)
    1. 유효하면 블록체인 동기화.



  • 길이가 같아도 서로 다른 체인을 가지고 있을 수 있음.

  • 노란색 블록 입장에서 previous block hash는 파란색 블록.

  • 노란색 블록과 노란색 블록은 블록헤더 해시가 같음. 이 말은 노란색 블록안에 있는 6가지 요소가 다 같다는 의미

  • 그래서 두 블록의 경우 마지막 블록헤더만 확인하더라도 두 블록이 같은 정보를 가지고 있음을 알 수 있음.

  • 마지막 블록헤더가 일치하지 않을 경우 길이를 비교함.

  • 길이가 더 길면 블록을 넘겨주고 받는 블록은 그냥 받는것이 아닌 헤더를 확인해 어느정도 채굴이 제대로 되었는지 정도는 확인함. 그리고 내가 받아도 되는 블록인지 확인함.

  • 이런 과정에 문제가 없으면 체인을 동기화 함.

  • 길이까지 같은 경우 일단 그대로 대기하고 있음.

    • 단순히 대기한다기 보다 서로를 계속해서 비교하고 있음.
      (ex. 너 블록헤더해시 뭐야? 나는 이거야! 같네? 그럼 너 길이 몇이야? 어? 같네? 를 문제가 해결이 될때까지 계속해서 반복하면 대기)
  • 먼저 만들어진 순서는 중요하지 않음.

  • 남색 블록이 등장했는데 남색 블록의 길이가 더 길기 때문에 다른 블록에게 블록을 넘겨줌.

  • 남색 블록 이전에는 보라색 블록이었기 때문에 보라색 블록의 경우 문제없이 남색 블록을 받아올 수 있었지만 초록색 블록의 경우 남색 블록 이전에 보라색 블록이었기 때문에 매칭이 안됨.

  • 초록색 블록에게 남색을 넘겨주기 위해서는 보라색 블록까지 넘겨줘야함.

  • 보라색과 초록색 모두 이전 블록 해시가 빨강색 블록이기 때문에 그것까지 받아오면 문제없이 받아올 수 있음.



🔸기초암호학.

  • 암호화, 복호화

  • 단방향성, 양방향성

  • 비트코인과 타원곡선

  • 시험출제문제
    대칭키 또는 비대칭키 방식으로 내가 누군가에게 메세지를 보낼때 어떻게 소통하는지 단계별로 작성해라.
    • 평문 받아와서 받는사람의 공개키로 암호화를 시킴.
    • 암호화된 암호문을 전송.
    • 받은 사람은 받은 암호문을 자신의 개인키로 복호화해서 평문을 확인
  • 충돌가능성의 정의

    • 16진수 한자리 -> 2진수의 4자리

    • 16진수 한자리 -> 4bit

    • 1byte = 8bit = 16진수 2자리가 들어감

  • 해시충돌 (비둘기집 원리)

  • 암호화폐 지갑에는 키만 들어있다.

  • 개인키는 숫자, 공개키는 점의 좌표.

  • 공개키 형성 과정.



🔸UTXO.



🔸스크립트 구성.

  • 앨리스가 밥에게 돈을 보내기위함.

    • 앨리스의 컴퓨터에 밥의 퍼블릭 키가 옴.

    • 앨리스는 밥의 공개키로 묶어서 밥에게 보냄.

  • 앨리스에게 받은 돈을 밥이 쓰기위한 상태.

    • 밑에있는 락킹스크립트를 풀기위해 위에있는 언락킹 스크립트를 사용.

    • 돈을 받을때 락이 된 상태로 오는데 사용하기 위해서는 나의 개인키로 락이 된 상태를 풀어야 함.



✅ 오늘 새롭게 배운 내용.

  • 풀노드랑 같은 형식의 풀체인을 가지고 있는지 확인

  • 그게 아니라면 인벤토리 메세지를 가지고 있는지 확인

  • 그것도 아니라면 인벤토리 메세지를 달라고 한다.

  • 인벤토리 메세지에 무엇이 적혀있는지 확인

    • 하단에 이런 정보를 준다는것을 넣어놓음

    • 풀노드가 갓 들어온 노드에게 정보를 넘겨줌. 1~500번까지

  • 이미 갓 들어온 노드가 몇개의 블록을 가지고 있는 경우 아니면 스스로 정보를 받는게 버거운 경우

    • 128개의 블록만 해달라고 한다면 그것에 맞게 128개의 내용만 담아서 보낼 수 있다.

  • 그 정보에 대한 답변으로 블록 메세지를 보내준다.

    • Serialized Block은 블록헤더와 바디에 있는 내용들을 직렬화 해서 보내주는것을 말한다.



💻수업 중 참고한 링크.



💻추가 정보.

  • mempool - 비트코인 거래를 하기 위해 트랜잭션을 생성하고, 각 노드들에 해당 트랜잭션을 전파. 각 노드는 해당 트랜잭션이 유효한 거래인지 검증 후 검증된 트랜잭션을 Mempool에 업데이트.
    Mempool은 아직 거래가 성립되지 않은, 즉 0 컨펌 상태의 트랜잭션들이 저장되는 공간.
  • full node - 풀노드는 블록체인에서 이뤄진 모든 거래 정보를 전부 저장하는 검증인을 뜻한다. 제네시스 블록부터 시작해서 현재 블록까지 모든 블록체인 정보를 수집, 저장한다. 이런 방대한 양의 데이터를 다운받고 검증하는 시스템을 갖춘 만큼, 방대한 양의 데이터를 소화할 수 있는 대규모 채굴업 관련 종사자들에게 필요한 기술이라고 할 수 있다.



🌜하루를 마치며..

오늘 하루도 힘든하루였다. 그래도 다행인건 강사님께서 복습내용을 많이 다뤄주셔서 아는 내용들이 있어서 그나마 내가 수용할 수 있는 정보량이 초초초초과한것 같진 않아서 다행이였지만 특히 마지막에 경제분야에 대한 내용은 완전 뇌정지가 와서 무슨말씀을 하시는지 전혀 알아듣지 못했다; 나는 아무래도 투자쪽은 전혀 아닌가보다..
강사님이 강의중에 보여주시는 자료들 캡쳐하고 내용을 메모장에 정리하면서 듣느라 정신이 없었지만 그래도 막상 이렇게 정리하고 나니 뿌듯하다. 두고두고 모르는 부분이 생겼을때 확인할 수 있고, 큰 도움이 될 것 같다. 물론 오늘은 복습내용이 많았기에 가능하지 않았나 생각하고 앞으로 모르는 내용에 대해서 더 알려주시면 이렇게 정리하는게 가능할 지 모르겠다.. 하하하ㅏㅎ;;

profile
개발자가 되어가는 개린이"

0개의 댓글