HUFS IT 플랫폼 구조 분석
Blockchain/한국외대 IT 교육 프로그램

HUFS IT 플랫폼 구조 분석

반응형

1. 블록체인의 동작 방식

  • 기본적으로 key, value로 구성된 전역 상태(Global State)가 존재 (블록이 없을 경우 비어있음).

블록 생성 전 전역 상태

  • 블록체인에 트랜잭션을 보낸다
    = 전역상태의 데이터를 변경 및 추가하는 작업
  • 1번 블록이 생성되면 암호화폐 발행
    • 첫 번째 트랜잭션은 발행을 뜻함(보낸사람 : coinbase)
    • 이후 트랜잭션은 거래내역 저장

< 두가지 트랜잭션 실행 후 전역 상태 >

 

  • 위 과정이 블록체인 네트워크안의 모든 참여자에게 적용
  • 트랜잭션에서 값이 변경될 경우 디지털 서명이 바뀌어서 데이터 변조의 위험이 없다.(블록체인의 특징)
  • 트랜잭션을 받은 사람(노드 운영자, 블록을 생성하는 사람) 블록에 트랜잭션을 저장해준다.
  • 트래잭션은 실시간으로 기록 되는 것이 아니라 일정시간(10)동안 받은 트랜잭션들을 모두 모은 다음 hash계산을 진행하여 블록화한다.
    비트코인은 7TPS 이다. 하지만 초당 7건의 트랜잭션을 처리하는 것이 아니라 10분에 한번에 처리되는 것 이므로 10분에 4200건의 트랜잭션을 처리한다. 즉 초당 평균 7TPS라는 뜻
  • 생성된 블록을 다른 노드에 전파, 블록을 전파 받은 노드들은 이전 블록에 받은 블록을 연결하고 블록 안의 트랜잭션을 바탕으로 자신의 장부(전역 상태)를 갱신

2. 블록 생성

  • 한 명이 전담으로 블록을 만든다면 탈중앙화 시스템으로서의 의미가 없음
  • 아무나 블록을 만들 수 있도록 허용하면 잘못된 트랜잭션을 포함하여 블록을 무차별 생성하는 것을 막을 수 없다.
    -> 합의알고리즘을 통하여 블록 생성하는 사람을 정함.
  • 시빌 공격
    한 사람이 여러 개의 가짜 신분을 만들어 다른 사람인 척 하며 네트워크를 장악

  • 서비스 거부 공격
    블록 생성 순서가 정해져 있으면 순서가 된 사람을 집중 공격하여 시스템을 다운시킬 수 있음

3. 분기(fork)

  • 같은 높이(Block height, block number)지만 서로 다른 블록으로 구성된 체인 네트워크 상에 존재하는 경우. -> 합의 알고리즘이 체인에 어떤 블록을 추가할 것인가를 결정

4. 작업 증명(Proof-of-Work: POW)

  • 블록을 한번 생성하는 시간을 라운드(Round)라 부름
  • 매 라운드마다 블록생성자들은 블록생성을 시도(블록 생성에 성공해야 암호화폐 보상이 있음)
    생성한 블록이 일정한 조건을 만족하는 블록 해시를 가져야만 유효
  • 가장 빠르게 블록 해시를 찾는 사람이 블록 생성 기회를 가짐

5. 블록 해시

 

  • 머클 루트
    트랜잭션들을 암호학적으로 계산한 한 값, 트랜잭션에 데이터가 바뀌면 머클루트가 바뀌게 된다.(덕분에 데이터 변조가 불가능)
  • 블록 해시
    이번 블록의 id

난이도
블록해시 값에서 앞에 0이 몇 개가 들어가는지 정함으로써 난이도 조절
(2주에 한번씩 난이도 제조정 -> 블록생성이 변할 수가 있어서)
비트코인에서 블록생성 사이의 10분이라는 시간은 블록체인 네트워크에서 전달한 블록이 각 사용자들에게 전달되고 증명될 시간을 주기 위함.

  • 논스
    내가 변경할 수 있는 값, 논스를 변경하면서 난이도에 맞는 블록 해시 값을 찾는다.

