2022/블록체인

[블록체인 / 데이터 공유] Blockchain: Empowering Secure Data Sharing 챕터 2 요약

코드아키택트 2022. 1. 10. 22:04
반응형

 

Summary

What : 이 챕터에서 말하려는 것

  • 블록체인 기초지식
  • 정의 / 종류 / 공통 구성 컴포넌트(5가지 레이어)
    • 종류 : 3가지 - 퍼블릭,프라이빗,컨소시움
    • 컴포넌트 5레이어
      • 데이터 / 네트워크 / 합의 / 인세티브 / 적용(Application)
      1. 데이터 : 체인 구조, 데이터 블록, 머클트리, 해시기능, 거래내역(트랜잭션), 비대칭키
      2. 네트워크 : P2P, Propagation, Validation
      3. 합의 : PoW, PoS, DPoS, Raft
      4. 인센티브 : 토큰과 블록체인, 토큰의 발행과 유통, 비트코인, 이더리움
      5. 적용 : Script(빗코), Smart contract(이더리움), Chaincode(하이퍼래져 패브릭), DAPP(블록체인 기반 앱)
  • 블록체인 강점
    • 거래의 무결성 : 모든 거래 검증 및 기록을 통해
    • 장부의 불변성 : 데이터 조작에 강함 + 타임 스탬핑 → 소유자가 제공한 원본 + 이력 열람 후 보상 지급도 용이
    • 분산된 장부관리 : 중앙 관리자 없음 → 특정 주체가 데이터 조작 어려움
    • 신원 확인성 : 컨소시움 블록체인의 경우 적합한 사용자만 참여 → 새로운 참여자는 믿을만하다 가정
  • 블록체인의 보안 및 사생활 침해
    • 블록체인 공격 : 51%, Eclipse, Selfish
      • 51% → 컴퓨터 성능을 이용 빠른 거래검증(nonce 찾기) → 네트워크 51%이상 자악
      • Eclipse : 소수의 희생자를 전체 네트워크로 부터 무언갈 해서 조종하려는 것
      • Selfish mining : 퍼블릭 체인보다 더 많은 블록을 찾아냄
    • 거래 데이터의 사생활 정보 유출
      • 블록체인에 데이터가 text형식으로 저장 → 누구나 열람 가능 → 민감정보 유출 가능
    • 데이터 표현 형식 한계
      • 이미 설정된 field → 효율적인 거래 처리
      • 하지만 여러 분야가 협어발땐 어려움(다른 데이터 필드)
    • 데이터 저장 공간 한계
      • 제한된 용량만 저장 가능
    • 거래 합의 지연시간
      • 거래 검증까지 속도가 오래걸림 → 현실 프로젝트에선 높은 성능 요구됨

Why : 왜 알아야 하는지

  • 블록체인을 이해하고, 블록체인을 통한 데이터 공유의 장점, 한계를 알아봄

2.1 블록체인 개요

2.1.1 블록체인 정의

  • 블록체인은 실행된 모든 거래가 기록된 분산 장부
  • 블록에는 일정 시간 사이에 일어난 거래가 기록됨 → 블록이 생성된후 기록은 영구히 저장
  • 블록은 체인으로 연결. 현재블록은 이전 블록의 해시값을 가르킴
  • 블록체인의 풀카피는 실행된 모든 거래를 저장

2.1.2 블록체인 종류

  • 세가지 : 퍼블릭, 컨소시움, 프라이빗
  • 퍼블릭 : 누구에게나 공개. 빗코, 이더리움
  • 컨소시움 : 선택된 노드만이 블록체인 유지. (클레이튼이 아마도). 하이퍼래져 페브릭
  • 프라이빗 : 단일 단체만 사용

2.1.3 블록체인 구성 컴포넌트

  • 일반적으로 블록체인을 구성하는 컴포넌트들

2.1.3.1 데이터 레이어

  • 데이터 구조 및 사용된 관련 기술들

체인 구조

  • 조작 불변성을 위해 각 블록은 이전 블록의 해시 가르킴

데이터 블록

  • 헤더와 바디로 구성
  • 헤더
    • 머클 트리 루트,타임스탬프, nBits(?), nonce, 이전 블록의 해시값, 블록버전
  • 블록 버전 : 어떤 검증 규칙을 따라야 하는지 명시(합의? 아니면 논스?)
  • 타임스탬프 : 블록 생성 시간
  • NBits : 블록 해시값의 검증을 가르킴(?)
  • Nonce : 블록 검증을 위해 마이너가 찾아야 하는 값
  • 이전 블록의 해시값 : 256-bit hash 이며 이전 블록을 가르킴

