개발 노트

블록체인- 블록 구성요소 본문

BlockChain

블록체인- 블록 구성요소

Meter216 2023. 5. 3. 16:42

제네시스 블록

: 최초의 블록 , 블록체인은 모든 블록이 연결되어 있기 때문에 최초의 블록 생성은 블록체인 네트워크가 시작되었다와 같다.

 

최초에 GENESIS block이 생성되고

const GENESIS: IBlock = {
    version: VERSION, //언제 생성된건지 확인을 위한것
    height: 1,
    timestamp: 1231006506,
    previousHash: "0".repeat(64), // 이전블럭
    merkleRoot: "DC24B19FB1234511ACD8AD17F401753670CFD8DD1BEBEF9C875125E98D82E3D8", //transaction 들이 모인 hash값 string이긴 하지만 hash값이 될 것.
    nonce: 0, // POW 작업증명을 할 때 필요한 속성 계산할 때 필요 number
    difficulty: 0, // 작업증명을 할 때 사용할 속성값
    hash: "84ffab55c48e3aasd0e2fd4c4aasdc5ee1bb2d41a4f2a78a1533a8bb7df8370", //version mekleroot height 등등
    data: "2009년 1월 3일 더 타임스, 은행들의 두번째 구제금융을 앞두고 있는 U.K 재무장관", // transaction 들이 모일 곳 나중에 배열형태로 만들어질 것이다.
};

이러한 형태로 생성된다.

 

height =  블록이 생성됨으로 +1 씩 늘어나는 수치

timestamp = 블록의 생성 시간

previousHash = 이전블록의 hash

merkleRoot = transactios 의 hash

nonce = 작업증명을 할 때 필요한 값,

difficulty = 블록 생성난이도,

hash = 위의 모든 데이터를 가지고 만들어 놓은 hash 이다. (2번째 블록이 생성될 때 이 값이 previousHash로 들어간다)

 

 

 

**merkelRoot

 

data, 즉 트렌잭션이 발생해서 들어오게 되면, 트랜잭션들을 가지고 해시화를 시켜서 만들어놓은 값이다.

1. 가장 가까운 tx1과 tx2를 해시화 해서 하나의 해시를 만든다 이 과정을 tx8까지 반복하고

2. 나온 결과물들을 또 다시 2개씩 짝지어서 해시화를 시킨다.

3. 최종적으로 하나가 나올 때까지 반복한다.

 

이러한 그림을 표현해놓은것을 머클트리 라고한다. 위 그림과 같은 형태가 되는 것이다.

 

이러한 형태를 하게 된다면, 만약 하나의 해쉬값을 변경하게 되면 그 상위에 있는 모든 해쉬값이 변경되기 때문에 어디서부터 변절된 것인지 파악 할 수 있다.

 

**BlockHash 

 

블럭의 모든 데이트를 가지고 "SHA256"을 활용해 하나의 해시를 만든다. 이렇게 만들어진 블록해시의 경우 다음블럭을 생성할 때 previoushash로 들어가기도 하고, 마이닝 작업을 할 때 하나의 작업증명을 위해 활용되기도 한다.

'BlockChain' 카테고리의 다른 글

Ethereum  (0) 2023.05.22
블록체인 코드 - wallet, digitalSignature  (0) 2023.05.08
블록체인 코드 - block, work proof  (0) 2023.05.08
블록체인 코드 -genesis block, crypto  (0) 2023.05.04
블록체인 - UTXO  (0) 2023.05.04