web3.js vs ethers.js

4e5ung·2022년 4월 29일
0

web3.js

javascript 라이브러리로 JSON-RPC 프로토콜을 통해 Ethereum 노드와 통신하는 기능을 포함하며,
Ethereum Foundation에서 구축.

web3.js 5가지 모듈 형태

web3.eth

이더리움 블록체인과 상호 작용하기 위한 것
스마트 계약, 외부 소유 계정 채굴 된 블록 및 트랜잭션과 상호 작용.
ex:) web3.eth.getBalnce, web3.eth.signTransaction 등..

web3.shh

Whisper 프로토콜과 상호 작용하기 위한 것.
메시지를 쉽게 브로드 캐스트하고 저수준 비동기 통신
ex:) web3.shh.post_post, web3.shh.subscribe

web3.bzz

Swarm과 상호 작용하기 위한 것.
탈중앙화 애플리케이션을 위해 사진이나 동영상과 같은 파일을 저장하는데 사용.
ex:) web3.bzz.upload

web3.net

이더리움 노드의 네트워크 속성과 상호 작용하기 위한 것.
web3.net을 통해 획득 해야 하는 정보와 관련된 프로토콜을 사용하고 .net 을 사용하여 검색 가능.(web3.eth.net, web3.shh.net .. )
ex:) web3.net.getID, web3.net.getPeerCount

web3.utils

이더리움 분산 애플리케이션 및 web3.js에서 사용 할 수 있는 유틸리티 기능을 제공
ex:) web3.utils.toWei, web3.utils.isAddress

ethers.js

개발자가 이더리움 네트워크와 통신하고 상호 작용 할 수 있게 해 주는 이더리움 Javascript 라이브러리.
web3.js에 비해 많은 옵션 및 편리하게 사용 할 수 있도록 만들어짐.

ethres.js 4가지 모듈 형태

ethres.provider

이더리움 블록 체인과의 연결을 캡슐화.
쿼리를 발행하고 서명된 트랙잭션을 보내는데 사용.(블록체인의 상태 변경)
ex:) ethers.providers.InfuraProvider, ethers.provider.getBalance

etc: web3.js는 완전히 다른 방식으로 구성되어 있으므로 두 라이브러리의 기능은 매우 유사하지만 모듈간에 항상 명확한 일치가있는 것은 아님.

ethres.contract

스마트 계약을 배포하고 상호 작용 하는 것.
스마트 계약에서 발생하는 이벤트를 수신, 기능 호출, 정보 얻기, 배포하는 데 사용.
ex:) ethers.ContractFactory.fromSolidity

ethres.utils

데이터 형식화 및 사용자 입력 처리를 위한 유틸리티 함수를 제공.
web3.utils와 유사.
ex:) ethers.utils.getContractAddress

ethres.wallets

기존 지갑(이더리움 주소)과 연결을 설정하고, 새 지갑을 생성하고, 거래에 서명 할 수 있도록 함.
ex:) ethers.wallet.createRandom, ethers.wallet.getBalance

비교

제작사

  • web3.js : 이더리움 재단(비영리단체)의 프로젝트.
  • ethers.js : Richard "RicMoo" Moore가 개발하고 유지 관리.

인기 및 다운로드

web3.js가 먼저 생성되어서 자료들이 많지만 인기 성장 속도는 Ethers.js가 높음.

웹 성능

동일한 dApp에 대한 테스트 데이터가 충분하지 않음.
단, 데이터 양이 애플리케이션에 영향을 미치는 경우 데이터 양이 적은 ethers.js 가 유리.

라이브러리

라이센스

  • web3.js : LGLv3 License
  • ethers.js : MIT License

Ref

https://blog.infura.io/ethereum-javascript-libraries-web3-js-vs-ethers-js-part-i/
https://ko.0xzx.com/20201208139978.html

0개의 댓글