2024. 1. 23. 11:27ㆍ블록체인/블록체인 기초
블록
블록체인(Blockchain)이라는 이름에서 알 수 있듯이, 블록체인은 다수의 블록들의 체인 형태의 연결로 이루어져 있다. 이 하나하나의 블록들은 데이터를 담고 있다.
그렇다면 블록 체인은 위 그림과 같이 나타낼 수 있을 것이다. 각각의 블록들이 담고 있는 데이터는 무엇이 있는가. 자신의 블록 번호와(최초로 만들어진 블록의 번호는 1이다), 자신이 만들어진 시간을 나타내는 타임스탬프(Time Stamp), 자신 이전 블록의 해시(Hash) 값, 자신의 해시값, 논스(Nonce), 데이터가 담겨 있는 바디(body)로 이루어져 있다.
블록이 담고 있는 데이터는 크게 헤더와 바디로 나눌 수 있다. 헤더에는 앞서 말한 해시값들과 타임스탬프, 논스가 담겨있고, 바디에 실제로 유의미한 데이터들이 들어간다. 이렇게 듣고 나면 굉장히 어렵게 느껴지지만, 각 요소들을 하나하나 뜯어서 이해하면 그리 어렵지 않다.
헤더
헤더의 요소 중 직관적으로 바로 알 수 있는 건, 블록의 번호다. 블록의 번호는 말 그대로 이 블록이 몇 번째로 만들어진 블록인지를 나타낸다. 이 중에서 블록 번호가 1인, 최초로 생성된 블록을 제네시스 블록(Genesis Block)이라 한다.
타임스탬프는 이 블록이 언제 생성되었는지를 나타내는 데이터다. 이때 우리가 흔히 보는 1994:11:28처럼 적히지는 않고, 유닉스 타임스탬프(Unix Time Stamp)라는 걸 이용한다. 우리가 평소 알고 있던 시간을, 유닉스 시간으로 바꾸어보려면 이곳에서 시도해 보면 된다.
블록에는 블록 번호라던지, 타임스탬프, 논스, 바디의 데이터와 같이 여러 데이터가 존재한다. 이러한 블록의 데이터들을 SHA256이라고 하는 해시 함수에 입력하게 되면, 해당 블록의 해시값을 얻을 수 있게 된다(직접 테스트해보고 싶다면 이곳에서 테스트할 수 있다)
이렇게 얻은 해시값은 특이한 특성이 있는데, 어떤 데이터에서 해시 값을 구하는 건 무척이나 쉽지만, 해시 값에서 원본 데이터를 추출하는 것은 거의 불가능하다는 특성이 있다. 그리고 입력 데이터의 아주 작은 값만 바뀌어도, 해쉬값은 급격히 변하는 특성이 있다. 이것을 눈사태 효과(Avalanche Effect)라 한다.
이전 블록 해시값(Previous Block Hash)은 말 그대로 이전 블록의 해시값이다. 각 블록들은 이전 블록의 해시값을 자신의 데이터로 가지고 있는다. 이를 통해서 자신보다 앞의 블록의 해시값이 갑자기 바뀌거나 하면, 임의의 수정이나 오류가 일어났음을 바로 알 수 있다. 이전 블록 해시값은 블록 간 암호화 링크를 활성화시키는 방법이며, 이것이 있어야만 블록체인이 될 수 있다. 앞서 설명했던 최초의 블록인 제네시스 블록의 경우 이전 블록이라는 게 존재할 수 없다. 따라서, 이전 블록의 해시값으로 0을 입력한다.
마지막으로 논스(Nonce)는 단어 자체가 Number used only once의 약자인데, 해시값을 변경하는 용도로 사용하는 임의의 숫자이다. 블록 번호도, 이전 해시값도, 바디의 데이터도 모두 정해져 있다고 봐야 하니, 현재 블록의 해시값을 바꿀 수 있는 요소는 바로 이 논스와 타임스탬프뿐이다.
비트코인의 채굴 과정에 대하여 다른 글에서 훨씬 더 상세하게 다룰 예정이나 지금 간단히 설명하자면, 특정한 값 이하의 해시값이 나오는 논스 값을 찾는 과정이 채굴이다. 다시 말해서, 조건에 부합하는 적절한 논스값을 찾는 과정이 바로 채굴이다. 따라서, 채굴에서 가장 중요한 사항이라 할 수 있다.
'블록체인 > 블록체인 기초' 카테고리의 다른 글
블록체인 - 6. UTXO (Unspent Transaction Output) (0) | 2024.02.22 |
---|---|
블록체인 - 5. 채굴 (Mining), 작업 증명 (PoW, Proof of Work) (1) | 2024.02.15 |
블록체인 - 4. 분산 P2P 네트워크 (Distributed Peer-to-Peer Network) (0) | 2024.01.24 |
블록체인 - 3. 불변 원장 (Immutable Ledger) (1) | 2024.01.23 |
블록체인 - 2. 해시 함수 (Hash Function), SHA256 (0) | 2024.01.23 |