본문 바로가기

Programming/블록체인

[블록체인-1] 블록체인이란?

📍 블록체인(Blockchain)이란?

 

- 쉽게 말해 데이터베이스이다.

 

P2P(Peer to Peer) 네트워크를 통해서 관리되는 분산 데이터베이스의 한 형태이다.

 

P2P란 기존의 서버와 클라이언트 개념에서 벗어나

개인 컴퓨터들이 네트워크로 연결되어 서로 정보와 자료를 공유하는 것을 말한다.

즉, 연결된 각각의 컴퓨터가 서버이자 클라이언트 역할을 하며 정보를 공유하는 방식이다. 

 

- 정보를 담은 장부를 중앙 서버가 아닌 

블록체인 네트워크에 연결된 여러 컴퓨터에 저장하는 기술이다.

* 중앙서버가 아니다 = 탈중앙화 = 특정 개인이 데이터를 관리하는 것이 아니다 = 다수가 데이터를 저장, 증명하기 때문에 중앙 관리자가 필요 없다

 

- 특징 

1) 누구나 데이터를 추가할 수 있다.

2) 데이터는 추가만 가능하고, 수정하거나 삭제할 수 없다.

 

 

 


 

여기서 질문이 생겼다.

왜 분산 저장을 하는 것일까? 왜 데이터는 추가만 가능하고 수정,삭제 할 수 없는 것일까?

 

기존에 은행의 중앙서버를 공격하여 데이터를 위/변조한 사례가 있었다. (전산망 해킹과 같은....)

하지만 블록체인은 다수가 참여하여 데이터를 저장하기 때문에 위/변조가 어렵다.

블록체인 네트워크를 위/변조하기 위해서는 네트워크에 연결된 모든 참여자의 데이터를 공격해야 가능한 것인데,

이는 사실상 불가능한 일이기 때문이다. 

 

블록체인은 기본적으로 조작할 수 없어

거래 기록 또는 블록을 임의로 변경할 수 없고

다른 모든 블록과 연결되어 있어서 보안을 보장받는다.

 


📍 블록(Block)이란?

 

- 데이터를 저장하는 공간이다.

- 거래 기록, 자산에 대한 정보, 개인정보 등 다양한 유형의 정보를 담을 수 있다.

- 다수의 트랜잭션을 하나로 모아서 관리하기 위한 묶음이다.

 

* 트랜잭션(Transaction)이란? 

은행 ATM이나 데이터베이스 등의 시스템에서 사용되는 '더 이상 쪼갤 수 없는 업무 처리의 최소 단위'이다.

비트코인과 같은 암호 화폐에서는 블록에 거래기록을 저장한다. 

거래기록을 트랜잭션이라고 볼 수 있다. 

 


출처 : 블록체인 암호화폐 2.0

 

- 블록은 '데이터', '블록의 해시', '이전 블록의 해시'를 포함한다. 

 

* 데이터 : 비트코인의 경우 데이터 안에 돈을 보낸 사람의 정보, 돈을 받은 사람의 정보, 송금 금액이 들어간다.

* 블록의 해시 : 쉽게 말해 사람의 '지문'과 같은 것이다. 블록체인을 구성하는 블록들은 고유한 지문을 갖게 된다.

* 이전 블록의 해시 : 각각의 블록을 연결해주는 역할을 한다. 

 

- 블록들은 형성된 후, 시간 흐름에 따라 순차적으로 연결된 사슬(체인)의 구조를 가지게 된다. 

 

 


📍 블록 생성

 

블록체인 네트워크에서 거래가 발생해 새로운 트랜잭션이 생기면,

트랜잭션은 네트워크 내에 있는 모든 노드들에게 공유된다.

 

노드(=네트워크에 접속해 있어서 연결될 수 있는 컴퓨터)들은

실제 송금자가 만든 트랜잭션이 맞는지, 트랜잭션이 만들어지고 나서 수정되지는 않았는지 등

공유받은 트랜잭션의 유효성을 검증한다.

 

트랜잭션에 대한 유효성 검증이 끝난 후, 

트랜잭션이 블록에 담기고

해당 블록이 체인에 추가되어 블록체인의 일부가 될 때 트랜잭션에 대한 처리가 완료된 것이다. 

이런 트랜잭션을 모아서 하나의 블록으로 만드는 과정을 채굴(Mining)이라고 한다.

 

 


📍 블록체인의 '변경 불가성'

 

위에서 살펴본 것과 같이 블록체인에서는 함부로 데이터를 위/변조할 수 없다.

데이터가 블록에 담기고 그 블록이 체인에 연결되면, 사실상 데이터를 변경하는 것이 불가능하다. 

 

체인에 연결된 블록들은 항상 이전 블록과 특정한 관계를 맺고 있고

자식 블록은 부모 블록의 정보를 가지고 있다.

 

부모 혹은 이전의 어느 블록에서 정보가 바뀌거나, 바뀌려는 시도가 있다면

그 블록에 부속된 모든 자식 블록들의 정보 역시 변경이 된다.

 

특정 노드에서 이러한 변경이 일어나면

분산되어 저장돼있는 데이터와 차이가 생기가 되고

이는 유효하지 않은 정보 취급을 받기 때문에 결국 데이터를 변경하는 것이 거의 불가능하다.

 

 

 

 

 

* 참고 자료 

http://wiki.hash.kr/index.php/%EB%B3%80%EA%B2%BD%EB%B6%88%EA%B0%80%EC%84%B1

http://wiki.hash.kr/index.php/%EB%B3%80%EA%B2%BD%EB%B6%88%EA%B0%80%EC%84%B1

https://www.banksalad.com/contents/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EA%B0%9C%EB%85%90-%EC%99%84%EB%B2%BD-%EC%A0%95%EB%A6%AC-dh1do