일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Machine Learning
- MNIST
- Generative Model
- 이상 탐지
- 인공신경망
- ae
- MLE
- ML
- 뉴럴네트워크
- Wavelet Transform
- 딥러닝
- 레이텍
- Deep Neural Network
- Deep Learning
- map
- Python
- 이상 현상 탐지
- autoencoder
- 머신러닝 논문리뷰
- Snn
- anomalydetection
- 논문리뷰
- Fast Fourer Transform
- 논문 해석
- 기계학습
- Spiking Neural Network
- 논문 리뷰
- rnn
- 머신러닝
- Bagging
- Today
- Total
MATH & ML
블록체인(Block chain) & 비트코인(BitCoin) 본문
비트코인에서 기본적으로 쓰이는 함수가 cryptographic hash function이다.(어떤 3가지 조건을 만족하는 함수)
이 함수는 avalanche effect가 있어서 인풋에 미세한 변화를 주면 아웃풋에 상당히 큰 변화가 일어난다.
그 해쉬함수의 종류에는 sha-256이라는 함수가 있다. 그 중에서도 Bitcoin에서는 SHA-256^2을 사용한다.
그 해쉬함수에 대해서 y가 주어졌을 때 H(x)=y를 만족하는 x를 찾는 것은 현실적으로 불가능하다. 하지만 적당한 y들에 대해서는 H(x)<y가 되는 x를 구하는것은 가능하다.
계좌번호가 있어야 거래를 할 수 있듯이 그런게 있어야 하는데
민증 : private key
계좌번호 : public key
private key를 해쉬함수를 취해서 public key로 하고 이를 다시 한 번 sha-256을 통해 변환하면 address(public key hash)라고 한다. 2중보완이라고 생각하면 된다.
위의 자세한 과정은 bit coin내부에 내장되어있는 함수로 base 58, SHA-256이라는 게 있는데 위의 private key와 public key를 이 base 58과 sha-256을 이용하여 변환시켜 address로 바꾸는것이다.
비트코인내에는 script언어라는게 있는데 이는 80가지 for문같은 함수들로 이루어져있다.
거래를 하기 위해서는 장부를 작성해야하며 이를 transaction이라고 한다. 이 장부 맨 위에 트랜색션의 내용들을 해쉬함수로 변환한 트랜색션 해쉬가 써있따(이름표같은 개념)
그래서 매번 거래 할 때마다 이 돈의 출처가 담긴 트랜색션 이름표가 그 트랜색션 내용에 적힌다.
거래가 계속되면 돈의 출처에 따라서 다 연결되어서 트랜색션이 계속 길어진다.
블록이라는 승인이 안된 트랜색션들을 모아서 한 곳에 모아서 mining을 한 완성체를 말한다. 블록은 각자 자신의 요약본에 해당하는 블록헤더를 가지고 있다.
마이너라는 블록을 만드는 사람들이 트랜색션을 다 모아서 해쉬함수를 계속 둘씩 취해서 하나의 값으로 만든다. 이를 merkle root라고 하고 이를 확인하면 조작이 있었는지 없었는지 확인 할 수 있다.
H(prevBlock||merkleRoot||x)<Difficulty Target 이 되는 x를 찾는것을 마이닝이라고 하고 이 x 변수를 nonce라고 한다.(정답을 찾았을때의 그 x도 nonce라고한다)
이렇게 기본 평균적으로 10분마다 이게 풀리게 되어있는데 이 행위를 proof of~라고한다.
'Etc.' 카테고리의 다른 글
Window10에서 sublime text3를 이용하여 Latex 작성하기(Bibtex까지) (0) | 2019.09.23 |
---|---|
Fast Fourier Transform & Wavelet Transform 이해하기 (0) | 2018.07.18 |
git 명령어 몇 가지 정리 (0) | 2018.03.08 |