Web3.js와 Ethers.js : Web3 라이브러리 비교

게시 됨: 2023-05-21

암호화폐 및 블록체인 개발자는 프로그래밍 가능한 수많은 블록체인 네트워크의 가치 이점을 활용할 수 있습니다. 분산 응용 프로그램을 개발하기 위해 스마트 계약 프로그래밍 기능을 활성화하기 위해 가장 널리 사용되는 플랫폼 중 하나는 이더리움입니다. web3 개발에 대한 수요가 계속 증가함에 따라 개발자들은 web3.js 대 Ethers.js와 같은 문제에 대해 점점 더 논쟁을 벌였습니다. 분산형 애플리케이션을 배포하는 데 도움이 될 수 있는 JavaScript 라이브러리를 찾는 것이 그 어느 때보다 중요합니다. web3 애플리케이션은 여러 블록체인에 걸쳐 배포되어야 하므로 최상의 JavaScript 라이브러리를 선택해야 합니다. 다음 토론에서는 "web3.js와 ethers.js 중 어느 것이 더 낫습니까?"를 결정하는 데 도움이 되는 각 라이브러리에 대한 철저한 검토를 제공합니다.

또한 두 라이브러리를 나란히 비교하면 요구 사항에 가장 적합한 결정을 내리는 데 도움이 될 수 있습니다.

프로그래밍 가능한 모든 블록체인에는 특정 블록체인에 쉽게 연결하고 상호 작용할 수 있도록 하는 라이브러리 또는 SDK 모음이 있습니다. 오늘날 사용되는 대부분의 블록체인은 Ethereum 네트워크에 의존하기 때문에 EVM과 호환됩니다. 이는 ETH 라이브러리가 개발되면 EVM을 준수하는 모든 블록체인에 적용될 수 있음을 의미합니다. 그러나 JSON-RPC 프로토콜은 통신을 허용합니다. 이 에세이에서는 두 개의 잘 알려진 ETH 라이브러리를 비교할 것입니다.

다음은 Web3.js와 Ethers.js를 테이블 형식으로 비교한 것입니다.

매개변수 Web3.js Ethers.js
개발자 이더리움 재단 Ethers.io (타사 조직)
기능 포괄적인 이더리움 상호 작용 Ethereum 1.0 초점(실험적인 Ethereum 2.0 지원 포함)
프로토콜 지원 이더리움 1.0과 이더리움 2.0 주로 Ethereum 1.0(실험적인 Ethereum 2.0 지원 포함)
지역 사회 더 큰 커뮤니티 소규모 커뮤니티
선적 서류 비치 광범위한 성장
프런트엔드/백엔드 프런트엔드 및 백엔드 개발 모두 프론트엔드 개발에 주로 적합
API 광범위하고 기능이 풍부한 개발자 친화적이고 직관적
보안 기준 보안 및 유형 안전성 강조

Web3.js에서는 일반적으로 스마트 계약과 상호 작용하기 위해 계약의 ABI(Application Binary Interface) 및 계약 주소를 사용하여 계약의 인스턴스를 생성해야 합니다. 그런 다음 생성된 인스턴스를 사용하여 계약 메서드를 호출할 수 있습니다. 예를 들면 다음과 같습니다.

 // Web3.js const contractInstance = new web3.eth.Contract(abi, contractAddress); contractInstance.methods.myMethod().call() .then(result => { console.log(result); }) .catch(error => { console.error(error); });

반면 Ethers.js는 보다 직관적이고 간결한 구문을 사용하여 계약 상호 작용을 단순화합니다. 인스턴스를 생성하지 않고 계약과 직접 상호 작용할 수 있습니다.

 // Ethers.js const contract = new ethers.Contract(contractAddress, abi, provider); contract.myMethod() .then(result => { console.log(result); }) .catch(error => { console.error(error); });

Ethers.js는 계약 메서드를 직접 호출하기 위한 더 간단한 구문을 제공하여 계약 상호 작용에 대해 보다 간소화되고 개발자 친화적인 접근 방식을 제공합니다.

Web3.js에 관한 모든 것

