본문 바로가기

프로그래밍233

[타입스크립트] class(클래스) vs interface(인터페이스) 객체를 생성하기 위한 템플릿 Class 상속을 통해서 중복된 코드 작성을 피하고 상속받은 기능을 확장하기 위해서 사용하는 클래스. 인스턴스를 생성하기 위한 생성자함수 Contructor 비슷한 여러개의 객체를 찍어내기 위해서 만든 붕어빵틀, 물건 설계도 인스턴스도 결국 객체를 생성하기때문에 클래스의 모든 기능은 객체를 위해 굴러간다고 생각하면 편하다. 객체를 생성하기 위한 인스턴스 Instance contructor에 의해서 만들어진 객체, 붕어빵, 물건 // 접근제한자 public을 사용한 클래스 Square class public Square{ x: number; y: number; // 반드시 클래스 안에 생성자(constructor)를 선언해야한다. constructor(_x:number, _y:.. 2022. 6. 17.
[220617] 지갑과 블록 네트워크가 소통하는 흐름 지갑과 블록 네트워크가 소통하는 흐름 글로 적으니까 더 헷갈려서 교수님이 그려주신 그림에 설명 첨부 개별적인 단어에 대한 설명을 참조할 블로그 ( https://velog.io/@-__-/bc2 ) 2022. 6. 17.
상속 : extends와 implements / 호출 : super() extends와 implements의 차이 extends 부모의 메서드를 그대로 사용할 수 있으며 오버라이딩(재정의)를 하지 않아도 됨. 변수까지 모조리 사용이 가능하나 다중상속은 안된다. 일반 클래스와 abstract을 상속할때 사용한다. class가 class를 상속받을때는 extends, class가 interface를 상속받을때는 implements interface가 interface를 상속받을때는 extends, interface는 class를 상속받을 수 없다. class extends classA (O) class implements interfaceA (O) interfaceE extends interfaceP (O) interfaceR extends classA (X) interface.. 2022. 6. 16.
[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.
크립토좀비) 챕터2 개념과 sol 0.8.15버전으로 개선한 코드 mapping & address 이더의 잔액을 가진 계정들로 이루어딘 이더리움 블록체인. 각 계정은 계좌번호와 같은 주소를 가지고 있음 ( 계정을 가르키는 고유 식별자 ) 주소는 특정 유저나 스마트 컨트랙트가 소유한다. 구조화된 데이트를 저장하는 방법으로 key-value(키-값)으로 짝지어진 저장소라 할 수 있다. // 금융 앱용으로, 유저의 계좌 잔액을 보유하는 uint를 저장한다: // key가 address, value가 uint mapping (address => uint) public accountBalance; // 혹은 userID로 유저 이름을 저장/검색하는 데 매핑을 쓸 수도 있다 // key라 uint, value가 string mapping (uint => string) userId.. 2022. 5. 31.