블록체인 & Web3 7

[Ethereum] web3.js의 사용

web3.eth(web3-eth package) - 이더리움 블록체인과 스마트 컨트랙트와 상호작용할 수 있다. web3.shh(web3-shh package) - broadcast를 위한 whisper 프로토콜과 상호작용할 수 있다. web3.bzz(web3-bzz package) - swarm과 상호작용하면서 파일 저장을 탈중앙화할 수 있도록 한다. web3.utils(web3-utils package) - Dapp 개발자에게 도움되는 함수를 포함하고 있다. 1. web3 provider web3 provider는 스마트 컨트랙트의 내용을 호출하거나 입력하기위해 어떤 노드와 통신해야 하는지 설정해 줘야 한다. http에서 동작하는 node를 연결하기 위해 httpProvider를 사용해 web3 객체를..

[web3.js] For Beginner(CryptoZombies)

web3.js 때문에 머리아픈지 꽤 오랜 시간이 지났는데도 web3.js는 여전히 나를 당황시킨다. 알꺼 같으면서도 모르겠고 알았던 것도 모르겠고 모르겠던건 더 모르겠고 울고 싶을 때가 한두번이 아니다!!!!!!(유리멘탈...) 도움이 될만한 인강이나 유튜브 영상 또는 도서를 찾아봤지만 내가 무능력한건지 이것도 찾다가 지침... ㅋㅋ 그러다가 우연치 않게 접하게 된 CryptoZombies. https://cryptozombies.io/ko/course #1 Solidity Tutorial & Ethereum Blockchain Programming Course | CryptoZombies CryptoZombies is The Most Popular, Interactive Solidity Tutorial..

스마트 컨트랙트(Smart Contract)의 작동 원리

스마트 컨트랙트란? 서면으로 이루어진 계약을 코드로 구현하고 특정 조건(합의한 내용 및 조건)이 충족되었을 때 해당 계약이 자동으로 이행(self-execution)되게 하는 스크립트(전자 계약서)를 말한다. 이 때, 조건이 충족될 경우, 계약 내용을 스마트 컨트랙트 소스 코드로 작성하여 블록체인 네트워크에 전송하면 네트워크 참여자(노드)들의 유효성 검증이 이뤄지며, 검증 완료 시 스마트 컨트랙트가 포함된 블록이 생성되며 배포된다. 조건이 충족되지 않을 경우, 계약은 실행되지 않는다. 이더리움에서 스마트 컨트랙트를 만들기 위해서는 기존에 사용하던 프로그래밍 언어가 아닌 Solidity, Vyper와 같은 스마트 컨트랙트를 만드는 전용 언어로 논리적인 계약의 작동을 정의해야 한다. 작성된 코드는 컴파일러를..

[이더리움] Account, Transaction, Message, Smart Contract

이더리움 구성요소 Peer-to-Peer 네트워크(P2P network) - 이더리움은 TCP 포트 3030으로 접속 가능한 이더리움 메인 네트워크(Ethereum man network)에서 실행된다. 합의 규칙(Consensus rules) - 이더리움의 합의 규칙은 기준 사양인 황서(Yellow paper)에 정의되어 있다. 트랜잭션(Transaction) - 이더리움 트랜잭션은 보낸 사람, 받는 사람, 값 및 데이터 페이로드가 포함된 네트워크 메시지이다. 상태 머신(State Machine) - 이더리움 상태 전이는 바이트코드(기계명령어)를 실행하는 스택 기반 가상 머신인 EVM(이더리움 가상 머신)에 의해 처리된다. 데이터 구조(Data Structure) - 이더리움의 상태는 트랜잭션 및 시스템..

ABI

ABI(Application Binary Interface) ABI는 컨트랙트 함수와 매개변수들을 JSON 형식으로 나타낸 리스트이다. 다음은 ERC20 Interface의 BalanceOf 함수 ABI이다. { "constant": true, "inputs": [ { "internalType": "address", "name": "tokenOwner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, 함수 ..

Defi 용어 정리

디파이(De-fi) 탈중앙화 금융(Decentralized-Finance)를 일컫는다. 중앙화된 금융시스템을 탈피하는 것을 목적으로 만들어졌다. 덱스(DEX) 탈중앙화거래소(Decentralized-Exchange)의 준말. 디파이에서 거래하는 기능을 말한다. 요즘엔 디파이와 덱스를 같은 뜻으로 혼용해서 쓰기도 한다. 반대말은 CEX(중앙화 거래소) 스마트 컨트랙트 사전에 협의된 내용으로 미리 프로그래밍 하여 전자 계약서 문서 안에 넣어두고, 계약 조건이 모두 충족되면 자동으로 계약 내용이 실행되도록 하는 시스템이다. 가스(Gas) 네트워크에서 거래를 실행하는데 필요한 수수료의 단위. 가스 가격은 gwei로 표시된다. 이더리움에서 1 gwei는 0.000000001 이더이다. 이더리움은 거래가 많아지면서..

[web3-react] MetaMask로 지갑 연동하기

우선 react로 설치한 뒤 아래의 순서에 맞춰 지갑을 연동해보았다. 만약 아래와 같이 진행했지만 뭔가 정상적이지 않다면 오타의 가능성이나 버전을 먼저 확인해보길 바란다. 멀고도 험한.. 블록체인의 길.. 걸음마부터 출발! 설치 npm i @web3-react/core @ethersproject/providers 설정 설치한 @web3-react/core에서 제공하는 Web3ReactProvider를 App root의 provider로 제공하고 web3 객체를 인스턴스화 하는 getLibrary 함수를 정의하여 props로 전달한다. src/index.js import React, { StrictMode } from 'react'; import ReactDOM from 'react-dom/client';..