일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- npm
- 깃허브
- 일반유저
- 설치
- MariaDB
- Sequelize
- immer
- 리액트를 다루는 기술
- 리액트
- 쉘스크립트
- wget
- 솔리디티
- 시퀄라이즈
- node.js 교과서 따라하기
- 환경변수
- 자바스크립트
- 라우터
- Docker
- 우분투
- 리눅스
- 머클트리
- 전역설치
- 머클루트
- 블록체인
- centos
- 이더리움
- 벨로포터
- 노드
- 변수
- wsl
- Today
- Total
목록분류 전체보기 (154)
코드코코
사전작업 httpServer.js 파일 생성 touch httpServer.js 모듈설치 express, bodyparser npm i express body-parser 모듈불러오기 chainedBlock.js, checkValidBlock.js const express = require("express") const bodyParser = require("body-parser") const { getBlocks, getVersion, nextBlock } = require('./chainedBlock') const { addBlock } = require('./checkVaildBlock') chainedBlock.js 에서 추가 exports 해주기 getBlocks와 getVersion을 http..
사전작업 checkValidBlock.js 파일 생성 touch checkValidBlock.js 모듈불러오기 merkle 및 사용자모듈 const merkle = require('merkle') const { nextBlock, getLastBlock, createHash, Blocks } = require('./chainedBlock') 블록검증 - 생성된 블럭을 블록체인에 추가하려면 반드시 검증을 거쳐야 한다. 검증해야 할 것 1. 추가하려는 현재의 블록 : 블록 구조가 유효한지 - 타입들이 올바른가 - 인덱스가 올바른가 : 현재 블록의 인덱스가 이전블록의 인덱스보다 1만큼 큰지 - previousHash가 올바른가 (이전 블록값 이용) - body의 내용이 존재하지 않는가? 👉없으면 안됨 - 암호..
사전작업 chainedBlock.js 파일 생성 touch chainedBlock.js package.json 파일 생성 npm init 모듈 설치 npm i crypto-js merkle 모듈 불러오기 fs 모듈 사용예정이므로 함께 불러옴 const cryptoJs = require('crypto-js') const merkle = require('merkle') const fs = require('fs') 블록의 구조 클래스 정의 Block : header와 body로 구성 됨. class Block { constructor(header, body) { this.header = header this.body = body } } BlockHeader: 블록의 header에는 6가지 구성요소가 있음. -..
WebSocket WebSocket은 서버와 클라이언트 간에 Socket Connection을 유지하여, 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술 Transport protocol의 일종 : 웹버전의 TCP 또는 Socket 웹 소켓의 특징 양방향 통신(Full-Duplex) 실시간 네트워킹(Real Time-Networking) - 데이터 송수신을 동시에 처리할 수 있는 통신 방법 - 클라이언트와 서버가 서로에게 원할 때 데이터 송수신 (통상적인 HTTP 통신은 클라이언트가 요청을 보내는 경우에만 서버가 응답하는 단방향 통신) - 웹 환경에서 연속된 데이터를 빠르게 노출 - 여러 단말기에 데이터를 빠르게 교환 ex) 채팅, 주식, 비디오 데이터 웹 소켓의 동작 방법 1 - Hand ..
변수(variable) 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름 - 할당(assignment) : 변수에 값을 저장하는 것 - 참조(reference) : 변수에 저장된 값을 읽어 들이는 것 - 선언(declaration) : 변수명을 자바스크립트 엔진에 알리는 것 변수 선언 - var , let , const - ES6에서 const와 let이 추가 스코프 (Scope) Scope란 변수의 유효 범위 함수 스코프(function scope) 특정 함수 내에서 변수를 선언하면 지역변수이고, 함수 밖에서 선언하면 전역변수이다. 함수 범위 내라면 블록 외부에서도 변수 접근이 가능하다. 블록 스코프(block scope) 코드 블록 내부에서 변수를 선..
블록생성 //block.js const cryptoJs = require('crypto-js') const fs = require('fs') const merkle = require('merkle') //블록 구조체 선언 : 헤더, 바디 class Block { constructor(header, body) { this.header = header this.body = body } } //블록헤더 구조체 선언 : 헤더 구성 요소 나열 class BlockHeader { constructor(index, version, previousHash, timestamp, merkleRoot, bit, nonce) { this.index = index this.version = version this.previou..
Merkle tree 1. 모듈설치 $ npm i merkletreejs crypto-js root@DESKTOP-RJ31OF5:/home/ubuntu/workspace/blockchain# npm i merkletreejs crypto-js added 57 packages, removed 110 packages, and audited 60 packages in 15s 1 package is looking for funding run `npm fund` for details found 0 vulnerabilities 2. test_merkleTree.js 작성 1. a 를 해쉬값으로 표현 // test_merkleTree.js const SHA256 = require('crypto-js/sha256') ..
머클 트리(Merkle Tree) -모든 자식 노드들이 암호학적 해시로 이뤄진 데이터 블록을 갖는 트리 형태의 자료 구조 -해시 트리(hash tree)라고도 불림. 머클루트(Merkle Root) - 블록의 바디 부분에 저장된 트랜잭션(거래정보) 들의 해시트리 - 블록의 바디에 저장된 트랜잭션의 정보들이 유효한지 빠르게 검사하기 위한 역할을 수행 머클트리의 특징 1. 무결성 보장 : Root 노드의 해시 값으로 모든 Leaf 노드의 데이터 변경 확인 가능 2. 동일 해시값 크기 : 해시 함수 기반 데이터 노드 수와 관계없이 동일한 크기 3. 빠른 검증 속도 : 이진 트리 구조 기반 빠른 속도의 검증 가능 O(log N) 머클루트 생성 방법 최초 데이터를 SHA256 형태의 해시값으로 변환한다. 가장 가..