본문 바로가기
안드로이드/etc.

[CS] 블록체인(Blockchain)

by jinwo_o 2024. 11. 25.
  • 우리는 Facebook, 우버와 같은 서비스나 은행 시스템과 같은 중앙집중원장(Centralized ledger)을 이용해 왔다. 
    • 이는 그들이 우리의 데이터를 잘 관리하고 처리해 줄 것이라는 신뢰가 있었기 때문이다
  • 우리는 이러한 기관, 기업에게 신뢰비용(수수료 등)을 지불하고 그들은 서비스를 제공하며 데이터를 보관(보안)하고 활용한다.
  • 이렇게 지금까지 자본주의가 발전하면서 신뢰받는 제 3자에게 어떤 권한을 위임해 왔고 그들에게 서비스를 받으며 성장해 왔다.

기존 중앙집중형 시스템의 문제점

1. 비용 문제

  • 제 3자인 중앙집중형 관리시스템은 거래자들 사이에서 과도한 관리, 중개수수료를 청구한다.
  • 중앙집중형 시스템은 데이터베이스를 유지, 관리하기 위해 많은 보안유지비용을 지출한다.
    • 금융권의 경우 매년 천문학적인 돈을 보안인프라에 투자한다. 그 비용은 모두 우리에게 부담되는 것과 마찬가지이다.

 

2. 시간 문제

  • 많은 미들맨(Middle man)들이 존재할 경우 프로세스 전반에 걸쳐 시간과 비용이 증가하여 효율성이 떨어진다.
  • 은행의 경우 각 은행들의 데이터베이스를 통해 거래를 확인하고 청산하기까지 중앙은행과 금융결제원, 외환거래의 경우 더 많은 중간다리가 포함되어 있다.
  • 해외물류의 경우도 마찬가지로 화주부터 트럭회사, 해운사, 심지어 보험사까지 많은 중간 이해관계자들이 있다.

 

3. 보안 문제

  • 중앙집중형 데이터베이스를 이용하게 되면 해커들의 공격대상은 오직 하나, 중앙이다.
  • 아무리 보안유지에 힘을 쓴다 하더라도 해커의 목표가 분산되어 있지 않고, 오직 중앙 하나만 공격한다면 중앙에 있는 우리의 모든 데이터 보안이 뚫리게 된다.

 

분산원장기술(Distributed Ledger Technology, DLT)

  • 중앙원장기술과 반대로 중앙서버나 중앙관리자의 제어 없이 분산화된 네트워크의 각 노드(개인)들이 데이터베이스를 공유하고 계속 동기화하는 기술
  • 모든 블록체인은 분산 원장이지만 모든 분산 원장이 블록체인은 아니다.
  • 블록체인은 분산원장기술이지만 ‘합의를 통한 공유 분산데이터베이스’ 기술이라고 정의할 수 있다.

블록(Block)

  • 블록을 한 칸씩 쌓아 탑의 형태로 체인이 구성된다고 하여 이를 블록의 높이라고도 부른다. 하지만 블록의 정확한 이름은 블록의 해시값이다.
  • 블록은 크게 블록 헤더와 블록 바디로 구분된다.
  • 블록 해시는 블록의 헤더 정보를 모두 더하여 합을 구한 후 SHA-256 알고리즘으로 변환한 결과 값이다.
  • 블록 헤더는 버전, 이전 블록 해시, 머클 루트, 타임, bits, nonce 값으로 구성되어 있다.
    • 버전 : 해당 블록의 버전
    • 이전 블록 해시 : 이전 블록의 주소 값
    • 머클 루트(Merkle root) : 블록의 바디 부분에 저장된 트랜잭션(거래 정보)들의 해시 트리
    • 타임 : 해당 블록의 대략적인 생성 시간
    • 난이도 목표(bits) : 난이도 해시 목표 값을 의미하는 지표
    • 임의의 값(nonce) : 블록을 만드는 과정에서 해시 값을 구할 때 필요한 재료 역할
  • 각 블록 바디는 거래 내용(트랜잭션 ID, 주소)들로 구성되어 있다.

