일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 블록 만들기
- OAuth 카카오
- JWT 로그인 기능 구현
- node.js path
- useEffect clean up
- express router
- express실행
- 세션으로 로그인 구현
- ws 라이브러리
- 아이디 중복체크기능
- 라우터와 미들웨어
- buffer.from
- Uncaught Error: could not find react-redux context value; please ensure the component is wrapped in a <Provider>
- FormData()
- next 매개변수
- 라우트 매개변수
- 라우터 분리
- 시퀄라이즈 기본설정
- JWT 하드코딩
- mysql wsl
- express session
- cookie-parser 만들어보기
- javascript기초
- 라우터미들웨어 분리
- 비동기파일업로드
- JWT 만들어보기
- nodejs파일업로드
- useContext
- express.static
- css기초
- Today
- Total
목록BlockChain (35)
즐코
저번 포스팅에 이어서 블럭에 논스를 추가하고 블럭들 간의 난이도를 조절하는 과정을 추가한다. 그리고 이 업데이트한 블록을 같은 배열안에 넣어 블록 체인 형태를 만들어보고자 한다. 1. 난이도 조절을 위한 설정값 만들기 난이도라는 건 목표값보다 낮은 해시를 찾기 위한 논스값을 연산하는 데 얼마나 오래 걸리냐이다. 즉, 새로운 블록 생성 시간이 난이도와 연관되어 있다. 늦게 생성되면 난이도가 어렵다는 것이고, 빨리 생성되면 난이도가 낮다는 것이다. (관련 개념 포스팅 : https://yjleekr.tistory.com/75?category=1284408) 그렇기때문에 난이도의 평균시세(?)를 구하기 위해서 2가지 상수가 필요하다. 1/ 이상적으로 생각하는 블록의 평균 생성 시간 2/ 난이도 측정에 필요한 ..
저번 블록 만들기 포스팅에는 블록 상에 논스와 난이도가 빠져있는데, 여기서 추가한다. 1. 제네시스 블록 따로 만들어주기 저번 포스팅에선 블록을 생성할때 테스트 코드에다가 이전 블럭으로서 제네시스 블록을 만들어서 넣어주었다. 이젠 테스트 코드가 아닌 config.ts 상에서 제네시스 블럭을 선언해놓고 쓰려고한다. // src/core/config.ts export const GENESIS: IBlock = { version: "1.0.0", height: 0, hash: "0".repeat(64), timestamp: 1231006506, previousHash: "0".repeat(64), merkleRoot: "0".repeat(64), nonce: 0, difficulty: 0, data: ["He..
작업증명, 논스, 난이도 개념이 헷갈려서 우선 전체적으로 개념 정리를 간단하게 해보았다. 1/ 작업증명 POW (Proof Of Work) - 새로운 블록을 블록 체인에 추가하는 작업을 완료했음을 증명하는 것 - 블록을 블록체인에 추가하려면 새로운 블록의 블록 해시를 계산해내야하는데, 그 블록의 헤더 정보 중 하나인 nonce 값을 구해야 그 블록 해시를 구할 수 있기 때문에 결국 nonce를 구하는 게 작업 증명이다. 2/ nonce - number used only once 한번만 쓰인 숫자를 뜻함 - 최초 0에서 시작하여 조건을 만족하는 해시값을 찾아낼 때까지 1씩 증가시키면서 반복적으로 계산한 블록 해시값이 특정 숫자보다 작은 값이 나오면 그 때의 nonce 값으로 계산한 블록 해시가 그 블록의 ..
기본적으로 ts 를 쓰기 위한 세팅은 완료하고 시작한다. (해당 블록엔 아직까지 논스와 난이도에 대한 개념이 들어가지 않은 상태이고, 이건 추후 다른 포스팅에서 추가할 예정) 1. 블록의 타입 지정하기 - @types 폴더 만들고 그 안에 Block.d.ts 파일 생성 1/ block header 정의 : version, height, timestamp, previousHash 2/ block 정의 : 우선 블럭 자체가 블럭헤더를 품고 있기 때문에 extends 키워드로 IBlockHeader를 상속받아오기 - merkleRoot : 바디의 data를 해싱한 값이기 때문에 block에서 만들어줘야함 - hash : block header의 해싱값과 block body 데이터의 해싱값인 merkleRoot..
블록체인 블록 - 블록을 체인형태로 연결한 자료구조 블록? block = header + body 로 이루어진 객체와 같다. (실제론 이렇게 header, body 나누진 않는다, 그냥 이해를 돕기 위한 구조라고 생각하면됨) block hash값 header Version previousBlockHash MerkleRoot Timestamp Difficulty (난이도) Nonce Height body data (transaction) [data1, data2,....] block hash값 (블록의 이름 정보) : block header 정보를 모두 합산 후 SHA256으로 변환한 값이다. ( 버전 + 이전 블록 해시 + 블록 총 생성 수 + 머클루트 + 타임스탬프 + 난이도 + 논스 ) => SHA..