"블록"의 두 판 사이의 차이
잔글 (→같이 보기) |
(→개요) |
||
3번째 줄: | 3번째 줄: | ||
==개요== | ==개요== | ||
− | 블록은 데이터를 저장하는 단위로, 바디(body)와 헤더(header)로 구분된다. 바디에는 거래 내용이, 헤더에는 머클해시(머클루트)나 넌스(nounce, 암호화와 관련되는 임의의 수) 등의 암호코드가 담겨 있다. 블록은 약 10분을 주기로 생성되며, 거래 기록을 끌어 모아 블록을 만들어 신뢰성을 검증하면서 이전 블록에 연결하여 블록체인 형태가 된다. 여기서 처음 시작된 블록을 제네시스 블록이라고 부른다. 즉, 제네시스 블록은 그 앞에 어떤 블록도 생성되지 않은 최초의 블록을 말한다. <ref> 〈[https://terms.naver.com/entry.nhn?docId=5569380&cid=43667&categoryId=43667 블록체인 관련용어]〉, 《네이버 지식백과》 </ref> 블록은 평균적으로 10분에 하나씩 생성이 된다. 민주적인 합의를 거쳐 블록이 생성된다. | + | 블록은 데이터를 저장하는 단위로, 바디(body)와 헤더(header)로 구분된다. 바디에는 거래 내용이, 헤더에는 머클해시(머클루트)나 넌스(nounce, 암호화와 관련되는 임의의 수) 등의 암호코드가 담겨 있다. 블록은 약 10분을 주기로 생성되며, 거래 기록을 끌어 모아 블록을 만들어 신뢰성을 검증하면서 이전 블록에 연결하여 블록체인 형태가 된다. 여기서 처음 시작된 블록을 제네시스 블록이라고 부른다. 즉, 제네시스 블록은 그 앞에 어떤 블록도 생성되지 않은 최초의 블록을 말한다. <ref> 〈[https://terms.naver.com/entry.nhn?docId=5569380&cid=43667&categoryId=43667 블록체인 관련용어]〉, 《네이버 지식백과》 </ref> 블록은 평균적으로 10분에 하나씩 생성이 된다. 민주적인 합의를 거쳐 블록이 생성된다. |
− | |||
==블록 생성과정== | ==블록 생성과정== |
2021년 11월 11일 (목) 19:53 판
블록(block)이란 다수의 트랜잭션을 모아서 하나로 관리하기 위한 묶음이다. 예를 들어, 비트코인의 경우 10분간 진행된 약 2,000건의 거래내역을 하나의 블록으로 묶어서 관리한다. 라이트코인의 경우 약 2분 30초 동안 진행된 거래내역을 하나의 블록으로 만들어 관리한다. 하나의 블록을 다음 블록과 이어주기 위해 해시를 이용하여 체인 구조를 만들 수 있다. 이처럼 다수의 트랜잭션을 블록으로 묶은 후 시간 순서에 따라 체인으로 엮은 것을 블록체인(blockchain)이라고 한다.
개요
블록은 데이터를 저장하는 단위로, 바디(body)와 헤더(header)로 구분된다. 바디에는 거래 내용이, 헤더에는 머클해시(머클루트)나 넌스(nounce, 암호화와 관련되는 임의의 수) 등의 암호코드가 담겨 있다. 블록은 약 10분을 주기로 생성되며, 거래 기록을 끌어 모아 블록을 만들어 신뢰성을 검증하면서 이전 블록에 연결하여 블록체인 형태가 된다. 여기서 처음 시작된 블록을 제네시스 블록이라고 부른다. 즉, 제네시스 블록은 그 앞에 어떤 블록도 생성되지 않은 최초의 블록을 말한다. [1] 블록은 평균적으로 10분에 하나씩 생성이 된다. 민주적인 합의를 거쳐 블록이 생성된다.
블록 생성과정
블록체인상에서의 장부 작성은 블록체인 네트워크에 참여하고 있는 사람들(이를 노드라고 한다)이 그 기록이 참인지 거짓인지 과반수의 동의를 얻어야 장부에 기록이 된다. 이 노드들은 전 세계적으로 분산되어있고 전세계를 아우르는 하나의 거대한 장부를 형성한다, 따라서 신뢰가 필요가 없이 합의를 통해서 기록이 작성된다. 블록 생성 합의과정은 하나의 노드가 하나의 투표권을 가지지 않는다. 가장 많고 가장 빨리 작업을 한 사람이 블록에 기록하고 블록을 생성할 수 있는 투표권을 더 많이 갖는다고 할 수 있다. 이것이 작업증명이라는 것인데 여기에서 작업이란 수학 문제를 푸는 것을 말한다. 다시말해 가장 빠르고 많은 수학문제를 푸는 사람이 블록을 생성할 수 있는 권한을 더많이 갖게된다. 그런데 이 수학문제는 사람의 머리로는 풀 수 없다. 고도의 연산능력을 갖춘 슈퍼컴퓨터가 계산할 수 있는 수학문제이다. 수학문제를 풀기 위해 해시라는 개념이 필요하다 문구가 조금만 달라져도 해시값이 전혀 달라지게 된다. 이는 거래내용을 해시값으로 저장하게 되면서 블록체인 장부의 보안에 큰 역할을 한다. 거래내용인 입력값이 어떤길이라도 똑같은 길이의 해시값이 나오게 된다. 만약 누가 이해시값을 조작하거나 만지게 된다면 다시 그해시값을 해시함수에 넣어보면 전혀 다른 해시값이 나오기 때문에 데이터 손상여부도 확인이 가능하고 이는 블록체인 기술 뿐만 아니라 공인인증서 패스워드 암호화, 디지털 인증서, 서명 등 여러 곳에서 사용되고 있다. 해시에 대한 개념 설명을 하는 이유는 수학문제를 풀어서 이 해시값을 형성하게 되기 때문이다. 수학문제는 nonce값이라는 숫자를 입력해 나오는 출력밧이 특정 숫자보다 작을때 작업을 증명했다고 하고 이떄의 해시값을 블록상에 기록한다. [2]
구성요소
블록은 크게 두가지로 구성되어 있다. 헤더, 바디로 구성되어 있다.
헤더
- 버전 version(4바이트) : 말 그대로 이 블록헤더의 버전이다(윈도우 7,8, 10과 같은). 현재 이 블록헤더를 만든 비트코인 프로그램의 버전 번호가 된다.
- 이전 블록해시 previousblockhash(32바이트) : 블록체인이 검증 가능한 체인이 되는 중요한 이유이다. 백서글(5)에서 설명했듯이 각 블록들은 이 이전 블록해시를 통해서 연결된다. 각 블록들이 이전 블록의 내용을 확인하고 저장하고 있으니 그 검증이 최초 블록(Genesis block)까지 이어지는 것이다. 블록 중 중간에 하나를 고치려면 그 뒤에 모든 블록을 고쳐야하므로 각 블록의 거래내역들은 변경할 수 없는 영원한 기록이 되는 것이다.
- 머클 루트 merkle root(32바이트) : 백서글(6)에서 설명한 머클트리의 루트 부분이다. 이 루트 부분이 SPV 노드를 가능하게 만들고 거래내역 검증을 쉽게 해준다.
- 타임스탬프 timestamp(4바이트) : 블록의 대략적인 생성 시간을 뜻한다.
- 난이도(해시 목표값) bits(4바이트) : 블럭 생성은 약 10분에 하나씩 만들어지는 것으로 블럭체인 네트워크에 설정되어 있다. 그러나 다른 중앙화된 시스템처럼 관리자 있는것이 아니므로 네트워크 안에서 이 시간이 조정되게 만들어져 있다. 그 시간을 조정하는 장치가 바로 이bits라고 불리는 난이도이다.
- Nonce(4바이트) : 논스는 블럭을 만드는 과정에서 적절한 해시값을 찾는 재료이다. 1씩 올려주면서 적절한 해시값을 찾게 해주는 재료가 된다. 작업증명 방식의 유일한 변수가 된다. [3]
바디
바디는 많은거래 내역이 들어간다. 거래내역의 크기에 따라 블록 하나에 들어가는 거래내역의 수도 달라진다. 바디에는 머클트리를 따로 저장하지 않는다. 바디에는 INPUT , OUTPUT같은 거래 그 자체만 들어 있다.
특징
블록은 유효한 거래 정보의 묶음이다.“A가 B에게 100원을 송금한다.”와 같은 것이 하나의 거래이며, 하나의 블록에는 여러 개의 거래가 포함된다. 블록에 대해 더 구체적으로 이해하려면 실제 구현체를 살펴보는 것이 효율적이다. 그래서 블록 체인의 최초 구현체인 비트코인을 기준으로 블록과 블록 체인에 대해 살펴볼 것이다. 구현체마다 세부적인 방식은 다를 수도 있지만 큰 줄기는 거의 같다. 비트코인의 블록 하나에는 평균 약 1,800개의 거래 정보가 포함될 수 있으며, 블록 하나의 물리적인 크기는 평균 0.98Mbyte이다. [4]블록은 블록 헤더와 거래 정보, 기타 정보로 구성된다. 블록 헤더는 version, previousblockhash, merklehash, time, bits, nonce 이렇게 6개의 정보로 구성된다. 거래 정보는 입출금과 관련한 여러가지 정보를 가지고 있다. 기타 정보는 블록 내에 있는 정보 중에서 블록 헤더와 거래 정보에 해당하지 않는 정보를 말하며, 블록 해쉬 계산에 사용되지 않는다. 이 중에서 블록 체인의 메커니즘을 이해하는 데 중요한 열쇠가 되는 정보는 블록 헤더다. 블록 헤더가 중요한 이유는 블록의 식별자 역할을 하는 블록 해쉬가 이 블록 헤더의 6가지 정보를 입력값으로 해서 구해지기 때문이다. [5] 블록이 권위체인에 깊숙이 들어가 있을수록 다음과 같은 사실이 성립된다. 블록이 더 오래 전에 추가되었고, 블록체인-데이터-구조에 포함된 후 더 많은 시간이 흘렀다. 후속 블록 추가에 더 많은 공통된 노력이 소모되었다. 가장 긴 체인에 속한 블록들의 변화에 덜 영향받는다. 블록이 버려질 가능성이 매우 낮다. 이것이 일반적인 블록의 특징이고 블록에 또 다른 고아블록이 있다. 고아 블록은 블록체인에 속하지 못한 것을 고아 블록이라고 말한다. 고아 블록은 권위 체인에 기여하지 않으므로 소유권 명확하에 아무런 쓸모가 없다. 따라서 고아 블록을 생성하고 제출해서 보상을 받았더노 노드들로부터 보상을 회수해야 한다. 블록체인-알고리즘 규칙에 따라 블록체인-데이터-구조에 추가된 블록이 나중에 유효하지 않거나 쓸모없는 것으로 판명되면 그 블록은 물론 후속 블록들 모두 블록체인-데이터-구조로부터 논리적으로 제거되고, 그 블록을 추가하면서 보상을 받은 노드에게서 보상을 회수한다. 고아 블록에 소속돼 버려진 트랜잭션 데이터는 다시 노드의 수신함에 넣어져 재처리된 후 블록체인-데이터 구조에 다시 추가되어 '선택된 트랜잭션 이력' 의 일부가 될 기회를 한 번 더 부여받는다. 고아블록의 트랜잭션은 자신이 속해 있던 블록이 버림받는 바람에 잠시 사라지게 되지만 재처리가 되자마자 다시 나타난다. [6]
각주
- ↑ 〈블록체인 관련용어〉, 《네이버 지식백과》
- ↑ 蒙柯몽가의 荀순, 〈블록체인이란 무엇인가 -2[블록생성(거래작성) 합의방식]〉, 2018-01-15
- ↑ feyee95, 〈[비트코인 트리1-1 블록이란 무엇인가]〉, 2017-12-18
- ↑ 블록체인 공식 홈페이지- 〈블록체인〉
- ↑ *HomoEfficio, 〈블록체인 한 번에 이해하기〉, 2017-11-19
- ↑ 이지스퍼블리싱(주), 〈블록체인 무엇인가?〉《다니엘 드레셔 저, 이병욱 역》2018-02-26
참고 자료
- 블록체인 공식 홈페이지- 〈블록체인〉
- 蒙柯몽가의 荀순, 〈블록체인이란 무엇인가 -2[블록생성(거래작성) 합의방식]〉, 《다음 블로그》 2018-01-15
- feyee95, 〈[비트코인 트리1-1 블록이란 무엇인가]〉, 《steemit》 2017-12-18
- HomoEfficio, 〈블록체인 한 번에 이해하기〉, 《github 개인블로그》 2017-11-19
- 이지스퍼블리싱(주), 〈블록체인 무엇인가?〉《다니엘 드레셔 저, 이병욱 역》2018-02-26
같이 보기