머클트리

  • 각 거래를 한쌍으로 연속 해시(그림 참조) → 머클루트(하나)에 다다를떄까지 계속

해시기능

  • 머클트리 및 체인 구성시 사용
  • 각 블록을 해시해서 다음 블록이 저장 → 데이터 변경이 거의 불가
  • 빗코 : Hash-256

거래내역

  • 코인베이스 트랜잭션, 일반 트랜잭션
  • 코인베이스 : 거래가 검증될떄 발생. 마이너(Miner)
  • 일반 : 누구나 거래를 할때 발생

비대칭키

  • 비대칭 암호화
  • 비트코인 주소는 공개키로 부터 나옴
  • 거래는 프라이빗 키로 서명 → 어디서 부터 왔는지 검증

2.1.3.2 네트워크 레이어

  • 블록체인에 쓰이는 프로토콜
  • P2P, Propagation, validation

P2P

  • 모든 노드 들은 P2P로 조직됨
  • Central X → 모두가 동일 카피 데이터 소지
  • P2P는 각 노드가 처음에 어떻게 서로를 탐지하고 연결하는지 설명해줌
  • 노드가 오프라인일때 새로운 연결 업데이트에 관한 것도 설명
  • 각 노드가 로컬 파일을 서로 어떻게 업데이트 하는지도 설명

Propagation

  • P2P의 일부분으로 쓰임 - 데이터 동기화
  • TX 제안, 실행된 거래, 블록은 다른 노드들에게 전파되어야함
  • 빗코 : 마이너가 새로운 블록을 찾으면, 내용을 전파함

Validation

  • 거래들이 구조화되고 조직화되어 어떻게 블록으로 만들어질지 설명
  • 빗코 : 보내는 사람의 비트코인이 이미 소모되었는지 검증(이중지불 문제) → 다른 노드들은 거래내용 및 새로 추가된 블록의 해시값 검증

2.1.3.3 합의 레이어

  • 중앙화된 관리자 없이도 거래를 검증,확인 → 합의 알고리즘 덕분
  • 합의 : 블록체인 상의 모든 노드(또는 peer)들이 중앙 관리자 없이 분산된 데이터의 현재상태에 대해 공통의 합의에 도달할 수 있도록 하는 절차
  • 이를 통해 서로 모르는 피어간의 믿음과 신뢰를 구축
  • PoW(Proof of Work), PoS(Proof of Stake), DPoS(Delegated Proof of Stake), PBFT(Practical Byzantine Fault Tolerance), Raft

PoW

  • 빗코에서 사용
  • 블록헤더 부분에 있는 해시값 계산
  • 논스 값을 굴리며, nBits에 정의된 조건을 만족(아마도 0갯수)시키는 Hash값 찾음.
  • 먼저 찾는 사람이 새 블록 생성 + 전파. 다른이들은 위에서 찾은 해시 값을 재검증
  • 검증 된 후에 블록체인에 붙여짐

PoS

  • PoW의 대체재. 에너지 소모 감소
  • 토큰을 많이 가질 수록 마이너(검증자)로 선택될 확률 높아짐
  • 많은 토큰을 가진 사람이 못된 행동을 하지 않을 것이라는 가정에서 출발한 방법
  • 하지만 탈중앙화의 정신을 약화시킬 가능성 → 빈부격차
  • 에너지 소모 측면에서 더 효율적. 이더리움 Ethrash(PoW 한종류)에서 Casper(PoS의 한 종류)로

DPoS

  • PoS의 한 종류. 완전한 탈중앙화 속성을 희생하여 높은 확장성 제공
  • round-robin 방식을 통해 당선된 노드들만 검증에 참여
  • 블록 생산자(마이너, 검증자)는 투표를 통해 선정됨. 투표권은 가진 토큰의 양에 비례
  • 또는, 사용자가 본인의 투표권을 다른 사용자에게 위임 가능
  • 투표를 통해 쫓아내기도 가능
  • 블록 생산자를 현격히 줄임 → PoW에 비해 훨씬 빠른 Tx성능. 하지만 탈중앙 속성을 희생 했다는 단점
  • Bitshares에서 사용

