[블록체인] Introduction (2)

Ethan KIM·2022년 8월 23일
0

Achievement Goals

목록 보기
7/7
  • 블록체인의 공개 범위에 따른 형태를 설명하시오.
    • 퍼블릭, 프라이빗, 컨소시엄 블록체인의 공개 범위와 차이점을 이해할 수 있음.

      퍼블릭 블록체인

      : 개방형 블록체인. 누구나 트랜잭션을 생성할 수 있는 블록체인. 트랜잭션 내역이 모두에게 공개되어 네트워크에 참여한 모든 노드가 이를 상호검증하고 거래를 승인하기 때문에 신뢰도가 높음. 하지만 속도는 느림.

      프라이빗 블록체인

      : 폐쇄형 블록체인. 서비스 제공자의 승인을 받아야만 참여할 수 있고, 주로 기업에서 활용하여 엔터프라이즈 블록체인 이라고도 함.
      리눅스 재단이 이끄는 하이퍼레저는 프라이빗 블록체인으로 분류됨. 중앙화된 플랫폼.

      컨소시엄 블록체인

      : 동일한 목적이나 가치를 가지고 있는 다수의 기업과 단체들이 하나의 컨소시엄을 구성하고 그 안에서 작동하도록 만든 블록체인. ex) 하이퍼레저 패브릭. IBM + Linux.
      하이브리드 블록체인의 분류에 들어가기도함. 왜냐하면 퍼블릭 블록체인과 프라이빗 블록체인의 중간 형태로, 중앙 관리자에 의해 승인받은 참여자만이 블록생성에 참여할 수 있어서.

      하이브리드 블록체인의 개념을 이해할 수 있다.

      하이브리드 블록체인

      : 퍼블릭 블록체인과 프라이빗 블록체인을 서로 연결하거나 두 특징을 섞은 혼합형 블록체인을 말한다.

  • 블록체인의 다양한 기술과 그 연관성에 대해 서술하시오.
    • 분산원장에 대해 이해할 수 있다.

      분산 원장 기술(DLT; Distributed Ledger Technology)

      : 분산원장은 거래 정보를 기록한 원장을 특정 기관의 중앙화된 서버가 아닌 분산화된 네트워크 참여자들이 공동으로 기록 및 관리하는 기술로 공유원장 또는 분산원장 기술이라고 불리기도 함.
      광범위하게 널리 분포되어 있음을 의미하는 분산과 거래내역이 기록된 장부를 의미하는 원장이 합쳐진 분산원장은 블록체인 기술의 핵심이다.

      장점.

      중앙 집중형 방식에 비해 인증과 증명의 효율성, 시스템 안정성, 보안성, 투명성이 높다.
      인증과 증명의 효율성 : 기존 시스템의 경우 인증과 데이터 거래 증명을 위해 여러 중간 매개체 또는 인증기관이 필요했지만, 분산원장은 사용자가 거래 내역을 직접 공유할 수 있는 시스템이라는 차별성을 가지게 된다.

      시스템 안정성 : 시스템 관리 비용이 줄고, 기존의 경우 서버 하나가 마비되면 프로그램이 멈추지만, 분산되어있는 시스템이라 하나가 마비되도 다른 분산원장을 참고하면 됨.

      보안성 : 거래 정보가 분산되어 해킹 및 위조의 위험성도 낮아지게됨

      투명성 : 누구나 거래 정보를 확인 할 수 있다.

      블록은 트랜잭션으로 이루어져있고, 트랜잭션에 어떤 내용이 포함되어 있는지 설명할 수 있다.

      블록체인은 블록 + 체인 형태로 이루어져 있다. 다시말해 블록들이 체인으로 연결되어 있는 구조.
      블록은 헤더 + 바디 로 이루어져있고, 헤더는 메타데이터 바디는 트랜잭션들의 리스트로 구성되어있음.

      메타데이터 : 몇번째 블록인지, 몇개의 트랜잭션이 이 블록안에 있는지, 블록생성자가 누구인지, 블록의 크기, 전송량은 얼마인지.
      이 메타데이터는 블록의 맨 윗 부분에 따로 두는데, 이러한 이유로 "헤더"라고 부름.

      트랜잭션
      : 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위. ACID 를 통해 트랜랜잭션의 특성을 알 수 있음. 쉽게말해 은행 앱에서 쓰이는 이체 데이터와 같음.
      트랜잭션은 일회성이다. : 하나의 트랜잭션은 하나의 상태만 변화 시킬 수 있음.
      이 문제를 해결하기 위해 비트코인의 경우 UTXO을 통해 해결하고, 이더리움은 Account기반의 논스값을 각 트랜잭션이 오직 한번만 처리하게되는 카운터로 사용한다.

      블록체인에서의 트랜잭션 역시 상호작용 및 작업 수행의 논리적 단위이다. 블록체인 상의 모든 활동은 트랜잭션을 통해 이루어지고, 추상적인 관점에서 트랜잭션은 블록체인의 상태를 변화 시키는 일련의 작업을 내포함.

      비트코인 트랜잭션 구조

      필드설명
      버전 번호채굴자와 노드가 트랜잭션 처리에 사용할 규칙을 지정하는데 사용
      입력 카운터트랜잭션에 포함된 입력의 개수
      입력 리스트블록의 첫 트랜잭션은 코인베이스 트랜잭션. 입력 리스트에는 하나이상의 트랜잭션 입력이 포함.
      출력 카운터출력의 개수를 나타내는 양의 정수
      출력 리스트트랜잭션에 포함된 출력
      lock 시간트랜잭션이 유효해지는 가장 빠른 시간을 정의하는 필드.

      이더리움 트랜잭션 구조

      필드설명
      논스발신 EOA에 의해 발행되어 메시지 재사용을 방지하는데 사용되는 일련번호
      가스 가격발신자가 지급하는 가스의 가격
      가스 한도이 트랜잭션을 위해 구입할 가스의 최대량
      수신자목적지 이더리움 주소
      목적지에 보낼 이더의 양
      데이터가변 길이 바이너리 데이터 페이로드
      v,r,sEOA의 ECDSA 디지털 서명의 세가지 구성 요소

      이더리움의 트랜잭션 논스의 특징은 2가지가 있다.
      1. 거래 전송시 논스는 1씩 증가한다.
      2. 논스는 계정에서 유일하며, 동일한 논스가 존재하지 않는다.

      논스는 발신 주소의 속성이며, 발신 주소의 컨텍스트 안에서만 의미를 갖는다. 그러나 명시적으로는 블록체인 계정 상태에 저장되지 않고, 해당 주소에서 발생한 확인된 트랜잭션 건수를 세어서 동적으로 계산되는 값이 논스임.

      논스는 중복되지 않고 순차적이기 때문에, 같은 논스에 여러 트랜잭션 전송이 발생하였다면 해당 논스 중 제일 높은 가스비를 지불한 트랜잭션이 처리가 된다.

      만약, 논스가 0인 트랜잭션 전송후 논스가 2인 트랜잭션을 전송하면, 두 번째 트랜잭션은 어떤 블록에도 포함되지 않음. 이더리움 네트워크는 이 두번째 논스를 멤풀에 저장함.
      멤풀 : 아직 블록에 들어가지 않은 상태의 트랜잭션들이 어떤 공간에 있는것을 의미.
      그 다음 논스 1인 누락된 트랜잭션을 전송하면, 논스가 0 2 인 트랜잭션이 처리가 되고 블록에 포함된다.

      결국, 이더리움의 논스는 이중지불 방지를 위한 것.

      이중지불 : 원본 파일에 저장된 가치를 지불한 뒤, 해당 파일을 복사하여 다른 사람에게 또 지불하는것.

    TO THE TOP
  • 블록체인의 구성요소를 설명할 수 있다.
    • 합의 알고리즘과 채굴을 이해할 수 있다.

      합의 알고리즘.

      다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘임.

      블록체인 시스템의 경우 네트워크에 참여하는 모든 참여자들이 동일한 데이터를 복사하여 분산 저장하기 때문에 원본과 사본의 구별이 없으며, 통일된 의사결정을 내릴 수 있는 권위 있는 중앙이 존재하지 않는다.

      다시 말해, 블록체인의 데이터는 중앙화된 서버 대신에 전세계에 흩어진 수 많은 노드에 보관되기 때문에, 각각의 노드들은 블록에 기록하는 데이터가 위변조되지 않은 원본이라는 것을 상호간에 합의하는 과정이 필요하다.
      다수의 노드들이 상호 검증을 거쳐 올바른 블록 생성을 이끌어 내는 프로세스와 알고리즘을 바로 합의 라고 한다.

      비트코인과 이더리움 채굴의 차이점과 인센티브를 이해할 수 있다.

      비트코인은 작업증명 - POW(Proof Of Work) 합의 알고리즘을 체택.

      이더리움은 작업증명에서 지분증명-POS(Proof Of Stake) 합의 알고리즘으로의 변경중.

      채굴에서 사용되는 논스값에 대해 설명할 수 있다.

      일단 채굴이란,
      : 블록을 생성하기 위해 논스 라는 임의의 값을 맞히는 과정을 말한다.
      블록체인 네트워크에 전송된 암호화된 거래정보를 새로운 블록에 담고, 새로운 블록을 체인에 연결하는 작업을 완료했다는 것을 증명하는데 사용되는 컴퓨팅 파워이다.

      그래서 논스는 채굴할때, 임의로 생성된 값이며, 이 값을 맞춰야 블록을 생성할 수 있따.

      트랜잭션의 논스와의 차이점을 이해할 수 있다.

      트랜잭션에서의 논스는, 이중지불을 방지하기 위해, 카운팅의 개념으로 이더리움 필드의 한 종류로서 존재하고,

      채굴에서 사용되는 논스값은, POW 작업증명상황에서 경매 입찰가 를 맞추는 것 처럼, 채굴자들이 논스값을 맞추어야한다. 여기에서 채굴자는 컴퓨터가 되겠고, 논스값에 근접할 수록, 블록을 생성할 수 있는 권한을 부여받을 수 있는 확률이 커짐.

      합의 알고리즘의 종류를 구분하고, 각각의 장단점을 이해할 수 있다.


      이것 이외에도 합의 방식은 다양하다. 나중에 저 3개를 이해하고 다시 찾아보도록 하자.

  • 지갑과 어카운트를 이해하고 설명할 수 있다.
    • 지갑

      : 블록체인에서 실행되고 개인 및 공개 키를 저장하고 해당 키와 관련된 모든 트랜잭션을 블록체인에 모니터링하고 유지하는 소프트웨어이다.
      채굴과 노드에서 노드가 바로 지갑임

      종류

      : 데스크탑 지갑, 모바일 지갑, 하드웨어 지갑, 웹지갑

      구조

      : 주소와 암호 (Public, private Key로 구성)공개키는 다른사람들이 암호화폐를 송금할 수 있도록 공개해도 괜찮지만, 개인키는 오직 자신만 알고 있어야한다.

      주소와 키의 개념을 이해할 수 있다.

      주소

      : 이더리움 블록체인에서 사용자의 신분증에 해당하는것. 각 주소에는 개인 키가 있다. 개인키는 사용자가 알고 있는 일종의 암호로 간주하여, 블록체인과 상호 작용하려면 주소 + 개인키 쌍이 필요하다.
      은행을 예시로, 주소는 계좌번호이고, 어카운트는 계좌이다.

      : 개인키와 공개키로 구분. 개인키는 무작위 생성. 공개키는 개인키를 연산하여 생성되며 계정을 식별하는 요소로 사용.

      UTXO형 블록체인, 주소형 블록체인, 어카운트형 블록체인의 차이를 이해할 수 있다.

      비트코인 - UTXO(Unepent Transaction Outputs)

      UTXO는 미사용 트랜잭션 출력값을 뜻한다.
      비트코인은 이더리움의 어카운트 모델과 달리 계정이나 잔고가 없고, 블록체인에 기록된 소비되지 않은 출력 값을 통해 거래의 유효성을 검사하여 코인의 존재 여부를 확인한다.즉, 코인이 지갑에 저장되는 것이 아니라, UTXO에 저장됨.

      장점

      1. 이중 지불 방지 : 트랜잭션을 발생시키면 해당 UTXO는 검증을 받은 후 TX Pool에 들어간다. 이중지불이 발생하면 채굴자들은 Pool에서 UTXO검사 후 사용 기록이 있다면, 해당 거래 무효화 간으.
      2. 잔고의 증명 : UTXO는 추적하기가 용이한 장점이 있다. 거래에 대한 유효성을 검증하기가 매우 쉬움. 이더리움 같은 경우는 트랜잭션들을 모두 검증 및 확인하여 최종적으로 잔고를 유추하지만, UTXO는 해당 사용자의 UTXO만 확인되면 됨.

      단점

      1. UTXO가 너무 과하게 생성될 경우. 이더리움은 잔고 하나만 점검하면 끝이지만, UTXO방식을 사용하는 코인들은 흩어진 UTXO를 모두 모아야 되며, 소액 결제를 자주하거나 채굴로 이자를 받게되면 과도한 UTXO로 인해 불필요한 수수료를 지불해야함.

      이더리움 - 어카운트

      : 이더리움 주소와 개인키 의 조합을 어카운트라고 한다.

      장점

      1. 단순성: 상태를 추적하여 상태를 기반으로 다른 작업을 수행하는 스마트 컨트랙트. 계약의 설계가 불필요하게 복잡해지는 것과 대비를 보임. <==> UTXO
      2. 효율성: 단순성과 더불어 전송 계정이 거래 비용을 지불하기에 충분한 잔액을 가지고 있는지 확인만 하면 된다.

      단점

      1. 이중지불 : 이중 지불 공겨겡 노출된다. 이러한 유형의 공격에 대응하기 위해 점증적인 논스를 구현한다. 이더리움에서, 모든 계정은 공개적으로 볼 수 있는 논스를 가지고 있고, 거래가 이루어질 때마다 논스는 하나씩 증가하게 된다.
  • 비트코인과 이더리움의 개념과 차이점을 설명할 수 있다.
    • 비트코인, 이더리움 개념을 이해할 수 있다.

      이더리움 GETH와 PARITY의 차이를 이해할 수 있다.

      이더리움 클라이언트는 이더리움 블록체인 네트워크를 구성하는 개별 클라이언트 노드 이기 때문에 중앙집중형 서버 프로그램이 따로 존재 하지 않는다. 오로지 클라이언트 프로그램만 존재함. 응용프로그램을 빌드하는 것에 사용하는 도구를 살펴보자.

      Geth

      : 이더리움 재단이 제공하는 공식 클라이언트 소프트웨어로써, Go 언어로 개발됨.

      Geth를 처음 시작하면 네트워크 내의 다른 이더리움 클라이언트(노드)에 연결하는 작업을 먼저 시작하고, 블록체인의 전체 사본을 내려받게 된다. 그리고 블록체인의 복사본을 최신 상태로 유지하기 위해 끊임없이 다른 노드와 통신함.
      Geth 를 통해 블록을 채굴하고, 블록체인에 트랜잭션을 추가하고 블록의 트랜잭션을 검증하며, 트랜잭션을 실행할수도 있으며, RPC를 통해 상호작용할 수 있는 API를 노출하여 서버 역할도 한다.

      Parity

      패리티는 이더리움 프로토콜의 또 다른 구현체이다. Rust 프로그래밍 언어로 개발 되었음.

      BIP, EIP, KIP, ERC를 이해할 수 있다.

      블록체인의 거버넌스

      블록체인 네트워크를 유지하기 위해서는 구성원들간의 이해관계 조정이 필요하다. 이러한 수요로 탄생한 개념이 거버넌스 이며, 일반적으로 블록체인 거버넌스 라고 부름.
      비트코인의 BIP, 이더리움의 EIP.

      BIP

      : 비트코인의 개선제안. 95%의 찬성표를 받으면 제안이 채택되어 플렛폼에 적용. BIP141.

      EIP

      : 이더리움의 개선 제안. 이더리움 커뮤니티에 정보를 제공하거나 이더리움 또는 그 프로세스 또는 환경에 대해 새로운 기능을 설명하는 설계 문서.

      KIP

      : 클레이튼의 개선 제안을 의미.

      ERC

      : 새로운아이디어를 올린 후 많은 사람들이 괜찮다고 생각하면 인터넷 표준이 되는 것을 RFC라고 하는데, ERC는 이더리움의 RFC로서 인터넷이 아닌 이더리움의 표준이 될 만한 내용임. ERC는 기술적으로 설명하여 제시해야함.

    profile
    좋아하는것만 함

    0개의 댓글