
게임 개발중에 이더리움과 같은 블록체인을 이용해서 아이템에 희소성을 부여하고 서로 거래하는 시스템을 구현하고 싶다는 생각이 들었다.
하지만 블록체인이라는 용어는 나에게는 너무 어렵게 느껴졌고, 최신 기술이라는 생각이 들어서 겁이났다. 그러던 중 학교 과목중에서 블록체인이 있다는 것을 알게 됐고, 배우게 되었다. 이번 블록체인 시리즈는 내가 학교수업중에 배운 내용들을 정리하게 될 것이다. 그리고 최종적으로는 내가 앞서 말했던 아이템 희소성 부여나, 코인을 이용한 거래까지 직접 게임에 녹여보는 것을 목표로 하고 있다.
암호화 기술로 보호되는 분산된 디지털 장부
기존 시스템에서는 하나의 DB가 있고 거기서 사용자들의 데이터를 관리하고 보호했다면, 블록체인이란 합의된 여러 컴퓨터들이 공통된 데이터를 가지고 있는 것이라고 생각하면 된다. 그렇기에 하나의 노드(컴퓨터)의 데이터가 변조가 된다고 해도, 연결되어있는 대다수의 데이터를 확인해 보안성을 강화한 것이다.
우리가 블록체인이라고 부르기 위해서는 핵심적인 5가지의 기술이 필수적으로 있어야 한다. 지금은 대략적으로 어떤 것들이 있는지 전체적으로 확인해보고 그 다음에 하나씩 설명하도록 하겠다.
중앙 권한 없이 네트워크 참여자들끼리 공동으로 운영하는것.
거래 정보를 기록한 원장을 특정 기관의 중앙화된 서버가 아니라 분산화된 네트워크의 참여자들이 기록 및 관리하는 것.
- 블록체인은 분산원장 기술을 사용하지만 모든 분산원장이 블록체인은 아니다.
여러 참여자가 거래 유효성 검증을 하는 것.
- 미리 약속된 규칙을 통해 거래의 유효성을 판단한다. -> 거래 유효성 검증 방식이 명확하게 정의되어있어야 한다.
- POW, POS, DPOS, PBFT 등이 있다. 각각 어떤 개념인지는 뒤에서 설명하겠다.
Hash함수등을 이용해 블록을 연결한다. 각 블록은 이전의 해시값을 가지고 있어, 변조되지 않았음을 증명하는데 사용한다.
- 대칭키, 공개키 암호화 기법을 사용해 데이터를 보호한다.
사람이 아니라 "코드"가 자동으로 계약을 실행하는 시스템
| DataBase | BlockChain | |
|---|---|---|
| 작동 방식 | CRUD | insert만 가능 |
| 통제 | 중앙화 | 탈중앙화 |
| 데이터 영속성 | 수정 가능 | 불변성 |
그렇다면 이러한 블록체인은 어떠한 구조로 되어있을까?

블록에 대한 정보와 메타데이터를 포함하고 있다. 블록체인의 연결성과 무결성을 보장하는 핵심 요소이다.
버전 : 블록 구조 정보
Mekle Root : 바디에 있는 트렌젝션의 해시를 머클 트리로 요약한 루트값
Nonce : Pow작업증명에서 해시를 만족시킨 값. -> 이 변수값을 찾는게 채굴임.
Difficulty Target (비트) : 블록 생성 난이도.
previous block hash : 이전 블록의 헤더를 해시한 값 -> 블록 연결에 필수적이다.
TimeStamp : 블록이 생성된 시간.
실제 데이터 = 트렌젝션이 저장되는 장소.
transaction lists : 해당 블록안에 들어있는 모든 트렌젝션들의 정보.
transaction count : 트렌젝션 개수.
각 트렌젝션은 송신자,수신자,금액,서명의 정보를 포함함 -> 머클트리로 요약된다.
블록체인은 우리가 생각하고 있는 퍼블릭한 것도 있지만, 사실 내부적으로 사용되는 경우도 있다. 그렇다면 블록체인의 유형에는 어떤게 있을까?
지금까지 대략적인 블록체인에 대해서 알아보았다. 뭐든 기초가 중요하기 때문에 블록체인의 특징과 특성에 대해서만 설명했다. 다음 시간에서는 앞서 설명한 블록체인의 핵심 요소들을 각각 정리하도록 하겠다.