1. 블록체인(blockchain)이란?
관리 대상 데이터를 '블록'이라고 하는 소규모 데이터들이 P2P 방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장환경에 저장되어 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기술 기반의 원장 관리 기술이다. 이는 근본적으로 분산 데이터 저장기술의 한 형태로, 지속적으로 변경되는 데이터를 모든 참여 노드에 기록한 변경 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가능하도록 고안되었다. 블록체인 기술은 비트코인을 비롯한 대부분의 암호화폐 거래에 사용된다. 암호화폐의 거래 과정은 탈중앙화 된 전자장부에 쓰이기 때문에 블록체인 소프트웨어를 실행하는 많은 사용자들의 각 컴퓨터에서 서버가 운영되어 중앙은행 없이 개인 간의 자유로운 거래가 가능하다. ( 출처 : Wikipedia)
2. 블록체인의 특장점
-
변경 불가능성(Immutability) : 각 트랜잭션(데이터)을 연속된 블록에 쌓아둔다. 이 블록들은 서로 의존 관계에 있어 지난 데이터의 일보를 변경하면 이후의 트랜잭션을 모두 *정합성*이 있는 형태로 변경할 필요가 있어서 사실상 변경이 불가능하다.
📌 데이터 '정합성' : 데이터 베이스의 데이터를 삽입/삭제/수정을 여러 명에서 작업을 하다 보면 데이터가 일치하지 않는 경우가 발생할 수 있다. 이 경우 정합성에 문제가 발생했다고 하며 간단한 의미로는 데이터가 정상적인지 비정상적인지 알아보는 것이다.
-
비잔틴 장애 허용(BFT) : 비잔틴 노드(악의적인 노트 또는 고장난 컴퓨터)가 일정 수 존재해도 블록체인은 정상적으로 동작한다.
-
단일 장애점 제거(SPOF) : 단일 지점이 동작하지 않으면 시스템 전체가 중단되는 요소로서 지금까지의 시스템에서는 마스터, 컨트롤러 및 인증국 등이 단일 장애 점이다. 블록체인에는 단일 장애점이 존재하지 않는다.
3. 블록체인의 원리
많이들 들어봤을 비트코인의 원리가 블록체인의 원리와 일맥상통하기 때문에 비트코인을 대상으로 설명하도록 하겠다.
1. 비트코인을 얻기 위해선?
우선 비트코인을 얻기 위해선 마이닝(mining)이라는 작업을 해야합니다. 마이닝(mining)은 우리말로 채굴이라는 뜻입니다. 금을 채굴 한다는 느낌으로 생각하시면 됩니다. 마이닝 작업을 통해 더 많은 사람들이 비트코인 네트워크에 속하게 되며, 네트워크는 더 활성화 될 수 있습니다. 네트워크에 많은 노드들이 활동 할 수록 더 안전한 거래를 보장 받을 수 있습니다. 아직은 잘 감이 안 오실 겁니다...
마이닝을 하기 위해서 비트코인 프로그램을 돌려야합니다.
비트코인 프로그램은 SW로 비트코인을 생성하거나, 비트코인을 다른사람과 주고 받을 수 있는 기능을 탑재하고 있습니다. 비트코인은 Napster, BitTorrent 같이 PC에서 사용하눈 P2P SW입니다.
즉 P2P기반을 한 SW프로그램위에서 통용되는 화폐가 비트코인인 것이지요...
또한 비트코인 SW프로그램은 OpenSource이기 때문에 Github 저장소에 올려져 있고, 다양한 OS를 지원하는 Application Framework인 Qt framework로 GUI를 구현해 Window OS,linux, OS X에서 프로그램을 구동할 수 있습니다. -Naver D2 발췌-
비트코인SW프로그램에선 10분단위로 한번씩 일정량의 비트코인이 생성되는데, 마이닝 즉 채굴에 참여한 사용자 중 한명에게 지급됩니다. 마이닝작업은 수학적인 해쉬문제를 푸는 것을 뜻합니다.
즉 hashcash라는 문제를 풀어, 특정한 조건을 가지는 해시 값을 찾는 마이너들 중 한 명을 선택해 비트코인을 분배하는 것입니다. 또는 가장 먼저 해시 값을 찾은 마이너에게 보상으로 지급됩니다.
2. 블록체인의 위조방지
블록체인의 위조방지에 중요한 컨셉은 hashcash문제를 결코 쉽게 내지 않는다는 것입니다. 그 이윤 해시 값을 찾는데 오랜시간이 소요될 수록 현재 블록체인에 연결된 즉 비트코인 네트워크에 접속 되어있는 시간이 늘어나게 하기 위함입니다.
그 이윤 이렇게 수 많은 노드(PC)들이 네트워크에 잔류하면 할 수록 블록체인을 위조하여 데이터 왜곡을 할 가능성이 현저히 줄어들기 때문입니다. 즉 과반수의 노드들에게 위조된 블록을 검증받기 힘들며 과반수 노드들이 소유하고 있는 거래장부를 전부다 조작하기란 엄청난 연산이 필요하기 때문입니다..
다시 말해 3명을 설득하는 것보다 100000명을 설득해 나의 위조된 블록을 속이기란 현실적으로 불가능한 일이기 때문이죠. 하지만 만약 현존하는 슈퍼컴퓨터가 모든 노드에 있는 거래 장부를 조작한다면 되지 않을까 생각할 수 있습니다. 하지만..네트워크에 연결되어있는 노드들의 연산을 합친 연산속도가 슈퍼컴퓨터의 연산속도를 압도하기 때문에 이 또한 조작하기란 불가능합니다.
결국 많은 노드들을 오랜시간동안 비트코인 네트워크에 잔류시켜 조작과 위조를 쉽게 하지 못하도록 막는 것입니다. 이것이 hashcash 문제를 어렵게 내는 이유입니다. . 참고로 hashcash 문제의 난이도는 블록체인이 사용되는 곳마다 다릅니다.
비트코인에 경우 항상 hashcash문제 해결 시간을 10분으로 맞추기 위해 난이도가 조절됩니다.
또한 새로 만든 블록은 앞서 만든 블록 체인 뒤에 덧붙고, 이런 과정을 일정 간격으로 반복되기 때문에 조작하는 것도 많은 시간이 소요됩니다. 예를들어 만약 순서대로 Block-1, Block-2, Block-3 이라는 블록이 생성되었다면, 최근에 생긴 Block-3의 정보는 Block-2이 가지고 있고 Block-2의 정보는 Block-1이 가지고있기 때문에.. 만약 10000개의 블록으로 이루어진 블록체인을 조작하기 위해선 10000개의 블록을 전부 수정해야 합니다.. 이 뿐만 아니라 10000개의 블록을 조작하는 사이 10분간격으로 새로운 블록이 생성되고 체인과 연결되기 때문에 추가적으로 조작해야할 블록은 다시 수만개가 생성될 것입니다.
따라서 네트워크에 마이닝을 하는 노드가 많을 수록, 네트워크가 활성화 되면 될 수록 조작은 어려워지고, 보안은 강화되며 신뢰는 상승하는 효과를 내는 것입니다. 저는 이것이 마치 흩어지면 모르고 뭉치면 아는 '집단 지성'과 같은 효과라고 생각됩니다.
[참고자료]
https://ko.wikipedia.org/wiki/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8
https://bitflyer.com/ko-jp/miyabi-blockchain
'TREND' 카테고리의 다른 글
FIN TECH - 핀 테크 (1) | 2019.11.22 |
---|---|
머신러닝 (2) | 2019.11.12 |
[ IT TREND / 신기술 동향 ] Cloud Computing - 클라우드 컴퓨팅의 모든 것 (2) | 2019.11.07 |
[ IT TREND / 신기술 동향 ] IoT - 사물 인터넷의 모든 것 (2) | 2019.11.07 |