×
Crocus
공부한 내용을 정리하는 블로그로 시작한
Crocus는 2014년 1월 14일 부터 시작하여
현재 월 6만명, 총 1,583,109명의 방문자 수를 기록하고 있습니다.
Donation
이제 많은 사용자들이 이용하는 만큼
더 다양한 서비스 개발/제공을 위해 후원금을 모금하고자 합니다.
후원을 해주시는 분들은 Donators 명단에 성명, 후원금을 기입해드리며
Crocus 블로그가 아닌 다른 곳에 정리해둔 저만의 내용을 공유해 드리고자 합니다.
Account
예금주 : 고관우
신한은행 : 110-334-866541
카카오뱅크 : 3333-01-7888060

👉 후원 페이지 바로가기 Donators
익명 : 5000원(Crocus응원합니다.)
busyhuman: 5000원(유용한 지식 감사합니다.)
익명 : 5000원(알고리즘 학습러)
728x90
반응형

1. 작업 증명(Proof of Work, PoW)


작업 증명은 말그대로 작업이 완료됐는지 증명해주는 과정이다.


작업이라는 것은 블록체인에 블록을 연결하기위해 블록에 담긴 정보들을 검증하는 과정(mining)을 의미하는 것이고


증명이라는 것은 블록에 담긴 정보들이 작업에 의해 확실해졌다는 것을 알려주는 역할과 동시에 블록체인에 연결될 준비를 마친 과정을 의미한다.


그러한 작업 증명은 nonce값을 통해한다.


아래 동영상을 한번 보자.



이제 과정을 직접 눈으로 확인해보자.


http://www.crocus.co.kr/1212 이 링크로 들어가면 블록체인이 어떻게 작동하는지 직접 체험 해 볼수 있고


https://anders.com/blockchain/blockchain.html 이 링크를 이용하여 포스팅을 해보고자 한다.



우선 블록에 아무 값이 없을때는 블록이 이상이 없기에 초록색으로 되어있다.



하지만 내가 어떤 트랜잭션(Tx)를 보내게 되어 mempool에서 블록으로 가져와 채굴을 시작해야하는 단계라면 이렇게 빨간색으로 표시 될 것이다. 


그 이유는 현재 block number, prev는 고정이지만 데이터의 조작이 일어남으로써(Tx를 받음으로써) 블록의 해시가 변경되었기 때문이다.


블록의 해시는 블록내에 있는 데이터를 해시하는 것이라 하나의 값만 바뀌어도 해시가 바뀌게 된다.


이때문에 작업 증명(mining)을 해야하는데, 해시값에서 앞에 0이 몇개가 오도록 해야한다.


이제 여기서 우리가 해시값을 고치기위해서는 block, data, prev, hash 모두 건들 수 없고 Nonce만 건들 수 있음을 알 수 있다.


따라서 우리는 nonce를 0부터 시작하여 계속해서 1씩 올려가며 찾아간다.




nonce가 11316에서 38093으로 변하고 나서야 블록의 채굴이 성공적으로 이루어지게 되었다.


block #2는 아무일도 없었는데 블록이 정상적이지 못하다.


그 이유는 2번 블록의 prev값이 변경되어 hash값이 결과적으로 변했기 때문이다.



2번블록까지 nonce값이 변하며 채굴이 완료되었다.




3번 블록까지 이제 다 채굴되었다고 보자.




아래 사진에서 알 수 있는 것은 연속된 블록체인에서 특정 k번 블록이 변경이되면 k, k + 1, k + 2, ... , 마지막 블록까지 모두 다시 채굴해야한다는 것이다.




아까 말한 것 중 해시값이 특정 0의 개수를 만족해야 한다 했는데 이 말이 무엇인지 좀 더 자세히 알아보자.


이 과정은 작업 난이도에 의해 정해지게 된다. 



실제 블록체인에서는 Bits와 난이도가 결합되어 target라는 것이 나타나는데 target값 이하인 해시 값을 찾아야 블록이 생성된다. 

그 말이 즉, 해시값 앞에 0이 몇개 등장하는지로 결정한다는 것이다.


이때 한 노드가 어떤 PoW를 풀면, 다른 노드들은 그 PoW를 풀려는 시도를 멈추고 해당 노드가 보낸 트랜잭션 목록이 유효한 것인지 검증한다. 이때 유효하다면 해당 블록을 받아들이고 다음 블록을 풀기 시작한다.


아래 링크 글이 엄청 잘 작성되어있다. 확인해보자.


https://steemkr.com/kr/@yahweh87/21-pow





2. 51% Attack


블록체인을 실제로 조작하지 못한다는 것, 사람들 말대로 블록체인은 절대 해킹당하지 않는다는 것은 정말일까?


정답은 조작과 해킹이 가능하다이다. 그 방법이 51% Attack이다.


채굴은 앞서 말했듯이 nonce값을 변경하며 해시값을 찾아가는 과정을 의미한다.


하나의 cpu에서 해시를 찾아가는 과정보다 여러개의 cpu에서 해시를 찾아가는 속도가 더 빠르고, 여러개의 cpu를 가진 여러대의 컴퓨터를 이용하여 해시를 찾아가면 속도가 더 빨라질 것이다.


이렇게 해시를 찾는 능력(속도의 정도) 즉, 위의 과정을 1초에 몇번 할 수 있는지를  해시 파워라 한다.


현재 비트코인에서 돌아가는 블록체인은 한명 한명이 채굴하는 것이 아닌 집단적으로 채굴을 하고 있다.


그러한 집단은 하나의 마이닝 풀에서 함께 움직이는데 이러한 집단이 커지면 51% Attack가 실제로 성공 할 수 있다.




자 이제 어떻게 51% Attack이 이루어지는지 알아보자.


해시 파워의 절반 이상을 가진 노드가 마이닝을 통해 해시값을 찾더라도 이웃 노드들에게 블록을 채굴했다고 전파하지 않는다.


그리고 그 다음 블록을 계속해서 만들어가게 된다면 결국 과반수 이상의 해시 파워를 갖고 있기 때문에 다른 마이너들보다 긴 블록체인을 만들 수 있는 가능성이 높아지게 된다.


하지만 이러한 거대한 51%의 구성을 이루기 위해서는 블록체인 조작을 통해 코인 조작으로 버는 비용보다 조작을 하는데 드는 비용이 너무나도 천문학적이기에 시도를 할 수 없다고 알려져있다.(그렇다고 조작을 못한다는 것은 아니다. 돈이 문제인 것이다.)


아래 사진은 실제로 51 어택을 하기위해 드는 비용을 의미하고 있다.


6조 4천억에 하루에 115억씩 들여야 최종적으로 51 어택을 통해 블록체인 조작이 가능하다는 것이다.

 







반응형