2020.코딩일지

[블록체인]Introduction(2)[BEB 6th] 본문

Block Chain

[블록체인]Introduction(2)[BEB 6th]

개발하는라푼젤 2022. 8. 21. 12:21
728x90
코드스테이츠 블록체인 부트캠프 6기 

2008년 10월 사토시 나카모토가 올린 "Bitcoin: A Peer-to-Peer Electronic Cash System"논문

비트코인깃헙

블록체인이란, 다양한 기술의 집합체. P2P네트워크를 통해서 관리되는 분산 데이터베이스의 한 형태.(여러컴에 저장한는 보관기술)

무엇을 공개하는가? 무엇을 허용하는가? (읽기,쓰기)

퍼블릭, 프라이빗, 컨소시움 블록체인이 차이점 / 블록체인 네트워크 유형

구분 퍼블릭블록체인
Public
프라이빗 블록체인
Private
컨소시엄 // 하이브리드(혼합형)의 한형태.
Consortium
    하이퍼레져(Hyperledger): 리눅스재단 하이퍼레져 패브릭:리눅스+IBM
공개범위 모두공개 폐쇄형 중앙화 중앙관리자의 승인받
관리자 모든 거래 참여자 한 중앙 기관이 모든 권한 보유
..신뢰가낮다
컨소시엄에 소속된 참여자(여러기관)
->공정성과 확장성을 보완?? 담합은??
거버넌스 한번 정해진 법칙을 바꾸기
매우 어려움
중앙 기관의 의사결정에 따라 용이하게
법칙을 바꿀 수 있음
컨소시엄 참여자들의 합의에 따라
법칙을 바꿀 수 있음
거래속도 네트워크 확장이 어렵고
거래 속도가 느림
네트워크 확장이 매우 쉽고
거래 속도가 빠름
네트워크 확장이 쉽고
거래 속도가 빠름
데이터접근 누구나 접근 가능 허가 받은 사용자만 접근 가능 허가 받은 사용자만 접근 가능
식별선 익명성 식별가능 식별가능
  모든 노드가 상호검증하고 거래를 승인하기 때문에 
신뢰가 높다
스마트계약을 구현할 수 있는 오픈소스 기반의 프라빗블록체인플랫폼으로 기업비즈니스를 구현하기 적합한 환경. (프라이빗보다)
다수 참여자의 협의가 필요한 분야는  이것.
기관 간에 직접 거래함으로 제3자에 대한 거래 수수료를 줄이고 거래시간을 단축가능

하이브리드 블록체인이란? : 퍼블릭과 프라이빗의 혼합형. 

프라이빗 블록체인인 하이퍼레져 패브릭에서는 왜 UTXO를 사용할까? : 이중지불방지를 위해

하이퍼레져와 퍼블릭블록체인의 차이는?

왜 블록체인 네트워크들이 서로 다른 합의 알고리즘을 사용하는가? : 서로 선호하는 것이 달ㄹ서

일반 원장과 블록체인 원장의 차이점은? :탈중앙

이더리움 트랜잭션에서 논스Nonce가 필수인 이유는? 비트코인은 왜 트랜잭션 Nonce가 없는가? : 이중지불방지를위해, 비트코인은 UTXO

비트코인,이더리움 트랜잭션 검증은 어떻게 이루어지는가?

PoW, PoS의 가장 큰 차이점 :작업증명 지분증명

DPoS는 무엇인가? :위임

이더리움에서 주소를 Public Key 자체가 아니라, 이더리움 경우 20byte로 줄여서 사용하는 이유는? 장점은? 줄여진 주소를 가지고 서명을 어떻게 확인하는가?

UTXO기반의 블록체인과 어카운트기반의 블록체인의 차이점. 장단점은?

비트코인에서 UTXO는 무엇인가?

비트코인 c++, 이더리움 go언어 각각 어떤 언어로 이루어져 있는가?

비트코인 블록체인과 이더리움 블록체인의 차이는 무엇인가? 화폐기능과 스마트컨트렉트의기능

 

 

