일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- React 기본설정
- node js 설치
- 콜백함수
- 화살표함수
- js 댓글수정
- css #css기초
- Rebase
- typescript
- 3way handshake
- js 게시판
- js 로또
- React 자습서
- Linux 기본
- js 댓글
- js DOM 기초
- node js 기본
- Object.keys
- branck 합치기
- Linux 사용자
- 배열 메서드
- js 생성자 함수
- GitHub
- js 함수 #함수
- js로또 만들기
- js 무한루프 슬라이드
- Git
- js 메서드
- JS DOM
- nodejs 게시판
- js 함수 표현식
- Today
- Total
목록BlockChain (7)
개발 노트
기본적인 solidity 문법. // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Counter { uint256 value; constructor(){} //setter , send function setValue(uint256 _value) public{ value = _value; } //getter , call function getValue() public view returns(uint256){ return value; } } solidity를 처음 사용을 시작하면 맨 윗줄에 라이센스를 명시해줘야 한다. // SPDX-License-Identifier: MIT 이후 solidity 버전을 표시해 두고 시작한다. 이 두가지는 기본..
" 이더리움의 목적은 분산 어플리케이션 제작을 위한 대체 프로토콜 " 이다. 비트코인의 경우 결제에 관한 부분만 처리한다. 따라서 이자, 수수료등을 따로 처리해야하는 번거로움이 생긴다. 이를 보완하여 만들어진것이 이더리움이다. 이더리움은 적은시간에 탈 중앙화를 사용해서 사이트, 게임등을 만든다. 이를 Dapp(Decentralized Application) 이라고 한다. 탈 중앙화 된 것과 통신할 수 있고, 요청 응답을 통해 데이터를 저장 할 수있다. 이를 스마트 컨트랙트라고 한다. 이더리움은 비트코인과 다르게 계정에 2가지의 형태가 있다 EOA와 CA 이다 EOA 의 경우 private key 에 의해 통제되는 계정으로 우리가 비트코인에서 만든 계정과 비슷하다고 볼 수 있다. CA는 컨트랙트 코드에 의..
기본적으로 거래를 하기 위해 우리는 계정(지갑) 을 만들어야한다. 지갑을 만들기 위해서 구성요소를 만들어주는 digitalSignature class를 만들어준다. import CryptoModule from "@core/crypto/crypto.module"; import { randomBytes } from "crypto"; import elliptic from "elliptic"; import { Receipt } from "./wallet.interface"; class DigitalSignature { private readonly ec = new elliptic.ec("secp256k1"); constructor(private readonly crypto: CryptoModule) {} cre..
GENESIS 블록을 만들고 나서부턴 GENESIS 블록 해시 값을 가지고 다음블록을 만든다. 이후 이전 블록을 받아와서 해시값을 다음 블록의 이전블록해시로 넣어주는 작업을 반복한다. 기본적으로 블록은 트랜잭션데이터를 가지고 merkleRoot를 만들게 되며, merkleRoot 를 만들고 나서 모든 데이터를 가지고 해시를 만든다. 따라서 GENESIS 블록을 만들 때 썼었던 interface는 그대로 가져와서 써도 무관하다. 우선 블록 클래스를 만들고 이전 블록의 해시값이 올바른지 검사부터 한다. 그러기 위해서는 crypto를 주입해줘야 한다. import CryptoModule from "@core/crypto/crypto.module"; class Block { constructor(private ..
GENESIS 블럭을 만들기 위해 interface 부터 만들어 놓는다. import { Difficulty, Hash, Height, Timestamp } from "types/block"; import { TransactionData } from "../transaction/transaction.interface"; export class BlockInfo { public version!: string; public height!: Height; public timestamp!: Timestamp; public previousHash!: Hash; public nonce: number = 0; public difficulty: Difficulty = 0; } export class BlockData ..

UTXO는 기본적으로 아직 사용되지 않은 잔액을 의미한다. 우리의 화폐단위가 100원 1000원 5000원 10000원 등이 있듯이 비트코인의 경우 하나의 UTXO가 하나의 단위가 되는것이다. 5BTC와 10BTC가 나에게 있다면. 한개의 UTXO 15BTC 가 생성되는것이 아니라 5BTC 10BTC 2개의 UTXO를 가지고 있는다. 이를 추적해서 합산을 하게 되면 15BTC 라는 잔액이 나오게 된다. 거래를 할 때 3BTC를 B 라는 사람에게 줘야한다면 5BTC를 삭제시키고 B에게 3BTC 주는것과 나에게 2BTC의 잔액을 주는 트랜잭션을 생성한다. 거래는 이러한 형식으로 진행된다. 여기서 각 박스를 하나의 txout, 미사용객체라고 보면 된다. 객체 하나당 단위 하나가 되고, A 는 5 BTC 단위 ..

제네시스 블록 : 최초의 블록 , 블록체인은 모든 블록이 연결되어 있기 때문에 최초의 블록 생성은 블록체인 네트워크가 시작되었다와 같다. 최초에 GENESIS block이 생성되고 const GENESIS: IBlock = { version: VERSION, //언제 생성된건지 확인을 위한것 height: 1, timestamp: 1231006506, previousHash: "0".repeat(64), // 이전블럭 merkleRoot: "DC24B19FB1234511ACD8AD17F401753670CFD8DD1BEBEF9C875125E98D82E3D8", //transaction 들이 모인 hash값 string이긴 하지만 hash값이 될 것. nonce: 0, // POW 작업증명을 할 때 필요한 ..