[Blockchain] 채굴 (Mining) / 채굴 난이도 / 거래 수수료 (Fee)
이전해시 / 논스 / 멤풀 / 51% 공격 / 하드포크
🦁 [BCS 1st TIL] 3일차 회고
채굴 (Mining)
-
마이닝(채굴)은 ‘논스’ 값을 돌려서 하는것이다
-
블록구조 중에 블록 안에는 여러가지가 들어가있다
-
이 여러가지 정보들을 기반으로 블록해시가 만들어지는데
👉 이 블록해시는 ‘16진수 숫자’ 이다 -
‘논스’ 값을 바꾸면 해시값이 바뀌는데
-
‘해시값’ 이 바뀌면 해시블록이 바뀌게 되고
-
해시블록은 타겟값보다 낮아야 마이닝이 성공된다
-
이 16진수 숫자가 타겟값보다 낮으면 ‘블록생성에 성공’하는거고
-
이 16진수 숫자가 타겟값보다 높으면 ‘새로운 논스값’ 을 넣어야한다
-
‘난이도’ 가 높아질수록 / ‘타겟값’은 낮아지게된다
논스값을 바꿔서 해시값을 바꾼다
👉 새로운 블록을 채굴
-
거래정보들을 기반해서 만들어지는게 ‘머클해시’ 값이다
-
새로운 거래가 만들어지는데 각 거래마다는 ‘수수료’ 가 있다
-
이 수수료를 모아서 마이너(채굴자)한테 넘겨준다
-
거래수수료가 높은 거래들이 높은 확률로 더 빨리 승인된다
채굴의 효과
-
거래를 일으킨사람은 내가 채굴자에게 선택이 되어서 블록에 올라가게 된다면 내 거래가 확인이 되는거고 (빠른거래)
-
체인(시스템) 입장에서는 블록을 계속 생성해야 ‘체인이 성장’하게 되는거고
-
채굴자는 거래를 일으킨사람의 수수료를 얻을수 있어서 좋다
⭐ 채굴을 하지않으면 체인도 멈추고 거래도 성사되지않는다
거래 수수료 (Fee)
-
마이너(채굴자)들이 거래중에 거래수수료가 ‘높은 것’을 선택(pick)할수있다
-
근데 수수료가 0 이라면 평생 선택(pick)이 안될까?
-
거래에도 타임스탬프가 찍히는데
타임스탬프가 일정수준 벗어나면 ‘멤풀’ 에서 우선순위로 올려준다 -
그래서 ‘오래된 거래’ 는 새로운 블록을 생성했을때 먼저 거래되도록 해준다
👉 평생 기다리지 않아도된다
멤풀(Mempool)
아직 블록에 들어가지 않은 상태의 트랜잭션이 ‘대기 상태’로 있는 공간
- 그렇다면 급하지 않는 거래라고해서 수수료 0 으로 여러번 요청 해도 될까?
👉 요즘에는 일정시간(ex. 10분) 지나도 거래가 안될경우 다시 요청하라고 취소가 된다
👉 수수료가 0인 거래들도 풀노드끼리 공유되는 현상이 발생하기 때문
(새로운 블록이 생성되면 거래되지않은(대기중인) 내역들이 이미 쓰여져있다)
🦊 메타마스크 같은 지갑에서는 0으로 지정하지 못하게 최소 수수료를 정해놓는곳도 있다
채굴 난이도 (Mining Difficulty)
-
채굴을 많이 하기위해 그래픽카드 여러개 사서 연산력 (해시레이트) 을 높였다
-
10분마다 하나씩 블록이 만들어지기로 했는데 컴퓨터 성능이 너무 좋아서
-
1분마다 하나씩 블록이 만들어진다면
👉 난이도 조절을 해야한다 -
난이도 조절은 얼마마다 할까?
👉 2016개 블록이 생성될때마다 한번씩 조절된다 -
그럼 10분당 한개씩 블록이 만들어지니까
20160분 이 되는거고 그게 대충 ‘2주(14일)’ 정도로 볼수있다 -
2016개의 블록 생성일이 14일보다 늦으면 난이도를 좀 낮출거고
-
2016개의 블록 생성일이 14일보다 빠르면 난이도를 높인다
51% 공격 vs 하드포크
-
블록헤더의 값 중에 ‘아무거나 한개라도’ 변하게 된다면
👉 블록 해시도 변하게 된다 -
블록해시가 변한다면 혼자만의 문제가 아니라
다음 블록에 이전블록해시가 들어가기때문에 -
블록해시가 변한다면 연결되어있던 체인이 깨져서 체인으로부터 벗어나게된다
👉 그럼 ‘일시적으로 붕괴’ 가 일어난다 -
이걸 의도적으로 붕괴한다면 ‘하드포크’ 가 된다
51% 공격 vs 하드포크
바라보는 관점에 따라
나쁘다고 생각이 들면 ‘51% 공격’ 이고
좋다고 생각하면 ‘하드포크’ 라고한다
블록체인 스쿨 1기 / 멋쟁이사자처럼 / 멋사 / 프로젝트라이언