분산원장기술 (Distributed Ledger)은 거래 정보를 기록한 원장을 특정 기관의 중앙화된 서버가 아닌 

분산화된 네트워크에서 참여자들이 공동으로 기록 및 관리하는 기술로 공유원장 또는 분산원장기술(DLT). **블록체인핵심기술!

* 중앙집중원장(Centralized Ledger)의 비용문제(인증기관의 관리비,수수료), 시간문제(중간다리), 보안문제(중앙DB.해커가한곳만노림)를  P2P로 해결!

* 분산원장기술의 장점은 중앙 집중형 방식에 비해 높은 인증과 증명의 효율성, 시스템 안정성, 보안성, 투명성

 

 

 

트랜잭션이란, 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 "작업의 단위".

=상호작용 및 작업수항의 논리적 단위
=블록체인의 상태변화(state)시키는 일련의 작업을 내포하고 있음.

트랜잭션의 특성: 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어 ACID 

Atomicity(원자성) "전부성공" 또는 "전부실패"로 결과를 예측할 수 있어야. (한작업이라도 실패했다면, 실패로 돌아가자)
Consistency(일관성) 트랜잭션 이전과 이후, 데이터베이스의 상태는 이전과 같이 유효해야 한다.(ex.모든고객은이름이있어야한다)
Isolation(격리성,고립성) 모든 트랜잭션은 다른 트랜잭션으로부터 독립적이다.(1만계좌에서 6천,6천송금 불가)
Durability(지속성) 성공적으로 수행되었다면 로그가 남아 시스템오류가 나더라도 "해당기록은 영구적"이여야 한다.

블록체인에서의 트랜잭션은 상호작용 및 작업 수행의 논리적 단위.

블록체인 상의 모든 활동은 트랜잭션을 통해 이루어지고, 추상적인 관점에서 트랜잭션은 블록체인의 상태(State) 변화를 야기하는 일련의 작업을 내포하고 있다.

 

 

블록=헤더(메타데이터:논스값)+바디(트랜잭션리스트)

비트코인, 이더리움트랜잭션 구조 {Header(메타데이터:논스포함) + Body(트랙잭션들의 리스트)}

필드 비트코인 트랜잭션구조 필드 이더리움 트랜잭션구조
버전번호 채굴자와 노드가 트랜잭션 처리에 사용할 규칙을 지정하는데 사용 논스
(Nonce)
발신 EOA에 의해 발행되어 메시지 재사용을 방지하는데 사용되는 일련번호
입력카운터 트랜잭션에 포함된 입력의 개수 Gas Price 발신자가 지급하는 가스의 가격
입력리스트 블록의 첫 트랜잭션은 코인베이스 트랜젹선.
입력리스트에는 하나 이상의 트랜잭션 입력이 포함
Gas Limit 이 트랜잭션을 위해 구입할 가스의 최대량
출력카운터 출력의 개수를 나타내는 양의 정수 수신자
Recipient
목적지 이더리움의 주소
출력리스트 트랜잭션에 포함된 출력 Value 목적지에 보낼 이더의 양
로크Lock
시간
트랜잭션이 유효해지는
가장 빠른 시간을 정의하는 필드
Data 가변 길이 바이너리 데이터 페이로드
    v, t, s EOA의 ECDSA 디지털 서명의 세가지 구성 요소

 * 논스유무의 차이!  (메타데이터의 논스 != 트랜잭션의 논스)

비트코인과 이더리움 논스의 유무차이는 이중지불(Double Spending)의 방지를 위해서 이다.

이더리움 트랜잭션 논스(Nonce)의 특징 2가지

  • 거래(Transaction)를 전송시 논스는 1씩 증가한다. (중복되지않고 순차적이다)
  • 논스는 계정에서 유일하며, 동일한 논스가 존재하지 않는다.

모든 트랜잭션은 일회성인데 이중지불 문제를 해결하기 위해 

