오늘은
Web3.js
라이브러리를 통해 node 환경에서 블록체인 네트워크에 접근하고 트랜잭션을 일으키는 작업과 특정 컨트랙트 주소와 abi로 특정 컨트랙트를 이용하는 방법을 해보았다.
먼저 web3.js를 설치할 폴더에 npm init
을 해주고 package.json
파일이 생성된 것을 확인했으면 npm install web3
로 web3.js 라이브러리를 설치해준다.
그리고 터미널에서 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()
: 지갑 주소 생성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
: 기본 지갑 설정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