블록체인(Blockchain)

  • 말 그대로 거래 기록이 담긴 블록이 체인처럼 서로 연결돼 있다는 뜻이다.
  • 블록체인 네트워크에 참여한 각 참가자(노드)의 거래 내용은 블록에 담기게 된다.
    • 하나의 블록 안에는 일정 시간의 거래 내역과 해당 블록의 해시값, 직전 블록의 해시값이 동시에 담겨있다.
  • 블록은 일정한 크기와 시간이 지나면 하나의 블록으로 완성되고 새로운 거래 내용은 다음 블록에 담기는 식이다.
  • 블록체인으로 연결된 블록에는 이전 블록들의 모든 거래 정보를 담아두게 된다. 이때 해시라는 복호화가 불가능한 불가역적 암호화 방법을 쓰게 된다.
  • 블록체인에서의 해시는 SHA-256 이라는 방법을 활용해 암호화 과정을 거친 암호문을 다시 복호화할 수 없도록 하는 일방향(단방향) 암호화 기법이다.
    • 해시를 통해 적은 데이터 양으로도 원본 내용이 모두 완전히 같다는 걸 비교할 수 있고, 짧은 시간 내에 수많은 데이터를 원본과 대조할 수 있다. 이를 통해 공공 거래장부의 위조도 막을 수 있다.
  • 거래 내용을 블록에 기록하고, 블록을 주기적으로 생성하면서 각 새로운 블록에 이전 블록들의 해시 값을 포함시킴으로써 블록에 기록된 거래 내용을 해킹해 위조, 변조하기 어렵게 만든다.
    • 블록에 담긴 하나의 거래 내역을 위조하려면, 먼저 해당 거래를 조작한 뒤 이를 네트워크의 모든 컴퓨터에 배포해야 한다.
    • 그러나 성공하더라도 원본 블록과의 해시값이 달라지기 때문에 직전 블록의 내용도 함께 조작해야 한다. 그렇지 않으면 위조한 블록은 다른 참가자들로부터 과반수 이상 승인을 받지 못하게 된다.
    • 그리고 그 거래 내역을 위조하는 동안에도 실시간으로 새로운 블록이 생성되고 있기 때문에, 블록체인 네트워크보다 빠르게 위조와 배포를 해야 한다. 

 

블록체인 거래와 생성 과정

  1. 블록 사용자는 수수료(gas, 가스)를 지불해 거래 내용을 블록에 등록하면, 채굴자는 제출된 거래 내용을 바탕으로 새로운 블록을 생성한다. 이 과정에서 채굴자는 해시 암호화된 거래 내용을 이전 블록의 해시값, 현재 블록의 거래 내역, 넌스 값, 타임스탬프 등을 이용해 수학 문제를 푼다. 이 문제가 해결되면 새로운 블록이 생성되고, 장부가 승인되어 블록체인에 추가된다.
    • 그 장부들을 승인해 주는 거래 체결자 같은 역할을 하는 게 채굴자(마이너)고, 채굴자는 그 보상으로 일정량의 코인과 장부처리 수수료를 받기 때문에 높은 수수료의 거래부터 처리하게 된다. 따라서 가스 단가를 높게 설정할수록 처리속도가 빠르다.
    • 만약 A, B 채굴자가 동시에 블록을 생성했다면, 어느 블록이 진짜 블록일까?
      • 중앙집권적인 기관이었다면 중앙에서 통제가 가능하기 때문에 두 개의 블록 중 어떤 블록이 진짜인지 선택해 주어 문제는 해결된다.
      • 하지만 탈 중앙화된 블록체인에서는 해당 의사결정을 해 줄 사람이 없기 때문에 이를 결정할 과정이 필요하다.
        • 이때 등장한 것이 바로 합의 알고리즘이다.
        • 합의 알고리즘에는 비트코엔이서 사용되는 PoW(Proof of Work), 이더리움이 지향하려고 하는 PoS(Proof of Stake), EOS에서 사용되는 DPoS(Delegated Proof of Stake)등이 있다.
  2. 승인이 다 완료되면(새로운 블록이 추가된 후에는) 주변 노드들에게 해당 블록을 전파하여 검증을 받는다.
  3. 검증이 완료되면 채굴자에게 보상이 지급된다. 이때 채굴자는 블록바디(Block body)의 첫 번째 거래 내역에 자신이 보상받을 비트코인의 수량을 기입함으로써 코인이 발행된다.

 

