반응형
Summary
What : 이 챕터에서 말하려는 것
- 블록체인 기초지식
- 정의 / 종류 / 공통 구성 컴포넌트(5가지 레이어)
- 종류 : 3가지 - 퍼블릭,프라이빗,컨소시움
- 컴포넌트 5레이어
- 데이터 / 네트워크 / 합의 / 인세티브 / 적용(Application)
- 데이터 : 체인 구조, 데이터 블록, 머클트리, 해시기능, 거래내역(트랜잭션), 비대칭키
- 네트워크 : P2P, Propagation, Validation
- 합의 : PoW, PoS, DPoS, Raft
- 인센티브 : 토큰과 블록체인, 토큰의 발행과 유통, 비트코인, 이더리움
- 적용 : Script(빗코), Smart contract(이더리움), Chaincode(하이퍼래져 패브릭), DAPP(블록체인 기반 앱)
- 블록체인 강점
- 거래의 무결성 : 모든 거래 검증 및 기록을 통해
- 장부의 불변성 : 데이터 조작에 강함 + 타임 스탬핑 → 소유자가 제공한 원본 + 이력 열람 후 보상 지급도 용이
- 분산된 장부관리 : 중앙 관리자 없음 → 특정 주체가 데이터 조작 어려움
- 신원 확인성 : 컨소시움 블록체인의 경우 적합한 사용자만 참여 → 새로운 참여자는 믿을만하다 가정
- 블록체인의 보안 및 사생활 침해
- 블록체인 공격 : 51%, Eclipse, Selfish
- 51% → 컴퓨터 성능을 이용 빠른 거래검증(nonce 찾기) → 네트워크 51%이상 자악
- Eclipse : 소수의 희생자를 전체 네트워크로 부터 무언갈 해서 조종하려는 것
- Selfish mining : 퍼블릭 체인보다 더 많은 블록을 찾아냄
- 거래 데이터의 사생활 정보 유출
- 블록체인에 데이터가 text형식으로 저장 → 누구나 열람 가능 → 민감정보 유출 가능
- 데이터 표현 형식 한계
- 이미 설정된 field → 효율적인 거래 처리
- 하지만 여러 분야가 협어발땐 어려움(다른 데이터 필드)
- 데이터 저장 공간 한계
- 제한된 용량만 저장 가능
- 거래 합의 지연시간
- 거래 검증까지 속도가 오래걸림 → 현실 프로젝트에선 높은 성능 요구됨
- 블록체인 공격 : 51%, Eclipse, Selfish
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가지 레이어 설명
- 데이터
- 네트워크
- 합의
- 인센티브
- application(적용)
- 블록체인의 강점 설명
- 블록체인이 뛰어넘어야 할 문제
반응형
'2022 > 블록체인' 카테고리의 다른 글
[블록체인 / Fullnode] 비트코인 풀노드 구동하기 (0) | 2022.03.09 |
---|---|
[블록체인 / 유동성풀] 유동성풀 이해 (0) | 2022.01.24 |
[블록체인 / 데이터 공유] Blockchain: Empowering Secure Data Sharing 챕터 1 요약 (0) | 2022.01.08 |
[책리뷰] 비즈니스 블록체인 / 윌리엄 무가야 (0) | 2021.12.25 |
[블록체인 데이터 교환] Layered Data Sharing Architecture with Blockchain (0) | 2021.12.17 |