본문 바로가기

프로그래밍/typescsript27

[220617] 지갑과 블록 네트워크가 소통하는 흐름 지갑과 블록 네트워크가 소통하는 흐름 글로 적으니까 더 헷갈려서 교수님이 그려주신 그림에 설명 첨부 개별적인 단어에 대한 설명을 참조할 블로그 ( https://velog.io/@-__-/bc2 ) 2022. 6. 17.
[220616] 월렛(블록체인 지갑)의 개념과 구조, 직접 월렛 만들기 필요한 정보 코어 / 서버 / p2p && 월렛 월렛은 필수가 아니라서 따로 존재가 가능. 보내는사람 : 보내는 사람이 정말로 보내는게 맞는지 인증단계(트랜젝션) 받는 사람 : 받는 사림이 정말로 맞는가? 금액 : 이 금액을 보내는 장소가 정말로 맞는가? 송금/수취인 계좌번호들만 관리하는게 지갑 지갑의 구조 은행에서 사용하는 걔좌 = 개인키(OTP) + 공개키(은행들끼리 쓰는 코드분류값, 실제 거래에 쓰이는 값)+ 계정(계좌번호) 반드시 블록체인을 거쳐서 만들어야하는게 아님 개인키 (은행에서 OPT같은 역할) 랜덤으로 64자리의 16진수 문자열을 만들어낸것. 그런데 이 방식은 다른 메인넷을 가지고있는 블록체인, 이더리음같은 블록체인들도 사용하고있는 방식임. 이렇게 만들면 겹칠 위험이 있음. 그래서 다른 .. 2022. 6. 16.
[220610] 블록 채굴(마이닝)-난이도-체인의 관계 / 블록검증 함수 채굴 - 난이도 - 체인의 관계 채굴 블록체인은 기본적으로 모든 사용자들(블럭)이 같은 정보를 유지하고있기때문에 이루어지는 탈중앙 시스템을 이루고있다. 그말은 한 블럭이 가진 정보가 수정된다면 다른 블럭들도 동시에 가진 정보가 수정되어야한다. 이 정보가 공정하게 수정된 정보인지, 누군가 악의적으로 수정한 정보인지 알기위해 일일히 서로 대조를 한 후에 정보수정이 이루어지는데, 이 과정만해도 시간이 오래 걸린다. 그런데 블록생성이 매우 쉬워서 1초에 10개, 15개씩 생성이 가능해진다고 생각해보자. 1명만 그렇게 생성해도 시간이 오래걸릴텐데 전세계의 사람들이 시도때도없이 생성한다면 거래속도가 현저히 느려질것이다. 이런 일을 막기 위해서 생겨난 것이 난이도다. 난이도 블록을 생성하는 난이도 조정을 통해 블록을.. 2022. 6. 10.
[220609] prettier, eslint 설치 / 테스트코드(test.ts), 선언파일(d.ts) [ 사전 세팅 ] 문법을 맞춰주는 Prettier 확장프로그램 설치 prettier와 함께 사용할 라이브러리 설치 prettier 말고도 eslint 라이브러리도 설치하는 코드. $ npm install -D eslint prettier eslint-plugin-prettier eslint-config-prettier prettier의 기본값을 세팅하는 config 파일 만들기 // eslint라이브러리를 세팅하는 .eslintrc 파일 { "extends":["plugin:prettier/recommended"] } // prettier라이브러리를 세팅하는 .prettierrc 파일 { // 줄바꿈할 폭이 길이 "printWidth": 120, // 탭을 누를때 얼마나 공간을 둘건지 "tabWidth".. 2022. 6. 10.
[220609] 타입스크립트 개발환경 만들기 라이브러리 설치 언제나 그랬듯 새로운 기능을 위해 라이브러리를 설치해주자. $ npm init -y $ npm install -D typescript ts-node @types/node 이제 해야할것 자바스크립트는 해석해주는 프로그램이 브라우저, nodejs가 있지만 타입스크립트를 해석해주는 프로그램이 없어서 런타임이 없다. 리액트는 웹팩을 통해 번들링을 해서 나온 자바스크립트 파일로 브라우저가 실행해주는것처럼, 타입스크립트도 번들링이라는 작업을 해서 자바스크립트로 바꿔줘야함. 타입스크립트 실행하기 ts-node는 타입스크립트를 알아듣는 실행기. 개발용이라서 배포는 안됨. -D는 디렉토리 내에서 선언. -g는 전역적으로 선언. npx는 패키지를 임시 설치해서 실행하는 npm 소속 도구. $ npx ts-.. 2022. 6. 9.
[220608] 블록체인의 구조를 만들어보기 블록체인의 기본적인 구조는 이렇다. const block = { header:{ version:'1.0.0', pervoiusHash:'', hash:'', merkleRoot:'', difficult:0, nonce:0, }, body:{ data:["ada","sdfasd","ere","eaaaa","zzzz","bbbbb"] } } 이를 토대로 객체를 만들어보면 다음과 같이 나온다. const Block { constructor(_version,_height,_timestamp,_previousHash,_merkleRoot,_hash,_data){ this.version = _version; this.height = _height; this.timestamp = _timestamp; this.pre.. 2022. 6. 8.
[220608] 블록체인 초기설정하기 / 구조 알아보기 라이브러리 설치 언제나 그랬듯 새로운걸 시작할때는 라이브러리부터 설치하자 $npm install crypto-js 블록체인 구조 블록의 버전 = version 이전 블록의 해시값 = previousHash 블록 해시값 = hash body값의 해시값 = merkleRoot 지금 수준으로는 이해할 수 없는 값 = difficult, nonce const block = { header:{ version:'1.0.0', pervoiusHash:'', hash:'', merkleRoot:'', difficult:0, nonce:0, }, body:{ data:["ada","sdfasd","ere","eaaaa","zzzz","bbbbb"] } } 단방향 암호화로 만들어지는 hash 변수 a를 sha256 형식의.. 2022. 6. 8.