ethers.js

심재원·2024년 1월 11일
0

ether.js?

web3.js와 마찬가지로 이더리움 노드와 소통하기 위한 수단

  • 차이점 : 더 직관적이고 간략함

3가지 주체

Provider : 이더리움 노드와 연락하여 정보를 읽고 가져오는 역할(Api 설정 부분)
Sender : 서명하고 거래를 일으키는 역할(지갑)
Contract : address와 abi로 설정되는 스마트컨트랙트

기본

-1 환경 구성

mkdir Folder_Name : 새로운 폴더 만들기
cd Folder_Name : 해당 폴더로 이동하기

-2 패키지 설정, API 설정

npm init : node package manager를 사용할 수 있는 환경 구성
npm install --save ethers : ethers라는 패키지를 설치하기

const {ethers} = require('ethers'); : package 가져오기
const provider_main = new ethers.InfuraProvider() : ethers에서는 키 없이도 가능
const provider_goerli = new ethers.InfuraProvider(network="goerli")

-3 기본_정보 받기

await provider_main.getBlockNumber() : Mainnet Block Number
await provider_goerli.getBlockNumber() : Testnet Block Number

await provider_goerli.getBalance('wallet_address') : 해당 지갑주소의 잔고 받기
await provider_goerli.getTransaction('transaction hash') : 거래 정보 받아오기

거래보내기

환경구성 -> 패키지 설정 -> 지갑불러오기 -> 지갑설정 -> 거래생성

-1 환경 구성

mkdir Folder_Name : 새로운 폴더 만들기
cd Folder_Name : 해당 폴더로 이동하기

-2 패키지 설정

npm init : node package manager를 사용할 수 있는 환경 구성
npm install --save ethers : ethers라는 패키지를 설치하기

-3 API 설정

const {ethers} = require('ethers'); : package 가져오기
const provider_goerli = new ethers.InfuraProvider(network="goerli", "api_key")

-4 지갑 불러오기

const privateKey = "개인키"
const signer : new ethers.Wallet(privateKey, provider)

-5 거래 생성

var tx = {to : account2, value : 1000000000000000}
var txReceipt = signer.sendTransaction(tx).then(console.log)

컨트랙트 이용하기

환경구성->패키지설정->지갑 불러오기->지갑설정->contract설정->거래생성

-1 환경 구성

mkdir Folder_Name : 새로운 폴더 만들기
cd Folder_Name : 해당 폴더로 이동하기

-2 패키지 설정

npm init : node package manager를 사용할 수 있는 환경 구성
npm install --save ethers : ethers라는 패키지를 설치하기

-3 API 설정

const {ethers} = require('ethers'); : package 가져오기
const provider_goerli = new ethers.InfuraProvider(network="goerli", "api_key")

-4 지갑 불러오기

const privateKey = "개인키"
const signer : new ethers.Wallet(privateKey, provider)

-5 컨트랙트 설정

var abi = /contract의 abi 넣기/
var c_address = 'contract address 넣기'

var contract = new ethers.Contract(c_address, abi, signer)

contract.interface.fragments : 스마트 컨트랙트 내 구현된 함수

-6 컨트랙트_거래생성

1
await contract.a()

var txSigner = contract.connect(signer)
await txSigner.setA(100)

2 더 간단해서 선호
await contract.a()

await contract.setA(123)
await contract.a()

0개의 댓글