티스토리 뷰

인공지능/블록체인

블록체인 개념

RosyPark 2019. 10. 5. 12:41

 

0. 블록체인이란?

- 관리 대상 데이터를 '블록'이라고 하는 소규모 데이터들이 P2P 방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장환경에 저장되어 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기술 기반의 원장 관리 기술

- 데이터 분산 처리 기술, 암호학적으로 안전한 블록들의 체인 

- 중앙에서 데이터를 처리하거나 관리하는 기관이 없음

- 모든 사용자가 데이터 내역을 가짐 

 

1. 블록체인 비대칭키 암호화 방식

- 비트코인에서 거래가 안전하게 이루어질 수 있도록 사용하는 암호화 기술

 

1.1 암호화 기술

* 대칭키 암호화

- 키가 하나

- 암호화를 할 떄와 암호를 풀 때 동일한 키를 사용한다 

 

* 비대칭키 암호화

- 암호화할 때 사용하는 키와 암호를 풀 때 사용하는 키가 다름.

- 어느 한쪽의 키를 안다고 해도 다른쪽 키를 유추하기 힘들다.

 

개인키 <-----------------> 공개키  )))) 한쌍 

한쌍의 키에 의해서 암호화와 복호화가 이루어짐

공개키 암호화 -> Only 개인키 가진 사람만 복호화

개인키 암호화 -> 공개키 가진 사람 전체 볼 수 있음 ===> 일종의 Signature 행위 

 

 

2. 해시함수

2.1 해시란?

- 해시의 원래 의미? "고기", "야채써는일"

- 해시함수 : SHA1, SHA2 ... 비트코인등에서 사용

 

2.2 블록체인에서의 해시함수

- 블록체인에서는 해시함수의 특성을 이용하여 블록체인 작업증명과정에 사용

- 보안성이 높다

- 입력값이 어떤 길이이던지 해시 함수를 거치면 동일한 길이의 출력값이 나옴

- 많은 데이터를 해시함수 사용하여 적은 데이터의 해시값 변경하는게 가능하다.

 

2.3 해시함수의 특성 이용

- 출력값의 범위를 제한하여 컴퓨터의 계산시간을 대폭 줄인다

- 블록체인의 "작업증명"의 아이디어인 "해시캐시"

- 비트코인은 SHA-2 를 사용하고 있는 이를 대입법으로 빠른 시간내에 입력값을 전체 찾는건 어렵다.

- 그러므로 출력값의 범위를 제한하여 줄인다

ex) 앞의 몇비트까지는 0이고 나머지 비트는 어떤값이 나와도 정답이다.

 

 

3. 블록체인 property 

3.1 작업증명 (Proof of Work)?

- 새로운 블록(신규기록)을 생성함에 있어서 일정한 노력이 들어갔음을 보장하는 것.

- 블록체인 자체가 여러 네트워크(Node)가 연결되어 블록을 형성하고 전달하면서 블록을 연결하는 과정

- 어느 한노드에서 새로운 블록이 무분별하게 만들어지고 배포된다면 다른 노드에서는 이에 대한 확인이 어렵다.

 

3.2 블록내용 / 난스

Q. 실제 블록에는 뭐가 들어 있을까? 

>> 블록헤더 : 블록의 정체성(비전, 이전 블록의 해시, 머클루트, 타임스탬프, 난이도목표, 난스)

>> 거래카운터 : 거래의 개수

>> 거래 : 블록에 기록된 거래내역(블록 당 평균 500개의 거래) 

 

 

 

 

3.2.1 Header  

- 블록헤더 -> SHA256 (해시)

   = 비교값과 비교하는 과정을 가짐

   = 이 비교값보다 작은 해시값이 나오면 블록 체인이 블록 생성하는 "작업증명"이 성공하게 된다

   = 비교값은 계속 변함

 

- 버전

- 이전블록의 해시값

- 머클루트

- 타임스탬프 등의 정보가 있음

- 논스 : 문제, 이 값을 넣었을 때 블록 해시값이 특정 수치보다 작아야함 

 

 

 

* 머클루트 

- 거래를 묶어주는 머클트리(Merkel Tree) => 일종의 이진트리 

- 이진트리라는 말은? 쉽게 말해서 거래를 두개씩 묶는다는 말

- 거래를 두개씩 묶은 다음 SHA 256 알고리즘을 사용하여 해시값을 나타냄

- 두개씩 묶기 때문에 거래량이 기하급수적으로 늘어나도 특정 거래를 찾는 경로는 단순 

- ex)  1024개 거래라고 해도 log2[1024] = 10 이기 때문에 열번의 경로를 찾아가는 연산시 특정 거래 데이터를 쉽게 찾을 수 있음

 

 

Q 머클트리를 사용하는 이유? 

- 머클 루트만 헤더에 담아서 트랜잭션의 유효성 보장 가능 

- 머클 트리의 경로를 따라가면 해시값이 다른 것이 나오게 되어 거래의 위변조도 쉽고 빠르게 알수 있게 되고 이를 방지할 수 있음

-머클트리 이진 트리 방식은 블록데이터의 일부만 다운 받는 라이트노드로 우리가 가지고 다니는 모바일로도 쉽고 빠르게 특정 거래를 찾도록 해준다. 

 

 

