티스토리 뷰
블록체인 처리 흐름 1 |
|
블록체인 네트워크에 있는 사용자 A~F중 A,B,E가 송금을 의뢰한다.(트랜잭션을 발행시킨다.)
트랜잭션을 발행시킬때 그 트랜잭션을 자신의 개인키로 전자서명해서 전송한다. 그렇게 되면 수신하는 측에서는 그 송신자의 공개키로 복호화 할수 있으므로, 그것이 진짜 그사람이 보낸것인지 확인이 가능하다.
블록체인 처리 흐름 2 |
|
트랜잭션이 블록체인 네트워크에 브로드 캐스트 되며, 결국엔 모든 노드들이 네트워크에서 발생한 동일한 트랜잭션을 수신하게 된다.
블록체인 처리 흐름 3 |
|
트랜잭션을 수신한 노드중 채굴자 노드는 그 트랜잭션을 공개키로 검증하고, 열심히 블록을 채굴하기 시작한다.
블록을 채굴한다는 의미는 블록 헤더에 포함된 6가지 정보(NONCE,블록 생성 시각, 이전 블록 해쉬값, 머클해쉬 루트값,블록 생성 난이도 등등)
중에서 nonce값을 조절해가면서 블록 생성 난이도 보다 작은 어떤 해쉬값(블록 헤더를 해쉬해서 만듦)을 만들어 낸다는 의미이다.
알아듣기 쉽게 다시말하면, 블록체인에서는 블록의 위조를 막기 위해서 블록 생성을 일부로 어렵게 만들어 놨는데, 그 난이도를 조절하기 위해 블록의 헤더에 블록 생성 난이도라는 값이 존재한다.
블록의 헤더에 있는 6가지 정보중에서 5가지 정보는 고정되어 있고 단 한가지 값만 임의로 변경할수 있는데, 그것이 nonce라는 어떤 값이다.
블록 해쉬 값이라는것은 그 블록의 id(식별자)같은 역할을 하게 된다. 이 블록의 id를 만들어 내기 위해서는 블록헤더를 해쉬해서 나온 해쉬값을 사용해야 한다. 그런데 이 블록의 id는 어떤 블록 생성 난이도보다 작은 값이어야 한다. 그걸 만족 시키기 위해서 nonce라는 블록 헤더에 포함된 값을 계속해서 조정해가면서 블록의 id를 찾아 가는 것이다.
만약에 어떤 노드가 블록 채굴에 성공했다면(난이도 보다 작은 어떤 블록해쉬값을 찾아냈다 = 어떤 nonce값(해답)을 찾아냈다), 그 블록과 그 블록의 id인 블록해쉬값을 블록체인 네트워크에 브로드캐스트 시킨다.
블록체인 처리 흐름 4 |
|
그렇게 되면 조금 있다가 모든 노드가 블록을 수신하게 될것인데, 만약에 아직도 채굴중인 노드가 있었다면 그 블록을 채굴하는것을 포기하고 방금 수신된 블록을 블록체인에 추가하고 그 다음 블록을 채굴하기 위해서 노력하게 된다.
어쨌든, 네트워크에 있는 모든 노드들은 블록을 수신하게 되면 그 블록이 정당한 블록인지 검증하게 된다. 이 검증 이라는 것은 블록 생성 난이도 보다 작은 블록해쉬값을 찾아 냈느냐 라는 것이다.
블록을 채굴했던 노드가 블록 + 블록해쉬값을 브로드 캐스트했다. 수신자는 단순히 이 블록해쉬값이 블록생성 난이도 보다 작은지 아닌지 확인만 하면 되는것이다. 만약에 그것이 만족되면 누군가는 정당하게 이 블록을 생성했다는 의미이다.
그렇게 모든 네트워크에 있는 노드에 새롭게 생성된 블록이 블록체인에 추가 되게 된다.
'컴퓨터 공학과 졸업 > 블록체인' 카테고리의 다른 글
[이더리움] 가스 시스템 (1) | 2018.02.11 |
---|---|
전자서명 (0) | 2018.02.11 |
블록체인 FAQ (2) | 2018.01.15 |
블록체인의 거래 정보 변경 불가 (0) | 2018.01.15 |
블록체인의 이중지불 문제 (0) | 2018.01.15 |
- Total
- Today
- Yesterday
- reflow
- storybook
- server side rendering
- reducer
- Action
- webpack
- typescript
- async
- react hooks
- rendering scope
- javascript
- react
- return type
- Babel
- hydrate
- reactdom
- await
- mobx
- atomic design
- design system
- state
- useRef
- computed
- useEffect
- es6
- props
- type alias
- promise
- Polyfill
- Next.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |