일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Servlet
- 웹게임
- websocket
- 알고리즘
- EC2
- Spring
- Cookie
- 암호화
- docker
- 비트코인
- phaser
- RDS
- tiles.xml
- 블록체인
- autowired
- SQL
- CSS
- 웹소켓
- model1
- express
- 배포
- PL/SQL
- AWS
- HTML
- JSP
- jQuery
- JavaScript
- 도커
- node.js
- Ajax
- Today
- Total
記錄
BITCOIN MECHANICS AND OPTIMIZATIONS : A TECHNICAL OVERVIEW 본문
BITCOIN MECHANICS AND OPTIMIZATIONS : A TECHNICAL OVERVIEW
surhommejk 2018. 7. 26. 11:05#1 How do we ensure trust in communication in a trustless environment?
A) With cryptographic hash functions
비트코인 시스템을 자꾸 trustless 하다고 표현하는데 좀 이해가 가지 않는다. 기존의 은행 거래처럼 대면 거래거나 신원 확인을 한다거나 하는 기존의 시스템(신뢰가 가는)이 아니기 때문에 trustless라고 표현하는 것이라 이해하고 넘어간다. 아무튼 이런 비트코인 시스템을 신뢰할 수 있는 이유는 암호화된 해시 함수 덕분이다.
암호화된 해시 함수가 이토록 신뢰받을 수 있는 이유는 암호화된 해시 함수가 가지는 특성 때문이다. 기본적으로 해시 함수는 Avalanche effect를 가짐으로써 입력값의 변화로 출력값을 추적하기 힘들면서도 특정 입력값에 대해 정해진 출력값을 만든다. 비트코인은 SHA-256 해시 함수를 제곱해서 사용한다.
- Preimage resistance : 입력값을 조금씩 변화시켜가면서 규칙을 찾는 것이 어렵다. 이 말인즉 입력값이 조금 달라진다고해서 결과값이 조금 달라지는 것이 아니고 아예 완전히 달라져버린다는 것이다.
- Second preimage resistance : H(x) == H(x') 가 어려워야 한다는 것. 이미 x가 확인된 상태에서 입력값의 변화로 동일 해시 나오도록
하는 것이 어려워야 한다
- Collision resistance : H(x) == H(y) 가 어려워야 한다. 해시 함수는 입력 길이보다 출력 길이가 짧기 때문에 동일한 해시값을 가지는
입력값들이 존재한다는 것을 의미한다. 이런 입력값들을 찾기 어려워야 한다.
#2 Block의 구성 및 Block Header의 역할
Block Header
이전 블록의 해시 값 / merkleRoot / nonce 등이며(실제로 6가지 정보로 구성) Block Header는 다음 블록의 prev Block Hash값과 동일하다.
Merkle Root
거래의 정보를 담는 이진트리와 같은 트리구조로 거래의 규모가 커질 수록 Merkle Root도 커진다. 즉, 블록을 조작하기 위해서 Merkle Root 값도 변경을 해야하는데 그러면 해당 블록은 다수가 가진 Merkle Root와 다른 버전을 갖게 된다. 하나를 조작하면 그 위의 모든 Merkle Root를 조작해야하기 때문이다. 따라서 개인이 조작하기가 힘들어지게 되고 그만큼 보안성이 높아진다.
nonce
작업증명의 해답
'Block Chain > Fundamental' 카테고리의 다른 글
BITCOIN TO BLOCKCHAIN: FROM CYPHERPUNKS TO JP MORGAN CHASE (0) | 2018.07.25 |
---|---|
BITCOIN PROTOCOL AND CONSENSUS (0) | 2018.07.24 |