Raft

  • 쉽게 이해하기 위해 만들어진 합의 알고리즘(?)
  • Paxos in fault-tolerance and performance와 동일 → 이 이론(?)을 실제에 적용하기 위한 조치를 많이 했다
  • 이해가 쉽도록 한 조치 → 주요 컴포넌트를 분리 ex) leader election, log replication 등
  • “leader and follower” 모델 → 리더가 ordering service node 선택
  • 노드가 없어져도 살아남을 수 있음. → “crash fault tolerant”라고도 불림
  • Hypereldger Fabric에서 사용

2.1.3.4 인센티브 레이어

토큰과 블록체인

  • 토큰은 화폐가치가 있고, 법정 화폐와 교환됨
  • 모든 블록체인이 토큰을 필요로 하진 않음 → 퍼블릭 블록체인에서 필요. 새로운 블록을 만들기 위한 computing 자원에 대한 보상
  • 컨소시움 : 자발적으로 협동. 토큰을 사용하는게 좋음(의무는 아님)

토큰 발행과 유통

  • 토큰 발행과 유통이 인센티브 체계(Mechanism)에서 가장 중요.
  • 토큰 발행 체계에 토큰이 어떻게 생겨날지 미리 정의
  • 토큰 유통 체계에 서로 다른 유저간 이미 존재하는 토큰 유통 방법 정의

비트코인의 발행과 유통

  • 비트코인 사례
  • 21 M 빗코 최대.
  • 현재 블록 생성당 12.5 빗코 받음(책 기준, 현재는 6.25)
  • 마이닝 보상(검증 보상)은 210,000 블록 생성당 반씩 줄어듬
  • 빗코 유통은 a→b로 빗코 송금 또는 송금시 수수료를 검증자가 받는 방식으로 이루어짐

이더리움의 발행과 유통

  • 이더리움은 복잡
  • 72,000,000 이더가 이미 유통.
  • 이후 블록에 대한 보상, uncle reward, uncle referencing reward(?)으로 새로운 이더리움 계속 추가
  • 블록에 대한 보상 : 거래 검증 → 새 블록을 체인에 올릴떄
  • Uncle reward : uncle block을 검증할때 받는 보상(?). 빗코에선 Uncle block 버림. (Longest Chain, fork 등 추가 설명 필요)
  • Uncle referencing reward : Uncle블록에 블록을 추가해도 보상.
  • Uncle 방식을 통해 낭비되는 에너지 경감

하이퍼래져 패브릭

  • 가장 많이 쓰이는 컨소시움 블록체인
  • 토큰에 본질적 가치는 없음. 토큰을 추가할 수는 있다 정도

2.1.3.5 적용 레이어

  • 개발자는 블록체인을 append-only DB로 사용 가능
  • script, smart contract, chaincode 등으로 수행 가능

Script

  • Bitcoin에서 지원하는 언어
  • Locking mechanism(?)에 사용 - Locking script는 모든 output에 존재
  • 거래 내역 unlock을 위해 unlocking script도 필요
  • 두개로 구성 : Data와 OPCODES

Smart Contract

  • Ethereum Virtual Machine(EVM) 위에서 돌아가는 프로그램을 일반적으로 지칭
  • Solidity로 작성
  • 실행시 이더리움 소모. 한번 배포 된 후에 수정 불가 → 업데이트 하고싶으면 다시 배포해야함

Chaincode

  • 스마트 컨트랙트 비슷. 하이퍼래져 패브릭에서 사용
  • Go, node.js, Java 등으로 구현 가능
  • Docker환경에서 돌아감
  • 체인코드를 통해 장부를 관리 → 장부 상태 변경을 위해서 chaincode를 사용해야함

DAPP

  • 위의 코드들을 encapsulation한 애플리케이션 → SDK를 통해 invoke(호출)
  • 유저 프랜들리하게 만듬
  • 이더리움 기반 많음 → 하이퍼래져 기반도 여러 케이스 스터디 존재(제조업, 헬스케어, 공급망 등)

https://www.dapp.com/app/OpenSea

2.2 블록체인의 강점

