Blockchain 101
JINHO YOO, theloop
해결하고자
하는 문제
● 내가 주고 받은
파일/데이타가 중간에 단
한번도 위조없이 온 것인가?
● 내가 받은 파일/데이타의
기록들이 다른 사람들과
모두 같은 것인가?
Blockchain의 정의
“A block chain, or blockchain, is a distributed
database that maintains a continuously-growing
list of data records hardened against tampering
and revision.”
Blockchain의 정의
● Distributed database
○ 분산된 Database
● That maintains a continuously-growing list of data
records hardened against tampering and revision
○ 위변조되지 않게 계속 늘어나는 데이타들의
목록을 담고 있다.
주의할 점
● Blockchain != Bitcoin
○ Blockchain은 검증을 위해 기록을 변경불가하게 만들어
놓은 것.
○ Bitcoin은 Blockchain을 ‘전자화폐'에 활용한 경우다.
○ 응용되는 곳마다 조금씩 다른 형태를 가지고 있다.
● 핵심은
○ 분산되어서
○ 위변조가 되지 않는 것
분산형 database의 중요한 의미는?
● 내가 가진 정보의 흐름을 모두 알고 있다.
● 이 정보는 누구나 다 알고 있다.
● 이를 조작하는 것이 사실상 불가능하다.
● 모든 사람들이 검증에 참여함으로 검증/보증을 위한
중계자가 필요없다.
Ex) Bitcoin에서 사용된 Blockchain
Transaction / Block / Blockchain
Transaction
● A에서 B로 ‘무언가’
보낸다는 정보.
● 만들어지는 순간
네트워크에 뿌려진다.
Block
● 일정시간동안
네트워크상에 있는
Transaction들의 집합.
● 검증이 되었을 수도
있고 안되었을 수도
있다.
Blockchain
● 검증된 Block들의 집합
● 검증된 것들은 다시
네트워크에 뿌려짐
Block
Transaction
Transaction
Transaction
Block
Blockchain - Bitcoin에 구현된 예
Genesis block:
처음 만들어진
Block
● 각 Block은 아래 정보로 구성되어 있다.
○ 앞선 Block의 hash
■ Genesis block에서부터 현재
Block까지 영향을 미친다.
■ 각 Block들이 만들어지는
순서에 따라 새롭게 hash가
만들어지므로 중간에 위변조가
일어나면 달라질 수 밖에 없다.
○ Timestamp: 거래 시점
○ Nonce: Hash함수를 이용하여
결과값을 만들 때 특정한 수를 더
첨가해서 결과를 만드는 값.
(검증되야 나옴)
■ Mining 이란 이 값을 찾는
것이다.
○ Merkle tree라는 트리 구조의 root값 .
Blockchain은 과거 정보를 어떻게 다 가지고 다닐까?
● 모든 Transaction데이타를 Block안에 ‘정말’ 가지고 있다.
○ Merkle tree 등의 방법으로 필요한 데이타만 담음.
○ 실제 Transaction data도 크기가 얼마 안됨. 참고
BlockBlock
tt-1
Blockchain은 과거 정보를 어떻게 다 가지고 다닐까?
● 앞선 Block의 Hash값을 현재 Block이 가지고 있다.
● 해당 Block내의 Transaction을 가지고 계산한 Merkle tree root hash를 각
Block마다 담고 있다.
● 전체 거래 정보가 의외로 작다.
BlockBlock
Block[t-1]의 Hash
tt-1
Merckle tree root Hash
Merkle tree
● 모든 Block에 대한 Hash를 ‘요약'해주는 Binary
tree 구조
● 모든 Block은 Merkle tree의 root에 해당하는
Hash를 가지고 다닌다.
● 모든 Block안의 Hash는 leaf에 있는 node들의
hash를 hash한 값이다.
● Block chain이 길수록 root에서 아래로
내려온다.
● 이 Hash값이 이상한지는 바로 위의 node가
가진 Hash를 현재 같은 level에 있는 다른
node와의 hash계산과 같은지 아닌지를
비교함으로 확인한다.
● 매번 Tx가 증가할 때마다 Block내의 Merkle
tree root를 다시 계산해서 해당 Block에 써야
한다.
Blockchain은 검증은 어떻게 하나?
● Proof-of-work
○ 블록을 증명하는 이른바 ‘채굴자'가 일을 함으로 증명
■ Ex) Bitcoin의 Mining.
● Proof-of-stake:
○ 소유자가 자신이 가진 자산(Stake)를 스스로 증명해야 한다.
○ 공격에 방어하기 위해 블록체인 전체 컨트롤하는 Master public key를
두고 있다.
● Consensus-by-bet:
○ 네트워크에 참여하는 사람들의 동의를 통해서 승인
○ 참여하는 노드들은 보증금을 걸고 승인에 참여.
○ 이를 위한 인센티브/처벌 시스템을 가동
Blockchain은 검증은 어떻게 하나? -2
● Trust
○ 네트워크에 참여하는 노드들의 투표와 동의를 통해서 승인
○ 기본적으로 ‘믿을 수 있는’ node들만 있다고 가정
○ Byzantine agreement protocol을 기반으로 이용
● Membership
○ 소유자가 자신이 가진 자산(Stake)를 스스로 증명해야 한다.
○ 공격에 방어하기 위해 블록체인 전체 컨트롤하는 Master public key를
두고 있다.
Mining(채굴) - Bitcoin이나 Ethereum의 경우
PoW에서 검증작업을 해주고 그 댓가로 보상을
받는 것
보상 자체가 핵심이 아니다… -.-;;
Blockchain은 정보를 어떻게 담아다니나?
● 각 Block안의 ‘거래'정보는
코드로 작성되어 있다.
● 이 코드들을 실행함으로
거래를 유효화한다. Block
Script
Blockchain은 정보를 어떻게 담아다니나? -
Bitcoin● 각 Block안의 ‘거래'정보는
코드로 작성되어 있다.
● 이 코드들을 실행함으로
거래를 유효화한다.
● 아주 아주 간단한 Stack기반 언어로 구성
● 대부분의 경우 ‘A가 B에게 지불하는 형식
○ Loop가 없다.
● OpCode처럼 표현되어 있다
● 잠금 스크립트, 해제 스크립트로 구성.
○ 잠금 스크립트:
■ 예상 지출, 향후 출력값을 소비하기
위해 충족되어야 하는 조건명시
○ 해제 스크립트
■ 잠금 스크립트가 출력값에 놓아 둔
조건을 해결하거나 충족시켜서
출력값이 소비될 수 있게 하는
스크립트
● 자세한 것은 여기
Blockchain은 정보를 어떻게 담아다니나?
-Ethereum● 각 Block안의 ‘거래'정보는
코드로 작성되어 있다.
● 이 코드들을 실행함으로
거래를 유효화한다.
● Solidity라는 언어로 구성.
● Loop도 있고 일반적인 Computer
language스럽다.
○ Compile되서 OpCode로 돌아다닌다.
● 돈거래 외에도 여러가지를 코딩하기가
쉽다.
● Gas라는 개념이 있어서 무한정 반복할 수
없다.
○ Code가 돌아가려고 하면 gas를
소비해야 한다.
○ Gas price를 transaction을 만든
사람이 지정
■ 이 사람이 gas_price * gas값을
지불.
○ 실행하다가 Gas가 떨어지면
동작하는 것을 중지.
화폐 개념없이 ‘원장'개념만 있는 Blockchain -
Hyperledger
● PoW방식이 아니라 Consneus
방식으로 거래의 신뢰 보증
● Chaincode라는 방식으로
Contract구현
● 자세한 사항은 여기 참조
● https://www.hyperledger.org/
Blockchain으로 뭔가 만들어 보려 한다면 고려할 것
● 뭘 담아서 Block을 구성할 것인가?
● 화폐 개념 넣을 것인가 말것인가?
● 검증과정을 어떻게 구성할 것인가? PoW? PoS?
Reference
● Deloitte, Blockchain Enigma. Paradox. Opportunity
● Korbit, 블록체인의 기술적 이해 및 도입을 위한 첫걸음
● Ethereum white paper
● Solidity official document
● Blockchain size
● Hyperledger white paper
● https://www.hyperledger.org/

