(2) Blockchain visual demo (Anders Brown)

Visual demo by Anders Brown

https://andersbrownworth.com/blockchain/

 


SHA256

  • Hash
    • “A unique fixed length string, meant to identify a piece of data. They are created by placing said data into a ‘hash function’”
    • 입력 데이터에 대해 유일한 hash가 생성된다.

 


Block

  • Block에는 block number, nonce, data가 있다.
    • 이제 Hash는 block number, nonce, data를 모두 함께 섞어서 만들어낸다.
    • Block number는 blockchain에 올라갈 때 block의 순서이다
    • NonceHash의 첫 앞 4자리를 0000으로 만드는 숫자 값이다.
      • Data가 들어왔을 때 hash의 앞 4자리가 0000이 될 확률은 굉장히 낮다.
      • Nonce가 몇이 될지 우리는 모른다. 0부터 시작해서 1씩 더해가며, hash의 첫 앞 4자리가 0000이 될 때 까지 계산한다.
        • 이 과정을 채굴 - Mining이라고 한다.
        • 채굴 작업의 계산량은 많다.
    • 이렇게 채굴을 함으로써 nonce를 찾는 작업을 Proof of work (PoW)라고 하기도 한다.

hash의 첫 앞자리가 0000이 된다는 것은 여기서의 예제이다.

 


Blockchain

  • Blockchain은 block이 연결되어있다.
    • 각각의 Block은 이제 previous block의 hash도 함께 데이터로 가진다.
    • Blockchain의 첫 block은 Genesis block이라고 하며, 이 block은 prev hash를 가지지 않는다.
    • 중간 block의 데이터를 수정하면, 해당 block에서부터 chain의 끝 block까지 mining을 해야한다.
      • 왜냐하면… 우선 해당 block의 hash가 0000으로 시작하지 않을 것이고, 이를 위해 새롭게 nonce를 채굴해야한다.
      • hash가 0000이 되는 nonce를 채굴하면, 그 다음 block의 prev hash 데이터가 바뀌어 hash 데이터가 0000으로 시작하지 않게 된다.
      • 이 block의 nonce도 채굴하고… 또 다음 block의 prev hash가 바뀌어서 또 nonce를 채굴하고…
    • 채굴 계산은 계산량이 굉장히 많다.
      • 중간에 있는 block 값을 바꾸면 다수의 block을 새로 채굴해야하기 때문에 계산량이 굉장히 많아질 것이다.

 


Distributed blockchain

  • 다수의 사람이 동일한 blockchain 정보를 가지고 있다고 해보자.
    • 이 때, 한명이 중간 block의 데이터를 바꿔 chain의 끝까지 새롭게 채굴했다고 해보자.
    • 그래도 다른 사람들의 blockchain은 바뀌지 않았다.
      • 여러 blockchain들을 비교했을 때 다수결의 blockchain이 더 신빙성 있다고 판단할 수 있다.
      • 이러한 구조를 통해 임의의 유저가 blockchain 내의 정보를 해킹하기 어렵게 만든다.
        • 해킹을 하기 위해서는 blockchain을 가진 모든 사람의 최소 50%는 해킹을 다 해야하기 때문이다.
        • 종종, 특정 node에서 block 정보를 해킹함으로써 다른 정보를 가지고 있을 때는 다수의 consensus를 유지하기 위해 해당 node를 제거해버리기도 한다.

 


Tokens

  • Blockchain에 거래 내역에 대한 데이터를 담는다고 해보자.
    • 거래 내역에 대한 데이터도 hash로 변환될 수 있다.
    • 거래 내역을 조작하려고 하면 해당 block의 hash가 변경되며, 이후 모든 block들을 새롭게 채굴해야한다.
  • 보내는 사람과 받는 사람의 정보는 public key를 통해 만들어진다.
    • 이 public key는 private key 정보에 Elliptic Curve Digital Signature Algorithm (ECDSA) 알고리즘을 통해 생성된다.
      • Private key는 seed phrase와 account address를 섞어서 만들어진다.
    • 담고 싶은 정보와 private key를 함께 데이터에 넣어서 ECDSA 알고리즘에 넣으면 message signature가 나온다.
      • 타인은 public key가 있으면 해당 message signature가 진짜인지 아닌지 구분할 수 있다.
        • 즉, 누구든지 이 거래가 진짜인지 아닌지 확인할 수 있다는 것이다.
      • 타인은 해당 message signature로부터 private key를 추론할 수 없다.

 


