사랑하애오
article thumbnail
블록체인 네트워크 웹소켓 WebSocket http ws
BlockChain 2021. 12. 31. 14:30

P2P (Peer to Peer) 구현 방법 -> WebSocket -> socket.io = 웹소켓으로 웹으로 구성할 때 필수적인 구성을 미리 만들어 놓은 패키지 이전 node.js chatting을 만들 때 사용함 기본 기능 외 여러가지 기능이 많다. 처음 사용하는 사람이 사용하기 편하다 -> ws (web socket 약자) 접속에 대한 것만 ex) broadcast, to 블록체인은 두 개의 port가 필요 1) 서버 - 클라이언트 2) 노드끼리 통신 server - client http 서버 먼저 만들기 with express express 설치 **** 터미널 경로 src 에서 npm i express network.js(websocket) websocket은 여기서 주요한 역할을 담당한다. ..

article thumbnail
블록체인 새 블록 추가, 연결하고 검증하기
BlockChain 2021. 12. 30. 15:08

src/block.js 1. AddBlock 새로운 block 추가하는 함수 // 새로운 block을 간단히 추가하는 함수 function addBlock(){ const newBlock = nextBlock(data); if(isValieNewBlock(newBlock, getLastBlock())){ Blocks.push(newBlock); return true; } return false; } 2. newBlock 새로운 블록을 생성하는 함수 // 다음 블럭(nextBlock)의 header와 body를 만들어주는 함수 function nextBlock(data){ // 이전 block 가져오기 const prevBlock = getLastBlock(); // Header const version ..

article thumbnail
블록체인 제네시스 블록 만들기 by JavaScript
BlockChain 2021. 12. 30. 11:22

블록체인 블록 만들기 첫 블록, = Genesis block 은 개발자가 하드코딩을 해야함 블록의 구성 요소 A block is composed of a header and a body, where a header contains the hash of previous block, a timestamp, Nonce and the Merkle root. The Merkle root is the root hash of a Merkle tree which is stored in the block body. Genesis Block(제네시스 블록) 만들기 1. 기본 세팅 사용할 디렉토리 안에(* 경로 주의) (src 상위 디렉토리에서 npm) npm init -src 디렉토리 생성 > block.js 파일 생성 ..

article thumbnail
블록체인 블록 만들어보기
BlockChain 2021. 12. 29. 12:07

block chain 개념 사전 개념 네트워크(http, socket) 분산원장 c.f)socket(p2p 연결형식) Hash sha256 단방향 암호화(복호화 ((그래서 모든 포털사이트에서 아이디는 찾아도 비밀번호는 그냥 재설정하는 이유))할 수 없는 암호시스템) 자리수 고정됨(a를 넣어도 64글자 marvel를 넣어도 64자리) merkle Tree 만들어진 목적 1. 해당 거래를 효율적으로 찾아가도록 하기 위해서 만들어짐. 위의 블록에서 L4를 찾아가려면 1>2>3>4로 찾아가는 과정 없이, hash1>hash1-1로 2단계로 찾아가면 되니 효율적이다. 2. 또한 위변조를 감지할 수 있다. 하위 노드값을 변조하면 해시값이 바뀌고, 그로 인해 상위 노드값이 변하기 때문에 결국 top hash값이 바뀌..

blockchain 맛 보기
BlockChain 2021. 12. 27. 12:26

//block.js const { Console } = require('console') const fs = require('fs') const merkle = require('merkle') class Block{ constructor(header, body){ this.header = header this.body = body } } class BlockHeader { constructor (version, previousHash, timestamp, merkleRoot, bit, nonce){ this.version = version this.previousHash = previousHash this.timestamp = timestamp this.merkleRoot = merkleRoot this..

PoS(Proof of Stake) 고찰
BlockChain 2021. 12. 26. 12:57

PoS(Proof of Stake) : 지분(Stake) 증명 개념과 배경 지분증명은 작업이 아닌 더 많은 Stake(지분, 자산, 해당 코인)을 가지고 있을 수록 그에 비례하여 블록에 대한 권한이 더 많이 부여되는 것입니다. 왜 많은 개발자들이 PoW에서 PoS를 선호하게 되었냐면, 채굴난이도가 날이 갈수록 기하급수로 올라가고 고사양 장비, 전력소모, 지속적인 해시파워를 유지해야 하는데 이것에 단가가 점점 높아져 개인 채굴자들이 채굴을 할 수 없게 되었기 때문에 노드들이 PoS에 관심을 두게 되었습니다. 장단점 장점 해시파워가 많이 필요하지 않아 경제적이며 친환경적 블록 생산자의 탈중앙화로 안정성 확보 블록생성에 Stake를 담보로 잡아야 하기 때문에 덤핑 방지 단점 모두 이자를 받을 생각으로만 코인을..

해시트리, 이진트리 차이점
BlockChain 2021. 12. 24. 16:22

이진트리 자식 노드가 최대 2개인 트리 순회 방법 preorder : 루트 - 왼쪽 - 오른쪽 inorder : 왼쪽 - 루트 - 오른쪽 postorder : 왼쪽 - 오른쪽 - 루트 배열로 구현 한다면 자식의 인덱스는 /2, 부모의 인덱스는 *2 이다. 어디에서 사용될까? 1. 효율적인 검색과 정렬을 위해 사용된다. 이진 탐색 트리와 이진 힙 구현에 사용한다. 이진 탐색 트리에서 탐색의 시간 복잡도는 logN이다. 2. 데이터를 분기 구조로 표현할 때 사용한다. 해시트리(머클트리) 데이터의 간편하고 확실한 인증을 위해 사용한다. 아래의 노드들을 해싱하면서 합쳐서 부모 노드를 만들어 가면서 루트 노드인 하나의 데이터로 만들어 주는 것이다. 루트 노드의 해시 값을 알면 데이터가 바꼈는지 검증할 수 있다. ..

article thumbnail
MerkleTree & MerkleRoot
BlockChain 2021. 12. 24. 16:18

머클 트리란 무엇인가요? 머클 트리(Merkle tree)의 개념은 80년대 초 공개 키 암호방식 연구 결과로 잘 알려진 컴퓨터 과학자 랄프 머클(Ralph Merkle)이 제안했습니다. 머클 트리는 일련의 데이터 온전성을 효과적으로 검증하는 데 사용되는 구조입니다. 이는 특별히 피어 투 피어 네트워크 맥락에서 참가자가 정보를 공유하고 독립적으로 검증해야 하는 경우와 관련됩니다. 머클 트리 구조의 핵심에는 해시 함수가 있습니다. 머클 트리는 어떻게 작동하나요? 여러분이 커다란 파일을 다운로드하고 싶다고 해보겠습니다. 여러분은 보통 오픈 소스 소프트웨어를 통해 다운로드하고자 하는 파일의 해시가 개발자에 의해 공개된 것과 일치하는지 확인할 것입니다. 두 해시가 일치한다면 여러분은 컴퓨터에 존재하는 파일이 개..