블록체인 문제점

  • 블록체인은 금융을 포함한 다양한 산업 분야에서 유용함을 입증하고 있지만, 확장성(Scalability), 보안성(Security), 탈중앙성(Decentralization) 중 적어도 하나를 희생해야 하는 *트릴레마 문제로 인해 아직은 기존의 중앙 집중적인 네트워크를 완전히 대체하기는 어렵다.
    • 트릴레마(Trilemma) :  세 가지 선택지나 옵션이 제시되지만 세 가지 모두를 만족시킬 수는 없는 상황

 

블록체인 트릴레마 특징

확장성

  • 블록체인 네트워크가 성장함에 따라 트랜잭션 또는 사용자 수를 효율적으로 처리할 수 있는 능력
  • 높은 트랜잭션 처리량과 *미래의 증가량이 확장성을 평가하는 기준이 된다.
  • 높은 트랜잭션 처리량은 *TPS 를 기준으로 이야기한다.
    • TPS(Transaction Per Second) : 초당 처리할 수 있는 트랜잭션 양
  • 확장성은 어떤 블록체인 시스템을 거래 수단으로 활용할지 판단하는 근거가 되고, 보편적으로 활용할 수 있을지 결정하는 기준이 될 수도 있어 중요하다.

 

탈중앙성

  • 기존의 중앙집권적인 데이터 처리 방식을 벗어나 분산된 노드들을 통해 네트워크가 자율적으로 운영되는 것
    • 블록체인 기술의 핵심으로, 기존의 데이터 처리 방식과 가장 다른 블록체인만의 특징이다.
  • 블록체인 네트워크는 네트워크의 모든 참여 노드가 서로 직접 연결되는 P2P(Peer-to-Peer) 아키텍처를 기반으로 한다.
  • 각 노드는 전체 블록체인의 복사본을 유지 및 관리하고 트랜잭션을 전파하며 유효성을 검사한다.
  • 중앙 서버나 중개자가 필요하지 않으므로 네트워크 참가자 간의 직접적인 상호 작용 및 데이터 공유가 가능해진다.
  • 다양하게 분산된 노드의 수가 많을수록 단일 노드나 그룹의 네트워크에 미치는 영향이 줄어들기 때문에, 네트워크의 검증에 참여하는 노드의 수가 많을수록 탈중앙성이 높다고 이야기한다.

 

보안성

  • 악의적인 활동, 변조, 사기 및 무단 액세스로부터 네트워크를 보호하는 것
  • 블록체인 네트워크를 유지하기 위해 활동하는 이들에게 합의 과정을 통해 코인이라는 암호화폐를 보상으로 발행하고 이를 관리해야 하기 때문에 중요하다.
  • 직접적으로 개인의 경제적인 부분에 영향을 미치기 때문에 블록체인 내에서 기록되는 데이터는 변조 및 수정이 불가능하도록 보호해야 한다.

 