web3.js와 ethers.js의 차이점에 대해 알아보기 전에 각 라이브러리에 대한 개요부터 시작하겠습니다. 원래 web3 프레임워크인 Web3.js는 web3.js와 ethers.js를 비교하는 첫 번째 도전자가 될 것입니다. Ethereum Foundation이 제공한 초기 Ethereum JavaScript API였습니다. 현재 Chainsafe는 Ethereum Foundation을 대신하여 web3.js 라이브러리를 적극적으로 개발하고 있습니다. 2015년에는 이더리움 자바스크립트 프레임워크로 널리 알려진 Web3.js가 등장했습니다.

상대적으로 web3.js는 더 나아가 수많은 프로젝트와 패키지에 통합되었습니다. 반면에 Web3.js는 로컬 블록체인 노드와 애플리케이션 간의 연결을 전제로 합니다. 로컬 노드는 키 저장, 트랜잭션 서명, 연결된 블록체인의 현재 상태 읽기 등 다양한 기능을 지원하는 것으로 생각됩니다.

Web3.js의 장점과 단점

Web3.js는 web3 개발자를 위한 초기 JavaScript 라이브러리 중 하나입니다. web3.js와 ethers.js를 유용하게 비교하려면 web3.js의 장점과 단점을 모두 이해해야 합니다. web3 라이브러리를 비교하면 web3.js는 창립 팀과 널리 사용되는 두 가지 중요한 이점이 있습니다. 광범위한 기여자 네트워크로 디자인의 효율성을 보장하는 Ethereum Foundation은 Web3.js를 제작했습니다. 그러나 블록체인 애플리케이션을 만드는 데 가장 널리 사용되는 JavaScript 라이브러리 중 하나로 부상했습니다. 2017년 이전에 사용 가능한 유일한 web3 JavaScript 라이브러리는 web3.js였습니다. 그것은 많은 초기 web3 프로젝트에서 중요한 역할을 합니다.

ethers.js와 비교할 때 web3.js의 단점도 고려해야 합니다. 우선, web3.js를 많이 사용하는 새 프로젝트는 많지 않습니다. 라이브러리는 또한 변경 사항을 공개하지 않고 소스 코드를 변경하는 것을 금지하는 것과 같이 엄격한 제한이 있는 라이센스에 의존합니다. web3 사이트나 앱의 속도와 성능에 영향을 미칠 수 있는 web3.js의 크기는 아마도 가장 중요한 요소일 것입니다.

Ethers.js에 관한 모든 것

web3.js와 ethers.js를 비교할 때 ethers.js의 정의, 이점 및 단점도 논의해야 합니다. ethers.js의 제작자는 Typescript 및 JavaScript의 도구와 결합된 라이브러리가 Ethereum 지갑의 완전한 구현이라고 주장합니다. "web3.js와 ethers.js의 차이점은 무엇입니까?"라는 질문에 대한 답변입니다. ethers.js 라이브러리의 광범위한 사용을 나타냅니다. EVM을 지원하는 이더리움 및 기타 블록체인 네트워크를 처리하기 위한 다양한 기능이 포함되어 있습니다. 또한 Ethers.js를 사용하여 블록체인 네트워크의 상태를 읽고 변경할 수 있습니다.

Richard Moore라는 캐나다 소프트웨어 엔지니어는 2015년에 Ethers.js를 개발했습니다. web3.js에 대한 작고 유능한 대안을 제공하는 것이 ethers.js 개발의 주요 목표였습니다. 출시 이후 ethers.js는 Ethereum 및 EVM 개발자들 사이에서 급속한 인기를 얻었습니다. ethers.js의 블록체인 네트워크와의 키 관리 및 통신 효율성은 web3와 ethers.js의 주요 차이점 중 하나입니다. 개발자는 키를 관리하고 블록체인과 상호 작용하기 위해 두 개의 개별 조직을 사용할 수 있습니다. ethers.js에서는 개인 키를 사용하여 트랜잭션에 서명하기 위한 지갑을 가질 수 있으며 노드 공급자는 블록체인 네트워크 연결을 지원할 수 있습니다. 지갑과 노드 공급자의 관리는 서로 독립적일 수 있습니다.

Ethers.js의 장점과 함정

