자바스크립트로 블록체인 구현 강좌 10 - 나만의 비트코인 발행하기(소스코드)
이번 포스팅에서는 블록을 채굴할때, 즉 컴퓨팅 파워로 마이닝 할때 실행되는 app.get(/mine) 함수 부분을 작성해보도록 한다.
순서
1.먼저 마지막 블록을 가져온다.
2.마지막 블럭의 타입은 객체 이기 때문에 key:value 형태다. 'hash' 키 값으로 해당 value(이전블럭해쉬)를 가져온다.
3.현재 블럭데이터는 이전의 발생한 거래내역을 저장해야 하기 때문에 bitcoin객체의 pendingTransaction 배열에 담긴 값을 가져와서 넣어주고, index는 마지막 블럭 index + 1을 해준다.
4. 이제 nonce, blockHash를 구할 수 있는 값들을 다 구했다.
5. 그리고 위의 값들을 이용해서 createNewBlock()을 만든다.
채굴자에게 보상 제공
블락을 채굴한 사람에게 보상을 해줘야 한다. 그러기 위해서는 채굴한 사람의 주소를 알아야 한다. 여기서는 npm 을 이용해서 네트워크 아이디를 임의로 지정해줘서 보상을 해주도록 하겠다.
터미널을 열고 -> 개발폴더에 위치하고 -> 명령어 입력 -> npm i uuid --save
설치가 완료되었으면 api.js 윗부분에 아래 코드 입력
그리고 채굴에 대한 보상을 위한 코드 작성 - 주석으로 //채굴에 대한 보상
보상을 위해 지금 해당 비트코인 객체에 새로운 거래가 발생을 시키고, 보상으로 10비트코인을 bosang 이 nodeAddress 즉 나의 네트워크(내가 채굴했으니깐) 키에 지급한다.
테스트하기
먼저 터미널을 열고 개발 폴더에 위치하고 npm start로 서버를 실행한다. 그리고 웹브라우저에 차례대로 아래 주소를 적어본다. (꼭 차례대로 하나씩 따라해보세요)
http://localhost:3000/blockchain - 제네시스 블럭 생성
http://localhost:3000/mine - 2번째 블록채굴 + 보상(transactoins 배열에 객체형태로 들어가 있음)
http://localhost:3000/blockchain - 2번째 블록 연결
http://localhost:3000/mine - 3번째 블록채굴 + 보상
http://localhost:3000/blockchain - 3번째 블록 연결
http://localhost:3000/transaction - 거래내역 발생
http://localhost:3000/blockchain - 거래내역은 pendingTransaction 배열에 존재
http://localhost:3000/mine - 4번째 블록 채굴 + 위의 거래내역 + 보상
http://localhost:3000/blockchain - pendingTransaction 배열 비움 + 거래내역과 보상이 담긴 4번째 블록 연결
마무리
일단 여기까지 따라오느라 정말 고생이 많으셨습니다. 여기까지 따라치면서 위와 같은 출력이 나왔다면 블록체인 기술에 대한 이해가 조금 더 생겼으리리라 생각이 됩니다. 여기서 한템포 쉬었다가 다음 포스팅 부터 또 이어서 진행하도록 하겠습니다.아래에 소스코드를 첨부했으니 참고하시면 될 것 같습니다.
소스코드
'매일코딩 > 블록체인-자바스크립트' 카테고리의 다른 글
자바스크립트로 블록체인 구현 강좌 11 - 나만의 비트코인 발행하기 (1694) | 2018.05.31 |
---|---|
자바스크립트로 블록체인 구현 강좌 9 - 나만의 비트코인 발행하기 (0) | 2018.05.30 |
자바스크립트로 블록체인 구현 강좌 8 - 나만의 비트코인 발행하기 (0) | 2018.05.29 |
자바스크립트로 블록체인 구현 강좌7 - 나만의 비트코인 발행하기(소스코드 포함) (3) | 2018.05.29 |
자바스크립트로 블록체인 구현 강좌6 - 나만의 비트코인 발행하기 (0) | 2018.05.28 |
댓글