블록체인과 공개키 암호
•
블록체인은 암호학적 기법을 토대로 만들어진 기술
•
Bitcoin은 네트워크 참여자 모두가 같은 ‘원장’을 공유함으로써 투명한 거래가 가능
•
원장은 어느 주소에 BTC가 있는지 기록하지만 그 주소가 누구에게 속하는지는 기록하지 않음 (anonymity)
•
Bitcoin은 공개키암호를 사용하여 명시적인 비밀교환과정 없이 BTC의 소유권 증명을 실행
공개키 암호화를 사용한 소유권 증명
•
대부분의 블록체인 주소는 공개키로부터 도출된 값
◦
Bitcoin : Hash 160 of a public key where Hash 160 = RIPEMD 160 + SHA256
◦
Etthereum : Rightmost 160 bits of Keccak hash of a public key
•
Bitcoin의 경우
◦
임의의 주소 X에 10 BTC가 있다고 가정할 때 Alice는 X에서 또다른 임의의 주소 Y로 5 BTC를 전송(i.e., transfer 5 BTC from X to Y)하는 거래를 성사시키기 위해 X로 변환되는 공개키와 짝을 이루는 비밀키로 해당 거래를 서명할 수 있어야 한다.
•
Ethereum의 경우
◦
임의의 주소 X에 위치한 어카운트의 잔고에 10 ETH가 있다고 가정할 때 Alice는 X에서 또다른 임의의 주소 Y에 위치한 어카운트로 5 ETH를 전송 (i.e., transfer 5 ETH from the account at X to the account at Y)하는 거래를 성사시키기 위해 X로 변환되는 공개키와 짝을 이루는 비밀키로 해당 거래를 서명할 수 있어야 한다.
구현 방법으로 나눠본 블록체인
UTXO(Unspent Transaction Output) 기반 블록체인
•
블록체인에 사용 가능한 토큰(e.g., Bitcoin) - UTXO들과 사용 자격 검증방법을 기록
•
일반적인 자격검증방법은 UTXO의 정보와 일치하는 공개키로 검증가능한 전자서명을 제출하는 것
•
Bitcoin이 대표적인 UTXO 기반 블록체인
어카운트 기반 블록체인 (Account-based Blockchain)
•
어카운트는 블록체인을 구성하는 주체(entity)를 표현하며 상태를 기록
•
사용자는 어카운트를 사용할 때마다 어카운트 공개키로 검증가능한 전자서명을 생성
•
상태를 기록할 수 있기 때문에 스마트 컨트랙트를 구현하기에 용이
•
Ethereum, Klaytn이 대표적인 어카운트 기반 블록체인
Ethereum 어카운트, 주소, 상태
•
Ethereum의 어카운트는 Ethereum의 주체(entity)를 표현하고 그 상태를 기록하는데 사용
•
어카운트는 EOA(Externally Owned Account)와 스마트 컨트랙트로 구분
•
Ethereum 사용자는 EOA를 사용
•
사용자는 임의의 공개키와 비밀키 쌍(Key Pair)을 생성한 뒤 공개키를 어카운트 주소로 변환하여 EOA를 생성
◦
별도의 승인과정이 필요없으며 Ethereum 네트워크와 통신도 필요없음
◦
위 과정으로 인해 어카운트는 특정 키페어에 종속
•
사용자의 상태(state)는 어카운트 주소로 찾을 수 있는 블록체인 저장공간에 기록
트랜잭션(Transaction, TX)
•
블록은 트랜젝션들을 일정한 순서로 정렬하여 저장하는 컨테이너
•
트랜젝션은 어카운트의 행동
•
트랜젝션의 순서는 중요; TX_1 → TX_2와 TX_2 → TX_1은 다름
•
블록체인 참여자들은 블록을 검증할 때 트랜잭션들이 올바른 순서대로 정렬되었는지를 확인 후 합의
•
각각의 트랜잭션들은 어카운트에 연결된 공개키로 검증가능한 서명을 포함
Confirmation vs. Finality
•
Confirmation 숫자는 트랜잭션이 블록에 포함된 이후 생성된 블록의 숫자
◦
임의의 트랜잭션 T가 포함된 블록의 높이가 100, 현재 블록높이가 105라면 T의 confirmation 숫자는 6
•
PoW를 사용하는 블록체인들은 finality가 없기 때문에 confirmation 숫자가 중요
•
Finality란 블록의 완결성을 의미
◦
합의를 통해 생성된 블록이 번복되지 않을 경우 완결성이 존재
•
PoW 기반 합의는 확률에 기반하기 때문에 경우에 따라 블록이 사라질 수 있으므로 완결성이 부재함
◦
PoW 블록체인은 수학적으로 복잡한 퍼즐을 풀어 블록을 제안할 자격을 얻는 구조
◦
만약 두명의 서로 다른 참여자가 동시에 퍼즐을 풀어 두개의 올바른 블록을 생성한다면 두 블록 중 하나는 (eventually) 사라지게 됨
◦
이 때문에 블록이 확률적 완결성을 갖기까지 일정 갯수 이상의 블록이 생성되기를 기다려야 함
Understanding Bitcoin’s 6 Confirmations Rule
•
네트워크 시차로 인해 생성된 우연한 복수의 블록들 가운데 하나가 선택되는데 필요한 블록은 두어개 정도 → 2~3 confirmations
•
퍼즐을 빠르게 풀 수 있는 악의적인 참여자(공격자)가 있을 경우 그 참여자의 해시능력(Hash Power)에 따라 필요한 confirmation 숫자가 달라짐
◦
해시능력이 높을 수록 퍼즐을 푸는 속도도 빠르기 때문에 주어진 문제를 먼저 풀 확률이 높아짐
◦
해시능력이 높은 참여자는 longest chain을 임의로 선택 또는 생성할 수 있음
◦
따라서 해시능력을 감안하더라도 임의로 블록체인을 변경하지 못할 정도로 충분히 많은 블록이 생성되기를 기다려야할 필요가 생김
◦
Bitcoin의 6 confirmation 법칙은 공격자가 전체 해시능력의 약 25%를 가질 때를 가정한 숫자
BFT 기반 블록체인
•
BFT 기반 블록체인은 블록의 완결성이 보장됨
◦
네트워크가 동기화되어 있기 때문
◦
블록 생성이 PoW에 비해 빠르고 경제적
•
하지만 네트워크 동기화의 필요로 인해 참여자의 숫자가 제한됨
◦
네트워크 참여자 구성이 고정되어 있어야 합의가 가능
◦
구성이 변경될 경우 모든 네트워크 참여자가 새로운 구성을 인지하기 까지 합의 불가능
◦
합의 알고리즘이 네트워크 동기화를 가정하고 짜여졌기 때문에 네트워크 사용량이 높음
◦
참여자가 많아질 경우 네트워크 오버헤드로 인해 합의가 느림