Consensus

Consensus에 대한 심도 깊은 문서

  • 탈중앙화 된 시스템에서 모든 node들이 동의할 수 있는 단 하나의 blockchain의 state를 정하는 작업을 consensus라고 한다.
    • 네트워크의 51%가 동의하는 blockchain이 진짜라고 믿는 방식이다.
    • 두가지 중요한 consensus 메커니즘이 있다 : Chain selection, Sybil resistance.
      • Chain selection
        • Nakamoto consensus
          • 진짜 블록체인과 가짜 블록체인을 가려내는 방식
          • 가장 긴 체인을 쓰는 방식을 사용함
            • 체인이 길 수록 proof of work를 하는데에 시간이 더 오래 걸리기 때문 (i.e. 데이터를 쉽게 바꾸지 못함)
          • 비트코인과 이더리움이 사용하는 방식.
      • Sybil resistance
        • 여기에 두가지 방법이 있다 - proof of work, proof of stake
        • Proof of work
          • POW: 모든 node가 채굴을 목적으로 경쟁을 하며, 가장 빠르게 pow를 끝내는 쪽이 돈을 받는 방식.
          • 51%의 네트워크를 장악하기 위해서는, 이론적으로 51%의 네트워크보다 더 빠르게 계산할 수 있어야한다.
            • 버는 돈 보다 장비 사는 돈이 더 많을 수도…
          • 비트코인과 이더리움이 사용하는 방식.
        • Proof of stake
          • Proof of work는 에너지를 많이 소비하기 때문에 환경에 좋지 않다.
            • Proof of stake가 proof of work에 들어가는 에너지의 1%만 소비할 것으로 예상된다.
          • Proof of stake는 node들이 각자 ‘나는 나쁘게 굴지 않겠습니다’라는 의미로 코인을 올려놓는다고 한다.
            • 나쁘게 굴면 이 코인을 몰수한다.
            • 착한 node들에게 랜덤하게 채굴 작업이 부여된다.
          • 51%의 네트워크를 장악하기 위해서는, 이론적으로 네트워크에 올려놓은 코인들의 51%보다 많이 가지고 있어야한다는 것이다.
            • 이 부분에 대해서 중앙화/탈중앙화에 대한 토론이 오가고있다.
          • Avalanche, Solana, Polygon, Polkadot 등이 사용하는 방식
          • 이더리움도 ETH 2.0로 업그레이드 할 때 이 방식을 사용할 것이라고 한다.

 


Proof of work & Block award

  • Proof of work는 굉장히 많은 에너지를 소비한다 (i.e. 연산량이 많다)
    • 특정 block에 대한 pow를 먼저 끝내는 node가 돈을 받게 된다.
      • 이 때, 두가지 방법으로 돈을 받는다 : Transaction fee, Block award.
        • Transaction fee는 Gas비와 동일하다.
        • Block award블록체인 자체에서 주는 돈으로써, Pow에 대한 보상을 주는 것이다.
          • 비트코인 블록체인은 block award로 비트코인을, 이더리움 블록체인은 block award로 이더리움을 준다.
          • 블록체인이 제공할 수 있는 block award는 한정되어있기 때문에, 시간이 지날수록 block award가 줄어든다.
            • 비트코인의 반감기는 4년 정도이다.
          • Block award를 통해 시간이 지날수록 더 많은 돈이 시장에 풀릴 수 있도록 하는 시스템이다.

 


해킹

  • Sybil attack
    • 유저가 다수의 계정을 생성해서 블록체인의 consensus를 통제하려는 시도
    • 해당 유저는 모든 계정에서 각각 pow를 해야한다. (엄청나게 많은 계산량!)
  • 51% attack
    • 블록체인 consensus는 51% 이상이 동의하는 가장 긴 블록체인을 사용한다.
    • 유저 또는 유저들이 가장 긴 블록체인을 가지고 있고 51% 이상의 네트워크를 점유하고 있다면, 모든 네트워크가 해당 유저가 가진 블록체인을 따르게 할 수 있다.
  • 네트워크가 클수록 블록체인이 더 안전하다.