[TIL] 2023-06-09

Melon Coder·2023년 6월 10일
0

TIL

목록 보기
45/50
post-thumbnail

Today I Learned


[Web3.js]

오늘은 Web3.js 라이브러리를 통해 node 환경에서 블록체인 네트워크에 접근하고 트랜잭션을 일으키는 작업과 특정 컨트랙트 주소와 abi로 특정 컨트랙트를 이용하는 방법을 해보았다.


Web3.js

  1. 먼저 web3.js를 설치할 폴더에 npm init을 해주고 package.json 파일이 생성된 것을 확인했으면 npm install web3로 web3.js 라이브러리를 설치해준다.

  2. 그리고 터미널에서 node를 입력해 node 환경으로 이동한다.

  • const {Web3} = require('web3')
  • const web3 = new Web3('INFURA_API_KEY') : infura api key로 접근
  • web3 : web3.js에서 할 수 있는 기능들 나열
  • web3.provider : 'INFURA_API_KEY'
  • web3.eth.getBlobkNumber() : 해당 네트워크에서 가장 마지막에 생성된 블록 넘버
  • web3.eth.getBlock(10000) : 10000번째 블록의 정보
  • web3.eth.getBalance('지갑주소'): 지갑주소의 현재 잔액
  • web3.eth.getTransaction('tx hash'): 해당 트랜잭션의 정보
  • web3.eth.accounts.create(): 지갑 주소 생성

transaction request (goerli testnet으로 변경) 가스비때문

  • const privateKey = '0x개인키': 개인키 선언
  • const account = web3.eth.accounts.privateKeyToAccount(prviateKey): 선언했던 개인키에 해당하는 지갑 주소
  • account: 지갑 주소 정보
  • web3.eth.accounts.wallet.add(account): 해당 환경에 지갑 정보 추가
  • var account2 = '돈을 받을 지갑 주소'
  • web3.eth.sendTransaction({from: account.address, to: account2, gas: "21000", value: "10000000000000000"}): value만큼 돈을 account2에 보내고 account.address로 부터 돈이 빠져나간다(가스한도 21000) => 그러나 에러뜸!!(web3.eth.defaultAccount를 설정해주어야함)
  • web3.eth.defaultAccount = account.address : 기본 지갑 설정

특정 contract 이용하기

  • let abi = 'CONTRACT ABI' : abi를 넣은 변수 선언
  • let c_address = 'CONTRACT ADDRESS': contract address 넣은 변수 선언
  • let contract = new web3.eth.Contract(abi, c_address): abi와 CA를 넣고 컨트랙트 변수 선언
  • contract.methods

0개의 댓글