세 요소의 상호작용

  • 블록체인 네트워크에서 거래를 하기 위해서는 기본적으로 트랜잭션이 발생하고, 네트워크에 있는 노드에 전파한 후 검증하는 과정이 필요하다.
  • 노드가 많다는 것은 그만큼 많은 노드가 검증에 참여한다는 의미이며, 탈중앙성이 높아진다고 할 수 있다.
  • 또 노드가 많은 것은 적을 때에 비해 상대적으로 거래를 악의적으로 이용하기 어려워져 보안성이 높아진다는 뜻이 될 것이다.
  • 하지만 반대로 검증하는 데 오랜 시간이 걸리기 때문에 확장성은 저하된다는 뜻이기도 하다.
  • 즉, 탈중앙성을 높이려 하면 확장성이 저하된다. 반대로 확장성을 높이려고 하면 탈중앙성과 보안이 위협받는 상황이 발생하게 된다.

 

블록체인 트릴레마 비트코인

  • 비트코인은 시작부터 탈중앙화와 보안에 집중하였기 때문에 보안 측면에서는 최고의 암호화폐라 평가받고 있지만, 사용자 증가에 따라 자연스럽게 트랜잭션을 처리하는 속도가 느려지는 확장성 문제에 직면하게 되었다.
  • 위 문제를 개선하기 위해 여러 가지 방법을 시도하였는데, 세그윗 업데이트와 라이트닝 네트워크가 한 예시이다.

 

라이트닝 네트워크

  • 비트코인 위에 구축된 오프 체인 거래 방식
  • 확장성 문제로 비트코인이 실생활에서 결제 수단으로 사용될 수 없는 문제점을 해결하고자 제안되었다.
  • 비트코인이 네트워크에서 발생하는 모든 전송 기록을 블록체인에 저장하는 반면, 라이트닝 네트워크는 개별 거래를 별도의 채널에서 처리한 후 그 결괏값만 블록체인에 기록하는 특징을 가지고 있다.
  • 즉, 중요 거래 기록만 블록에 저장하고 그 외 것들은 블록체인 밖에서 처리하는 것이다. 이를 통해 전송 속도를 대폭 향상하고 거래 수수료를 절감해 느리고 무거운 비트코인의 소액 결제를 가능하게 하였다.

 

세그윗 업데이트

  • 블록에서 서명이 차지하고 있던 자리를 분리하여 블록당 담을 수 있는 트랜잭션 양을 증가시킨 업데이트
  • 블록의 크기는 이전과 같지만, 서명 데이터를 분리해 더 많은 트랜잭션을 담을 수 있어, 한 번에 많은 거래량을 처리할 수 있도록 한 것이다.

 

  • 하지만 이러한 노력에도 불구하고 비트코인은 탈중앙성과 보안성을 선택하고 확장성을 개선하는 방법을 선택한 네트워크이기 때문에 여전히 결제 수단으로써 확장성은 부족하다고 평가받는다.

해시

 

[Data Structure][Kotlin] 해시(Hash)

해시(Hash)단방향 암호화 기법평문을 암호문으로 바꾸는 암호화는 가능하지만, 암호문을 평문으로 바꾸는 복호화는 불가능하다.입력된 값을 산술 연산을 통해 출력 데이터가 있는 위치를 식별할

dev-baik.tistory.com

 

블록체인의 해시 함수 사용

블록체인의 해시 함수 사용 이유

  • 블록체인은 탈중앙화된 분산 시스템으로 데이터의 안전성과 무결성이 보장되는 것은 중요한 문제이다. 이에 따라, 블록체인 데이터를 해시 함수를 사용하여 고유한 해시값으로 변환하여 저장함으로써 식별성, 무결성, 데이터 보안 등의 장점을 얻을 수 있다.

 

블록체인의 해시 함수 활용 예시

1. 트랜잭션 해시

  • 블록체인에서 네트워크 참여자들 간에 전송되는 데이터 단위인 트랜잭션은 해시 함수를 거쳐 일정한 길이의 해시값으로 전환된다.
  • 이를 통해 식별이 쉬워지고 트랜잭션 데이터가 변경되면 해시값도 변경되므로 무결성을 확인할 수 있다.
  • 또한 해시 된 데이터는 원본 데이터로 복원이 어렵기 때문에, 블록체인에 저장된 데이터의 안정성이 높아진다.

