web3.js란? & 설치 및 사용법

HyeongA·2023년 6월 9일
0

Blockchain_dev

목록 보기
13/20
post-thumbnail

📝 web3.js란?

지금까지는 remix에서 solidity 코드를 작성하고 이더리움 체인에 스마트 컨트랙트를 배포했다.

하지만 remix가 없다면 어떻게 해야할까?
frontend와 스마트 컨트랙트를 연결하려면 어떻게 해야할까?

이때 사용하는 것이 바로 web3.js이다.

  • web3.js는 HTTP, ICP, WebSocket 방식을 이용해서 원격 혹은 로컬에 있는 이더리움 노드와 상호작용할 수 있게 도와주는 라이브러리
  • web3.js를 통해 데이터를 불러오거나 변화시킬 수 있음
  • 개발자 - ethereum, frontend - ethereum을 이어주는 심부름꾼

조금 더 쉽게 설명하면 다음과 같은 상황을 예시로 들 수 있다.

  1. frontend를 개발할 때, 유저가 특정 버튼을 누르면 컨트랙트의 함수가 실행되도록 연결을 해야한다. 어떻게 연결할 수 있을까?

  2. 이더리움의 정보가 필요하다. remix나 etherscan을 사용하지 않고, 직접 이더리움 체인에 접근할 수 있는 방법은 뭘까?

정답은 web3.js 사용!

이더리움 전체 정보에 접근하기 위해서 풀노드가 되거나, 풀노드에게 도움 요청하여야 한다. 후자일 경우, web3.js를 사용하기 위해서는 api key가 필요하다. node에게 접근할 수 있게 도와주는 key를 제공하는 곳으로는 Infura, Alchemy, Quicknode 등이 있다.

  • web3.js를 통해서 노드에 접근하여 컨트랙트의 함수를 사용할 수 있음
  • 노드와 소통하기 위해서 노드에게 접근하는 방법이 필요함
  • Infura, Alchemy, Quicknode 등에서 그 기능을 제공함

💻 기본 사용법

cmd(powershell)에서 실습할 파일로 경로 이동

  1. 기본 npm 설치
    : npm init (계속 엔터)
    : npm install web3
  2. node 환경으로 이동
    : node
  3. web3사용 설정
    : var {Web3} = require('web3')
    : var web3 = new Web3(사용할 provider(api키))
    ex ) var web3 = new Web3(https://cloudflare-eth.com)
  4. 함수 사용 ( 2가지 방법 )
    : web3.eth.getBlockNumber().then(console.log) ; 마지막 블록 번호받기
    : await web3.eth.getBlockNumber()

다양한 함수

// 다양한 기능 확인해보기
web3 
//특정 블록(ex 100000번째)의 정보를 가지고오기
web3.eth.getBlock(100000).then(console.log)
//잔고조회
web3.eth.getBalance('지갑주소').then(console.log)
//거래조회
web3.eth.getTransaction('거래 해시값').then(console.log)
//계좌만들기
web3.eth.accounts.create()
//개인키로 지갑주소 받아오기
web3.eth.accounts.privateKeyToAccount('0x1111111111111111111111111111111111111111111111111111111111111111')
//10000번째 블록에 담긴 거래 수
web3.eth.getBlockTransactionCount(10000).then(console.log)
//BLOCK NUMBER의 INDEX번째 거래 불러오기
web3.eth.getTransactionFromBlock('BLOCK NUMBER', 'INDEX').then(console.log)

Web3.js를 이용한 거래 생성 및 컨트랙트 사용법

profile
Solidity | React | Python

0개의 댓글