O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

블록체인 한 번에 이해하기

4.761 visualizações

Publicada em

쉽게 알아보는 블록체인 이야기

Publicada em: Tecnologia

블록체인 한 번에 이해하기

  1. 1. Crypto Economy의 뼈대 블록체인 한 번에 이해하기
  2. 2. BlockchainDecentralizestheworld 오 명 운 (homo.efficio@gmail.com) 2
  3. 3. BlockchainDecentralizestheworld 블록체인에 대한 궁금증 3
  4. 4. BlockchainDecentralizestheworld 채굴 4 블록 위조 변조 자금세탁 신뢰
  5. 5. BlockchainDecentralizestheworld 채굴 5 작업 증명 블록 합의 위조 변조 탈중앙화 해쉬 신뢰 자금세탁 51% 공격
  6. 6. BlockchainDecentralizestheworld 블록체인은 무엇인가? 6
  7. 7. BlockchainDecentralizestheworld 블록체인은 무엇인가? 블록체인은 왜 믿을 만한가? 7
  8. 8. BlockchainDecentralizestheworld 블록체인은 무엇인가? 블록체인은 왜 믿을 만한가? 블록체인은 어떻게 세상을 바꿀까? 8
  9. 9. BlockchainDecentralizestheworld 블록체인은 무엇인가? 블록체인은 왜 믿을 만한가? 블록체인은 어떻게 세상을 바꿀까? 9
  10. 10. BlockchainDecentralizestheworld 블록체인은 OOO다 10
  11. 11. BlockchainDecentralizestheworld 블록체인은 거대한 공개 분산 장부다 11
  12. 12. BlockchainDecentralizestheworld 블록체인은 거대한 공개 분산 장부다 복제 12
  13. 13. BlockchainDecentralizestheworld 블록체인은 거대한 공개 복제 장부다 비트코인은 전 세계적으로 1만대 이상의 노드로 구성 출처: https://bitnodes.earn.com/ 13
  14. 14. BlockchainDecentralizestheworld A가 B에게 C원을 보낸 거래 내역을 누구나 열람할 수 있다. 하지만 A가 누구인지 B가 누구인지는 블록체인만으로는 알 수 없다. 블록체인은 거대한 공개 복제 장부다 출처: https://blockchain.info/ 14
  15. 15. BlockchainDecentralizestheworld 전 세계에 퍼져 있는 수많은 노드에 동일한 거래 내역이 복제 일부에서 장애가 나거나 공격을 당하더라도 전체는 살아있다. 블록체인은 거대한 공개 복제 장부다 출처: http://www.indiabitcoin.com/ibm-blockchain/ 15
  16. 16. BlockchainDecentralizestheworld 거래 정보가 시간 순으로 기록된 장부다 블록체인은 거대한 공개 복제 장부다 16
  17. 17. BlockchainDecentralizestheworld 블록체인은 거대한 공개 복제 장부다 17
  18. 18. BlockchainDecentralizestheworld 블록체인은 블록이 연쇄적으로 이어진 거대한 공개 복제 장부다 18
  19. 19. BlockchainDecentralizestheworld 블록(Block) 블록은 다수의 유효한 거래 정보의 묶음 Block #2 거래 정보 2-0 채굴자에게 12.5 BTC 전송 2-1 F가 C에게 1.8 BTC 전송 2-2 H가 C에게 0.2 BTC 전송 … 19
  20. 20. BlockchainDecentralizestheworld Block #2 블록 헤더(Block Header) 블록 헤더는 블록의 정보를 표시 거래 정보 … 블록 헤더 Version: PreviousHash: 0000a28d7 MerkleHash: Time: Bits: Nonce: 기타 정보 20
  21. 21. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 블록 해쉬(Block Hash) 블록 해쉬는 블록 헤더를 해쉬 함수로 계산한 값 거래 정보 … 블록 헤더 Version: PreviousHash: 0000a28d7 MerkleHash: Time: Bits: Nonce: 기타 정보 21
  22. 22. BlockchainDecentralizestheworld 해쉬 함수(Hash Function) 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 22
  23. 23. BlockchainDecentralizestheworld 해쉬 함수(Hash Function) 해쉬 브라운 23
  24. 24. BlockchainDecentralizestheworld 해쉬 함수(Hash Function) 해쉬 브라운 24
  25. 25. BlockchainDecentralizestheworld 해쉬 함수(Hash Function) SHA256-Hash(Blockchain) = 625da44e4eaf58d61cf048d168aa6f5e49 2dea166d8bb54ec06c30de07db57e1 25
  26. 26. BlockchainDecentralizestheworld 해쉬 함수(Hash Function) SHA256-Hash(Blockchain) = 625da44e4eaf58d61cf048d168aa6f5e49 2dea166d8bb54ec06c30de07db57e1 SHA256-Hash(Blockchain) = 625da44e4eaf58d61cf048d168aa6f5e49 2dea166d8bb54ec06c30de07db57e1 26
  27. 27. BlockchainDecentralizestheworld 해쉬 함수(Hash Function) 입력값이 같으면 결괏값은 항상 같게 나온다. 27
  28. 28. BlockchainDecentralizestheworld 해쉬 함수(Hash Function) SHA256-Hash(Blockchain) = 625da44e4eaf58d61cf048d168aa6f5e49 2dea166d8bb54ec06c30de07db57e1 SHA256-Hash(Clockchain) = 37f3819e79734a9013eec526febf83f289 f2c6a729191e1c6f47ec5605578b28 한 글자만 바꿔도 결과는 완전히 달라짐 28
  29. 29. BlockchainDecentralizestheworld 해쉬 함수(Hash Function) 입력값이 같으면 결괏값은 항상 같게 나온다. 특정 결괏값이 나오는 입력값을 예측할 수 없다. 29
  30. 30. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 블록 해쉬(Block Hash) 블록 해쉬는 블록 헤더를 해쉬 함수로 계산한 값 거래 정보 … 블록 헤더 Version: PreviousHash: 0000a28d7 MerkleHash: Time: Bits: Nonce: 기타 정보 30
  31. 31. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 블록 해쉬(Block Hash) 블록 해쉬는 블록 헤더를 해쉬 함수로 계산한 값 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: 기타 정보 SHA256(블록 헤더) = 00006c3ed… 31
  32. 32. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: ? 기타 정보 32
  33. 33. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: ? 기타 정보 33 블록 해쉬가 특정 값(ex: 000098acee…)보다 작은 값이 나오면 작업 증명 성공
  34. 34. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: ? 기타 정보 34 블록 해쉬가 특정 값(ex: 000098acee…)보다 작은 값이 나오면 작업 증명 성공 000098acee…라는 값은 난이도에 의해 정해진다. 비트코인은 평균 21,600분을 주기로 난이도 조정
  35. 35. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 블록 해쉬는 블록 헤더를 해쉬 함수로 계산한 값 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: 기타 정보 SHA256(블록 헤더) = 00006c3ed… 35
  36. 36. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 블록 해쉬는 블록 헤더를 해쉬 함수로 계산한 값 거래 정보 … 블록 헤더 Version: 이미 정해짐 PreviousHash: 0x0000a28d7 MerkleHash: 이미 정해짐 Time: 이미 정해짐 Bits: 이미 정해짐 Nonce: ? 기타 정보 36 블록 헤더 정보 중에서 Nonce 외의 값은 이미 정해져 있다.
  37. 37. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 블록 해쉬는 블록 헤더를 해쉬 함수로 계산한 값 거래 정보 … 블록 헤더 Version: 이미 정해짐 PreviousHash: 0x0000a28d7 MerkleHash: 이미 정해짐 Time: 이미 정해짐 Bits: 이미 정해짐 Nonce: ? 기타 정보 37 어떤 조건을 충족하는 블록 해쉬 값을 찾으려면
  38. 38. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 블록 해쉬는 블록 헤더를 해쉬 함수로 계산한 값 거래 정보 … 블록 헤더 Version: 이미 정해짐 PreviousHash: 0x0000a28d7 MerkleHash: 이미 정해짐 Time: 이미 정해짐 Bits: 이미 정해짐 Nonce: ? 기타 정보 38 Nonce값을 바꿔가면서 블록 해쉬 계산을 반복하는 수 밖에 없다.
  39. 39. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 블록 해쉬는 블록 헤더를 해쉬 함수로 계산한 값 거래 정보 … 블록 헤더 Version: 이미 정해짐 PreviousHash: 0x0000a28d7 MerkleHash: 이미 정해짐 Time: 이미 정해짐 Bits: 이미 정해짐 Nonce: ? 기타 정보 39 왜? 해쉬 브라운에서 감자를 구할 수는 없으니까
  40. 40. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: 기타 정보 작업 증명의 실체 무식하게 0부터 시작해서 1씩 증가시키면서 특정 값보다 작은 블록 해쉬 값이 나올 때까지 계속 해쉬 계산을 반복한다!! 40
  41. 41. BlockchainDecentralizestheworld 작업 증명(Proof of Work) 블록 헤더 소프트웨어 버전 앞 블록의 블록 해쉬 머클해쉬 블록 생성 시각 채굴 난이도 Nonce 0 블록 해쉬 Fa8cba3ee…SHA256 41 > 000098acee…
  42. 42. BlockchainDecentralizestheworld 작업 증명(Proof of Work) 블록 헤더 소프트웨어 버전 앞 블록의 블록 해쉬 머클해쉬 블록 생성 시각 채굴 난이도 Nonce 0 블록 해쉬 Fa8cba3ee… 932d16e2f… 1 SHA256 SHA256 42 > 000098acee…
  43. 43. BlockchainDecentralizestheworld 작업 증명(Proof of Work) 블록 헤더 소프트웨어 버전 앞 블록의 블록 해쉬 머클해쉬 블록 생성 시각 채굴 난이도 Nonce 0 블록 해쉬 Fa8cba3ee… 932d16e2f… 03a33f7dd… 1 2 SHA256 SHA256 SHA256 43 > 000098acee…
  44. 44. BlockchainDecentralizestheworld 작업 증명(Proof of Work) 블록 헤더 소프트웨어 버전 앞 블록의 블록 해쉬 머클해쉬 블록 생성 시각 채굴 난이도 Nonce 0 블록 해쉬 Fa8cba3ee… 932d16e2f… 03a33f7dd… 00006c3ed… 1 2 4,028,453,123 … SHA256 SHA256 SHA256 SHA256 심봤다!! … 44 < 000098acee…
  45. 45. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: 4,028,453,123 기타 정보 이렇게 0부터 1씩 더해가며 힘들게 구한 Nonce값이 4,028,453,123 그 때의 블록 해쉬 값이 00006c3ed… 작업 증명(Proof of Work) 45
  46. 46. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: ? 기타 정보 46 블록 해쉬가 특정 값(ex: 000098acee…)보다 작은 값이 나오면 작업 증명 성공
  47. 47. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: ? 기타 정보 47 블록 해쉬가 특정 값(ex: 000098acee…)보다 작은 값이 나오면 작업 증명 성공 블록 해쉬가 특정 값(ex: 000098acee…)보다 작은 값이 나오게 하는 Nonce 값을 찾으면 작업 증명 성공
  48. 48. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: ? 기타 정보 48 블록 해쉬가 특정 값(ex: 000098acee…)보다 작은 값이 나오게 하는 Nonce 값을 찾으면 작업 증명 성공 조건을 충족하는 Nonce 값이 하나만 존재하는 것은 아님
  49. 49. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 작업 증명(Proof of Work) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: ? 기타 정보 49 예를 들어, Nonce가 3일때 블록 해쉬가 000037dcf이면 000098acee…보다 작으므로 성공 Nonce가 328,427일때 블록 해쉬가 00001a8bb이면 000098acee…보다 작으므로 성공
  50. 50. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: 4,028,453,123 기타 정보 작업 증명이 완료되면 블록에 포함된 모든 거래가 유효한 거래로 확정되며 마침내 하나의 블록이 완성 작업 증명(Proof of Work) 50
  51. 51. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: 4,028,453,123 기타 정보 왜 이런 무식한 짓을?? 작업 증명(Proof of Work) 51
  52. 52. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: 4,028,453,123 기타 정보 위/변조 방지에 큰 역할 블록의 유효성 판단에 효율적 작업 증명(Proof of Work) 52
  53. 53. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: 4,028,453,123 기타 정보 위/변조 방지에 큰 역할 블록의 유효성 판단에 효율적 Nonce를 구할 때는 많은 계산이 필요하지만, 구해진 Nonce로 해당 블록의 블록 해쉬가 정말로 특정 값 이하인지 검증하는 것은 금방 작업 증명(Proof of Work) 53
  54. 54. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: 4,028,453,123 기타 정보 작업 증명 + 보상 채굴(Mining) 54
  55. 55. BlockchainDecentralizestheworld Block #2 (00006c3ed…) 거래 정보 … 블록 헤더 Version: PreviousHash: 0x0000a28d7 MerkleHash: Time: Bits: Nonce: 4,028,453,123 기타 정보 자신의 노력을 투입해서 곡괭이질(작업 증명)로 블록을 채굴(생성)하고 블록에 포함된 거래를 유효한 거래로 확정해준 대가와 거래의 수수료를 받는 일 채굴(Mining) 55
  56. 56. BlockchainDecentralizestheworld 수력발전소 옆 채굴장 채굴(Mining) 출처: http://biz.chosun.com/site/data/html_dir/2017/06/19/2017061901917.html 56
  57. 57. BlockchainDecentralizestheworld 대형 채굴장 내부 채굴(Mining) 출처: https://www.itworld.com/article/3014470/bitcoin-miner-knc-is- planning-another-four-week-datacenter-build-out.html 57
  58. 58. BlockchainDecentralizestheworld 블록체인(BlockChain) 블록 해쉬 값을 기준으로 블록이 체인처럼 연쇄적으로 이어진 것 Block #0 (000035bf1) 블록 헤더 Version: PreviousHash: 0 MerkleHash: Time: Bits: Nonce: 2,273,652,568 거래 정보 0-0 채굴자에게 50 BTC 전송 기타 정보 Block #1 (0000a28d7) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: Time: Bits: Nonce: 378,915 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 0.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 Block #2 (00006c3ed) 블록 헤더 Version: PreviousHash: 0000a28d7 MerkleHash: Time: Bits: Nonce: 4,028,453,123 거래 정보 2-0 채굴자에게 50 BTC 전송 2-1 F가 C에게 1.8 BTC 전송 2-2 H가 C에게 0.2 BTC 전송 … 기타 정보 … 58
  59. 59. BlockchainDecentralizestheworld 블록체인 네트워크 블록체인이 여러 노드에 복제되어 구성된 P2P 네트워크 59
  60. 60. BlockchainDecentralizestheworld 블록체인 충돌 그림 출처: Mastering Bitcoin - http://orm-chimera-prod.s3.amazonaws.com/1234000001802/images/msbt_0804.png 캐나다(빨간색)와 호주(초록색)에서 동시에 블록 생성 성공 후 각각 파란색 블록 다음에 추가한 후 전파 60
  61. 61. BlockchainDecentralizestheworld 블록체인 충돌 그림 출처: Mastering Bitcoin - http://orm-chimera-prod.s3.amazonaws.com/1234000001802/images/msbt_0805.png 러시아가 블록(분홍색) 생성 후 호주 생성 블록(초록색) 뒤에 추가 후 전파 61
  62. 62. BlockchainDecentralizestheworld 블록체인 충돌 그림 출처: Mastering Bitcoin - http://orm-chimera-prod.s3.amazonaws.com/1234000001802/images/msbt_0805.png 파란 블록 뒤에 빨간색 블록만 있던 캐나다에 초록색, 분홍색이 추가된 블록 전달되며 충돌 62
  63. 63. BlockchainDecentralizestheworld 블록체인 충돌 해소 그림 출처: Mastering Bitcoin - http://orm-chimera-prod.s3.amazonaws.com/1234000001802/images/msbt_0805.png 더 많은 작업 증명이 수행된 쪽 즉 길이가 더 긴 체인이 우선 채택 63
  64. 64. BlockchainDecentralizestheworld 블록체인 충돌 해소 그림 출처: Mastering Bitcoin - http://orm-chimera-prod.s3.amazonaws.com/1234000001802/images/msbt_0805.png 6 confirm을 받아야 안전하다고 말하는 이유 64
  65. 65. BlockchainDecentralizestheworld 블록체인 충돌 해소 그림 출처: https://blockchain.info/ko/charts/n-orphaned-blocks 65 짧은 체인에 속해 있다가 버려진 블록의 수
  66. 66. BlockchainDecentralizestheworld 블록체인은 블록이 연쇄적으로 이어진 거대한 공개 복제 장부다 66
  67. 67. BlockchainDecentralizestheworld 블록체인은 블록이 연쇄적으로 이어져 위변조가 불가능한 거대한 공개 복제 장부다 67
  68. 68. BlockchainDecentralizestheworld 위조 속이는 것 이중 지불 오명운 지갑 잔액: 5만원 아버지께 5만원 드림 어머니께 5만원 드림 68
  69. 69. BlockchainDecentralizestheworld 이중 지불 계획 그림 출처: Mastering Bitcoin - http://orm-chimera-prod.s3.amazonaws.com/1234000001802/images/msbt_0804.png 잔액이 적힌 장부가 캐나다에도 호주에도 복제 69
  70. 70. BlockchainDecentralizestheworld 이중 지불 실행 그림 출처: Mastering Bitcoin - http://orm-chimera-prod.s3.amazonaws.com/1234000001802/images/msbt_0804.png 캐나다에서 아버지께 5만원 드리고 동시에 호주에서 어머니께 5만원 드리고 70
  71. 71. BlockchainDecentralizestheworld 이중 지불 발견 그림 출처: Mastering Bitcoin - http://orm-chimera-prod.s3.amazonaws.com/1234000001802/images/msbt_0804.png 두 거래가 전파되다가 어딘가에서 마주치면 71
  72. 72. BlockchainDecentralizestheworld 이중 지불 해소 그림 출처: Mastering Bitcoin - http://orm-chimera-prod.s3.amazonaws.com/1234000001802/images/msbt_0804.png 둘 중 조금이라도 늦게 도착한 거래는 잔액이 없는 상태에서의 지불이 되므로 무효 처리 72
  73. 73. BlockchainDecentralizestheworld 변조 거래 정보 변경 73
  74. 74. BlockchainDecentralizestheworld 블록(Block) 머클 해쉬: 거래 정보를 해쉬 함수로 계산한 값 Block #1 (0000a28d7) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 8ed13f62a Time: Bits: Nonce: 378,915 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 0.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 SHA256(거래 정보) = 8ed13f62a 74
  75. 75. BlockchainDecentralizestheworld Block #1 (0000a28d7) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 8ed13f62a Time: Bits: Nonce: 378,915 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 0.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 변조 거래 정보 변경 Block #1 (0000a28d7) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 8ed13f62a Time: Bits: Nonce: 378,915 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 1.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 75
  76. 76. BlockchainDecentralizestheworld 변조 거래 정보 변경 머클 해쉬 변경 Block #1 (0000a28d7) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 8ed13f62a Time: Bits: Nonce: 378,915 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 0.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 Block #1 (0000a28d7) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 37dfca1e2 Time: Bits: Nonce: 378,915 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 1.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 76
  77. 77. BlockchainDecentralizestheworld 변조 거래 정보 변경 머클 해쉬 변경 블록 해쉬 변경 Block #1 (0000a28d7) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 8ed13f62a Time: Bits: Nonce: 378,915 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 0.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 Block #1 (00009afa2) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 37dfca1e2 Time: Bits: Nonce: 3,738,025,294 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 1.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 77
  78. 78. BlockchainDecentralizestheworld Block #1 (0000a28d7) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 8ed13f62a Time: Bits: Nonce: 378,915 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 0.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 Block #1 (00009afa2) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 37dfca1e2 Time: Bits: Nonce: 3,738,025,294 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 1.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 변조 거래 정보를 변경하면 작업 증명을 다시 해야 된다. 작업 증명에는 시간이 걸린다. 78
  79. 79. BlockchainDecentralizestheworld 변조 전 블록체인 블록 해쉬 값을 기준으로 블록이 체인처럼 연쇄적으로 이어진 것 … Block #0 (000035bf1) 블록 헤더 Version: PreviousHash: 0 MerkleHash: f174d2ee5 Time: Bits: Nonce: 2,273,652,568 거래 정보 0-0 채굴자에게 50 BTC 전송 기타 정보 Block #1 (0000a28d7) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 8ed13f62a Time: Bits: Nonce: 378,915 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 0.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 Block #2 (00006c3ed) 블록 헤더 Version: PreviousHash: 0000a28d7 MerkleHash: cd73b3fa4 Time: Bits: Nonce: 4,028,453,123 거래 정보 2-0 채굴자에게 50 BTC 전송 2-1 F가 C에게 1.8 BTC 전송 2-2 H가 C에게 0.2 BTC 전송 … 기타 정보 79
  80. 80. BlockchainDecentralizestheworld … Block #0 (000035bf1) 블록 헤더 Version: PreviousHash: 0 MerkleHash: f174d2ee5 Time: Bits: Nonce: 2,273,652,568 거래 정보 0-0 채굴자에게 50 BTC 전송 기타 정보 Block #2 (00006c3ed) 블록 헤더 Version: PreviousHash: 0000a28d7 MerkleHash: cd73b3fa4 Time: Bits: Nonce: 4,028,453,123 거래 정보 2-0 채굴자에게 50 BTC 전송 2-1 F가 C에게 1.8 BTC 전송 2-2 H가 C에게 0.2 BTC 전송 … 기타 정보 블록체인의 변조 Block #1 (00009afa2) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 37dfca1e2 Time: Bits: Nonce: 3,738,025,294 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 1.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 Block #1의 블록 해쉬 값 ≠ Block #2에 저장된 Block #1의 블록 해쉬 값 80
  81. 81. BlockchainDecentralizestheworld … Block #0 (000035bf1) 블록 헤더 Version: PreviousHash: 0 MerkleHash: f174d2ee5 Time: Bits: Nonce: 2,273,652,568 거래 정보 0-0 채굴자에게 50 BTC 전송 기타 정보 Block #2 (00006c3ed) 블록 헤더 Version: PreviousHash: 0000a28d7 MerkleHash: cd73b3fa4 Time: Bits: Nonce: 4,028,453,123 거래 정보 2-0 채굴자에게 50 BTC 전송 2-1 F가 C에게 1.8 BTC 전송 2-2 H가 C에게 0.2 BTC 전송 … 기타 정보 Block #1 (00009afa2) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 37dfca1e2 Time: Bits: Nonce: 3,738,025,294 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 1.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 블록체인의 변조 Block #1의 블록 해쉬 값 ≠ Block #2에 저장된 Block #1의 블록 해쉬 값 그럼 Block #2의 작업 증명도 다시 하고, 그럼 Block #3의 작업 증명도 다시 하고, … 81
  82. 82. BlockchainDecentralizestheworld … Block #0 (000035bf1) 블록 헤더 Version: PreviousHash: 0 MerkleHash: f174d2ee5 Time: Bits: Nonce: 2,273,652,568 거래 정보 0-0 채굴자에게 50 BTC 전송 기타 정보 Block #2 (00006c3ed) 블록 헤더 Version: PreviousHash: 0000a28d7 MerkleHash: cd73b3fa4 Time: Bits: Nonce: 4,028,453,123 거래 정보 2-0 채굴자에게 50 BTC 전송 2-1 F가 C에게 1.8 BTC 전송 2-2 H가 C에게 0.2 BTC 전송 … 기타 정보 Block #1 (00009afa2) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 37dfca1e2 Time: Bits: Nonce: 3,738,025,294 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 1.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 블록체인의 변조 그럼 Block #2의 작업 증명도 다시 하고, 그럼 Block #3의 작업 증명도 다시 하고, … 그 동안 변조되지 않은 원래 블록체인에는 멈추지 않고 블록이 계속 이어지므로, 변조된 블록체인의 길이보다 길어진다. 82
  83. 83. BlockchainDecentralizestheworld … Block #0 (000035bf1) 블록 헤더 Version: PreviousHash: 0 MerkleHash: f174d2ee5 Time: Bits: Nonce: 2,273,652,568 거래 정보 0-0 채굴자에게 50 BTC 전송 기타 정보 Block #2 (00006c3ed) 블록 헤더 Version: PreviousHash: 0000a28d7 MerkleHash: cd73b3fa4 Time: Bits: Nonce: 4,028,453,123 거래 정보 2-0 채굴자에게 50 BTC 전송 2-1 F가 C에게 1.8 BTC 전송 2-2 H가 C에게 0.2 BTC 전송 … 기타 정보 Block #1 (00009afa2) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 37dfca1e2 Time: Bits: Nonce: 3,738,025,294 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 1.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 블록체인의 변조 그 동안 변조되지 않은 원래 블록체인에는 멈추지 않고 블록이 계속 이어지므로, 변조된 블록체인의 길이보다 길어진다. 변조된 블록체인을 블록체인 네트워크에 퍼뜨려봤자 원래 블록체인보다 길이가 짧으므로 변조된 블록체인은 채택되지 않고 버려진다. 83
  84. 84. BlockchainDecentralizestheworld … Block #0 (000035bf1) 블록 헤더 Version: PreviousHash: 0 MerkleHash: f174d2ee5 Time: Bits: Nonce: 2,273,652,568 거래 정보 0-0 채굴자에게 50 BTC 전송 기타 정보 Block #2 (00006c3ed) 블록 헤더 Version: PreviousHash: 0000a28d7 MerkleHash: cd73b3fa4 Time: Bits: Nonce: 4,028,453,123 거래 정보 2-0 채굴자에게 50 BTC 전송 2-1 F가 C에게 1.8 BTC 전송 2-2 H가 C에게 0.2 BTC 전송 … 기타 정보 블록체인의 변조 Block #1 (00009afa2) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 37a5dd196 Time: Bits: Nonce: 3,738,025,294 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 1.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 변조하는 쪽이 해쉬 계산 능력이 더 좋아서 원래 블록체인보다 더 빨리 블록을 추가하고 결국 원래 블록체인보다 길이가 더 길어진다면? ☞ 51% Attack 84
  85. 85. BlockchainDecentralizestheworld … Block #0 (000035bf1) 블록 헤더 Version: PreviousHash: 0 MerkleHash: f174d2ee5 Time: Bits: Nonce: 2,273,652,568 거래 정보 0-0 채굴자에게 50 BTC 전송 기타 정보 Block #2 (00006c3ed) 블록 헤더 Version: PreviousHash: 0000a28d7 MerkleHash: cd73b3fa4 Time: Bits: Nonce: 4,028,453,123 거래 정보 2-0 채굴자에게 50 BTC 전송 2-1 F가 C에게 1.8 BTC 전송 2-2 H가 C에게 0.2 BTC 전송 … 기타 정보 블록체인의 변조 Block #1 (00009afa2) 블록 헤더 Version: PreviousHash: 000035bf1 MerkleHash: 37a5dd196 Time: Bits: Nonce: 3,738,025,294 거래 정보 1-0 채굴자에게 50 BTC 전송 1-1 A가 E에게 1.5 BTC 전송 1-2 D가 B에게 2.2 BTC 전송 … 기타 정보 경제적인 관점에서 보면 실행될 가능성이 사실 상 없다. 변조로 블록체인의 신뢰가 붕괴되면, 채굴에 따른 보상 가치가 폭락한다. 채굴로 얻을 수 있는 기대수익이 소멸되므로 변조를 시도한 쪽(해쉬 계산 능력이 큰 쪽)이 가장 많은 피해를 본다. 85
  86. 86. BlockchainDecentralizestheworld 블록체인은 블록이 연쇄적으로 이어져 위변조가 불가능한 거대한 공개 복제 장부다 86
  87. 87. BlockchainDecentralizestheworld 블록체인은 블록이 연쇄적으로 이어져 위변조가 불가능한 거대한 공개 복제 장부다 87
  88. 88. BlockchainDecentralizestheworld 생각해 볼 거리 88 현재 비트코인 채굴에 사용되는 전기량은 슬로바키아 1년 전기 사용량과 비슷 세계 전기 사용량의 0.13% 차지 연간 채굴에 사용되는 비용: $1,423,794,674 출처: https://digiconomist.net/bitcoin-energy-consumption
  89. 89. BlockchainDecentralizestheworld 다른 분산 원장 기술 89 다른 알고리듬 - Proof of Stake: 이더리움(캐스퍼) - Delegated PoS: EOS - Byzantine Fault Tolerance: BOScoin 다른 자료구조 - Directed Acyclic Graph: IOTA, HashGraph
  90. 90. BlockchainDecentralizestheworld 더 읽을 거리 90 비트코인, 블록체인과 금융의 혁신
  91. 91. BlockchainDecentralizestheworld 더 읽을 거리 91 온라인 무료 읽기 http://chimera.labs.oreilly.com/books/1234000001802
  92. 92. BlockchainDecentralizestheworld 더 읽을 거리 92 BlockChain 기초 개념 http://homoefficio.github.io/2016/01/23/BlockChain-기초-개념/ 블록체인 한 번에 이해하기 http://homoefficio.github.io/2017/11/19/블록체인-한-번에-이해하기/
  93. 93. BlockchainDecentralizestheworld Be decentralized 끝 93

×