2. 블록 해시

  • 각 블록은 블록에 포함된 데이터를 기반으로 한 고유한 해시값을 가지고 있다.
  • 이를 통해 블록들은 서로 구별되며, 특정 블록을 찾거나 검증할 때 해시값을 사용할 수 있다.
  • 또한, 각 블록의 해시를 계산할 때는 이전 블록의 해시값도 포함되어 체인의 무결성을 보장한다.

3. 머클 트리(Merkle Tree)

  • 블록체인의 무결성을 검증하기 위한 핵심적인 데이터 구조
  • 여러 데이터에 대해 단계적으로 해시 함수를 적용하여 하나의 해시값으로 나타내는 데이터 구조
  • 여러 개의 데이터 집합이 있을 때, 각각에 해시 함수 연산을 거친 해시값을 두 개씩 짝지어 다시 해시 함수 연산을 거치고, 이 과정을 하나의 해시값이 나올 때까지 반복하여 얻는 데이터 구조이다. 이때, 마지막 하나의 해시값을 머클 트리의 머클 루트라고 부른다.
  • 데이터가 변조되었는지 확인할 때 각 데이터를 일일이 비교하기보다 머클 루트 값만 비교하면 되기 때문에 유용하다.
  • 블록체인에서는 한 블록 내에 기록될 트랜잭션 집합을 가지고 머클 트리를 구성하고, 머클 루트 값을 사용하여 블록 해시값을 계산한다.
    • 특정 블록에 기록된 트랜잭션을 단 하나라도 변경하는 경우, 블록은 체인처럼 모두 연결되어 있기 때문에 해당 블록 이후에 연결된 블록을 모두 수정해야 한다.
    • 이미 전 세계에 분산된 블록체인에 올라간 데이터를 특정 부분부터 모두 수정한다는 것은 큰 비용이 들기 때문에, 이러한 구조로 되어 있는 블록체인은 위변조 하기 매우 어렵다.

 

분산원장과 블록체인 차이 / 분산원장기술이란?

소개안녕하세요 :) "ICO OF KOREA(IOK)"의 오라클입니다. 새로운 ICO...

blog.naver.com

 

#0. 블록체인(Blockchain) 개론

안녕하세요 :) "ICO OF KOREA(IOK)" 의 오라클입니다.저는 블록체인 암호화폐...

blog.naver.com

 

#1. 블록(Block)이란? 블록체인(Blockchain)이란?

안녕하세여 :) "ICO OF KOREA(IOK)" 의 오라클입니다. 앞서, 블록체인의 전체...

blog.naver.com

 

블록체인 해시함수 | 정의, 특징, 블록체인 활용 예시 - 코드스테이츠 공식 블로그

해시 함수는 임의 길이의 입력값을 받아 고정된 길이의 출력값을 내는 함수입니다. 출력값으로부터 입력값을 유추하기 어려운 단방향성 특징을 활용하여 데이터 무결성 검사와 암호화에 활용

www.codestates.com

 

블록체인 트릴레마 | 유래 및 기본 개념, 특징과 사례 - 코드스테이츠 공식 블로그

모든 기술은 문제와 도전에 직면하며 발전합니다. 혁신적으로 등장한 블록체인 기술도 여러 분야에 영향을 미치고 있지만 진통을 겪으며 발전해가고 있습니다. 블록체인 기술이 가진 문제점 ‘

www.codestates.com

 

교육 - 업비트 투자자보호센터

기초부터 탄탄히, 디지털 자산 생태계에 대해 알려드립니다

upbitcare.com

'안드로이드 > etc.' 카테고리의 다른 글

[CS] 비트(bit)와 바이트(byte), 음수 표현법  (0) 2024.11.27
[Kotlin] 에러(Error)와 예외(Exception)  (0) 2024.11.20
[CS] HTTP와 HTTPS  (0) 2024.09.14