안녕하세요. 어미새입니다.
저는 계속적인 포스팅을 토해 '채굴'에 대한 개념정리를 하였습니다.
'채굴'은 일종의 수학문제를 풀어내어 새로운 블록을 생성하는 과정입니다.
오늘은 새로운 블록이 생성되는데 걸리는 소요시간에 대한 개념정리를 해보도록 하겠습니다.
평균 거래시간
비트코인뿐만 아니라 블록체인 기술에서는 블록을 생성하는 '시간'은 매우 중요합니다.
우리가 기존에 사용하는 은행을 예로 들어보겠습니다. A라는 은행에서 돈을 송금하는데 걸리는 소요시간을 알 수 없고 무한정 기다려야만 한다면 은행을 신뢰할 수 있을까요?
블록체인 네트워크에서의 거래 또한 정확하지 않더라도 2~3일의 시간이 소요되는지 혹은 10~20분의 시간이 소요되는지 어느정도 사용자가 예측할 수 있어야만 그 플랫폼에대한 신뢰도가 향상될 수 있습니다.
그렇기 때문에 블록체인을 활용한 거래 또한 거래당 평균 예상 소요시간이라는 개념이 필요합니다.
블록 생성 시간 = 거래 소요 시간
블록체인 기술에서 거래시간은 곧 블록생성시간을 의미합니다. 제가 포스팅한 블록체인 기술에 대해서 모두 정독하셨다면 블록 생성 시간이 거래속도와 어떤 관련이 있는지 이해할 수 있습니다! 그럼 블록체인 네트워크에서 거래가 이루어졌다고 판단될 수 있는 시나리오를 살펴보겠습니다.
- 블록에는 다수의 거래정보가 포함되어 있습니다.
- 블록은 채굴자(마이너)에 의해 만들어지며 일종의 수학문제를 풀었을 경우 새로운 블록이 생성됩니다.
- 새로운 블록은 블록체인 네트워크에 연결된 노드들에게 전파되며 생성된 블록이 '진짜'블록으로 인정받았을 경우 블록체인 네트워크에 연결됩니다.
- 블록체인 네트워크에 연결된 블록은 '스테일 블록'으로 변할 수 있기 때문에 블록체인 네트워크에 연결되었다 할지라도 거래가 완전히 성사되었다고 할 수 없습니다.
- 일정량의 블록이 이어졌을 경우 완전히 거래가 이루어졌다고 할 수 있습니다. (비트코인 기준으로 6블록 이후일 경우 유효하다고 판단하며 이 수치 또한 완벽한 수치가 될 수는 없습니다.)
즉 거래내역이 포함된 블록이 '스테일 블록'으로 변하지 않고 완벽히 블록체인 네트워크에 연결되었을때 비로서 거래가 성사되었다고 할 수 있습니다.
비트코인 거래속도
비트코인에서는 새로운 블록을 약 10분에 한번식 생성되도록 하였습니다. 새롭게 생성된 블록 이후 6블록(이 수치 또한 완벽한 수치는 아닙니다)이 지났을 경우 스테일 블록으로 변할 확률이 매우 낮아지기 때문에 거래가 이루어졌다고 판별합니다.
이 최소시간은 거래를 요청하고 내가 요청한 거래가 바로 새롭게 생성될 블록에 포함되었을 경우 그리고 '스테일 블록'이 발생하지 않았다는 아주 베스트한 케이스에서 발생하는겁니다. 하지만 내가 요청한 거래가 계속해서 블록에 담기지 않거나.. '스테일 블록'이 발생할 경우 계속해서 거래가 밀릴 수 밖에 없습니다. 그리고 블록에 담기는 거래 내역도 높은 수수료를 지불한 사람들의 거래가 먼저 담기기 때문에 소량의 수수료를 제시하였을 경우에는 언제 거래가 이루어질지는 명확하게 파악하기 매우 어렵습니다.
비트코인의 이러한 단점을 보안하기 위해 새로운 코인(라이트코인 등)이 개발되었다고 이해하시면 되겠습니다. 어쨋든(내용이 조금 산으로 갈뻔했지만..) 내용을 조금 정리해보면 블록체인 기술에서 거래의 속도는 블록을 생성해내는 속도에 따라서 달라지게됩니다.
난이도(Difficulty)
채굴자(마이너)는 일종의 수학문제를 풀고 문제를 풀었을 경우 새로운 블록을 생성합니다. 이때 문제가 쉬울 경우 문제를 빨리 풀것이고, 문제가 어려울 경우 문제를 늦게 풀게됩니다. 이때 문제의 쉬움과 어려움을 결정하는 요소가 바로 난이도입니다.
난이도가 높을 경우
문제의 난이도가 높게되면 새로운 블록을 찾는데 걸리는 소요시간이 오래걸립니다. 이 소리는 거래속도가 굉장히 느려진다는 것을 의미합니다.
난이도가 낮을 경우
문제의 난이도가 낮게되면 새로운 블록을 찾는 속도가 증가됩니다. 이소리는 거래 속도가 빨라진다는것을 의미합니다.
그렇다면 빨리 만들 수 있게 난이도를 낮추면 얼마나 좋을까요? 여기에는 큰 함정이 있습니다. 블록의 문제를 빨리 풀 수 있도록 난이도를 낮출 경우 동시에 블록을 생성할 확률이 높아지는것을 의미합니다.
동시에 블록이 생성된다는 의미는 스테일 블록이 발생할 확률이 높아진다는 의미이고, 스테일 블록이 자주 발생할 경우 트랜잭션의 확인을 지연시키며, 스테일 블록 뒤에 이어지는 모든 블록들은 불필요한 연산을 한 결과이기 때문에 자원을 낭비하는 행위가 됩니다. 그렇기 때문에 블록을 빨리 풀어도, 늦게 풀어도 좋지 않습니다. 즉 스테일 블록이 발생할 확률은 낮추면서 거래속도는 향상 될 수 있는 방법을 찾는것이 중요한 과제라고 할 수 있습니다.
비트코인에서의 난이도
비트코인 네트워크에서는 새로운 블록이 10분마다 발생되도록 2016블록마다 블록을 풀어내는 난이도를 조정하게 됩니다. 아래의 사이트는 현재 비트코인 네트워크에 적용된 난이도 정보를 확인할 수 있는 사이트입니다.
(https://bitcoinwisdom.com/bitcoin/difficulty)
블록 하나당 10분의 시간이고 2016블록이니간 대략 2주 마다 블록을 생성하는 난이도가 변경됩니다. 난이도는 기존에 블록을 생성하는대 걸린 연산력을 분석하여 난이도가 결정된다고 합니다. 비트코인에서 난이도를 구하는 공식과 검증은 추후 포스팅을 통해서 다루도록 하겠습니다. (나름 열심히 준비중입니다만.. 잘 안되더라구요.. 맘아파요..)
그럼 오늘 학습한 내용을 최종적으로 정리해보겠습니다.
- 블록의 생성 속도는 거래 속도와 관련이 있습니다.
- 블록이 생성되기 위해서는 채굴자(마이너)가 일종의 수학문제를 풀어야하며, 문제의 난이도 낮을 경우 빨리 블록을 생성하고, 난이도가 높을 경우 늦게 블록이 생성됩니다.
- 새롭게 생성된 블록이 블록체인 네트워크에 연결되어 '스테일 블록' 발생 확률이 매우 낮아지는 시점에서 거래가 성립되었다고 인정 받을 수 있습니다.
- 블록이 빨리 생성될 경우 거래 속도는 향상되지만, '스테일 블록'이 발생될 확률이 높아지는 단점이 있습니다.
- 블록이 늦게 생성될 경우 '스테일 블록'이 발생될 확률이 낮아지지만, 거래 속도가 느려지는 단점이 있습니다.
이상 긴글 읽어주셔서 감사합니다!
[참고자료]
https://en.bitcoin.it/wiki/Difficulty
https://en.bitcoin.it/wiki/Target
https://steemit.com/bitcoin/@loum/how-to-calculate-the-difficulty-of-bitcoin
https://bitcoinwisdom.com/bitcoin/difficulty
[참고도서]
새롭게 바뀐 비트코인 쉽게배우기
이더리움을 활용한 블록체인 프로젝트 구축
항상 잘 읽고 있습니다.
블록체인에 대한 공부를 시작한 분들에게 매우 유용한 내용을 전해주시고 계시네요. 감사합니다^^
항상 댓글로 응원해주셔서 감사합니다! 얼마 남지 않은 오늘 하루도 힘내세요!!
2018년에는 두루 평안하시길!
행복한 2018년 보내세요~!!
감사합니다. 채굴에 대한 내용을 막연하게 알고 있었는데, 명확해지는 기분입니다.
도움이 되셨다니 너무 뿌듯하네요~ 감사합니ㄷㅏ!!
오늘도 좋은 글 잘 읽고 갑니다.
늘 찾아주셔서 감사합니다~!
와 이해하기 쉬운 설명 감사합니다.
도움이 되셨다니 감사합니다~ 자주 방문해서 지식 얻어가세요~!