본문 바로가기

매일코딩/블록체인-자바스크립트11

자바스크립트로 블록체인 구현 강좌 11 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌 11 - 나만의 비트코인 발행하기지난 포스팅에서 하나의 네트워크에서 블록체인이 어떻게 작동이 되는지 살펴보았다. 이번포스팅에서는 여러개의 노드, 즉 컴퓨터들이 참여를 할때 블록체인 데이터가 어떻게 기록되는지 살펴보겠다.순서1. api.js 파일 이름을 networkNode.js 로 변경하자. 2. networkNode.js 파일 윗 부분에 동적 포트관련 변수 선언해준다.//동적 포트 package.json script 객체에서 2번째 방에 들어있는 데이터 3001,3002,3003 ...3005var port = process.argv[2];3. app.listen 을 아래와 같이 바꿔 준다.//동적 포트app.listen(port,function(){ console.l.. 2018. 5. 31.
자바스크립트로 블록체인 구현 강좌 10 - 나만의 비트코인 발행하기(소스코드) 자바스크립트로 블록체인 구현 강좌 10 - 나만의 비트코인 발행하기(소스코드)이번 포스팅에서는 블록을 채굴할때, 즉 컴퓨팅 파워로 마이닝 할때 실행되는 app.get(/mine) 함수 부분을 작성해보도록 한다. 순서1.먼저 마지막 블록을 가져온다.2.마지막 블럭의 타입은 객체 이기 때문에 key:value 형태다. 'hash' 키 값으로 해당 value(이전블럭해쉬)를 가져온다.3.현재 블럭데이터는 이전의 발생한 거래내역을 저장해야 하기 때문에 bitcoin객체의 pendingTransaction 배열에 담긴 값을 가져와서 넣어주고, index는 마지막 블럭 index + 1을 해준다.4. 이제 nonce, blockHash를 구할 수 있는 값들을 다 구했다. 5. 그리고 위의 값들을 이용해서 creat.. 2018. 5. 30.
자바스크립트로 블록체인 구현 강좌 9 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌 9 - 나만의 비트코인 발행하기 이번시간에는 api.js에 app.get() , app.post() 부분을 작성해주고, 개발에 조금 더 도움을 줄 node api를 설치 해보도록 하겠다. node js 에서 get, post이 부분이 이해가 안간다면...구글링을 부탁드린다..여기서는 조금이라도 알고 있다고 가정하고 쭉쭉 설명하겠다. 먼저 api.js 소스 코드다var express = require('express')var app = express() // 웹브라우저에 get 방식으로 /blockchain 주소를 입력했을 때 실행app.get('/blockchain', function (req, res) { res.send('blockchain Start')}) // 웹.. 2018. 5. 30.
자바스크립트로 블록체인 구현 강좌 8 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌 8 - 나만의 비트코인 발행하기이번 포스팅 부터는 앞에서 만든 blockchain을 서버에서 구현해보도록 하겠다. 우리는 서버 구축을 간단하게 도와줄 express api를 사용할것이다. 일단 구글로 가서 express npm을 검색하자. 아래 주소로 들어가도 된다. https://www.npmjs.com/package/express콘솔을 열어서 위에 install명령어를 자신의 개발 폴더 위치에서 입력해준다. 이제 express api를 설치 완료 했다. 개발환경으로 가서 api.js 파일을 생성해주고 아래 소스 코드를 입력해주자 아래 소스코드는 express npm 문서에 있다. 간단하게 설명하면 app.get은 웹브라우저에 / 의 값이 들어오면 함수 아래를 실행하겠.. 2018. 5. 29.
자바스크립트로 블록체인 구현 강좌7 - 나만의 비트코인 발행하기(소스코드 포함) 자바스크립트로 블록체인 구현 강좌7 - 나만의 비트코인 발행하기 이번 포스팅에서는 블록체인 기술에서 핵심이라고 할 수 있는 작업증명 POW 개념을 알아보고 코드로 구현해 보자. 간단한 용어정리를 하고 넘어가자. #용어정리해쉬: 해쉬는 의미없는 데이터다. 컴퓨터에서 블럭의 길이를 맞추기 위해서 메모리에 작성된 의미없는 데이터다.예)0000asdkflqwjkeljakldjflaj;블럭: 해쉬를 가지고 있는 사람이 코인을 획득할 수 있는 블록을 의미난이도: 블럭이 생성되는 시간을 일정하게 조정하기 위해 사용되는 개념(전체 해쉬의 양 증가 -> 난이도 증가-> 블럭찾는데 더 많은 해쉬 필요 _> 블럭 생성시간 유지됨)51% 공격: 전체 해쉬의 51% 이상 가진 집단이 존재할때 전체 코인의 이동정보, 즉 블록체인.. 2018. 5. 29.
자바스크립트로 블록체인 구현 강좌6 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌6 - 나만의 비트코인 발행하기저번 시간에 포스팅한 sha256 암호화 값 리턴 함수가 어떻게 사용되는지 보겠다. 일단 test.js 부분을 다 지운다. 그리고 아래 코드를 넣어준다. bitcoin 객체의 hashBlock 함수는 3개의 인자값을 받는다. 1. 이전 블락의 hash 2.현재 블록의 거래 데이터 3.nonce 값 //blockchain.js 모듈을 이곳에서 가져다 쓰겠다.const Blockchain = require('./blockchain'); //위에서 가져온 모듈의 객체를 만든다.const bitcoin = new Blockchain(); const previousBlockHash = "abcdedferefa"const currentBlockData .. 2018. 5. 28.
자바스크립트로 블록체인 구현 강좌5 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌5 - 나만의 비트코인 발행하기 이번 포스팅에서는 sha256 해시생성기와 npm을 이용해서 sha256 모듈을 설치해서 사용해보도록하겠다.일단.sha256 은 암호화 알고리즘의 하나이다. 음..엄청쉽게 말해서 '어떤 입력값이든 고정된 길이의 임의의 문자열값으로 출력한다' 라고 알고 있으면 쉽다.예를 들면 abc 값을 sha256 알고리즘에 넣고 돌리면BA7816BF8F 01CFEA4141 40DE5DAE22 23B00361A3 96177A9CB4 10FF61F200 15AD이값이 생성이된다. 길이를 보자.abcdef를 넣으면?BEF57EC7F5 3A6D40BEB6 40A780A639 C83BC29AC8 A9816F1FC6 C5C6DCD93C 4721같은 길이의 임의의값이.. 2018. 5. 28.
자바스크립트로 블록체인 구현 강좌4 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌4 - 나만의 비트코인 발행하기 지난 포스팅에 이어서 이번시간에는 저번 포스팅에서 작성한 마지막 블락 가져오기 함수와 새로운 트랜젝션 생성하기 함수를 test.js 에서 한번 찍어 보겠다. 그리고 트랜잭션과 새로운 블락이 생겼을 때 , 그리고 새로운 블록이 생긴 이후 트랜잭션 데이터는 어떻게 변하는지 이 관계를 살펴보도록 하자. test.js로 이동해서 새로운 블락을 생성하는 함수와 새로운 트랜젝션을 생성하는 함수를 하나씩 작성한다. //blockchain.js 모듈을 이곳에서 가져다 쓰겠다.const Blockchain = require('./blockchain') //위에서 가져온 모듈의 객체를 만든다.const bitcoin = new Blockchain(); //새.. 2018. 5. 26.
자바스크립트로 블록체인 구현 강좌3 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌3 - 나만의 비트코인 발행하기 이번포스팅에서는 마지막 블록을 얻는 함수, 새로운거래가 발생할때 거래 트랜잭션 데이터를 생성하는 함수를 만들어 보도록 하겠다.먼저 blockchain.js 로가서 이어서 코드를 작성해보자. Blockchain.prototype.createNewBlock ... 생략. 이 코드 아래에 마지막 블록을 가져오는 함수를 작성한다. //마지막 블록 얻기 - chain 배열에는 블록데이터가 들어간다. 맨마지막 블록을 가져와라.Blockchain.prototype.getLastBlock = function(){ return this.chain[this.chain.length - 1];} 그 밑에 새로운 트랜잭션이 발생했을 때 작동되는 함수를 작성한다.참.. 2018. 5. 26.
자바스크립트로 블록체인 구현 강좌2 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌2 - 나만의 비트코인 발행하기 지난 포스팅에서는 자바스크립트로 블록체인 구현을 위한 셋팅과 자바스크립트의 데이터구조와 프로토타입에 대한 기본 지식을 알아보았다. 이번에는 지난번 포스팅에서 구현한 내용을 직접 console.log로 찍어보면서 대충 아~ 이런거구나 하고 감을 잡아보자blockchain.js 모듈화 하기//블록체인 데이터 구조function Blockchain(){ this.chain = []; this.newTransactions = [];} //블록체인 프로토 타입 함수 정의Blockchain.prototype.createNewBlock = function(nonce,previousBlockHash,hash){ //새 블록 객체 const newBlock.. 2018. 5. 25.
자바스크립트로 블록체인 구현 강좌1 - 나만의 비트코인 발행하기 2년전부터 블록체인 기술에 관심이 생겨서 이것저것 찾아보면서 지식을 쌓았다. 이론만 공부하면 뜬구름 잡는 이야기처럼 들릴 수 있기 때문에 개발자라면 직접 구현을 한번 해보는것이 중요하다. 블록체인을 구현할 수 있는 언어들이 많지만 그중에서 가장 접근성이 쉬운 자바스크립트를 이용해서 개발을 해보겠다. 일단 자바스크립트와 node .js에 대한 기초 지식은 있어야 한다. 자바스크립트로 블록체인 구현 강좌1 - 나만의 비트코인 발행하기1.셋팅바탕화면에 개발 폴더를 만든다. 예를 들면 blockchain폴더를 만들었다고 하자. 그 폴더 위치에서 npm init을 해준다. 그러면 node js 서버를 구축 할 수 있는 기본 셋팅이 완료 된다. blockchain 폴더 안에 dev 폴더를 만들고 그안에 test.j.. 2018. 5. 25.