티스토리 뷰
블록체인 네트워크 내에 A라는 노드가 현재 5BTC를 가지고 있는데 B,C노드에게 각각 5BTC를 전송하려고 하는 상황을 가정해보자.
원래 현실세계에서는 이런 일이 불가능한 일이다. 잔액이 5BTC인데 총 10BTC를 송금하려고 하는 상황이기 때문이다.
하지만 블록체인 내에서는 이 이중 지불 자체는 가능하다. 왜냐하면, 네트워크 내의 모든 노드들이 같은 블록체인을 갖고 있다. 이 뜻은, 모든 거래 내역이 저장된 똑같은 내용의 거래 장부를 모든 네트워크 내의 노드가 가지고 있다는 소리이다.
따라서 내가 캐나다에 있는 컴퓨터에서 이 블록체인 네트워크에 접속하게 될 경우 그 컴퓨터에서 B에게 5BTC를 보내고, 호주에 있는 컴퓨터에서 C에게 5BTC를 보내는 일이 가능하다.
왜냐면 캐나다에서 BTC를 송금한다 하더라도 호주에 있는 컴퓨터의 블록체인에 있는 정보에는 A는 여전히 5BTC를 갖고 있다고 적혀있기 때문이다.
그렇기 때문에 일단 이중 송금 자체는 가능하지만 이 2개의 트랜잭션이 네트워크에 전파 되다가, 결국 어떤 노드에게 수신 되었다고 해보자.
이 노드는 2개의 트랜잭션중 첫번째로 수신한 트랜잭션을 자신의 후보 블록에 반영하게 될것이고,뒤늦게 도착한 트랜잭션은 거부하게 될것이다.
왜냐면 첫번째 트랜잭션을 수신함으로써 A의 잔액은 0BTC라는것을 그 노드는 알게 되기 때문에 또다시 A가 다른 노드에게 5BTC를 전송하는것을 허용하지 않는다.
이런 방식으로 실제로 있지도 않은 돈을 송금하는것을 방지할수 있다.
동일한 컴퓨터 내에서 5BTC잔액이 있을때 서로 다른 노드에게 5BTC씩 총 10BTC를 보내는일은 불가능 하지만, 네트워크내의 서로 다른 노드들에서는 이런 일을 발생 시킬수 있다.
하지만, 결국에는 둘중 하나의 트랜잭션만 받아들여지게 됨으로써 블록체인에서는 이중 지불 문제를 해결 하고 있는 것이다.
그렇다면 네트워크에서는 A가 B에게 5BTC를 보냈다는 트랜잭션을 가진 노드들과 A가 C에게 5BTC를 보냈다는 트랜잭션을 가진 노드들 2개의 그룹으로 나눠지게 될텐데, 결국에는 그 2개의 그룹에 있는 어떤 노드중에서 채굴에 가장 먼저 성공한 노드가 가지고 있는 트랜잭션 정보가 진짜 정보라고 판단되며 블록체인에 추가 되게 될것이다.
'컴퓨터 공학과 졸업 > 블록체인' 카테고리의 다른 글
블록체인 처리 흐름 (0) | 2018.02.04 |
---|---|
블록체인 FAQ (2) | 2018.01.15 |
블록체인의 거래 정보 변경 불가 (0) | 2018.01.15 |
블록체인의 분기 (0) | 2018.01.15 |
마이닝 (0) | 2018.01.14 |
- Total
- Today
- Yesterday
- state
- rendering scope
- Next.js
- async
- reflow
- webpack
- type alias
- atomic design
- useEffect
- design system
- Polyfill
- server side rendering
- promise
- computed
- mobx
- storybook
- useRef
- reducer
- Action
- reactdom
- react hooks
- es6
- await
- props
- typescript
- Babel
- return type
- javascript
- react
- hydrate
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |