블록체인의 개념

efforthye·2023년 1월 4일

BlockChain

목록 보기
3/6
post-thumbnail

블록체인의 4대 요소 기술

  • 1. 블록과 트랜잭션

    • 트랜잭션은 사용자의 송금 내역이고 송금 내역들을 하나의 블록에 포함시켜야지만 안정성을 보장할 수 있는 기반을 만들 수 있다. 그 블록들이 해시 알고리즘과 POW(퀴즈를 푸는 방식)를 통해서 연결하는 형태가 블록 체인이다.
  • 2. 분산 네트워크

    • 사용자들이 언제든지 네트워크에 참여할 수 있고 나갈 수 있는 것이다.
  • 3. 암호화 (블록체인 기술 중 제일 중요한 부분)

    • 거래가 위변조 되지 않았다고 증명할 수 있다.
  • 4. 합의 알고리즘

    • 분산 네트워크에서 중앙화된 기관이 없으니까 하나의 체인을 구성하는 것이 매우 중요하고 그리고 분산화된 네트워크에서 모든 사용자들이 납득할 수 있는 하나의 거래 내역이 필요한데 이걸 하나로 정의해주는 알고리즘이다.(그냥 제일 긴 체인이 맞다고 알려주는 알고리즘)

블록의 구성

  • 블록은 특정 정보들을 담아놓은 객체라고 보면 된다.
	const block = {
	
	}
  • 블록의 Header와 Body : 블록을 생성할 때 Header와 Body를 나눠서 생성 하지는 않지만 블록에 대한 이해를 쉽게 하기 위해서 Header와 Body를 명칭으로서만 구분해놓은 것이다.
  • 블록헤더와 블록바디는 서로의 정보를 비교하면서 위/변조 가능성을 확인하며 무결성을 높인다.


블록의 Header

  • version : 현재 이 블록 헤더를 만든 비트코인 프로그램의 버전 정보

  • previousHash(이전 블록의 해시) : 이전 블록의 주소값, 위/변조되지 않게 하는 역할을 한다. 얘가 바뀌면 뒤의 블록들이 다 바뀌고, 그 애들을 다 채굴해야 변조가 가능한데 현재의 기술력으로는 불가능하다고 한다.

  • height : 몇번째 블록인지의 정보

  • timestamp : 블록의 생성 시간의 정보

  • hash (블록의 해시) : 자신의 Body의 내용을 해싱한 내용

  • merkleRoot 머클 루트

    • 머클 루트 : 블록의 바디 부분에 저장된 트랜잭션(거래 정보) 들의 해시 트리
    • 이 값을 통해 하나의 블록 내에 존재하는 트랜잭션의 무결성을 검증할 수 있다.
    • 이 값을 이용하여 블록의 해시 값을 생성했기 때문에 해시의 무결성도 함께 검증할 수 있다.
  • difficulty : 채굴의 난이도(통화량 조절을 위해 난이도를 높이기도 한다)

  • nonce (논스) : 블록체인에서 목표값 이하의 블록 해시를 찾기 위해 임시로 사용하는 숫자로, 이 값을 증가시키면서 퀴즈를 푼다. 블록 생성 자격을 얻기 위해 작업 증명을 하는데 필요한 값이다.

블록의 Body

  • data : 암호화될 블록에 담기는 거래의 내용 정보들로, 거래가 일어날 때마다 합의 컨센서스(Consensus) 과정을 거쳐서 그 적합성을 판단하고 블록바디에 거래 정보가 기록된다.

블록 한개 생성해보기(jenesis block)

    const blockData = {
     	// 첫 버전
        version: "1.0.0",
        // 첫 번째 인덱스
        height: 0, 
        // 블록 생성 시간
        timestamp: Date.now(), 
        // 이전 블록이 없기 때문에 암호화 문자열 길이(64)만큼 0으로 채움
        previousHash: "0".repeat(64),
        // 블록의 해시 0으로 다 채움
        hash: "0".repeat(64), 
        // 머클루트 0으로 다 채움
        merkleRoot: "0".repeat(64), 
        // 논스가 0인 이유? 모든 블록의 시작점이 0인건가? 기본값 0?
        // 작업 증명을 하는데 필요한 값 
        nonce: 0,
        // 난이도
        difficulty: 0, 
        data: [
            "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks"
        ],
    };

0개의 댓글