Blockchain 101

  • 1.
  • 2.
    해결하고자 하는 문제 ● 내가주고 받은 파일/데이타가 중간에 단 한번도 위조없이 온 것인가? ● 내가 받은 파일/데이타의 기록들이 다른 사람들과 모두 같은 것인가?
  • 3.
    Blockchain의 정의 “A blockchain, or blockchain, is a distributed database that maintains a continuously-growing list of data records hardened against tampering and revision.”
  • 4.
    Blockchain의 정의 ● Distributeddatabase ○ 분산된 Database ● That maintains a continuously-growing list of data records hardened against tampering and revision ○ 위변조되지 않게 계속 늘어나는 데이타들의 목록을 담고 있다.
  • 5.
    주의할 점 ● Blockchain!= Bitcoin ○ Blockchain은 검증을 위해 기록을 변경불가하게 만들어 놓은 것. ○ Bitcoin은 Blockchain을 ‘전자화폐'에 활용한 경우다. ○ 응용되는 곳마다 조금씩 다른 형태를 가지고 있다. ● 핵심은 ○ 분산되어서 ○ 위변조가 되지 않는 것
  • 6.
    분산형 database의 중요한의미는? ● 내가 가진 정보의 흐름을 모두 알고 있다. ● 이 정보는 누구나 다 알고 있다. ● 이를 조작하는 것이 사실상 불가능하다. ● 모든 사람들이 검증에 참여함으로 검증/보증을 위한 중계자가 필요없다.
  • 7.
  • 9.
    Transaction / Block/ Blockchain Transaction ● A에서 B로 ‘무언가’ 보낸다는 정보. ● 만들어지는 순간 네트워크에 뿌려진다. Block ● 일정시간동안 네트워크상에 있는 Transaction들의 집합. ● 검증이 되었을 수도 있고 안되었을 수도 있다. Blockchain ● 검증된 Block들의 집합 ● 검증된 것들은 다시 네트워크에 뿌려짐 Block Transaction Transaction Transaction Block
  • 10.
    Blockchain - Bitcoin에구현된 예 Genesis block: 처음 만들어진 Block ● 각 Block은 아래 정보로 구성되어 있다. ○ 앞선 Block의 hash ■ Genesis block에서부터 현재 Block까지 영향을 미친다. ■ 각 Block들이 만들어지는 순서에 따라 새롭게 hash가 만들어지므로 중간에 위변조가 일어나면 달라질 수 밖에 없다. ○ Timestamp: 거래 시점 ○ Nonce: Hash함수를 이용하여 결과값을 만들 때 특정한 수를 더 첨가해서 결과를 만드는 값. (검증되야 나옴) ■ Mining 이란 이 값을 찾는 것이다. ○ Merkle tree라는 트리 구조의 root값 .
  • 11.
    Blockchain은 과거 정보를어떻게 다 가지고 다닐까? ● 모든 Transaction데이타를 Block안에 ‘정말’ 가지고 있다. ○ Merkle tree 등의 방법으로 필요한 데이타만 담음. ○ 실제 Transaction data도 크기가 얼마 안됨. 참고 BlockBlock tt-1
  • 12.
    Blockchain은 과거 정보를어떻게 다 가지고 다닐까? ● 앞선 Block의 Hash값을 현재 Block이 가지고 있다. ● 해당 Block내의 Transaction을 가지고 계산한 Merkle tree root hash를 각 Block마다 담고 있다. ● 전체 거래 정보가 의외로 작다. BlockBlock Block[t-1]의 Hash tt-1 Merckle tree root Hash
  • 13.
    Merkle tree ● 모든Block에 대한 Hash를 ‘요약'해주는 Binary tree 구조 ● 모든 Block은 Merkle tree의 root에 해당하는 Hash를 가지고 다닌다. ● 모든 Block안의 Hash는 leaf에 있는 node들의 hash를 hash한 값이다. ● Block chain이 길수록 root에서 아래로 내려온다. ● 이 Hash값이 이상한지는 바로 위의 node가 가진 Hash를 현재 같은 level에 있는 다른 node와의 hash계산과 같은지 아닌지를 비교함으로 확인한다. ● 매번 Tx가 증가할 때마다 Block내의 Merkle tree root를 다시 계산해서 해당 Block에 써야 한다.
  • 14.
    Blockchain은 검증은 어떻게하나? ● Proof-of-work ○ 블록을 증명하는 이른바 ‘채굴자'가 일을 함으로 증명 ■ Ex) Bitcoin의 Mining. ● Proof-of-stake: ○ 소유자가 자신이 가진 자산(Stake)를 스스로 증명해야 한다. ○ 공격에 방어하기 위해 블록체인 전체 컨트롤하는 Master public key를 두고 있다. ● Consensus-by-bet: ○ 네트워크에 참여하는 사람들의 동의를 통해서 승인 ○ 참여하는 노드들은 보증금을 걸고 승인에 참여. ○ 이를 위한 인센티브/처벌 시스템을 가동
  • 15.
    Blockchain은 검증은 어떻게하나? -2 ● Trust ○ 네트워크에 참여하는 노드들의 투표와 동의를 통해서 승인 ○ 기본적으로 ‘믿을 수 있는’ node들만 있다고 가정 ○ Byzantine agreement protocol을 기반으로 이용 ● Membership ○ 소유자가 자신이 가진 자산(Stake)를 스스로 증명해야 한다. ○ 공격에 방어하기 위해 블록체인 전체 컨트롤하는 Master public key를 두고 있다.
  • 16.
    Mining(채굴) - Bitcoin이나Ethereum의 경우 PoW에서 검증작업을 해주고 그 댓가로 보상을 받는 것 보상 자체가 핵심이 아니다… -.-;;
  • 17.
    Blockchain은 정보를 어떻게담아다니나? ● 각 Block안의 ‘거래'정보는 코드로 작성되어 있다. ● 이 코드들을 실행함으로 거래를 유효화한다. Block Script
  • 18.
    Blockchain은 정보를 어떻게담아다니나? - Bitcoin● 각 Block안의 ‘거래'정보는 코드로 작성되어 있다. ● 이 코드들을 실행함으로 거래를 유효화한다. ● 아주 아주 간단한 Stack기반 언어로 구성 ● 대부분의 경우 ‘A가 B에게 지불하는 형식 ○ Loop가 없다. ● OpCode처럼 표현되어 있다 ● 잠금 스크립트, 해제 스크립트로 구성. ○ 잠금 스크립트: ■ 예상 지출, 향후 출력값을 소비하기 위해 충족되어야 하는 조건명시 ○ 해제 스크립트 ■ 잠금 스크립트가 출력값에 놓아 둔 조건을 해결하거나 충족시켜서 출력값이 소비될 수 있게 하는 스크립트 ● 자세한 것은 여기
  • 19.
    Blockchain은 정보를 어떻게담아다니나? -Ethereum● 각 Block안의 ‘거래'정보는 코드로 작성되어 있다. ● 이 코드들을 실행함으로 거래를 유효화한다. ● Solidity라는 언어로 구성. ● Loop도 있고 일반적인 Computer language스럽다. ○ Compile되서 OpCode로 돌아다닌다. ● 돈거래 외에도 여러가지를 코딩하기가 쉽다. ● Gas라는 개념이 있어서 무한정 반복할 수 없다. ○ Code가 돌아가려고 하면 gas를 소비해야 한다. ○ Gas price를 transaction을 만든 사람이 지정 ■ 이 사람이 gas_price * gas값을 지불. ○ 실행하다가 Gas가 떨어지면 동작하는 것을 중지.
  • 20.
    화폐 개념없이 ‘원장'개념만있는 Blockchain - Hyperledger ● PoW방식이 아니라 Consneus 방식으로 거래의 신뢰 보증 ● Chaincode라는 방식으로 Contract구현 ● 자세한 사항은 여기 참조 ● https://www.hyperledger.org/
  • 21.
    Blockchain으로 뭔가 만들어보려 한다면 고려할 것 ● 뭘 담아서 Block을 구성할 것인가? ● 화폐 개념 넣을 것인가 말것인가? ● 검증과정을 어떻게 구성할 것인가? PoW? PoS?
  • 22.
    Reference ● Deloitte, BlockchainEnigma. Paradox. Opportunity ● Korbit, 블록체인의 기술적 이해 및 도입을 위한 첫걸음 ● Ethereum white paper ● Solidity official document ● Blockchain size ● Hyperledger white paper ● https://www.hyperledger.org/