블록체인 TIL-12Week-80Day

디오·2023년 5월 31일
0

블록체인이론&Solidity

목록 보기
20/29

✅오늘은 뭐했나?

  • 블록체인 출제 예정인 문제를 알려주시고, 설명해주심.

  • 블록체인 백서 해석 및 설명.

  • Minting 하는 방법.

💻 블록체인 요점 정리.

  1. 블록의 정의를 설명하세요.
  • 일정량의 데이터를 저장해놓은 자료구조 or 일정량의 데이터를 담아놓은 기본적인 단위.
  • 거래정보와 메타데이터를 각각 담은 가장 기본적인 단위.
  1. 블록의 구조를 설명하세요.(최대한 자세하게)
  • 헤더가 있고, 바디가 있는데 헤더에는 각각 버전,비츠,이전블록해시,시간,머클해시,논스값의 6가지 요소가 있고, 바디에는 트랜젝션들이 있고, 이것은 헤더의 머클루트값을 형성한다.
  1. 블록을 특정할 수 있는 요소 2가지를 설명하세요.
  • 블록번호와 블록헤더해시값.(참고로 머클루트 해시를 쓰시는 분들도 계심. 맞기는 하지만 보통은 앞에 두가지를 사용.)
  1. 블록체인의 정의를 한문장으로 설명하세요.
  • 탈중앙화된 네트워크 시스템에서 작동하는 분산원장 기술이다.
  1. 블록체인 특징 7가지 중 3가지를 선택해 설명하세요.
  • 익명성 : 거래에는 공개키 혹은 지갑 주소만이 사용되어 실제 사람의 신원을 알 수 없다.
  • 추적가능성 : 모든 거래에는 공개키 혹은 지갑 주소가 사용되고 기록된다.
  • 무신뢰성 : 신뢰받는 제 3기관은 블록체인에서 존재하지 않는다. 거래를 하는 상대방도 믿지 않아도 된다. 시스템 자체가 신뢰를 담보한다.
  • 분산원장 : 시스템 내 모든 참가자들은 거래의 정보를 기록하고 있다.
  • 탈중앙화 : 전통적인 네트워크 시스템과 달리, 블록체인에는 중앙화된 주체가 존재하지 않는다.
  • 합의 알고리즘 : 동등한 권한의 다수가 참여하기 때문에, 옳은 정보를 결정하는 규칙이 필요하다.
  • 변경 불가능성 : 한번 블록체인에 정보가 들어가면 쉽게 바뀌지 않는다.
  1. 블록체인에는 두가지 종류의 참여자가 있습니다. 각 참여자의 이름과 정의를 설명하세요.
  • Reader : 블록체인의 정보를 읽기만 하는 사람(유저).
  • Writer : 블록체인의 정보를 기입하는 사람(채굴자).
  1. 블록체인의 종류는 두가지로 나뉠 수 있습니다. 기준에 따라 나뉘어진 블록체인의 이름을 작성하세요.
  • 퍼블릭 펄미션리스(Permissionless)
  • 퍼블릭 펄미션드(Permissioned)
  • 프라이빗 펄미션리스(Permissionless)
  • 프라이빗 펄미션드(Permissioned)
  1. 7번문제에서 언급한 종류들이 나뉘어지는 기준을 설명하세요.
  • 퍼블릭이나 프라이빗은 리더의 억세스를 제한하느냐 마느냐
  • 펄미션드 펄미션리스는 리더 혹은 라이터 둘 중 하나라도 억세스를 제한하느냐 마느냐
  1. 7번문제에서 언급한 예시를 하나씩 드세요.
  • 퍼블릭 펄미션리스(Permissionless) : 비트코인
  • 퍼블릭 펄미션드(Permissioned) : 이오스, 클레이튼, 솔라나
  • 프라이빗 펄미션리스(Permissionless) : 존재x
  • 프라이빗 펄미션드(Permissioned) : R3코다?, 하이퍼렛져?
  1. 중앙화된 네트워크와 탈중앙화된 네트워크의 차이점에 대해 설명하세요.
  • 중앙화는 특정 한 주체에 권한이나 책임이 몰려있고, 탈중앙화는 반대로 권한과 책임이 분산되어 있다.
  1. 채굴이란 행동의 의미를 사용자, 채굴자, 시스템관점에서 설명하세요.
  • 사용자관점 : 채굴을 진행함으로서 거래가 최종적으로 마무리가 되는것을 의미.
  • 채굴자관점 : 돈을 벌수있는 행위.
  • 시스템관점 : 체인의 길이가 지속적으로 길어짐으로서 시스템의 발전에 의미를 가지고 있다.
  1. 합의알고리즘이 필요한 이유에 대해서 설명하세요.
  • 합의알고리즘은 탈중앙화된 네트워크이기 때문에 옳은정보가 무엇인지 결정할 수 있는 주체가 정해져 있지 않고, 그렇기에 복수의 서로 다른 노드들이 옳은정보가 무엇인지 결정해주는 규칙이 필요하다. 그래서 합의알고리즘이 필요.
  1. 논스, 블록해시값, 타겟값의 관계를 설명하세요.
  • 논스 : 계속 돌아가는 값(바뀌는 값)
  • 블록해시값 : 블록헤더와 논스를 기반으로 결정되는 값.
  • 타겟값 : 올라가기도 하고 내려가기도 하는 10분마다 1개씩 나오도록 도와주는 값.
  • (키워드가 안정해진 변경 이하 채굴성공, 이런식으로 키워드를 주면 키워드와 논스, 블록해시값, 타겟값의 관계를 설명하면 되는 식으로 문제가 나온다고함.)
  • 답변을 블록헤더에서 안정해진 논스값을 이용해서 지속적으로 변경을 시키면 그에 따라서 블록해시값도 같이 변경이 되는데 타겟값보다 낮은 블록해시값을 찾게 되면 채굴에 성공을 하게된다. 라고 답하면 됨.
  1. 채굴자가 갖는 보상 2가지를 말하세요.
  • 거래수수료, 블록보상
  1. 거래의 구성요소 4가지를 설명하세요.
  • 보내는사람, 받는사람, 보내는비용, 수수료(송신자, 수신자, 전송량, 수수료)
  1. 빈칸을 채워 넣으시오.
  • 거래가 검증되기 위해서는 거래가 A에 포함되어야 한다. A는 B에 포함되어야 한다. A에는 용량제한이 있다. 채굴자 입장에서는 C가 D한 거래를 먼저 포함시킨다.
    • A : 블록
    • B : 블록체인
    • C : 수수료
    • D : 높은
  1. 상황에 맞게 머클트리를 구성하고, 머클루트값을 반환해주세요.
    (3개 ~ 11개 랜덤하게 문제를 제시해주실 예정.)
  • 없는경우 복사해서 넣고 올리고, 다시 위로 올려서 최종값을 얻을 수 있도록.
  1. 아래의 거래는 A채굴자가 채굴한 블록안에 있는 거래들입니다. 문제에 대한 답변을 구하세요. 블록보상은 5입니다.
  • 블록보상은 5이고, A가 B에게 얼마를 보냈고, 수수료 얼마 등으로 표현해서 작성하면 됨.(수수료를 다 더한것과 블록보상을 합쳐주면 됨.)
  • ex) 보내는 양은 1이고, 수수료가 0.2면 보내는 사람은 1.2가 깎이고, 받는사람은 1이 늘어난다. 나머지 0.2는 채굴자에게 돌아간다.
  1. 지갑의 용도를 설명하세요.
  • 키(개인키, 공개키)를 보관하는 용도.
  1. 개인키와 공개키의 용도를 각각 설명하세요.
  • 개인키 : 돈을 보낼때, 내 돈을 쓸때 사용. (개인키로부터 생성된 디지털 서명을 코인을 소비할 때 사용.)
  • 공개키 : 내 돈을 받을때 사용. (공개키로부터 형성된 비트코인 지갑주소를 돈을 받을때 사용)
  1. 암호화와 복호화의 목적을 각각 설명하세요.
  • 암호화 : 평문을 남들이 보지 못하게 함수를 이용해서 암호문으로 바꾸는 것이 목적.
  • 복호화 : 암호문을 다시 평문으로 바꾸는 것이 목적.
  1. 단방향암호화, 양방향암호화에 대해서 설명하세요.
  • 단방향암호화 : 평문에서 암호문으로 가는것만 가능.(복호화 불가능.)
  • 양방향암호화 : 평문에서 암호문으로 암호문에서 평문으로 오는게 가능. (복호화도 가능.)
  1. 양방향암호화의 종류 2가지를 각각 설명하세요.
  • 공개키/비공개키 방법
  • 대칭키/비대칭키 방법
  • 두방법의 차이점은 암호화, 복호화를 할때 같은키를 쓰느냐 다른키를 쓰느냐
  1. DES암호화를 이용해 통신하려고 합니다. 이 과정을 자세하게 서술하세요.
  • 1단계 송신자는 평문을 암호화해서 암호문으로 만든다.
  • 2단계 암호키를 공유한다.(비공개적으로)
  • 3단계 수신자는 같은 암호키로 암호문을 복호화해서 평문으로 만든다.
  1. RSA암호화 방식을 설명하세요.
  • 수신자가 개인키와 공개키를 형성을 하고, 공개키를 송신자에게 전달한다. 송신자는 수신자의 공개키를 이용해 평문을 암호화하고, 암호화된 내역을 수신자에게 전달한다. 수신자는 자신의 개인키를 이용해 복호화한 후 평문을 확인한다.
  1. SHA256의 자리수를 설명하세요.
  • SHA256을 2진수로 표현하면 256자리, 16진수로 표현하면 64자리.
  • SHA512는 2진수 512자리, 16진수 128자리
  1. 해시충돌이란 무엇인지 설명하세요.
  • 해시함수에 서로 다른 인풋을 넣었는데 같은 아웃풋이 나왔을 때 이것을 해시충돌이라고 한다.
  1. 해시충돌일 일어날 수 밖에 없는 이유는 설명하세요.
  • SHA256은 256비트이고, 16의 64자리로 아웃풋값을 정해져 있는데 인풋값의 경우 무한대이다 보니 비둘기집 원리에 의해서 언젠가는 서로 다른 인풋이 들어갔을때 같은 아웃풋이 나온다.
  1. 다섯명의 참가자가 있습니다. 가장 옳은 체인이 무엇인지 결정하세요.
  • A = 체인길이 10, B = 체인길이 8, C = 체인길이 8, D = 체인길이 8,
    E = 체인길이 9
    • 일때, 가장 긴체인이 옳은 체인이라면 5개의 체인 중 A체인이 옳은 체인이다.
    • 다수결이라면 B,C,D가 옳은 체인.
  1. 51%공격에서 51%가 의미하는것은 무엇일까요?
  • CPU파워 or 해시파워 or 연산력
  1. 어떤 집단이 해시파워의 30%를 보유하고 있다. 해당 집단이 다음 블록을 채굴할 확률은 몇퍼센트일까요?
  • 30% (보유하고 있는 파워만큼의 확률이라고 보면 된다.)
  1. 해시파워의 30%를 보유하고 있는 집단이 두번 연속 블록을 채굴할 확률은 몇퍼센트일까요?
  • 9% (0.3 x 0.3을 해주면 됨. 30% x 30%)
  1. 생성주기보다 빠르게 생성되면 난이도가 올라가나요? 내려가나요?
  • 올라간다.(반대로 느리게 생성되면 난이도는 내려간다.)
  1. 비트코인은 10분마다 생성이 된다고 되어있는데 난이도가 변경되는 평균 주기는 얼마인가요?
  • 2016개 블록마다.(14일정도)
  1. pay to public key hash(PToPKH) 거래방식에서 거래방식이 2가지로 나뉘어 있다. 어떤 두종류의 스크립트가 있는지 설명하세요.
  • 락킹스크립트, 언락킹스크립트
  • 내가 누군가에게 비트코인을 받으면 (락킹상태)
    • 받는사람의 공개키로 락킹이 되어있음.
  • 내가 누군가에게 전송을 하려고 하는데 소유권을 증명한 상태다.
    • 소유권을 증명한 상태는 언락킹상태.
    • 누군가에게 보내려면 누군가의 공개키로 락을걸어 보내면 됨.
    • 누군가는 그걸 확인하려면 자신의 개인키로 언락킹상태로 만들면 됨.
  1. 지갑주소 잔액은 어떻게 도출이 되나요?
  • UTXO들의 합.

🌜하루를 마치며..

강사님께서 말씀해주신 부분을 정리해보았는데 사실 맞게 정리한건지 모르겠다; 다행히 두번 반복해주셔서 처음 작성했던 부분에 모르고 지나갔던 부분들을 추가해서 내용을 적긴 했는데 아마 문제를 틀리면 다시 알려주실거라고 생각해서 이정도로 알아두면 되지 않을까 싶다.. 머리아프다;

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

0개의 댓글