비트코인의 경우,(어카운트지갑에 저장안하고 UTXO에 저장한다.)
UTXO(Upsent Transection Outputs,미사용 트랜잭션 출력값)를 통해 해결하고

이더리움은 어카운트기반 시스템으로 논스을 각 트랜잭션이 오직 한번만 처리되게 하는 카운터로 사용하여 해결.

 

UTXO(Unspent Transaction Outputs) : 미사용 트랜잭션 출력값(미지출 거래 출력)

코인이 지갑(wallet)에 저장되는 것이 아니라, UTXO에 저장.(거래의 유효성을 검사하여 코인의 존재여부 확인)

장점: 이중 지불 방지, 잔고의 증명(추적하기용이하다)

단점: UTXO가 너무 과하게 생성이 될 경우 불필요한 수수료를 내야하는 단점

 

비트코인UTXO와 이더리움ACCOUNT의 비교

화폐역할에 충실해야 한다면 비트코인의 UTXO가 한번 사용되고 사라져 익명성과 보안성이 강하기 때문에 더 훌륭하지만,

dApp과 같이 다양한 기능을 구현하고 싶다면 스마트 컨트랙트를 활용할 수 있는 이더리움의 어카운트가 좋습니다.

 

지갑(Wallet)

: 비트코인, 이더리움 등 암호화폐를 보관할 수 있는 계정(블록체인위에서 실행되는 S/W, 개인키와 관련된 트랜잭션을 모니터링)

지갑의 종류: PC데탑지갑, 모바일지갑, 하드웨어지갑, 웹지갑

지갑의 구조: adress계좌(공개키Public key) + 암호(개인키Private key)로 구성 = 어카운트Account라고 하기도 한다.

어카운트의 장단점 (송금&이체 트랜잭션을 할 수 있는 계좌)

장점: 단순성 효율성

단점: 이중지불

 

  비트코인 이더리움
코인저장위치 UTXO  (상태비저장모델) wallet/  어카운트
  미지출 거래출력값을 통해 거래의 유효성 검사  
  장) 이중지불방지 장) 단순성 (상태정보포함으로 설계가 단순해진다)
  장) 잔고의 증명 : 추적하기 용이하다. 단) 트랜잭션들을 모두 검증,확인하여 최종잔고를 유추함
  단) 소액결제를 자주하여 과하게 생성되면 수수료가 나온다; 장) 효율성 소액결제에 유리?
이체가능한지 잔액확인만 하면되어서 효율적
    단) 이중지불 공격에 노출;;
->해결하기위해 논스를 구현

이더리움의 2가지 유형 계정

-외부 소유 계정(EOA) : 공개주소+개인키의 조합으로 다른계정과 이더를 송수신하고, 스마트 컨트랙트에 트랜잭션을 보낼 수 있다.

-컨트랙트 계정(CA) : 상응하는 계인키가 없다! 계정대신 컨트랙트로! 스마트계약을 블록체인에 배포할 때 생성된다.

.... 다른 계정과 이더를 송수신하고(EOA와 동일), 관련된 코드를 담고(EOA와 다름),

  EOA나 다른 컨트랙트의 호출을 받아 트랜잭션을 발생시키는 기능을 갖고 있다.

 

 

 

노드(Node) : P2P로 연결되어 블록체인 네트워크에 연결된 모든 블록 정보를 가지는 각각의 서버이다.

노드의 종류 

  • 풀 노드 : 모든 기능을 다 가지고 있는 노드
  • 라이트 노드 : 모든 블록정보의 원본을 가지고 있지 않고 일종의 요약본 즉, 헤더정보만 가지고 있는 노드

채굴(Mining) : 암호화폐의 거래내역을 기록한 블록을 생성하고, 대가로 암호화폐를 얻는 행위

채굴이 필요한 이유 

 블록체인 네트워크를 유지시키기 위해서 필요하다.

 거래내역을 기록하고, 기록된 거래내역을 블록에 담아 사용자들에게 전파하는 역할을 수행하고, 

 추가적으로 전파된 블록이 진짜인지 거짓인지에 대한 검증을 수행


