블록체인 개요

PM077·2023년 5월 21일
0

CS Study

목록 보기
24/27

목차

  • 블록체인은 무엇인가?
  • SHA256 해쉬는 무엇인가?
  • 불변 원장 (Immutable Ledger)
  • 분산 P2P 네트워크
  • 채굴하는 방법
    • 넌스
    • 암호화 퍼즐
  • 비잔틴움 장군 문제 (Byzantine Fault Tolerance)
  • 합의 프로토콜
    • 공격자로 부터 방어방법
    • 어떻게 경쟁 체인을 다루는지
  • 블록체인 시각적 실습



블록체인은 무엇인가?

블록은 무엇인가?

  • Data : “077tech”
  • Prev.Hash: 034DS832 (이전 데이터의 지문)
  • Hash: 4F23E0R03 (데이터의 지문 같은 것)

Genesis Block (1)

  • Data: ~~~
  • Prev. Hash : 0000000000
  • Hash: CB9823CB~

Block (2)

  • Data: ~~~
  • Prev. Hash : CB9823CB~
  • Hash: CDB2314~

이런식으로 2개가 연결 되어있는데 블록이 많아 질 수 록 계속 연결이 된다. 만약 블록이 변조되면 prev.Hash를 가르키는 이후 블록이 찾지를 못하기에 연결이 끊어짐으로써 변조를 알 수 있다.



SHA256 해쉬는 무엇인가?

사람들은 다 다른 지문을 가지고 있다. 이런 기능 떄문에 경찰들은 과학수사때 지문를 수사에 활용한다. “이런걸 사이버상에서 적용하면 어떻게 될까?”, “어떤 종류의 지문을 만들어서 문서에 적용하면 어떨까?” 와 같은 의문점으로 SHA256이 개발됨. 이는 미국국가안보국 NSA에서 개발이 되었고, 이를 통해 많은 애플리케이션이 비밀번호, 디지털 문사 검사, 블록체인 때 유용하게 쓰인다. SHA256은 256비트를 차지하고 항상 64자이며 숫자뿐만 아니라 16진법 이기에 문자도 올 수 있다(ABCDEF0123456789).또한, 어떠한 디지털 한 거에 넣을 수 있는데, 비디오, 오디오, 운영체제 등등 같은 데이터를 넣으면 항상 같은 해시값을 얻는 논리적인 부분을 가지고 있다. 허나 작은 심볼을 변경한다면 완전히 달라진다. 쇄도 효과(avalanche effect)라고 함.

수많은 해싱 알고리즘이 있는데 이를 충족하려면

  1. 한 방향 (One-Way)
    • 문서로 해시값을 얻을 수 있지만 해시값으로 문서를 못얻음
  2. 결정적 (Deterministic)
    • 항상 같은 해시값
  3. 빠른 처리 속도
  4. 쇄도 효과 (Avalanche Effect)
    • 동일한 문서에다가 아주 작은 변화를 준다하면 해시값이 완전히 달라지는 방법
  5. 충돌 저항성
    • 해싱 알고리즘은 64비트이면 무한하지는 않다. 허나 디지털 문서는 무한하다. 그렇기에 충돌이 일어 알 수 있다. 이를 해결할 수 있어야 한다.
    • 사람 지문이 일치하는 희박한 경우처럼 겹칠 수 도 있는데 이도 희박해서 모든 케이스를 고려할 수 는 없다. 허나 보안성으로 만약 집문서가 있는데 집문서와 위조된 집문서가 같은 해시값을 가진다면 이는 문제가 클 수 있다.

해싱 알고리즘에 대한 논문
http://www.staroceans.org/e-book/Haber_Stornetta.pdf



불변 원장이란 무엇인가? (Immutable Ledger)

집을 산다고 가정을 해보겠다. 돈을 지불하면 그 집을 얻는데 어떻게 자기 집인지 증명 할 수 있을까? 이는 부동산 권리 증서를 받기 때문에 집의 소유자가 되는 것이다. 공공기관에 가서 소유권을 등록을 하면 자신의 집이 되는 것이다. 이러한 과정을 선진국에서는 컴퓨터를 사용하는데 제3세계에서는 글로 작성하는 국가도 있다. 허나 이런식으로 관리를 한다면 잃어버리거나 파손되었을 때 집의 소유권을 잃어 버릴 수 있다. 또는 해커들이 악의적으로 명의를 바꾼다면 주인이 소유권을 주장하지 못할 수 도 있다.

이래서 이러한 것을 대체하기 위해 블록체인이 나왔다. 블록체인을 사용한다면 특정 집문서의 명의를 바꾸더라도 다른 블록들과 연관되어있기에 악의적인 편집이 되었다는 것을 깨달을 수 도 있다. 그러면 해커들은 수 많은 블록들을 다 바꿔야하는데 이는 어마어마한 시간과 노력이 필요하기에 거의 불가능하다는 것을 알 수 있다.

