Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

coding etude

[BLOCK_CHAIN] block chain이란? 본문

others TIL

[BLOCK_CHAIN] block chain이란?

코코리니 2021. 1. 11. 22:43

TS 를 공부하던 중 블록체인을 만드는 과정을 TS로 구현하는 방법을 봤는데 어렴풋이 알고 있던 블록체인의 개념을 조금 더 선명하게 만들기 위해서 이것 저것 알아봤는데.. 기본 개념은 단순하지만 구현은 어렵다는 결론... 평소에 자주 듣던.. 먼저 만들어둔 형들이 많으니.. 그냥 형들꺼 가져다 쓰라는 명언이 생각 난다.

 

블록체인?

블록 체인이란 무엇일까?? 말 그대로 블록들이 체인형태로 연결 되어 있는 Linked List 구조의 자료 구조라고 할 수 있다.

다시 말해 가장 처음 생성된 블록에서 부터 마지막에 생성된 블록까지 모두 연결되어 있고 여러개의 블록이 마치 하나의 체인처럼 연결되는 구조라고 할 수 있다. 

 

즉, 수만 건의 거래내역을 하나로 묶은 블록체인은 여러 저장소에 분산되어 관리되는 거대한 분산장부로써 분산컴퓨팅 기술 기반의 데이터 위 변조 방지 기술 이다.

 

블록체인은 누구도 장부를 조작 할 수 없지만 모두에게 공개되는 공개장부인 셈이다.

이 기술은 여러 저장소에 같은 내용의 블록체인을 저장하고 지정된 시간마다 오류나 누락 등을 정상적인 데이터에서 가져와 대체하기 때문에 위 변조가 불가능 한것이다. 여기서 정상적인 데이터의 기준은 동일한 블록체인 사용자의 과반 이상의 장부를 기준으로 한다고 한다. 만약 블록체인 형태인 가상화폐를 훔치려고 한다면 동시에 전체 사용자의 데이터를 변경해야 하기때문에 불가능에 가깝다고 할 수 있다.

 

블록?

블록체인의 원소단위인 블록은 TXID(or TxHash: 위치를 추적하기 위한 transation(:변경 된 정보)의 ID 값) 의 Hash 값 입니다. 

여기서 말하는 Hash 값은 블록의 header 정보를 모두 더해서 SHA256으로 변환된 값 이다.(SHA256 / Hash는 추후에 더 적확히 이야기 해보겠다.)

 

블록의 구조

Block의 구조

①blcok hash : 블록의 헤더 정보를 더해서 SHA256으로 변환된 값을 가지며 블록의 식별자 역할을 한다.

 

②header : 블록의 여섯가지 정보를 담고 있다.

  - version : 소프트웨어/프로토콜버전 정보

  - previousBlockHash : 이전 블록의 block hash 값을 가지고 있다.

  - merkle hash : 개별 거래 정보의 거래 해쉬를 2진 트리 형태로 구성할 때, 트리 루트에 위치하는 해쉬 값

  - time : 생성 시간

  - bits : 난위도 조절 수치

  - nonce : 최초의 0에서 부터 시작해 해쉬값을 찾을 때마다 1씩 증가하는 계산 횟수.

 

③body : merkle 값을 가지고 있으며 각 merkle 값은 개별거래 값을 두변 변환한 값이다.

            (※merkle hash/ 개별거래 값 hash/ 개별거래 값 으로 이루어 져있다.)

 

블록체인의 장점

1. 신뢰성을 보장할 제3자가 필요 없다.
2. 해킹을 쉽게 차단할 수 있다. (디도스 공격도 문제없음)
3. 모든 거래내역이 공개되어 기존 서비스보다 투명하게 보관 관리가 된다.
4. 중앙관리자가 없기 때문에 유지보수가 쉽고 보안성이 높으며 중계자가 필요없기 때문에 비용이 절감 된다.

 

블록체인의 단점

1. 중앙관리자가 없기 때문에 모든 사용자와 정보를 공유해아 함으로 속도가 느리다.
2. 같은 이유로 중앙관리자가 없기 때문에 과반 이상 사용자의 동의가 있어야만 오류수정 및 업그레이드가 가능하다.

 

이상으로 간단하게 블록체인에 대해서 포스팅을 해보았는데 기본 개념은 쉬워 보이지만 기본적으로 hash 자체가 난위도가 높다고

생각하기 때문에.. 깊이 들어가면 이하지 못할것 같다..

기본적인 개념정도만 가지고 가자.