안녕하세요.
Hynn 입니다.
이번 포스팅에서는 이제 학습을 시작하게 될, Block-Chain 에 대한 기초 사항을 학습하고, 개념이 어떠한 것인지, 중요한 키워드에 대한 위주로 알아보도록 하겠습니다.
이후에 Bitcoin 과 Etherium의 대한 특징들을 통해서, 추가적으로 중요 용어가 어떠한 개념으로 접근되는지에 대해서도 알아보도록 하겠습니다.
===========
===========
1. Block-Chain 이란?
블록체인, 즉 Block-Chain 이라는 단어를 이해하기 위해서는 몇가지를 이해해야 할 필요가 있습니다.
먼저, 블록체인에서 가장 작은 데이터의 단위는 "Transaction", 즉 트랜잭션입니다. 이 트랜잭션은 블록체인에서 사용하는 대표적인 데이터 단위인 "Block", 즉, 블록 안에 포함되는 것이고, 이 트랜잭션안에는 블록체인 네트워크 상에서 발생하는 거래, 작업을 표현하는 가장 작은 단위입니다. 즉, 이런 여러개의 트랜잭션이 담겨진 대표적인 데이터 단위인 블록에 포함되는 가장 작은 데이터 단위입니다.
하지만 트랜잭션이 여러개 모인다고 해서, 이 모임이, 블록이라고 불리지 않습니다.
Block 데이터 단위에는 여러개의 트랜잭션 뿐 아니라, Block-Hash, Previous-Block-Hash, TimeStamp, Nonce 라는 4개의 구성요소가 포함되어야, 하나의 블록으로 분류하도록 되어 있습니다.
이 4개의 요소를 포함하면 이제 블록체인 구성에서 하나의 블록으로 구성요소가 이루어집니다.
각 구성요소에 대한 정의는 아래와 같이 구성할 수 있습니다.
아래 4개의 구성요소는 Block 이라는 데이터 단위에서 "Meta-Data", 즉 Header 와 유사한 역활로 이해하시면 되겠습니다.
명칭 | 설명 |
Block-Hash | 현재 Block의 Hash를 뜻합니다. 이 해시는 블록 데이터의 고유한 식별자로, 블록의 모든 정보에 기반하여 생성된 암호화된 Hash 입니다. 일반적으로 블록체인 네트워크에서는 SHA-256 암호화 해시 함수를 사용하여 계산합니다. |
Prev.Block-Hash | 현재 Block의 Hash와 더블어, 바로 이전 Block 의 Hash 를 뜻합니다. 이 해시는 현재 블록의 바로 이전 블록의 고유한 식별자로, 위와 같은 원리로 생성된 암호화된 Hash 입니다. |
Nonce | 난수 값으로, 블록 생성과정에서 "합의 알고리즘(Consensus Algorithm)" 에서 사용됩니다. 이 논스 값은, 블록 해시 값을 특정 조건에 맞게 조절할 때 사용합니다. 이 값을 이용해 블록체인 네트워크에서 합의가 이루어집니다. |
Timestamp | 블록이 생성된 시간을 나타냅니다. 암호화 된 값은 아니지만, 이 값을 통해 블록이 언제 생성되었는지 추적하고 블록의 해시 값을 계산하는데 사용되기 때문에, 데이터의 무결성에 영향을 줍니다. |
이제 블록이라는 하나의 데이터 단위를 그림으로 표현하면 아래와 같이 구성됩니다.
조금 더 보기 쉽게, JavaScript 를 사용하여 데이터로 표현하면 아래와 같이 표현도 가능합니다.
const block = {
prevBlockHash: '이전 블록 해시',
blockHash: '현재 블록 해시',
nonce: '난수 값',
timeStamp: '블록 생성 시간',
transactions: [
{ transaction1: '트랜잭션1 정보' },
{ transaction2: '트랜잭션2 정보' },
{ transaction3: '트랜잭션3 정보' },
// ... 기타 트랜잭션
]
};
여기서 블록을 처리하는 과정은 아래와 같이 이루어집니다.
일반적으로 Block 은 항상 이전 블록 해시를 가지고 있습니다. 하지만 이러한 이전 블록 해시가 없거나, 특정한 값으로 처리되어 있는 블록을 "Genesys Block", 제네시스 블록이라고 표현합니다.
이 블록은 쉽게 설명하여, "최초"로 생성된 Block 입니다. 일반적으로 블록체인 네트워크에서 최초 생성된 Block 은 해당 Block-Chain 네트워크를 개발한 개발자의 Block 일 것입니다. 네트워크에 따라서 이러한 제네시스 블록에는 이전 블록 해시가 "0"으로 표현되거나, Bitcoin 의 경우 "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f" 으로 표현하고 있습니다.
이러한 특별한 첫번째 생성 블록이 아니라면, 모든 블록에는 이전 블록 해시값이 포함됩니다.
이제 이러한 블록을 여러개 가지고 있는 한명의 Client, 일반적으로 PC 라고 가정해보겠습니다.
이러한 PC 하나하나를 "Node", 노드라고 표현합니다.
그럼 이제 이러한 노드간 연결은 기존의 네트워크 처럼 중앙서버가 아니라, 노드간 직접 연결됩니다. 이 직접 연결의 방식을 Peer-to-Peer, 즉 P2P 라고 하는, 20~30대라면 한번쯤은 사용해보았을, 토렌트, 파일구리, 프루나와 같은 연결방식입니다. 즉 중앙서버를 거치지 않고, Node 대 Node 가 연결하여 서로 가지고 있는 블록이 올바른 블록인지를 검증합니다.
주요 검증단계는 아래의 검증 단계를 거칩니다.
- 블록 구조 검증
- 이전 블록 해시 검증
- 작업증명 검증
- 트랜잭션 검증
- 합의 알고리즘 검증
이러한 검증단계를 걸쳐 검증이 완료된 노드들이 서로 블록을 교차검증하고, 동기화합니다. 이러한 노드들이 점대 점으로 연결되어 체인이 형성되고 이를 Block-Chain 이라고 합니다. 또한 노드들로 구성된 네트워크를 Block-Chain network 라고 하게 되는 것이기도 합니다.
2. Block-Chain 검증 단계
블록체인에서 중요한 단계 중 하나인 검증단계는 위에서 간략하게 설명했듯이, 5개의 단계로 구성이 되어 있습니다.
이 단계를 하나하나씩 살펴보고, 어떠한 과정들을 거치는지 알아보도록 하겠습니다.
1) 블록 구조 검증
블록 구조 검증은 노드 간 소유하고 있는 블록이 일치하는지를 먼저 확인하는 검증 과정입니다.
현재 블록은 이미 SHA-256 을 사용해 Hash(암호화)가 이루어져 있습니다.
그렇다면, 암호화 된 값은 모두 일치할 것입니다.
즉 아래의 두개의 Block 이 있다고 가정해보도록 하겠습니다.
위 블록은 같은 구성요소를 가지고 있습니다.
당연히 위에서 정의한대로, 구성요소가 같기때문에 검증에 통과할 것입니다.
하지만 아래와 같은 형태라면 어떨까요?
위의 예시에서는 블록의 구성요소는 같지만, 값이 다른 블록입니다. 이 경우에는 어떻게 될까요?
당연히 구성요소의 값이 다르기 때문에 1단계에서 검증에 실패한다고 생각할 수 있습니다.
하지만 1단계를 정의하는 "블록 구조 검증" 은 값 자체보다, 블록이 구성된 구성요소가 일치하는지만을 체크합니다.
즉 이러한 값만 다르고, 구성요소가 일치하면, 1번째 검증은 통과가 됩니다.
하지만 이제 두번째 검증부터는 이러한 값을 검사하도록 되어 있습니다.
바로 두번째 검증은 "이전 블록 해시 검증" 입니다.
2) 이전 블록 해시 검증
이전 블록 해시 검증은, 비교적간단하지만 확실한 검증 단계를 거칩니다. 각각의 블록은 당연히 이전 블록의 해시 값이 일치할 것입니다.
하지만 이 값이 일치하지 않는다면, 여기서부터는 추가적인 검증이 필요할 것입니다. 이러한 검증 단계를 바로 작업증명&지분증명 이라고 하는 PoW(작업증명) & PoS(지분증명) 이라는 합의 알고리즘 절차를 수행합니다. 이 것이 바로 3번째 검증 단계이기도 합니다.
3) 작업증명(지분증명) 검증
작업증명 검증은, 이전 단계에서 간략하게 언급한 PoW, PoS 외에도 다른 합의 알고리즘이 존재할 수 있습니다.
하지만 이 두개의 방식은 각각 비트코인, 이더리움과 같은 대표적인 가상화폐, 즉 블록체인 네트워크에서 채택하고 있는 합의 알고리즘이기 때문에 두가지에 대한 설명을 간략하게 해보도록 하겠습니다.
먼저, 비트코인을 대표로 하는 작업증명(Proof of Work) 방식에 대한 과정을 알아보도록 하겠습니다.
이 과정은 아래와 같은 단계로 구성되며, 이 단계를 통과해야 검증이 완료됩니다.
- 먼저 A와 B 노드에서 각자의 블록에 대한 검증을 시작합니다. 당연히 1,2번의 검증과정을 거쳤을 것입니다.
- 만약에 A와 B노드에서 각자 소유하고 있는 블록이 일치할 경우, 자신들의 블록이 검증과정이 통과될 것입니다.
- 하지만 일치하지 않을 경우, 노드들은 블록체인 네트워크에서 이 블록을 검증할 것입니다.
- 이제 블록체인 네트워크에서 다른 노드들이 소유하고 있는 블록에서 동일한 블록을 확인합니다. 이제 두개의 다른 블록 중 어떠한 블록이 더 일치하는 것이 많은지를 확인합니다. 같은 블록이 많을 수록, 이 검증과정에서는 어떠한 블록이 더 많은 노드에서 일치하는지를 파악합니다. 이 것이 더 많을 수록 블록이 더 "길다" 라는 표현을 사용하여 판단합니다.
- 만약 A가 B보다 더 "긴" 블록일 경우, 블록체인 네트워크에서 B는 올바르지 않은 블록이라고 판단하여, B를 소유한 모든 노드에서는 A로 블록을 "업데이트" 하게 됩니다.
바로 위 과정을 작업증명이라고 합니다.
하지만 위 내용만을 살펴보면 분명히 취약한 부분이 있다고 생각이 드실겁니다.
바로 A-B 노드를 인위적으로 조작하여, 일치하는 검증을 반복적으로 일으켜 노드의 길이를 증가시키고, 이를 통해 위조된 블록이 올바른 블록이라는 결과를 내도록 하는 시나리오가 가능합니다.
이를 바로 Block-Chain 에서는 51% 공격이라고 불리우는 시나리오 입니다.
하지만 이는 이론적으로는 충분히 가능한 시나리오이지만, 실제로 운영되고 있는 대규모 블록체인 네트워크에서는 현실적으로 구현하기 매우 어려운 시나리오 입니다.
이러한 시나리오를 실현하기 위해서는 먼저 공격자가 필요한 해시파워인 51%를 달성하기 위해 막대한 리소스를 투입해야 합니다. 가령 예를 들어 현재 비트코인과 같은 대규모 블록체인 네트워크에서는 셀수도 없을 만큼 많은 단위의 블록이 존재합니다.
하지만 이러한 공격을 성공적으로 수행하기 위해서는 1억개의 블록이라고 가정했을 때, 적어도 5100만의 블록을 위변조 해야 합니다. 이는 현재의 컴퓨팅 리소스로는 현실적으로 처리하기에는 매우 막대하고, 자원적으로 낭비적이기도 합니다.
또한 이러한 조작을 시간에 걸쳐서 한다고 하더라도, 이러한 조작이 계속되면, 블록체인의 가치가 급격하게 하락함으로서, 이러한 블록체인 공격자가 원하는 "가치" 측면에서 급격하게 하락하고, 이는 결과적으로 실익이 없는 공격이기도 합니다.
하지만 이러한 시나리오가 있다는 것에서도, 블록체인 역시 아직 풀어야 할 숙제가 남아 있는 것이기도 합니다.
당연히 이러한 시나리오의 대한 대안으로 이더리움이 최근에 2.0 으로 업데이트 되면서 합의 알고리즘이 기존에 PoW 의 대안으로 제시된 합의 알고리즘 방식입니다. 이 방식에 대해서도 간단하게 알아보도록 하겠습니다.
이 지분증명이라고 하는 PoW 방식은 이더리움에서 2.0으로 업데이트 하면서 2022년에 수행한 새로운 합의 알고리즘입니다. 이더리움 역시 기존에는 PoW를 사용했지만, 이러한 위험성을 극복하고, 효율적인 컴퓨팅 자원을 사용하기 위해 개발되었습니다.
즉, 이 PoS는 기존의 PoW 방식에서 위험성으로 대두되었던 51% 시나리오의 핵심은, 높은 컴퓨팅파워를 가진 사용자가 악의적으로 공격을 시도하려고 할 때, 위험을 갖게 되지만, PoS 방식은 이러한 시나리오의 특징을 역이용하여, 보다 효율적인 합의 알고리즘을 만든 것으로 이해하시면 될 거 같습니다.
먼저 PoS 방식의 경우, 아래와 같은 단계를 거칩니다.
- 검증을 수행하는 참여자를 등록해야 합니다. 이 참여자들은 자신의 토큰을 잠급니다.(Stake) 이 과정을 거쳐야만 검증자로 등록이 가능하고, 네트워크에 참여할 의사를 표해야 합니다. 당연히 이 검증자로 등록하기 위해서는 일정량 이상의 토큰을 소유해야 합니다. 현재 이 PoS 방식을 사용하는 이더리움2.0 의 경우 최소 32ETH 를 소유한 참여자만 검증자로 등록이 가능합니다.
- 만약 A와 B가 다른 블록으로 검증이 필요한 경우, 검증자가 블록체인 네트워크에서 1번에서 언급한 등록된 검증자들 중 무작위로 선택됩니다.
- 무작위로 선택된 검증자가, 서로 다른 블록을 검토하고, 어떠한 블록이 올바른지를 1차로 검증합니다.
- 검증된 블록을 바탕으로 검증자가 등록된 참여자들에게 유효한 블록을 제시합니다. 이 때 참여자들은 노드의 "길이"가 아니라 "지분"을 바탕으로 승인을 결정합니다.
- 검증이 승인되면, 승인된 블록이 유효하고, 유효하지 않은 블록은 "무시"됩니다.
- 만약 검증이 승인되지 않을 경우, 다른 검증자가 무작위로 선정되어, 다시금 위의 과정을 거칩니다.
이 과정에서 유효하지 않은 블록이 "무시"가 되면, 이 블록은 삭제가 되거나, 업데이트가 되지 않습니다. 무시가 된 블록은 더 이상 블록체인 네트워크에서 사용되지 않고, 더 이상 체인의 길이가 늘어나지 않을 뿐 더러, 체인에서 제외됨으로서, 사실상 가치가 없을 것입니다.
물론 ETH2.0에서 사용하는 PoS 의 경우, 지분율을 강제로 높임으로써 51% 시나리오가 가능하다고 생각할 수도 있겠지만, 위에서 언급한 "무시"의 개념과, 지분율이 높은 사용자가 이러한 공격을 시도한 흔적이 발생될 경우, 검증자들은 추가적으로 공격자를 블록체인 네트워크에서 강제로 "제거"하고 Staking(잠금)된 코인을 파괴하기로 결정할 수도 있습니다.
즉 이러한 공격을 시도하더라도, 강력한 경제적 방어수단을 구축함으로서 PoW 에서 불안요소로 말하는 51% 시나리오를 차단하는 효과를 가진다고 할 수 있습니다.
이 작업증명 & 지분증명에 대한 상세 설명을 더 알고 싶으신 분들을 위해 Etherium 공식 문서를 아래의 링크로 제공해드리겠습니다.
만약 필요하시다면 아래의 링크에서 원문을 읽어보시면 조금 더 이해가 쉬울 것으로 생각됩니다.
이제 다음 검증 단계로 넘어가보도록 합시다.
4) 트랜잭션 검증
이제 PoW, PoS 검증이 완료되면 실제 트랜잭션에 대한 검증을 수행합니다.
이 트랜잭션에 대한 검증은 크게 4개의 단계를 거치게 됩니다.
- 서명 검증
- 이중 지급 방지
- 잔액 확인
- 트랜잭션 형식 검증
- 스마트 컨트랙트 실행(이더리움에 해당)
- 머클트리 검증
먼저 각각의 단계에 대한 이해가 필요합니다.
먼저 서명검증은 말 그대로, 발신자의 공개키와 서명을 이용하여 발신자가 해당 트랜잭션을 승인한 것을 확인하는 검증을 거칩니다.
여기서 말하는 공개키의 경우에는 일반적으로 공개된 키이므로, 보안요소라고 볼수는 없습니다. 현재의 금융거래에 빗대어 본다면, 자신의 계좌번호 정도가 될 것입니다. 하지만 여기서 말하는 서명이 바로 Personal-Key, 즉 비밀번호와 같은 자신만이 알 수 있는 비밀 키입니다.
여기서도 디지털 서명 알고리즘이 적용됩니다. 비트코인의 경우, 공개키(Public-Key)와 서명(Personal-Key) 을 사용하여 트랜잭션이 서명되었음을 확인합니다. 일반적으로 디지털 서명 알고리즘을 사용하여 검증을 하는데 , 대표적으로 비트코인/이더리움의 경우 ECDSA 라는 알고리즘을 사용합니다.
그리고 난 뒤, 이중 지급 방지 & 잔액 확인 절차를 거칩니다.
당연하게도, 이러한 점은 작업/거래에서 이중처리는 매우 위험한 데이터 처리가 될 수 있기 때문에, 이전 트랜잭션을 참조하여, 트랜잭션에서 사용된 코인이 이미 사용되었는지를 검증하고, 현재 발신자의 잔액이 충분한지를 검증하는 절차를 거칩니다.
그리고 난 뒤, 트랜잭션의 형식이 올바른지에 대한 검증을 거쳐야 합니다. 이 검증에는 트랜잭션의 데이터 구조와 형식이 올바른지를 확인합니다. 마치 첫번째의 검증절차처럼, 트랜잭션의 구조와 형식이 올바른지를 확인합니다.
형식의 대한 검증이 이루어졌다면, 당연히 트랜잭션의 값의 대한 검증도 이루어져야 합니다. 이를 머클트리 검증이라고 하는데, 머클 트리는 아래의 그림을 참조하면 보다 쉽게 이해가 가능합니다.
블록 내에는 여러개의 트랜잭션이 존재합니다. 이는 트리형태의 자료구조 형태를 띄고 있습니다.
아래의 그림을 참조해보겠습니다.
위의 사진이 현재 트랜잭션이 블록 내에서 자료구조 상 트리형태의 구조로 되어 있는 모습을 형상화 한 그림입니다.
여기서 머클트리를 이해하려면 3가지의 키워드에 대해서 알 필요가 있습니다.
먼저 가장 하위의 4개의 블록의 해시 값이 생성됩니다. 당연히 해싱된 암호환 값이 되겠습니다.
이렇게 되면, 이제 2개의 개별적 블록의 해싱된 값을 상위 트리에서 값을 결합한 뒤, 다시 이 결합한 값을 해싱합니다.
이렇게 단계를 반복하면, 가장 상위의 트리로 이동합니다. 이 트리에서 가장 상위에 있는 트리는, Root-Merkle-Tree 라고 부릅니다.
바로 이 Root-Merkle-Tree 의 값이 헤더에 블록 헤더에 저장됩니다.
이 머클트리 구조를 이용해 각 트랜잭션 데이터의 무결성을 검증하는데, 사용됩니다. 당연히 이러한 값들은 미세한 변화에도 암호화 값이 크게 변경되기 때문에, 데이터의 대한 무결성을 검증할 수 있습니다.
이러한 과정을 모두 거치게 되면, 트랜잭션 검증이 마무리 됩니다.
5) 합의 알고리즘 검증
이제 마지막으로 합의 알고리즘에 의한 검증을 수행하므로서 검증 절차가 마무리됩니다.
이 검증은 일반적으로 이미 있는 블록이 올바른 블록인지를 검증할때는 수행되지 않지만, 새로운 블록을 생성할 때 수행되는 검증 프로세스 입니다. 즉, 새로운 블록을 생성할 때만 수행하는 검증이 바로 "합의 알고리즘" 검증입니다.
여기서 비트코인과 이더리움으로 대표되는 PoW, PoS 에 따른 합의 알고리즘 절차가 구현됩니다.
각각의 단계는 아래와 같습니다.
PoW(Proof-of-Work)
- 블록 구조를 올바르게 검증했는지 확인합니다.
- 이전 블록의 해시를 올바르게 등록했는지 확인합니다.
- 작업 증명의 결과가 올바른지 확인합니다.
- 트랜잭션이 유효한지 확인합니다.
- 디지털 서명이 올바르게 검증되었는지 확인합니다.
- 블록을 생성하기로 한 노드가 유효한 블록을 생성하면, 다른 노드들은 블록을 생성하기 위해 수행한 작업의 결과물이 맞는지를 검증하고, 검증이 완료되면, 이를 블록체인에 추가합니다.
PoS(Proof-of-Stake)
- 블록 구조를 올바르게 검증했는지 확인합니다.
- 이전 블록의 해시를 올바르게 등록했는지 확인합니다.
- 트랜잭션이 유효한지 확인합니다.
- 디지털 서명이 올바르게 검증되었는지 확인합니다.
- 새로운 블록을 생성할 수 있는 노드가 지분을 가지고 있는지 검증합니다. 지분을 가지고 있는 노드가 생성에 성공하면, 이 블록은 유효한 블록으로서 블록체인에 추가됩니다.
여기서의 차이점은, PoW 는 작업 증명의 결과를 확인하지만, PoS의 경우 이를 수행하지 않고, 지분검증이 이를 대신 수행하는 것에 대한 차이가 존재합니다. 단 일반적으로 PoS 방식에서는 지분이 높은 노드일 수록, 생성확률이 높아집니다. 이는 PoS가 가지고 있는 고유한 특성입니다.
3. 기존의 처리 Logic & Block-Chain 의 처리 Logic
이제 위의 검증단계를 바탕으로, Block-Chain 의 핵심이기도 한 DLT(Distributed Ledger Technology) 에 대해서 알아보도록 하겠습니다.
블록체인의 경우, 현재 대부분의 포커스가 가상화폐에 초점이 맞추어져있다고 하나, 다양한 산업에서 사용되고 있습니다.
가령 예를 들면, 한국에서는 신세계, SSG 에서 사용하는 Block-Chain 기반의 NFT 명품 보증서를 제공하기도 합니다.
또한, 여러 환경중에서 물류 시스템, 혹은 보석 감정서등을 Block-Chain 기반의 인증서를 제공함으로서, 제품의 대한 신뢰도를 높이는데 사용하기도 합니다.
여기서 Block-Chain 의 핵심요소는 바로 "탈 중앙화" 입니다. 이를 이해한다면, DLT 에 대한 이해가 보다 쉽게 이해가 됩니다.
이 DLT의 핵심요소는 다음과 같은 특성을 가지고 있습니다.
- 데이터의 신뢰성
- 투명성
- 무결성
- 중앙집중화 제어를 제거
DLT 에서 가지고 있는 핵심 요소는 아래와 같습니다.
이미 위에서 다루었던 다양한 요소들을 이해하는 것이기 때문에 위의 설명된 사항을 이해하셨다면 크게 어렵지 않을 것으로 생각됩니다.
- 노드(Node) - 위에서 언급한 개개인의 PC(사용자) 입니다. 각 노드는 서로 P2P 방식으로 연결되어 있고, 데이터를 저장하고, 공유합니다. 또한 각 노드는 전체 원장의 사본을 보유합니다.
- 원장(Ledger) - 거래 및 데이터를 포함하는 기록의 모음입니다. 이 기록은 모든 노드가 서로 사본을 보유하고 있습니다.
- 합의 알고리즘(Consensus Algorithm) - 노드들이 원장의 일관성을 유지하고 새로운 거래를 검증하고, 승인하기 위해 사용됩니다. 이 알고리즘은 이미 위에서 PoW, PoS 에 대해 설명드린 부분이 있습니다.
- 암호화(Cryptograph) - 데이터의 무결성, 안정성 및 신원확인을 보장하기 위해 사용되는 암호학적 기법입니다.
유사하지만 다른 용어로 표현되어 있는 것이 두가지가 존재합니다. 바로 원장과, 암호화입니다.
원장의 경우, 위에서 언급한 블록체인 네트워크에서는 "블록"과 거의 유사한 형태를 지닙니다. 하지만 유사하지만 다른 차이점이 존재합니다.
일반적으로 블록은 노드들간에 검증에서 서로간의 데이터를 비교하지만, DLT 에서 말하는 원장은 각 노드들이 이러한 원장의 전체 사본을 소유하고, 이를 검증합니다. 즉 여기서 말하는 원장은 블록들의 체인형태의 구조를 뜻합니다.
물론 블록 대신 다른 형태로 처리하는 곳도 존재합니다. 가령 예를 들어 블록체인이 아닌 곳에서의 DLT 는 그래프 형태로 연결되어 그래프 형태의 데이터 구조를 갖는 경우도 있습니다.
반면, 암호화의 경우, 위에서 언급한 블록체인 네트워크에서는 공개키와, 개인키를 사용해 디지털 서명 알고리즘을 사용하지만, DLT 에서는 다양한 암호화 기법을 사용합니다. 즉 위에서 언급한 디지털 서명 알고리즘은 결과적으로 암호화 중 하나의 기법이기 때문에, DLT 에서는 보다 다양한 기법을 사용합니다.
이 DLT 기법에 대한 것을 "거래"를 예를 들면 아래와 같이 비교할 수 있습니다.
이를 가장 쉽게 이해하기 위해, 기존의 대표적인 중앙집중식 처리인 은행거래와, 탈중앙화가 적용된 거래를 예를 들어 보겠습니다.
기존의 은행 거래는 아래와 같은 단계를 거칩니다.
- 발신자는 자신의 계좌를 비밀번호를 사용해 접근합니다.
- 거래를 희망하는 대상자의 계좌번호를 입력합니다.
- 거래를 희망하는 금액을 입력 후 전송을 요청합니다.
- 전송을 요청받은 은행은 사용자의 요청이 유효한지를 파악합니다. 여기서 거래가 가능한 금액인지, 잔액을 확인하여, 유효한 거래를 판단한다.
- 유효한 거래라고 판단될 경우, 거래를 수행합니다.
- 수행과 동시에, 거래를 기록하고, 계좌의 잔액을 업데이트 합니다.
- 이제 상대방에게 거래 금액을 업데이트 하고, 수신자의 계좌의 잔액을 업데이트 합니다.
위의 단계가 기존의 은행거래 방식입니다. 요청과 수신이 중앙서버(중앙집중기관)인 은행의 서버에서 검증하고, 결정된 결과를 각 사용자들에게 통지하는 과정을 거칩니다.
하지만 DLT 를 사용하는 탈 중앙화 거래방식은 아래의 단계를 거칩니다.
- 발신자는 자신의 지갑(Wallet)에 비밀번호를 사용해 접근합니다.
- 거래를 희망하는 대상자의 지갑번호를 입력합니다.
- 거래를 희망하는 금액을 입력 후 전송을 요청합니다.
- 요청한 거래를 각 노드에 전파하여 거래를 검증합니다.
- 검증에 통과할 경우, 합의 알고리즘에 따라 원장에 거래 기록을 추가합니다.
- 거래가 원장에 추가되면서, 거래정보가 네트워크에 있는 모든 노드와 동기화되어 투명성을 보장합니다.
- 수신자 역시 거래에 대한 수신을 받습니다.
위와 같은 과정을 거침으로서, 탈 중앙화라는 관점에서 DLT 의 방식을 엿볼 수 있습니다. 이러한 개념을 이해한다면, 블록체인 네트워크를 보다 쉽게 이해할 수 있을 겁니다.
4. Block-Chain 의 중요 키워드
용어 | |
Block | 블록은 블록체인에서 가장 대표적인 데이터 단위입니다. |
Transaction | 트랜잭션은 블록체인에서 가장 작은 데이터 단위입니다. |
Consensus Algorithm | 블록체인 네트워크에서 합의 알고리즘은, 모든 노드가 동일한 데이터를 보유하는데 사용되는 규칙입니다. 합의 알고리즘은 PoW(Proof-of-Work), PoS(Proof-of-Stake) 와 같은 형태가 대표적으로 존재합니다. 합의 알고리즘을 통해 블록체인 네트워크에서는 블록 생성, 검증 및 보상 분배를 관리합니다. |
Proof-of-Work | 합의알고리즘 중 하나의 유형입니다. PoW 라고 하는 이 합의 알고리즘은 대표적으로 비트코인을 비롯한 많은 블록체인 네트워크에서 채택하고 있습니다. |
Proof-or-Stake | Etherium2.0 에서 도입된 새로운 합의 알고리즘입니다. 기존의 PoW 의 단점으로 제기된 부분을 개선한 새로운 합의 알고리즘입니다. |
Mining | 새로운 블록을 생성하고, 트랜잭션을 검증하고 합의를 이루는 과정을 마이닝이라고 합니다. 일반적으로 작업증명(PoW) 알고리즘을 사용하는 블록체인에서 마이닝이 수행됩니다. 이더리움의 경우 2.0 으로 업데이트 되면서 PoW가 아닌 PoS 를 채택하면서, Stake 를 한 등록자가 아니라면 새로운 블록을 생성하는데 제한이 존재합니다. |
Node | 블록체인 네트워크에서 노드는 블록체인의 전체나 일부 복사본을 저장하고 관리하는 컴퓨터 입니다. 노드는 트랜잭션과 블록을 검증하고, 합의 알고리즘에 참여할 뿐 아니라, 다른 노드와 데이터를 검증합니다. |
Full-Node | 일반적인 노드는 DLT가 아니라면, 모든 블록을 소유하고 있지는 않습니다. 반면에 Full-Node 는 모든 블록체인 네트워크의 모든 정보를 보유하고 있는 노드입니다. 이러한 풀 노드는 블록 체인 네트워크의 안전성을 높이는 역활을 수행합니다. |
Peer-to-Peer | 노드와 노드가 직접적으로 연결되는 상호작용을 뜻합니다. 중앙 집중식 서버를 거치지 않고 노드간의 직접 연결 후 데이터를 교환하며 통신하는 방식입니다. |
Smart-Contract | 이더리움에서 지원하는 계약으로, 자동으로 실행되며, 조건이 충족되면 결과를 생성하거나, 다른 스마트 컨트랙트와 상호 작용이 가능합니다. 이를 통해 중앙화된 제어 없이 신뢰성 있는 거래를 수행합니다. |
Digital Signatrue | 전자 서명 알고리즘을 사용하여 트랜잭션의 발신자가 이 트랜잭션에 권한이 있음을 증명하는 방법입니다. 발신자는 개인키를 사용하여 트랜잭션에 서명하고, 이를 트랜잭션에 첨부하여, 수신자가 발신자의 공개키를 사용하여 서명을 검증할 수 있습니다. |
Public Key | 암호화폐 주소를 생성하는데 사용하는 암호키입니다. 이름에서도 특정할 수 있듯이, 암호키지만 외부에 공개할 수 있는 정보입니다. |
Private Key | 공개키와 다르게 개인키는 암호화폐 지갑에 접근하고 트랜잭션에 서명할 수 있는 권한을 부여하는 암호키 입니다. 이는 외부에 절대 공개되서는 안되는 중요한 정보입니다. |
Wallet | 암호화폐를 보관, 송금 및 수신하는데 사용되는 디지털 도구입니다. 지갑은 여러개의 형태로 존재합니다. 1. Cold-Wallet 2. Software-Wallet 3. Hardware-Wallet 4. Hot-Wallet |
Hash-Function | 임의 길이의 데이터를 고정된 길이의 출력값으로 변환하는 수학적 함수입니다. 이러한 함수는 작은 변화에도 완전히 다른 값으로 출력하기 때문에, 데이터 조작을 방지하는데 효과적인 역활을 합니다. |
Merkle-Tree | 데이터 구조를 뜻하며, 트랜잭션 데이터를 저장하고 정리하는데 사용합니다. 트리의 각 노드는 아래쪽 노드의 해시값을 결합한 후 다시 해싱(Hashing) 하여 생성합니다. 머클 트리의 꼭대기에 존재하는 최종 해시 값은 머클 루트라고 하여, 블록 헤더에 저장됩니다. 즉 머클트리를 사용하면, 블록의 트랜잭션을 효율적으로 검증할 수 있습니다. |
Distributed Ledger Technology | 분산 원장 기술이라고 하는 이 DLT는 여러 참여자가 동시에 접근하고 관리할 수 있는 원장 또는 데이터베이스를 의미합니다. DLT는 중앙 집중식 서버가 없이도 데이터의 안정성과 무결성을 보장할 수 있습니다. 블록체인 역시 DLT의 대표적 형태 중 하나입니다. |
Ledger | 거래 및 데이터를 포함하는 기록의 모음입니다. 일반적으로 DLT에서의 기록은 모든 노드가 서로 사본을 보유하고 있습니다. |
Nonce | 블록체인에서의 논스는 마이닝 과정에서 사용되는 난수의 숫자를 뜻합니다. 마이닝 과정에서 사용되는 숫자이며, 마이너는 논스 값을 변경해가며, 블록의 해시 값이 난이도 목표보다 낮은 값을 갖도록 만듭니다. 적절한 논스 값을 찾으면, 블록이 유효한 것으로 간주되어, 블록체인에 추가됩니다. |
Coin | 블록체인 네트워크에서 사용되는 암호화폐의 기본 단위입니다. 코인은 거래를 위한 가치 저장 수단으로 사용되고, 블록체인 네트워크의 특성에 따라 다양한 목적과 기능을 수행합니다. |
Token | 토큰은 코인과 유사하지만, 특정 플랫폼 위에서 발행되고 사용되는 암호화폐의 단위입니다. 이 토큰은 특정 프로젝트 혹은 서비스에서만 사용되며, 일반적으로 기본 블록체인 플랫폼의 인프라를 활용하여 발행 및 관리됩니다. |
다음 포스팅에서 뵙도록 하겠습니다.
감사합니다.
'개발공부일지 > Block-Chain' 카테고리의 다른 글
Ethereum - 이더리움 네트워크 기반 DeFi 기본 구축 (0) | 2023.07.28 |
---|---|
Ethereum - Smart-Contract(2) : 기본 코드 작성하기 (0) | 2023.05.31 |
Ethereum - Smart-Contract(1) - 기본 구성 및 환경 이해하기 (0) | 2023.05.30 |
Block-Chain - Toy-Bitcoin 작성기 (0) | 2023.05.30 |
Block-Chain : 참고로 알아보는 Etherium vs Bitcoin (0) | 2023.04.17 |
댓글