거래의 무결성(진실성)(Integrity of Transactions)

  • 블록체인은 모든 거래를 검증 및 기록함 → 신뢰할만함
  • 데이터 교환에서 특히 데이터 요청자는 데이터의 신뢰성 및 의존성에 매우 의존함 → 무결성이라 칭함
  • 데이터 무결성 : 데이터 생애 주기 동안 정확성 및 일관성의 유지 및 확실성을 뜻함
  • 데이터 공유 시에, 공유될 데이터가 블록체인에 기록 될 수도 있음 → 이 경우 블록체인의 무결성을 통해 데이터 신뢰 가능

장부의 불변성

  • 블록체인은 데이터 조작에 강함 → 한번 기록되면 변경 또는 삭제 불가
  • 또한 데이터 시간기록도 되어있음
  • 즉, 블록체인에 기록된 데이터는 데이터 소유자가 제공한 원본이라고 믿어도됨
    • 불변석 덕분에, 이력을 보고 데이터 제공자에게 보상 지급도 용이함

분산된 장부관리

  • 중앙화된 관리주체 없음 → 수많은 peer들이 관리 → 특정 주체가 데이터를 바꾸거나 조작 어려움(중앙화 방시의 큰 단점)
  • 데이터 제공자와 사용자는 규칙을 조율. 규칙은 네트워크상 모든 참여자가 동의 해야함
  • 룰을 어기는 거래는 거절됨

신원 확인성(Verifiability of Identity)

  • 컨소시움 블록체인. 선택된 노드들이 블록체인 유지 → 적합한 사용자만 참여 가능
  • 하이퍼래져 패브릭의 경우 Membership service → 특정 권한등 제약 걸 수 있음
  • 데이터 공유 시나리오 → 허가된 유저만 참여하도록 할 수 있음
  • 새로운 참여자는 믿을만한 사람으로 볼 수 있음

2.3 블록체인의 보안 및 사생활 침해

블록체인을 공격

  • 51% attack(Civil? attack), eclipse attack, selfish attack 등
  • 51% attack
    • 더 좋은 컴퓨터 → 더 빠르게 nonce찾음(거래검증) → 51%이상 네트워크 장악
  • Eclipse attack
    • 희생자를 조종하려는 것. 네트워크의 다른 참여자로 부터 분리(?)
  • Selfish mining attack
    • 퍼블릭 체인보다 더 많은 블록을 찾아내는것(?)

거래 데이터의 사생활 정보 유출

  • 블록체인 데이터는 text로 저장됨 + 장부는 모두에게 공개 → 모든 내용 열람 → 민감정보 유출 가능
  • 본인이 원하는 사람에게만 데이터를 공개하고 싶은 사람들은 쓰고 싶지 않을 수도 → 데이터 사생활 정보 문제는 세심하게 고려되어아 햔다

데이터 표현 형식 한계

  • 블록체인 데이터는 이미 설정된 field대로 저장됨
  • 거래를 처리하는데 효율적
  • 하지만 여러 분야의 데이터를 동시에 쓸때는 불리함(서로 다른 데이터 field)

데이터 저장 한계

  • 블록 사이즈는 킬로바이트(?) + 제한된 용량만 저장 가능
  • 모든 내용이 기록됨
  • 데이터 공유 과정 중 데이터 연산이 많이 일어남 → 데이터 저장 뿐만 아니라 연산에 대한 저장소 수요도 높다

거래 합의 지연시간

  • 지리적으로 분산된(dispersive) 노드 들이 시스템 유지 → 수많은 노드들이 데이터 확인 + 데이터 비가역성 확보를 위해 충분한 블록이 뒤에 추가되어야함
  • 위의 사항이 낮은 효율성을 발생시킴 → 현실 프로젝트에서 높은 성능 요구 하는 경우 많음

2.4 요약

블록체인 기초

  • 5가지 레이어 : 데이터, 네트워크, 합의, 인센티브, 적용

블록체인의 강점

  • 무결성, 불변성, 탈중앙성, 검증가능성
  • 위를 통해 가능성 최대로
  • Big Data / ML에서 데이터 공유 매우 흔함
  • 블록체인 : 큰 가능성 → 데이터 신뢰성 및 추적성
  • 구성 : 블록체인의 5가지 레이어 설명
    1. 데이터
    2. 네트워크
    3. 합의
    4. 인센티브
    5. application(적용)
    • 블록체인의 강점 설명
    • 블록체인이 뛰어넘어야 할 문제
반응형