합의 알고리즘(Consensus Algorithm)이란, 다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘

(흩어져 보관된 데이터가 위변조 되지 않은 원본이라는 것을 상호간에 합의하는 과정이 필요한것)

(악의적인 상황이 발생하더라도 네트워크를 올바른 방향으로 이끌고자 하는 다수의 노드들이 상호 검증을 거쳐 올바른 블록 생성을 이끌어내는 프로스세와 알고리즘을 "합의"라고 한다)

합의알고리즘의 종류와 장단점

작업증명
(PoW. Proof of Work)
 네트워크에서 수용할 값을 제안하기 전에 충분한 (1)컴퓨팅 자원을 소모했다는 증명.
단점 : (2)해시파워유지 (3)마이닝세력의 해시독점 / 51%Attack, 느린트랜잭션
장점 : 시빌공격(sybil attack)과 같은 블록체인 네트워크에 대한 각종 공격을 막을 수 있다고 증명된
유일한 알고리즘이다.(1)높은보안성 (2)서비스남용방지 (3)현 높은가치의 주류코인이 채택한 방식
지분증명
(PoS. Proof of Stake)
노드 또는 사용자가 시스템에 충분한 지분을 갖고 있다는 증명
단점: (1) 보안성이 검증되지않았음 (2)고래들이 권력독점할가능성이 높다.
장점: (1)친환경적,경제적 (2)탈중앙화로 안정성확보 (3)지분담보로 pumping방지
위임지분증명
(DPoS. Delegated Proof of Stake) ex.이오스EOS 21명
시스템의 지분을 가진 각 노드는 "투표"를 통해 트랜잭션의 유효성 검사를 다른 노드에 위임하여 증명.
단점: (1)증인(상위노드)의담합위험 (2)공개된 소수의 증인에대한 디도스공격위험..탈중앙화가 아니다;
장점: (1)PoS보다 빠른속도 (2)PoW보다 낮은비용 (3)하드포크의 낮은위험 (4)증인(상위노드)들이 투표에 참여할 인센티브가 분명

비잔틴장애 허용(BFT.Byzantine Fault Tolerance) : 장애가 있더라도 1/3넘지만 않으면 정상작동.

프랙티컬 비잔틴장애 허용(PBFT.Practical Byzantine Fault Tolerance) : 여러 노드로 구성된 네트워크에서 악의적 공격을 방어하기 위해 만들어진 기술.

(ex. 네오, 질리카 ,하이퍼레져, R3, ITC, 텐더민트 등에서 사용하는 합의 알고리즘)


이더리움 클라이언트 (Ethereum Client)

 

Geth: 이더리움재단(Ethereun Foundation)이 제공하는 공식 클라이언트 소프트웨어. Go언어로 개발

Parity패리티: 이더리움 프로토콜의 또 다른 구현체. Rust언어로 개발

비트코인 개발언어: 다양한 언어로 개발되었고, C++이 주 언어이다. (이더리움황서 참고)


블록체인의 거버넌스(Governance)

: 블록체인 네트워크를 위지하기 위한, 구성원들간의 이해관계를 조정하는 커뮤니티.

효과: 민주적 책임 강화

문제: 문제가 발생했을때의 책임은 누가지는가?

BIP(Bitcoin Improvement Proposal) 비트코인의 개선 제안을 의미 (BIP141 : 속도향상,수수료절감)
비트코코인이 암호화폐의 선두주자이기 때문에 많은 발전에 영향을 끼침
EIP(Ethereum Improvement Propasal) 이더리움의 개선 제안을 의미 (토론: 기술명세,근거,반대의견)
ERC(Ethereum Request for Comment) 이더리움의 표준이 될 만한 내용 (기술적인 설명)
KIP(Klaytn Improvement Proposals) 클레이튼의 개선 제안을 의미

 

 

 

 

 

 

 

 

 

 

 

 

Comments