* 트랜잭션(transaction)

- "쪼갤 수 없는 업무 처리의 최소 단위" = 거래내역 

- TPS : 일초당 처리할 수 있는 트랜잭션의 개수 

- 데이터 베이스의 트랜잭션이 안전하게 수행됙 위해서는 ACID 조건 충족 필요

- ACID (Atomicity, Consistency, Isolation, Durability)

* 원자성(atomicity) : 하나의 트랜잭션은 더이상 작게 쪼갤 수 없는 최소한의 업무단우

* 일관성(consistency) : 트랜잭션이 완료된 결과값은 일관성 있는 데이터베이스 상태로 유지되어야 한다.

* 고립성(isolation) : 트랜잭션을 수행하는 도중에 다른 연산 작업이 끼어들어서는 안된다.

* 지속성(durability) : 성공적으로 수행된 트랜잭션은 영구적으로 반영되어야 한다. 

 

 

 

3.2.2  Body

- 트랜잭션 = 거래내역  

 

 

 

 

4. 합의알고리즘 

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

 

4.1 작업증명(Proof of Work, PoW)

- 목표값 이하의 해시를 찾는 과정을 무수히 반복함으로써 해당 작업에 참여했음을 증명하는 방식의 알고리즘

- 채굴을 통해 작업증명을 한다.

- 비트코인, 이더리움, 라이트코인, 비트코인캐시... 등에서 작업 증명 방식을 사용

- 채굴자는 컴퓨터로 복잡한 수식을 풀어 조건에 맞는 해시값을 찾는 과정을 반복

- 이 경우 모든 노드들이 찾아낸 해시값을 검증하고 승인하는 과정을 반복 

- 하나의 블록체인을 유지하려고함. ==가장 긴 체인(The longest blockchain

- ex) 두 체인에서 모두 채굴을 하려면 계산 능력을 두 체인으로 나누어 계산을 해야하는데 두 체인중에서 유리한 체인을 골라서 유리한 체인에 모든 계산 능력을 집중하는 것이 보상에 유리

- 가장 긴체인은 채굴자가 손해를 보지 않기 위해서 

- Nonce => 해시 함수의 결과 값이 특정 값보다 작아지도록 하는 Nonce 값을 찾는 문제 

 

 

4.2 지분증명(Proof of Stake, PoS)
- 해당 암호화폐를 보유하고 있는 지분율에 비례하여 의사 결정 권한을 주는 방식

- 해당 암호화폐를 보유하고 있는 지분율에 비례하여 의사 결정 권한을 주는 방식 

- 채굴 과정이 필요 없음

- 큐텀, 피어코인 등의 암호화폐가 지분 증명 방식을 사용하고 있음 

 

 

 

5. 블록체인 트릴레마 

 

http://wiki.hash.kr/index.php/%ED%8A%B8%EB%A6%B4%EB%A0%88%EB%A7%88

트릴레마란? 세가지 옵션 모두를 받아들이기 어려운 선택 

 

  • 확장성(Scalability) - 사용자 수의 증대에 유연하게 대응할 수 있는 정도 
  • 보안성(Security) - 데이터나 프로그램을 권한이 없는 이용자가 사용할 수 없도록 하는 것
  • 탈중앙화(Decentralization)  - 중앙 집중화를 벗어나 분산된 소규모 단위로 자율적으로 운영되는 것, 블록체인은 기존의 서버-클라이언트 관계가 아니라 개별 노드들의 자발적이고 자율적인 연결에 의해 P2P 방식으로 운영됨 

사용자 수의 증대에 유연하게 대응할 수 있는 정도

 

6. 대표적인 블록체인

6.1 비트코인

- 최초의 성공적인 분산 디지털 통화

- 높은 탈 중앙화와 보안성, 확장성X

- 비대칭 암호화 기술

- 모든 구조 => 분산형 구조

- 세그윗과 하드포크 방법 사용 

 

6.2 이더리움

- 거래 기록 이외에 정보를 기록가능 = 스마트컨트랙트

- 분산형 어플리케이션(Dapp)

- 솔리디티 언어도입

- 탈중앙화와 보안성이 높지만 확장성 문제 

 

 

6.3 이오스

- 확장성 문제를 해결하기 위해 만들어짐

- 빠른 처리 속도 

 

6.4 클레이튼

- 사용자편의에 중점을 맞춤, 사용자가 이용하기에 편함, 탈중앙화는 어느정도 포기, 사용자에게 적합한 환경 구축

 

6.5 아이콘

- A라는 블록체인과, B라는 블록체인 연결  

 

6.6 루니버스 

- 개발자가 우선

 

 

 

 

<출처> 

1. 위키백과 

 

블록체인 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 블록체인(영어: block chain[1][2], blockchain[3][4][5])은 관리 대상 데이터를 '블록'이라고 하는 소규모 데이터들이 P2P 방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장환경에 저장되어 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기술 기반의 원장 관리 기술이다.[6] 이는 근본적으로 분산 데이터 저장기술의 한 형태로, 지속적으로 변경

ko.wikipedia.org

2. 머클트리

 

3. 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/01   »
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 31
글 보관함