두 라이브러리 간의 차이점은 Ethers.js의 장점과 단점도 강조합니다. ethers.js의 장점과 단점에 대해 자세히 알아보면 "web3.js와 ethers.js 중 어느 것이 더 낫습니까?"라는 질문에 대한 답변을 조사할 수 있습니다. ethers.js의 첫 번째 이점은 무료 사용과 변경을 모두 허용하는 보다 관대한 라이센스를 사용할 수 있다는 것입니다. 그러나 소스 코드와 모든 조정 사항을 사용할 수 있도록 해야 합니다. 슬림 라이브러리 ethers.js는 ENS 도메인 이름 사용을 지원합니다. JavaScript 라이브러리는 거의 10,000개의 테스트 사례에 대한 존재 증명과 함께 광범위한 테스트 사례 지원을 제공합니다. web3.js의 단점과 비교할 때 ethers.js는 눈에 띄는 개선 사항을 보여주지만 많은 단점도 있습니다. 예를 들어 ethers.js는 비교적 새로운 라이브러리이지만 개발자는 기존 비즈니스나 프로젝트에 이를 사용하는 데 어려움을 겪습니다.

Web3.js와 Ethers.js를 비교해야 하는 이유는 무엇입니까?

web3 아이디어의 도입은 응용 프로그램을 만드는 기존 방법을 변경했습니다. 거의 모든 web3 웹사이트와 앱은 web3.js 또는 ethers.js와 같은 라이브러리를 사용합니다. 사용할 수 있는 web3 라이브러리를 선택하는 중요한 단계는 사용 가능한 라이브러리를 비교하는 것입니다. 도서관은 어떤 목적을 수행합니까? 개발자는 JSON-RPC 프로토콜을 사용하여 Ethereum 또는 기타 EVM 지원 블록체인과 통신할 수 있습니다. JavaScript 라이브러리는 분산 응용 프로그램에 다양한 핵심 기능을 도입하는 데 유용합니다. 몇 가지 예는 지갑 생성, 스마트 계약 배포, 블록체인 정보 요청 및 트랜잭션 서명입니다. 개발자는 관련 블록체인에 직접 API를 호출할 필요 없이 이러한 작업을 수행할 수 있습니다.

모든 web3 개발자는 web3.js와 ethers.js 간의 논의에 주목해야 합니다.

개발자는 web3 개발 프로젝트를 시작하기 전에 프로젝트에 가장 적합한 JavaScript 라이브러리를 선택하는 것에 대해 걱정할 것입니다. 각 라이브러리는 단일 기능 또는 밀접하게 관련된 여러 기능을 수행할 수 있는 압축되고 재사용 가능한 코드 모음을 제공합니다. 개발자는 애플리케이션에 라이브러리를 추가하고 라이브러리를 활용하여 처음부터 새 코드를 작성하는 대신 필요한 기능을 수행할 수 있습니다.

응용 프로그램을 설계하는 방법의 예로 집을 짓는 것을 고려하십시오. 집을 지은 후에는 가구로 인테리어 디자인을 향상시키는 것을 고려할 것입니다. 처음부터 가구를 만들려고 하시겠습니까? 가장 실용적인 선택은 매장에서 원하는 가정용 가구를 구입하는 것입니다. 도서관 역할을 하는 가구점에서 원하는 응용 프로그램 기능(집)에 액세스할 수 있습니다. 결과적으로 web3 프레임워크 간의 불일치는 최근 특히 개발자들로부터 상당한 관심을 끌었습니다. 각 라이브러리의 기능을 알면 web3 애플리케이션에 가장 적합한 것을 선택하는 데 도움이 됩니다.

주요 차이점: Web3.js와 Ethers.js

ethers.js 및 web3.js의 기초에 대한 철저한 설명은 두 가지 모두 개발자에게 어떤 이점이 있는지에 대한 좋은 아이디어를 제공합니다. web3.js와 ethers.js의 질문에 답하려면 다양한 기준에 따라 나란히 비교하는 것이 중요합니다. 다음은 web3.js와 ethers.js를 효과적으로 비교하는 데 도움이 되는 다양한 지표 목록입니다.

개발자

프로젝트나 기술 솔루션을 구현하기 전에 설립자의 신원이 가장 먼저 눈에 띕니다. 라이브러리의 신뢰성은 개발자의 배경에서 유추할 수 있습니다. 이더리움 재단은 다른 web3 프레임워크보다 유리한 web3.js를 설립했습니다. 개발자는 포괄적인 조직 또는 생태계가 라이브러리를 지원한다는 확신을 가지고 다양한 기능을 탐색할 수 있습니다. 대조적으로 Richard Moore는 web3.js를 대체하기 위해 ethers.js를 개발했습니다.

