[퍼온글] Blockchain(블록체인) 이해하기
[원문] https://blog.naver.com/100win12/221137003501
블록체인에 관한 글 중 제에게 가장 쉽게 이해되는 글이어서 퍼왔습니다.
처음이라 퍼오는 것도 어렵네요ㅠㅠ
Blockchain(블록체인) 이해하기
11월 8일 있었던 BlockchainDay 컨퍼런스에 참가한 후기를 적으며
블록체인이 무엇인지 요약을 해보겠다. 일단 블록체인은 비트코인에서 나왔다.
쉽게말하면 비트코인에 적용된 이론이다.
사람들이 이것을 블록체인이라고 부르기 시작했다.
시작 !
전통적인 서버와 클라이언트의 모습이다.
클라이언트들이 값을 server에 저장하고 읽어오는 전형적인 Centralized의 모습이다.
거기서 발전된 모습은 서버와 클라이언트 사이에 노드발랜서를 둠으로서 서버를 분산하는 방법이다.
그 결과 서버들 간의 동기화 문제가 발생한다.
그래서 서버들 뒤에 DB를 둠으로서 동기화 문제를 해결했다. 그결과 또 Centralized형태가 되었다.
그럼 이제 DB를 나누어 보자 그 결과 Master Slave형태가 되었다.
하지만 여전히 Master에 Centralized 되었다.
요즘 많은 서버 - 클라이언트의 모습이 위와 같다.
그럼 블록체인의 서버 - 클라이언트의 구조를 살펴보자
Replica로 Decentralized되어 있는것을 확인 할 수 있다.
이렇게 Distributed Computing의 장점은
Traffic이 분산되어 더 강한 DDos를 견딜 수 있고
No singular point of failure / Master가 없기 때문에 한 노드가 다운되어도 여전히 동작하며
모든 노드를 해킹해야 시스템이 망가짐으로 Security하다.
한장의 그림으로 설명하면 전형적인 Centralized는
위와 같다면 Decentralized는 아래와 같다.
여기까지 이론적으론 이해가 되었을 것이다.
이런 구조는 2가지 문제점이 있다.
- Secure Data Structure
- Distributed Consensus
이 2가지 문제점을 이제 해결해 보자.
이 node들이 어떻게 연결이 되어있는지 지금부터 설명을 하겠다.
Building data structures with hash pointers 이렇게 해쉬포인터를 가지고 있다.
이 한장의 그림으론 설명이 어렵다 다음 그림을 보자
Blockchain = Chain of Blocks 이렇게 블록체인은 이전 블록의 해쉬포인터를 가지고 있다.
각각 이전 블록의 해쉬포인터를 가지는 단방향구조로 되어있다. 블록의 구조를 살펴보면 간단하다.
각각의 블록들은 Header와 Body로 구성되어있다.
Body에는 모든 거래들이 Merkle Tree형태로 존재한다.
Header에는 Merkle Tree의 root hash와 이전 블록의 hash, Nonce값, 블록버전, 타임스탬프, 난이도 목표(nBits)값이 있다.
각각 블록은 이전 블록의 해쉬값만 헤더에 저장을하고 Transactions는 저장을 하지 않는다.
그렇다면 이전의 Transactions을 변경하면 모르는것 아닌가??
이문제는 Merkle Root값으로 해결한다.
Merkle Tree: binary tree with hash pointers
이렇게 데이터를 수정하게 되면 결국 Merkle Root 값이 변경이 된다.
임의로 Data를 변경하지 못한다.
최종 Bitcoin Blockchain의 형태는 위와 같다.
각각의 블록은 이전의 블록 해시 값들을 가지고 있는 체인 형식이다.
블록 해시는 아래 3가지를 만족해야한다.
- Its input can be any string of any size
- It produces a fixed size output
- It is efficiently computable
어찌보면 SHA-256 Hash Function for Bitcoin 이다.
위의 그림들을 다 이해했다면 이제 블록체인이 어떻게 구성되어있는지는 알것이다.
하지만 여러가지 궁금증이 있을 것이다. 예를들어
- Who maintains the blocks?
- Who validates the blocks including transactions?
- Who creates new bitcoins?
등등 궁금증들이 많을 것이다. 이러한 궁금증은 Bitcoin Consensus Mechanism인
PoW(Proof-of-Work)를 이해하면 많이 해결된다.
What is Proof of Work
매 턴마다, 네트워크를 구성하는 모든 컴퓨터들이, 컴퓨터가 하기에도 오래 걸리는 계산을 수행하도록 하여, 일정한 조건을 만족시키는 결과를 도출해낸 노드가 해당 턴의 문제를 풀어냈다고 모든 노드들에게 인정받는(Consensus) 행위.
비트코인 네트워크에서 PoW를 수행하는 행위를 mining이라고 하고, 다른 노드보다 먼저 PoW 결과를 도출해낸 노드는 해당 턴에서 비트코인으로 보상을 받음.
PoW에 참여하는 컴퓨팅파워가 커질수록 네트워크는 더 견고(secure)해짐.
네트워크를 구성하는 모든 컴퓨팅 파워의 51%를 점유하면, Double spending을 발생시켜 부당한이득을취할수있음.
-> 네트워크를 구성하는 컴퓨팅 파워가 매우 크기 때문에 51%의 파워를 취득하는 것이 현실적으로 어려움
-> Double spending 문제를 야기시키는 순간, Bitcoin의 가치가 급격히 떨어지기 때문에 miner들의 경제적 incentive와 정면으로 배치되는 행위
위의 그림이 PoW를 보여주는 그림이다. 자세히 문제를 푸는 행위가 어떻게 이루어 지는지 확인해보자
이것이 문제이다. “현재 블록의 hash값 < 난이도 목표” 의 조건을 만족할 때까지 Nonce와 타임스탬프값을 증가시키면서 hashing (더 엄밀히 이야기하자면, miner들은 자신의 계정으로 Bitcoin을 발행하는 coinbase 트랜잭션을 포함시키는데, 이 때 100byte까지 원하는 문구를 넣을 수 있는데, 이를 통해 merkle tree의 root hash값도 변경시켜가면서 mining)
위 그림의 예시는 000100000 ..... 보다 작은 hash값을 찾는게 문제이다. 76e4 nonce 블록이 0001000... 보다 작음을 확인한 네트워크는 자신이 가장 먼저 답을 찾았다고 모든 노드에게 알린다. 그러면 모든 노드들은 Verifaction 후 새로운 노드로 추가한다.
서로다른두노드에서거의동시에다음블록이생성되었을경우,네트워크 Latency같은 이유로 인해 chain에 분기가 생기는 경우가 생길 수 있다.
이런 경우 체인의 난이도 합이 더 높은 체인을 Canonical chain으로 인정함. - 최대6개까지두개이상의체인이유지될경우,비트코인개발진이 긴급코드를 발령해서 강제로 하나의 체인을 설정함.
Selecting Chains of Blocks 의 설명을 더하자면
위의 그림에서 파란색 블록을 #40번째 블록이라고 생각을 해보자
모든 블록은 #40번의 파란색 블록이 가장 마지막 블록이고
새로운 블록을 찾으려고 다같이 문제를 찾고있는 상황이다.
그때 빨간색과 연두색 블록이 동시에 새로운 블록을 찾았다.
그랬을때 좌측 그림처럼 동시에 퍼지게 되어있다.
빨간색으로 변한 블록은 새로운 블록을 찾고 있고
연두색으로 변한 블록도 새로운 블록을 찾고 있다.
그때 연두색 블록이 새로운 블록인 핑크색 블록을 찾았다.
그러면 우측의 그림처럼 파란색- 빨간색으로 되어있는 블록 구조보다
파란색 - 연두색 - 핑크색으로 된 블록이 더 길다. 그러면 더 긴 블록을 인정하고
모든 블록은 파란색 - 연두색 - 핑크색 순서로 구성이 된다.
https://blockexplorer.com/block/00000000000000000058e063aaf68dfdd86ababcc86e0a822e2711a43beb2dda (모든 블록의 정보를 볼 수 있다.)
현재 마지막 블록의 값은 #493056이였다.
Creating new bitcoin as a PoW incentive, called Block Reward
- Block creator includes coin creation transaction in the new block
- The block reward started at 50 BTC and is halved every 210,000 blocks (4 years) - The current reward is 12.5 BTC
블록채굴의 보상은 4년에 한번씩 반으로 줄어든다.
2040년엔 결국 0에 수렴할것이라고 한다.
Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
https://blog.naver.com/PostView.nhn?blogId=100win12&logNo=221137003501&redirect=Dlog&widgetTypeCall=true&directAccess=false
방갑습니다 ~~
반갑습니다. 자주 뵙겠습니다~
네^^ 팔로우하고 갈께요 ^^