2008금융위기때 담보대출을 중단하려고 했는데, 이는 원장을 신뢰하지 않기 때문이다. 또는 하이티(?)라는 곳에서는 태풍때문에 정부기관이 날라가서 원장이 다 없어진 사례도 있었다. WB에서는 세계70% 사람이 소유권 및 소유권 증서를 등록할 적절한 기관을 이용 못하고 말하는데 그게 거의 제3세계이다. 현재 매일 3,000개의 원장이 UK에서 쏟아져 나오는데 이게 하나의 오류없이 진행되는건 어려울 수 도 있다. 그렇기에 블록체인이 이를 보완할 수 있는 기술이 되지 않을까 라는 의견을 내본다.

블록체인 경제에 관한 글
The Blockchain Economy: A beginner’s guide to institutional cryptoeconomics



분산 P2P네트워크 (Distributed P2P Network)

앞서서 불변 원장으로 변조를 막을 수 있다고 했는데 시간이 여유로워서 블록을 다 바꾼다고 생각해보자. 그러면 해킹이 될 것 이다. 이러한 해킹이나 단순히 오류로 인한 변경을 막는 방법은 무엇일까? 바로 분산P2P네트워크를 사용하는 것이다. 이는 블록체인을 네트워크 내에 있는 사람들에게 블록체인을 복사를 해서 만약 블록이 내 쪽에 추가가되면 다른 사람들 컴퓨터 블록체인에도 추가가 된다.

시간이 지나고 거래량이 많아졌는데 특정 한 블록을 고의적으로 해킹했다고 가정해보겠다. 그러면 다른 네트워크 내 컴퓨터들의 블록체인과 비교하게 될 때 값이 다를 것이다. 이때 악의적으로 변경된 값은 자동으로 다수의 블록체인으로 바뀐다. 즉, 해킹을 하려면 하나의 블록체인 뿐만아니라 네트워크 내에 있는 모든 블록체인을 특정 시간 내에 다 바꿔야 가능하다는 의미이다.

네트워크 내에 유저로써 네트워크 내에 있는 다른사람들 컴퓨터에 내 블록이 있는게 불안할 수 있다. 허나 블록을 통해 개인정보를 얻어내려고 해도 사실 블록 자체에서 얻는건 불가능하기 때문에 다른 사람 컴퓨터에 블록이 있어도 된다. (One-way)

탈중앙화에 대한 글
The Meaning of Decentralization



채굴하는 방법

보통 블록은 블록이름, 데이터, 전 블록 해시, 현재 블록의 해시 정보가 담겨있다. 그냥 정보를 해시값에 넣어서 저장하는 이런건데 채굴,코인 등등 왜 어려워 하는 것인가? 이는 논스(Nonce)때문이다. 채굴에서는 논스가 메인 파트 이다. 블록의 블록이름, 논스, 데이터,전 블록 해시값 을 다 더해서 현재 블록의 해시값을 만든다. 이 논스가 블록에 들어갔기에 통제력과 유연성을 가질 수 있는 것이다. 왜냐하면 논스를 통해 해시 값을 변경할 수 있기 때문이다. 논스빼고는 다른 값은 바꿀 수 없기 때문이다.

SHA256으로 통해 나온 해시는 64자 256비트로 구성된 16진수 숫자이다. 즉, 이를 10진수로 바꿀 수 있다는 의미이다. 이렇게 된다면 해시를 제일 작은 값부터 제일 큰값까지 표시 할 수 있다는 의미이다. 먼저 블록체인 시스템이나 알고리즘이 Target을 설정하고 채굴자들은 특정한 해시를 달성하도록 설정한 Target이 있다. Target보다 위에 있는 값은 고려대상이 아닌데 이를 설정한 이유는 무슨 경제적 이유보다는 그냥 채굴자들에게 도전과제를 주기 위함이다. (범위가 넓으면 난이도가 내려가기 때문) 채굴자들은 Target아래에 있는 빈 해시값을 찾으면 그 해시를 쓸 수 있다. Target이 들어가면 해시값의 앞에 ‘0000’으로 시작된다.

위에 말한 논스와 엮어보겠다. 만약 블록을 추가하려고 하면 블록,데이터,전해시가 고정되어있기에 논스를 계속 바꿔가면서 Target아래 값을 찾기위한 작업을 하는 것이다. 만약 논스가 5012일 때 Target아래로 내려간 해시값을 찾으면 채굴자가 이긴 것이고 그 코인에 대한 보상을 받는 원리이다.



