카테고리 없음

Blockchain Chain

tp134679 2025. 5. 13. 19:07

<목차>

1. Chain 

2. longest chain rule

 

 

1. Chain 

Chain 은 블록과 블록을 하나로 연결한 배열입니다. 이미 Block 과 Block 이 현제 블록의 previousHash 와 이전블록의 hash 로 연결되어 있으나  이 연결된 상태가 올바른 규칙에 따라 생성되었지 검증과 어떠한 검증에 의하여 블럭이 추가되는지에 대한 유효성 검사 등에 대한 것을 블럭을 감싸는 체인형태로 나타냅니다.

 

블록: 단일 거래 모음의 "상자"

체인: 그 상자들이 어떤 순서와 규칙에 따라 이어졌는지를 담은 "이력"

 

chain 은 블록의 길이를 저장하고 특정 블럭을 불러올 수 있으며 체인과 체인과의 길이를 비교하기 위한 로직을 담고 있습니다.  

블록체인은 블록이 체굴된후 검증을 위하여 체인을 다른 노드들에게 전파하는데  이 때 체인은

longest chain rule 을따르게 됩니다.

 

2. longest chain rule

롱기스트 체인 룰(Longest Chain Rule)은 블록체인에서*포크(분기)가 발생했을 때, 가장 긴 체인을 정식 체인으로 채택하는 합의 방식입니다. 비트코인 같은 작업증명(PoW) 기반 블록체인이 대표적으로 사용하고 있습니다.

 

longest chain rule

 

longest chain rule 장,단점

 

장점  
간단하고 직관적  1. 가장 긴 체인을 체인으로 인정한다 라는 간단한 룰을 따릅니다.
2. 구현이 쉽고 간단합니다.
자연스러운 합의 유도  1. 여러 노드가 잠깐씩 다른 블록을 채굴해도 결국 더 긴체인으로 합쳐짐
2. 결국 모두가 동일한 체인을 따르게 되는 자연스러운 포크 해소 메커니즘을 제공합니다.
보안성과 연결된 채굴 난이도 긴 체인을 만드려면 더 많은 작업 증명(pow)가 필요하므로 공격자가 체인을 조작하려면 엄청난 계산 자원이 필요합니다.

 

 

단점   
확률적 최종성 1. 트랜잭션이 영원히 바뀌지 않는다는 보장이 없습니다.
2. 새 블록이 더 길게 만들어질 경우 기존 체인에서의 트랜잭션이 뒤집힐 수 있습니다.
낭비되는 블록  1. 누군가 만든 블록이 결국 선택받지 못하고 버려짐.
2. 이는 네트워크 자원의 낭비이기도 함.
51%의 공격 위험  1. 전체 해시파워의 과반수를 가진 채굴자가 있다면, 자신의 체인을 계속 더 길게 만들어서 조작이 가능합니다. (실제로 ETC, BTG 가 이런식의 조작을 당한적 있다고합니다.) 

 

Chain 기본구조 

기본적인 체인의 구조 는 Block 을 배열로 감싼 형태를 띄고 있습니다. 또한 체인의 처음 블럭에는 GENESIS블럭이 들어가게 됩니다.

    private chain: Block[] = [GENESIS];
export interface IChain {
    get(): Block[]; // 체인에 담겨있는 전체 블록 조회
    length(): number; // 체인의 길이
    latestBlock(): Block; // 가장 최근에 추가한 블록
    addToChain(receivedBlock: Block): Block 
    getBlock(callbackFn: (block: Block) => boolean): Block
    getBlockByHeight(height: number): Block
    getBlockByHash(hash: string): Block
    // receivedChain => 상대 체인이라고 파악
    replaceChain(receivedChain: Block[]) : { isError: boolean | undefined, message: string }
    getAdjustmentBlock(): Block;
    // P2P 통신할 때 사용할 메서드
    serialize(): string
    deserialize(chunk: string): Block[]
}