6. 작업 증명과 블록 생성자 선택

작업 증명의 도입으로 다음 블록생성자가 (확률적으로) 결정됨 블록 생성을 위한 블록 해시 계산에 더 많은 컴퓨터를 투입할수록 블록 생성에 성공할 확률은 높아지지만 그렇다고 반드시 블록 생성에 성공한다는 보장은 없음. 결과적으로 여러 노드가 돌아가면서 블록 생성을 하게 되고 블록체인을 공격하려는(데이터를 위조하려는) 사람은 해시 계산을 위해 정직한 사람 모두를 합한 것보다 더 많은 컴퓨터를 확보해야 하므로 실질적으로 블록체인 상의 데이터를 위조하는 것을 불가능에 가까움

51% attack 변조하여 얻는 이익보다 51%의 컴퓨팅파워를 얻으려는 것이 더 손해이다.

7. 채굴

비트코인은 블록 생성에 성공하면 일정 개수의 비트코인을 신규 발행하여 블록생성자에게 지급. (이외의 방법으로는 절때 비트코인이 발행되지 않음) 블록 생성자에게 지급되는 비트코인의 총 발행량은 2100만개로 고정되어 있으므로 2140년 이후에는 블록 생성 보상이 사라짐. 매장량이 고정된 광산에서 광물을 캐내는 것과 비슷하다고 해서 블록 생성 과정을 채굴, 블록생성자를 채굴자라 부름.

비트코인의 반감기가 있다. 21만개의 비트코인이 생성될때마다 블록 생성지 보상받는 비트코인이 줄어든다. 초기에는 50개의 비트코인을 지급했지만 점점 줄어들어 현재는 약 6.25개의 비트코인만 지급.(초기 시스템에 의해 모두 정해진 것)

8. 블록체인에 적용된 암호학

  • 트랜잭션 서명
    디지털 서명이 포함
  • 블록 안에 담긴 트랜잭션 묶음
    머클 트리라는 암호학적 구조로 연결되어 있어 한글자라도 변경될경우 블록 자체가 무효화
  • 블록 간의 연결
    직전 블록의 블록 해시가 함께 저장되어 있으므로 다른 블록을 중간에 삽입할 수 없다.

9. 디지털 서명

  • 개인키
    • 트랜잭션 서명에 사용
    • 블록체인에는 개인정보를 저장하지 않으므로 특정 암호화폐 지갑 주소(공개키)의 소유자임을 증명하는 것은 개인키를 알고 있다는 사실 하나뿐임, 개인키를 잃어버릴 경우 찾을 수가 없음
    • , 개인키가 유출되는 경우 다른 사람이 해당 암호화폐 지갑 주소의 주인이라고 주장해도 거짓임을 증명할 수 없기 때문에 절대 유출되지 않도록 조심해야함
  •  
  • 공개키
    • 암호화폐 지갑 주소로 사용(계좌번호와 비슷)
    • 블록체인 안에서 사용자의 신분
  • 동작 방식

  • 블록체인이 받는 트랜잭션

10. 기존 사용자 인증방식과 블록체인에서의 사용자 인증 방식 차이

기존 사용자 인증 방식

 

11. 해시 함수

  • 임이의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수.
  • 역상 저항성
    비가역 함수. 입력 값으로 출력 값을 도출할 수 있지만 출력 값으로 입력 값 유추 불가능
  • 충돌 저항성, 
    M1, M2에 대하여 Hash(M1)= Hash(M2)는 절때 없다

12. 머클 트리

머클 트리 예시

  • 데이터 변조를 쉽게 검사할 수 있음 (트리형식이기 때문에)

13. 스마트 컨트랙트

단순한 화폐 교환뿐만 아니라 복잡한 기능을 수행할 수 있도록 블록체인에 추가된 프로그래밍 가능한 전자 계약서 기능. 비트코인도 기본적인 프로그래밍 기능이 가능하지만 튜링 불완전한 한계를 갖고 있어 이를 개선한 이더리움 탄생.
스마트 컨트랙트의 등장으로 다양한 형태의 서비스를 제공하는 것이 가능해짐.

  • 비트코인과 이더리움
    이더리움은 개발이 되었을 때 투자자들에게 이더리움을 보상을 지급함. 비트코인은 시작부터 정해진 프로그램에 의해서만 발행이 되었기 때문에 이더리움을 안좋게 보는 시선이 있다.