비잔티움 장애 허용 (Byzantine fault tolerance)

비잔티움 장군 스토리를 따온 이론이다. 4명의 장군이 성을 함락하려고 할 때 과반수의 장군이 공격이나 후퇴를 동의해야지만 움직일 수 있다. 여기서 배신자가 1명 있다고 가정을 하더라도 다른 장군들은 다른 2 장군들에게 한 가지 지령을 받기에 의미가 없다. 허나 부대내에 33%가 배신자라면 비잔티움 장애 허용 이론은 작동되지 않는다. 자세한 내용은 밑에 링크를 통해 확인해보면 좋다.

비잔티움 장애 허용 설명에 대한 글
Understanding Blockchain Fundamentals, Part 1: Byzantine Fault Tolerance



합의 프로토콜 (Consensus Protocol)

이는 언제 어떻게 블록을 추가할지에 대한 규약이다. 총 2가지 생각해야할 부분이 있는데 첫 번째는 공격자로부터 네트워크를 보호하는 것이다. 여기서 공격자는 중간부터 공격을 시작해도 모든 블록을 변경해야하며 모든 네트워크 블록을 변경해야하는 부분을 말하는 것이 아니다.(애초에 불가능하기 때문) 만약 블록을 그냥 맨뒤에다 추가하려는 해킹이라면 어떻게 해야할까라는 문제점을 해결해야한다. 두 번째 고민해야할 것은 경쟁 체인 문제를 해결해야한다. 대형 블록체인은 전세계적으로 분산되어있는데 이는 지연을 초례한다(1~2초). 이는 동시에 채굴이 진행 될 수 있는데 이떄는 모두 잘못은 없지만 어떻게 해결해야할지 고민해야한다. 그럼 어떤걸 선택할지 합의를 봐야한다. 이러한 문제를 합의 프로토콜을 통해 네트워크 내에서 정해야한다. 여기서 제일 많이 쓰이는 합의 프로토콜이 있는데 이는 Proof-of-Work(PoW), Prood-of-Stake(PoS) 그리고 등등이 있다. 여기서는 PoW에 대해서 공부를 할 계획이다. 이는 이더리움, 비트코인이 사용하고 있기 때문이다.

PoW는 무엇인가? 작업의 증명인데 우리가 채굴한다는 과정을 겪을 때 채굴자는 전기료, 시간을 써가며 논스값을 계속 넣어 암호화 문제를 해결한다. 이렇게해서 문제를 해결해서 얻는 해시값이 PoW 즉, 작업의 결과물이라는 것이다. 그래서 PoW이다. P2P네트워크에서 블록이 추가되는 상황을 가정 해보겠다. 이러면 블록체인 네트워크에서 해시값을 채굴했기에 12.5비트코인(예시)을 지급해줄 것이다. 이렇게 채굴을 한 수수료를 주게 되고 공정하게 운영햐기 위해 이 제도를 도입했다. 만약 악의적으로 추가한다면 수수료를 못받기에 패널티를 받을 것이다. 악의적인 코드 추가를 검증하기 위해서 엄청 엄격하게 규정들이 있다. 이를 모두 통과하지 않으면 기각하기에 악의적인 블록들은 추가가 되지 않을 것이다. 여기서 알면 좋은 점은 빈 해시를 찾는건 논스를 하나씩 다 넣어봐서 오랜 시간이 걸리지만 이 해시를 검증하는 작업은 몇초면 끝나기에 검증작업이 오래걸리지는 않는다. 즉, 악의적인 코인은 빠르게 찾아 없앨 수 있다는 의미이다.

악의적인 의도없이 추가적인 블록이 생성될 때 같은 해시값으로 2개의 블록이 추가되었을 때를 가정해보겠다. 블록체인에서는 체인이 가장 긴 블록체인이 왕이라는 말이 있듯이 먼저 체인이 가장 긴 블록체인꺼를 따라가게 된다. 즉, 해싱파워가 더 쌘 컴퓨터를 따라가는데 이는 네트워크 내에 그와 동일한 블록체인을 가진 컴퓨터가 51%이상일 때 다른 블록체인들이 다 이 블록체인으로 바뀐다는 의미이다. 49%의 블록체인은 고아 블록이 되어 보상이 유효치않게 된다.

블록체인 합의 프로토콜에 대한 글
A (Short) Guide to Blockchain Consensus Protocols



블록체인 실습

이 사이트에서 블록체인을 경험해볼 수 있다. 블록체인을 활용한 다양한 예시가 있으니 위의 글을 읽고 실습을 해 공부하는데 이해를 하면 좋을 것 같다.

블록체인 실습 웹사이트
Tools - SuperDataScience

profile
PM/PO

0개의 댓글