[프린이탈출기] node.js 로 나만의 블록체인을 만들어보자 2.난이도 조정

in #kr7 years ago (edited)


1편을 쓰고 난 다음 2편을 바로 쓰려고했으나
마이닝 과정에서 난이도 조정부분에서
난항을 겪는 나머지 몇일을 고민하다가안녕하세요 @otac 입니다

드디어 해결을 하게 되었습니다

1편에서는 단순 마이닝을 성공했으나
비트코인의 난이도를 그대로 적용했더니
너무나도 오래걸려 테스트를 못하는 지경이라

비트코인의 난이도 알고리즘은 그대로 쓰면서
실제 목표값 (bits) 에 약간의 핸디캡을 주는방향으로
해결하게 되었습니다

스크린샷 2018-03-21 오후 2.57.56.png

프린이라 난해한 코딩법은 양해를 부탁드리며
지적은 받지 않겠습니다. ㅂㄷㅂㄷ

마지막 부분에

k = k + handicap;

부분이 보이실텐데 목표값을 확 올려주어
더 쉽게 찾을 수 있도록 했습니다.

그리고 제가 제일 멘탈이 나갔던 부분이 있는데요
바로 난이도 조정입니다.

우리가 흔히 비트코인의 난이도라고 부르는것은
비트코인 내부적으로 아무 의미가 없습니다.

해싱 목표값인 bits 를 보기편하게 수치화 시킨것에
불과한데요. 문제가 그 어디를 뒤져보아도
다음 난이도를 구하는 공식만 있을뿐

제가 필요한건 bits 값인데
난이도를 다시 bits 로 역연산 하는 수식이
존재 하지 않았습니다.
난이도는 bits->target->difficulty 로 구하는데말이죠

그래서 bits에서 난이도를 구하는 공식인

스크린샷 2018-03-21 오후 3.01.02.png

이걸 역으로 풀어보면 어떨까 해서 고민해보았는데
수학에 숫자보다 영어가 많이나올떄 그만둔 저로써는
미지의 세계였습니다.

그래서 텔레그램방에서 자칭 서울대 수학과라는
친구에게 물어보았는데요.

KakaoTalk_Photo_2018-03-21-15-03-28_53.jpeg

KakaoTalk_Photo_2018-03-21-15-03-18_47.jpeg

FAIL !

@noctisk 님께도 물어보았는데요

스크린샷 2018-03-21 오후 3.05.16.png

또 FAIL

고민에 고민을 거듭하고
식음을 전폐하며 점점 멘탈이 으깨지려할때

어김없이 질문 찬스를 썼습니다

스크린샷 2018-03-21 오후 3.07.07.png


비트코인 코어에서 관련 함수를 알려주셨고
0x008000 같은 숫자도 영어도 아닌
괴랄한 코드를 하나하나 node 로 바꾸어서@ludorum 그는 도덕책..

스크린샷 2018-03-21 오후 3.08.16.png

완성했습니닼ㅋㅋ으엌ㅋㅋㅋ엌ㅋㅋㅋ
역시 정답은 교과서에 다 있습니다.

이걸로 약 3일을 해매었는데
드디어 해결했습니다

블록타임 10초
난이도조정주기 5블럭으로 설정을하고

const blocktime = 10; //블록타임 (초로 표기)
const retarget_block = 5; //블록마다 체크
const retarget_block_ntime = blocktime * retarget_block;

그리고 비트코인처럼 최대 난이도 상승은 4배.
최대 난이도 하락도 4배 제한을 걸고..

스크린샷 2018-03-21 오후 3.11.55.png

실행 가즈아!!!!!


스크린샷 2018-03-21 오후 3.10.12.png

SUCCESS!!

으아 드디어 채굴부분이 끝났습니다
다음 시간에는 공개키 알고리즘으로
지갑을 만들어보고 블럭보상을 받아

UTXO 를 생성하여 코인을 전송하고
트랜잭션을 검증해보겠습니다

감따합니다

Sort:  

감사합니다 저도 보면서 공부하고 모르는거 있으면 오탁님께 여쭤봐야겠어요~

내용 삭제합니다. 이제 잘 지내봅시당ㅎㅎ

네 억울합니다 ㅋ 단톡방에 말할까 말까 하다가 일부러 말했네요

읽고는 있지만 이해는 안가고 ㅋㅋ 뭔가 모르지마 아 ~ 히고 있는 1인 입니다 ㅎㅎ;(

저도잘모릅니다 하나씩 천천히...

오탁님 오랜만에 왔는데,
무슨말인지 하나도 모르겠네요 ㅋㅋㅋㅋ
위 말처럼 한국말인가요?
그래도 뭐 잘 되고 있는거 같아요 :D

엇 쿤다니님 오랜만이에요 ㅋㅋㅋㅋㅋ
쉽게쓴거같이 보이지만 저 몇날 몇일 이거만했습니다 ㅂㄷㅂㄷ

우와.... 대단하십니다 ㅎㄷㄷㄷ

감사합니다 ^0^

이것도 이해가 되진 않지만 훌륭하네요 ㅋㅋ

아 맞다 달걀님 저 지금 수원인데 접선할까요 ㅋㅋㅋㅋㅋ

안그래도 수술하러 올라오신다 하셨을 때 스케줄 좀 내볼라했는데 ㅜ
출장준비때미 쉽지 않네요오옹ㅜㅜ
아, 저 신혼집 인천으로 오게돼서 수원은 가끔 가용 ㅋㅋ 언제 내려가세요??

능력자 이시군요 ....

아닙니다 허허허허
칭찬감사합니다 (__)

오탁님 블록체인 개발자로 변신했군요 코인좀 주세여 ㅋㅋ

코인 전송기능이 없는데요.. ( ..)

otac 코인 파이팅~~

카톡 풀봇 잘 모아놓고 있겠습니다~!!

저도 뭐가 뭔지 잘 모르지만 그냥 재미 있어 보입니다 @.@

아이고~~ 이 수준은 내 머리로는 도무지 못 따라할 것 같아요.

짱짱맨 호출로 왔습니다!
한주 수고하세요
코인거래소인 고팍스에서 멋진 이벤트중이네요!
https://steemit.com/kr/@gopaxkr/100-1-1

머지않아 블록체인 개발자가 되어계실것 같습니다. 이미 되신거나 마찬가지네요. ㅎ 젊음보다 이제는 제가 가지기 힘들어보이는 뜨거운 열정이 부럽습니다.

초보위한 포스팅도 인기잇으실것 같네여

글 내용이 무시무시하네요~~