14. 블록체인의 트릴레마

3가지 모두를 만족하는 블록체인을 설계하는 것은 어렵다.

비트코인, 이더리움의 경우 보안성과 탈중앙성을 갖지만 확장성을 갖지 못한다.

EOS는 보안성과 확장성을 갖지만 탈중앙성이 부족하다.

15. 블록당 트랜잭션 수 제약

  • 일반적으로 블록당 담을 수 있는 트랜잭션 수 제약을 둠(보안적인 이유가 크다)
    • 블록 타임(블록 생성 간격) 이내에 전체 네트워크에 블록이 전파 되어야함
      블록 용량이 너무 크면 전파시간이 오래걸려 fork가 자주 발생하여 채굴자들의 불필요한 블록 생성에 에너지 낭비, 즉 체인에 담길 수 없는 Uncle Block 생성 증가
    • 블록 타임(블록 생성 간격) 이내에 블록 내부의 트랜잭션도 전부 검증하고 실행할 수 있어야함
      전역 상태가 가장 최신 블록(Head Block)까지 모두 처리한 상태여야 그 다음 블록을 만들거나 다른 블록을 수신할 수 있음.
  • 비트코인 : 블록 용량 제한
    • 블록 하나의 용량을 1MB로 제한
    • 세그윗(Segregated Witness: segWit)이후로 서명 데이터는 블록 용량 제한에 포함되지 않으므로 담을 수 있는 트랜잭션 수가 소폭 증가
    • 비트코인 계열(비트코인 캐시 BCH, 비트코인 사토시비전BSV)은 블록 용량 제한을 크게 늘림
  • 이더리움 : 블록당 실행 가능한 명령수 제한(Block Gas Limit)
    • 이더리움 트랜잭션은 실행에 필요한 명령의 종류와 개수에 따라 가스(Gas) 소비
    • 블록당 실행에 사용 가능한 최대 가스량을 제한하여 그 안에 트랜잭션 선택

16. 채굴 보상

  1. 비트코인
    • 블록당 고정 금액의 블록 생성 보상을 제공
      • 최초에는 블록당 50BTC, 매 21만 블록마다 반씩 감소하여 현재는 6.25BTC (비트코인 반감기)
      • 최종적으로 약 2140년 5월 7일경 블록 생성 보상이 사라질 예정
      • 채굴자는 매 블록의 첫 번째 트랜잭션을 새로운 비트코인을 발행하여 자신에게 지급하는 트랜잭션으로 함
    • 블록에 담긴 트랜잭션 수수료 또한 채굴자에게 지급, 트랜잭션 처리 우선순위를 높이려면 수수료를 높게 책정
  2. 이더리움
    • 블록당 고정 금액의 블록 생성 보장을 제공
      • 최초에는 블록당 5ETH씩 지급, 이후 여러 번의 하드포크를 통해 조정하여 현재 2ETH
      • 비트코인과 달리 별도의 트랜잭션을 통해 채굴자에게 ETH가 지급되는 것이 아니라 블록을 처리하는 중간에 내부적으로 채굴자의 잔고(Balance)를 증가 시킴
    • 트랜잭션 수수료 또한 채굴자에게 지급되는데, 이더리움의 트랜잭션 수수료는 다음과 같이 책정
      • (이더리움 트랜잭션 수수료) = (트랜잭션 Gas 소모량) * (Gas Price)
      • 트랜잭션 Gas 소모량은 트랜잭션이 실행하려는 스마트 컨트랙트의 복잡성 또는 트랜잭션에 실린 데이터의 크기에 따라 결정되나 Gas Price는 트랜잭션을 보내는 사람이 지정, 비트코인과 마찬가지로 빨리 처리하고 싶으면 Gas Price를 높게 설정
반응형