성능

성능은 "web3 JS와 ethers JS 중 어느 것이 더 나은가?"를 결정할 때 다음으로 중요한 고려 사항이 될 것입니다. web3.js에 비해 Ethers는 훨씬 더 가벼운 라이브러리로 더 나은 성능을 보장합니다. Ethers.js의 압축 버전은 77kb에 불과하지만 압축되지 않은 버전은 284kb입니다. web3.js 라이브러리는 동시에 많은 기가바이트의 공간을 차지할 수 있습니다. 그러나 작은 dApp의 경우 크기 요소가 성능에 영향을 미칩니다. 또한 동일한 앱에 대한 충분한 속도 테스트 데이터가 부족하기 때문에 web3.js보다 ethers.js를 사용하는 성능 이점에 의문이 제기됩니다.

유지

두 라이브러리 간의 또 다른 비교 포인트는 web3.js와 ethers.js 간의 유지 관리 차이점에 대한 평가입니다. Ethereum Foundation은 Web3.js를 명시적으로 지원하며 Chainsafe에는 활성 유지 관리 일정이 있습니다. Web3.js는 약 304명의 Github 기여자와 4명의 NPM 공동 작업자와 함께 web3.js에 상당한 이점을 제공합니다. 반면에 Ethers.js는 프리랜서 소프트웨어 엔지니어가 유지 관리합니다. 현재 NPM 공동 작업자는 한 명뿐이고 Github 기여자는 약 15명입니다. 그러나 web3.js와 ethers.js의 차이점은 리뷰와 개발자 의견을 고려하여 유지 관리 효율성을 결정하는 것입니다. 버그를 수정하고 새로운 기능을 추가하기 위해 web3.js 및 ethers.js 라이브러리를 정기적으로 업데이트합니다.

선적 서류 비치

web3.js와 ethers.js를 비교할 때 문서의 가용성은 라이브러리를 시작하는 것이 얼마나 간단한지를 결정하는 또 다른 핵심 요소입니다. 각 web3 JavaScript 패키지에서 제공하는 심층 문서의 도움으로 web3 개발 모험을 시작할 수 있습니다. 반면 ethers.js는 "시작하기" 가이드 및 "놀이터"를 포함한 추가 리소스를 제공합니다.

유용성

두 라이브러리를 대조하는 또 다른 중요한 측면은 사용 용이성입니다. 이는 ethers.js와 web3.js 모두에 해당됩니다. 지갑과 노드 공급자는 Web3.js에 의해 단일 개체로 결합되어 작동합니다. 반면 Ethers.js에는 지갑과 노드 공급자를 위한 두 개의 별도 엔터티가 있습니다. 결과적으로 ethers.js는 개인 키의 서명 및 유지와 블록체인 상태의 읽기 및 변경을 분리하는 데 필요한 유연성을 제공할 수 있습니다. 공급자와 지갑이 분리되어 있기 때문에 ethers.js는 더 나은 개발자 경험을 보장할 수 있습니다. Web3.js는 자습서, 지원 자료 및 web3 프로젝트를 통해 유연하게 학습할 수 있기 때문에 초보자에게 훌륭한 옵션입니다.

결론

본질적으로 Web3.js는 개발자가 이더리움 네트워크에 연결할 수 있도록 하는 라이브러리인 반면 Ethers.js는 분산 응용 프로그램을 만드는 데 도움이 되는 라이브러리입니다. 두 라이브러리 모두 이더리움 개발에 중요하며 각각 장단점이 있습니다. web3.js와 ethers.js 라이브러리의 차이점 요약은 둘의 중요성이 동일함을 보여줍니다.

필요에 따라 "web3 JS 또는 ethers JS 중 어느 것이 더 좋습니까?"라는 질문에 대한 답변이 바꿀 수있다. 예를 들어 초보자는 web3 JavaScript 라이브러리 활용의 기본 사항을 이해하기 위해 web3.js를 사용할 수 있습니다. 그러나 ethers.js는 라이브러리를 즉시 사용하기 위한 더 많은 실습 지침을 제공합니다. web3.js가 메가바이트 단위의 크기 때문에 복잡하듯이 ethers.js는 크기가 줄어들어 더 큰 성능을 보장합니다. 필요에 따라 web3 프로젝트에 대해 web3.js와 ethers.js 중에서 선택할 수 있습니다.