2일차
블록체인의 목적
투명성
- 사용자가 분산됐다고 느끼는 게 아니라 하나의 큰 시스템으로 느낄 수 있게 해야함
- ex. 위치 투명성, 이주 투명성, 복제 투명성, 병행 투명성, 접근 투명성, 성능 투명성, 규모 투명성, 고장 투명성 (IT용어위키)
분산처리 구조
- 완전연결형
- n(n-1)/2
- 구축 비용은 많이 들지만 구축 하고나면 통신비용은 적음
- 부분연결형
- 트리/계층형
- 가장 대표적인 형태
- 부분 연결형보다 기본 비용은 적고, 통신 비용은 트리 깊이에 비례해 높아짐
- 하위 사이트는 상위 사이트를 통해서만 통신 가능. 상위 사이트가 죽으면 안 됨
- 스타형
- 모든 사이트가 하나의 중앙 사이트에만 연결 된 구조
- 중앙시스템과 다른 점: 중앙 사이트가 관리 제어 하는 게 아니라 모든 사이트가 일을 하긴 하지만 연결 구조만 중앙으로 모이는 것
- 기본 비용은 사이트 수에 비례, 통신 비용은 적음
- but 중앙 사이트가 고장나면 끝
- 링형
- 인접하는 두 사이트와 연결
- 기본 비용은 사이트 수에 비례, 통신 비용은 비교적 크다
- 다중 접근 버스 연결형
분산 데이터베이스
- 물리적으로 분산되어 있는 데이터를 논리적으로 하나의 시스템처럼 사용할 수 있게
분산 데이터베이스의 목표
비잔틴장군 문제
비트코인이 해결한 문제
- 블록체인은 이중 지불 문제를 해결
- 작업증명은 비잔틴 장군 문제를 해결
비트코인에서 해쉬함수의 이용
비트코인 채굴
- 비트코의 블록은 난스 + 거래 내역 + 이전 노드 해시값을 통해 해시 값이 나오게 되는데, 이 때 비트코인에서는 "해시코드의 앞 부분에 0이 몇 개는 나와야 한다"는 식으로 규칙을 정해놓았음
- 이 때문에 규칙에 맞는 해시코드가 나올 때까지 난스 값을 계속 바꿔가게 되고, 이 때 시간과 비용이 들어가게 되는 거임.
- 그래서 비트코인에서 작업증명을 한다는 말이 이렇게 시간과 비용이 들어가는 작업을 한 것을 인정해준다는 뜻
비트코인 위조
- 거래 위조 - 위조를 할 때 기존 노드를 수정하는 게 아니라 위조된 내용의 새로운 노드를 생성해서 연결시키는 것. 그렇게 되면 기존에 있는 노드들과 비교했을 때 더 우세한? 더 많은 노드와 거래 기록이 같은 노드를 더 신뢰한다고 생각하면 됨. ex. 어떤 애는 a->b 10만원 줬다 하고 어떤 애는 a->c 10만원 줬다 하는 이중지불 문제 일어났을 때, 다른 노드들에선 다 a->b 10만원으로 연결됐다고 하면 a->c가 잘못됐다고 판단.
흠 다시찾아보기
비트코인 유효성 검사
- 작업 증명에 성공한 노드는 모든 노드들에게 결과(블록)를 전송
- 블록을 전송받은 노드들은 각각 유효성 검사를 실행 -> 해당 블록의 이전 해시값 + 난스 + 거래내역 = 해시값이 조건을 만족하는지 확인
- 작업증명은 많은 연산이 필요하지만 유효성 검사는 연산 한 번으로 끝날 수 있음
mastering bitcoin
Solidity 실습
기타