Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Blockchain 101

2,472 views

Published on

Blockchain의 아주 기초적인 내용들을 담아봤습니다.

Published in: Engineering
  • Hello! High Quality And Affordable Essays For You. Starting at $4.99 per page - Check our website! https://vk.cc/82gJD2
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Blockchain 101

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

×