본문 바로가기
puppeth 명령어를 통한 genesis.json 생성하기 // genesis.json { "config": { "chainId": 7722, "homesteadBlock": 0, "eip150Block": 0, "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000", "eip155Block": 0, "eip158Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0, "ethash": {} }, "nonce": "0x0", "timestamp": "0x62bd7dc2", "extraData": "0x0000000000000000000000000000.. 2022. 7. 1.
이더리움3. web3 라이브러리 목차 web3란? 셋팅 클래스 및 인스턴스 주요 메서드를 이용한 기능 구현 테스트 1. Web3란? 이더리움 생태계를 구축하기 위한 함수들을 포함하고 있는 모듈들의 집합인 라이브러리 2. 셋팅 2-1. 프로젝트에 web3 추가하기 $ npm install web3 2-2. web3 인스턴스 생성 및 provider 셋팅 import Web3 from 'web3'; const web3: Web3 = new Web3(new Web3.providers.HttpProvider('http://127.0.0.1:8545')); 3. Web3 3-1. web3.js 라이브러리의 메인(umbrella) 클래스 Web3.utils Web3.version Web3.givenProvider Web3.providers Web.. 2022. 6. 28.
이더리움 생태계 목차 이더리움 이더리움 클라이언트 이더리움의 계정 EVM 개념 Web3 1. 이더리움 1-1. 이더리움이란? 이더리움은 스마트 컨트랙트(smart contract)를 실행시키는 탈중앙화된 플랫폼이다. 검열, 위조 또는 제 3자의 개입, 다운타임의 가능성 없이 정확히 프로그래밍한대로 코드가 실행되도록 하는 어플리케이션 1-2. 이더리움 적용의 예 Decentralized finance(DeFi) Non-fungible tokens(NFT) Decentralized autonomous organizations(DAOs) 1-3. 비트코인과 이더리움의 차이는? 대표적으로 EVM Transaction 내용 account(EOA/CA) 가 차이가 나며 그 차이의 이유는 스마트 컨트랙트 때문이다. 1-4. 이더리움.. 2022. 6. 27.
배열의 비교 예시 const arr1 = [1,2,3,4,5]; const arr2 = [2,4,6,8,10]; const arr3 = [1,2,3,4,5]; 1. stringify를 이용한 간단한 배열의 비교 아래와 같이 비교하려는 배열을 JSON.stringify()메서드를 통해 문자열로 변환한 뒤 비교할 수 있다. console.log(JSON.stringify(arr1) === JSON.stringify(arr2));//false console.log(JSON.stringify(arr1) === JSON.stringify(arr3));//true 2. 배열의 교집합 구하기 console.log(arr1.filter(v => arr2.includes(v)));//[2,4] console.log(arr1.filt.. 2022. 6. 25.
transaction 생성 Transaction 생성 및 UTXO를 업데이트하는 코드를 작성해보자 코드의 실행 순서는 다음과 같이 진행될 것이다 . 1. 코드 실행 순서 1) Wallet 서버에서 transaction 정보 전송 > axios.post('/sendTransaction') 2) BlockChain 서버의 /sendTransaction에서 sendTransaction() 메서드 실행 3) sendTransaction(\_receivedTx,unspentTxOuts) 3-1) 서명 검증: Wallet.getVerify() 3-2) 발신지갑 최신화 : const myWallet = new this() 3-3) 발신지갑의 잔액과 amount 비교 3-4) transaction 생성 4) 내 계정정보와 일치하는 UTXO 가져.. 2022. 6. 22.
fs(file system): 노드 내장모듈 목차 fs란? 메서드 구분 주로 사용되는 메서드 사용 예시 1. fs란? FileSystem의 약자로 파일 처리와 관련된 모듈 2. 메서드 구분 메서드명 중 Sync가 붙은 것은 동기적 처리, 붙지 않은 것은 비동기적 처리를 수행함 [options]에는 보통 인코딩하는 방식이 오게 되며 웹에서는 utf8을 주로 사용함 3. 주로 사용되는 메서드 3-1. writeFileSync() 메서드 undefined를 반환하는 파일 생성 메서드(Create) 1) 문법 fs.writeFileSync(file, data[, options]) 2) 매개변수 첫번째 매개변수: file | | | filename or file descriptor 두번째 매개변수: data | | | | 세번째 매개변수: options |.. 2022. 6. 20.
P2P 통신을 통해 노드 간 체인 주고받기[수정중] P2P 통신을 통해 노드 간 체인 주고받기 import { WebSocket } from 'ws'; //chain import { Chain } from '@core/blockchain/chain'; enum MessageType { latest_block = 0, all_block = 1, receivedChain = 2, } interface Message { type: MessageType; payload: any; } export class P2PServer extends Chain { private sockets: WebSocket[]; // public blockchain : Chain constructor() { super(); // this.blockchain = new Chain() th.. 2022. 6. 20.
채굴(mining) 목차 용어정리 대표적인 합의 알고리즘 채굴(mining) 구현 1. 용어 정리 노드 : 개개인의 서버. 블록체인 네트워크의 참여자들 지갑: 개인키/공개키를 관리하는 프로그램. 거래에 사용되는 주소/계정 생성 해시캐시 특정 조건을 충족하는 해시를 찾아내는 일련의 과정 해시값이 몇 개 이상의 0으로 시작하는 값을 찾는 작업 합의 알고리즘 분산원장 시스템 내의 모든 노드(node)가 일관성 있는 분산원장을 보유할 수 있도록 네트워크 연결을 통해 새로운 기록의 공유, 검증 및 추가에 대한 전체의 동의를 이끌어 내는 알고리즘 노드 간의 분산원장 동기화는 동시에 일어나지 않기 때문에 네트워크상에는 일시적으로 서로 다른 기록이 포함된 원장들이 존재할 수 있고 노드 중에는 신뢰할 수 없는 참여자가 포함될 수 있다고 가.. 2022. 6. 20.
P2P 통신으로 노드 간 블록 주고받기 목차 코드로 이해하기 텍스트로 이해하기 오늘은 P2P 통신으로 클라이언트에게 블록 보내기를 해볼 것이다. 이를 위해 필요한 선수지식은 웹소켓과 관련된 개념이다. 웹소켓에 대해서 잘 모른다면 아래의 블로그를 참고해보자 https://yellow-w.tistory.com/188 https://yellow-w.tistory.com/189 그럼 다시 본론으로 들어와서, 먼저 코드를 보면서 흐름을 이해해보도록 하자. 각각의 노드는 클라이언트와 서버측의 코드를 모두 실행한다. 즉, 아래의 코드를 실행시킴으로써 체인에 대한 정보를 공유하고 동기화하는 것이라 보면 이해가 쉬울 것이다. 1. 코드로 읽는 흐름 import { WebSocket } from 'ws'; import { Chain } from '@core/b.. 2022. 6. 14.