成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

庫對比:Web3.js 與 Ethers.js

區(qū)塊鏈
自 1995 年 Brendan Eich 發(fā)明 JavaScript 以來,它已發(fā)展成為互聯(lián)網(wǎng)上最常用的編程語言,用于構(gòu)建當今使用的許多工具。據(jù)Statista[1]稱,軟件開發(fā)人員中最常用的語言是 JavaScript。

每一個可編程的區(qū)塊鏈都有一套SDK或庫,幫助連接并與特定的區(qū)塊鏈通信。今天的大多數(shù)區(qū)塊鏈都依賴于以太坊網(wǎng)絡(luò),使其與EVM兼容。如果創(chuàng)建了ETH庫,就有可能在任何與EVM兼容的區(qū)塊鏈上使用它。然而,通信是可以使用JSON-RPC協(xié)議的。

在這篇文章中,我們將對兩個流行的ETH庫進行比較。你可以了解到他們之間的差異,他們的優(yōu)點和缺點。這篇文章也可以幫助你決定在未來的項目中使用什么庫。

用于區(qū)塊鏈的 JavaScript

自 1995 年 Brendan Eich 發(fā)明 JavaScript 以來,它已發(fā)展成為互聯(lián)網(wǎng)上最常用的編程語言,用于構(gòu)建當今使用的許多工具。據(jù)Statista[1]稱,軟件開發(fā)人員中最常用的語言是 JavaScript。

想象一下你需要解決一個特定的問題;你知道的唯一語言是 JavaScript。應(yīng)該可以使用 JavaScript 來解決這個問題,而不是學習一門新的高級語言來解決問題。許多開發(fā)人員都面臨著這個障礙,并找到了通過構(gòu)建可以通過節(jié)點提供商連接到區(qū)塊鏈的 SDK/庫來使用 JavaScript 構(gòu)建 dApp 的方法。

然而,這種變通降低了在區(qū)塊鏈空間中構(gòu)建的入門級別。您無需學習 Rust 和 Solidity 等高級語言即可為Solana[2]或以太坊鏈構(gòu)建dApp[3]。

此外,降低區(qū)塊鏈開發(fā)的入門水平是JavaScript的眾多好處之一。

什么是庫

在編寫 dApp 時,您可能會發(fā)現(xiàn)需要為區(qū)塊鏈上的特定交易重復(fù)的特定代碼。此代碼/程序可能很長,您必須為新項目繼續(xù)編寫此代碼。無需重復(fù)此程序,您可以使用代碼片段自動執(zhí)行該過程。您可以在需要時隨時將此庫插入到您的項目中。這種方法可以加快開發(fā)速度并消除重復(fù)。

JavaScript 模塊

Javascript 模塊是包含 JavaScript 函數(shù)或代碼簇的典型文件。您可以將它們提取到不同的文件中,而不是讓函數(shù)遍布您的代碼。創(chuàng)建模塊使更改變得非常容易,因為您不必開始查看大型代碼庫來查找特定函數(shù)來更新變量或模式。

由于Javascript本身不支持類,所以JavaScript模塊模仿了類。類幫助開發(fā)人員在單個對象中將方法和字段設(shè)為公共和私有。通過這種模式,我們可以使用 export 和 import 關(guān)鍵字在我們的 JavaScript 項目中創(chuàng)建和使用函數(shù)。請參見下面的示例:

export function myFunction(value1, value2) {
return value1 * value2;
}

從上面的代碼中,我們已經(jīng)將這個函數(shù)公開。為了使用這個函數(shù),我們可以使用如下所示的 import 關(guān)鍵字:

import myFunction from "./value.js"

現(xiàn)在我們了解了 JavaScript 模塊。讓我們在下一節(jié)中討論 ethers.js 庫。

Ethers.js

自 Ethers.js 誕生以來,它經(jīng)歷了穩(wěn)定的增長,甚至成為以太坊開發(fā)人員中最常用的基于 JavaScript 的 web3 庫之一。

該工具可幫助 Javascript 開發(fā)人員與以太坊鏈和任何以太坊虛擬機 (EVM) 兼容的區(qū)塊鏈進行交互。

一位名叫 Richard Moore 的加拿大軟件工程師在 2015 年創(chuàng)建了 ethers.js 作為 web3.js 的替代品。

Ethers.js 以輕量級著稱。它的不同之處在于它管理密鑰和與區(qū)塊鏈交互的方式。在 ethers.js 中,有兩個實體處理上述問題:

  1. 1. 使用私鑰簽署交易的錢包。
  2. 2. 使用 JSON-RPC URL 連接到區(qū)塊鏈的提供程序。Ethers.js 檢查狀態(tài)并發(fā)送交易。

Ethers.js 的優(yōu)勢

  • 庫大小 - Ethers.js 壓縮后為 88KB,未壓縮時為 284KB。
  • ENS - ENS 就像區(qū)塊鏈中的 DNS。無論在哪里使用以太坊地址,也可以在那里使用 .eth 地址。您無需樣板代碼即可輕松設(shè)置域名。
  • 測試 - ethers.js經(jīng)過廣泛測試。其中許多測試用例都是由 Richard Moore 親自編寫的。有超過 10,000 個測試用例。
  • 許可 - 由于 ethers.js 是在 MIT 許可下發(fā)布的,任何人都可以免費使用和修改它。盡管如此,只要修改的源代碼在 LGPL-3.0 許可下可用,就可以更改庫。
*  **Performance** - Considering the small size, it will be a good idea to use it on the front end as it will drastically improve performance.


## Drawbacks of Ether.js

* Ethers.js is relatively new. Having bugs in your code is unavoidable, so finding answers in places like StackOverflow might not be enough.

* Many foundational companies actively use web3.js for their core projects, and if you need to work for such companies, you might need to spend some more time learning web3.js.

Ethers.js 模塊

在最近的部分中,在我們討論 Ethers.js 之前,我們查看了 JavaScript 模塊,ethers.js 有四 (4) 個模塊,它們是 ethers.js API 的核心。

Ethers.Provider

要了解Ethers.Provider模塊的作用,必須了解什么是節(jié)點。

要訪問區(qū)塊鏈網(wǎng)絡(luò),您需要在您的機器上運行一個節(jié)點來訪問它。該節(jié)點連接到其他節(jié)點以檢查人與人之間的交易是否有效,同時它存儲有關(guān)區(qū)塊鏈狀態(tài)的信息。

區(qū)塊鏈完全由節(jié)點構(gòu)建或組成。這些節(jié)點由世界各地的個人運行。這意味著沒有中央服務(wù)器或單一的事實來源。這就是它去中心化的原因。將節(jié)點想象成汽車的汽油,如果它是空的,它就不會啟動。

節(jié)點的建立可能是一個痛苦的過程,它可能需要一個星期或更長時間。幸運的是,存在 Alchemy、infura 和 Quicknode 等提供商。他們?yōu)槟O(shè)置了節(jié)點。他們所需要的只是讓您建立連接,并且您可以訪問區(qū)塊鏈。

Ethers.Contract

該模塊用于部署智能合約并與之交互。它提供了監(jiān)聽智能合約事件的能力(打包函數(shù))。但是,您可以使用該模塊來調(diào)用有關(guān)智能合約的信息以及智能合約提供的功能。

Ethers.utils

該模塊可以幫助您格式化錢包余額等數(shù)據(jù)并處理其他用戶輸入。

const accountChangedHandler = async (newAccount) => {
const address = await newAccount.getAddress();
setDefaultAccount(address);
const balance = await newAccount.getBalance()
setUserBalance(ethers.utils.formatEther(balance));
await getuserBalance(address)
}

從上面的代碼中,在從錢包中獲取地址后,我們檢索錢包的余額,但由于返回值以 Wei 格式輸出,我們使用 .formatEther 使其更易于閱讀。

Ethers.Wallet

該模塊允許您連接到現(xiàn)有地址。但是,您可以無縫地簽署和創(chuàng)建新錢包。

Web3.js

Web3.js 也是一種流行的基于 JavaScript 的庫,可將客戶端連接到區(qū)塊鏈。該庫使用 HTTP、IPC 或 Websockets 運行本地或遠程以太坊節(jié)點并與之交互。

Web3.js 于 2015 年發(fā)布,它是一個由以太坊基金會自行創(chuàng)建的開源庫。這意味著 web3.js 擁有最大的社區(qū),這與一年后發(fā)布的 Ethers.js 不同。web3.js 庫是比任何其他庫都多的項目和包的一部分。

然而,Web3.js 不像 Ethers.js 那樣管理密鑰。錢包和提供商沒有分開,而是假設(shè)本地節(jié)點連接到處理密鑰存儲、交易簽名和檢查區(qū)塊鏈狀態(tài)的應(yīng)用程序。

web3.js 的優(yōu)勢

支持Ethereum基金會

Web3.js 由以太坊基金會開發(fā)。這意味著它有許多開發(fā)人員為它做出貢獻,而且當問題出現(xiàn)時你肯定比它的對應(yīng)物 Ethers.js 更快地找到解決方案是最理想的

受歡迎

我們可以用 GitHub star 的數(shù)量來衡量它在區(qū)塊鏈開發(fā)者中的受歡迎程度。根據(jù) Github,web3.js 擁有超過一萬七千 (17,000) 顆星,而 ethers.js 擁有七千 (7000) 顆星。它的流行很大程度上是因為先行者的影響,這使它擁有更大的社區(qū)。

Web3.js 的缺點

大小

Web3.js 比 Ethers.js 相對更大,這使得在前端使用它是不可取的,因為它會降低 dApps 的性能。

靈活性

由于 ethers.js 通過關(guān)注點分離處理密鑰的方式,允許開發(fā)人員以不同方式處理密鑰的存儲和管理,因此 web3.js 在這方面存在不足。

許可證

Web3.js 在更嚴格的許可下工作,如果不公開發(fā)布則不允許修改。

Web3.js 模塊

Web3.eth:-該模塊用于連接以太坊區(qū)塊鏈和智能合約。它還允許您訂閱區(qū)塊鏈上的事件。

Web3.net:-此模塊允許您與網(wǎng)絡(luò)節(jié)點屬性進行交互。

Web3.shh:-該模塊允許與 Whisper(一種 dApp 用于相互通信的通信技術(shù))協(xié)議進行通信。

Web3.utils:-該模塊為以太坊 dApp 和其他 web3 包提供實用功能。

Web3.bzz:-此模塊允許您與Swarm 網(wǎng)絡(luò)進行交互[4]

Web3.js 和 Ethers.js 的比較

在本次會議中,我們將使用以下標準比較這兩個庫:

  • 開發(fā)者體驗
  • 人氣
  • 文檔
  • 易用性
  • 性能
  • 維護

開發(fā)者體驗

這兩個庫都可以用幾行代碼創(chuàng)建真正強大的區(qū)塊鏈應(yīng)用程序,但 ethers.js 被認為更干凈,因為提供者和錢包之間的關(guān)注點分離。

然而,許多基金會項目使用 web3.js。這種情況使得大多數(shù)可用的教程都是用 web3.js 編寫的,這為新開發(fā)人員提供了一個非常容易學習的曲線。與 Ethers.js 相比,有更多的資源和解決各種問題的方法。

人氣

GitHub

GitHub 上的一個熱門項目,如你所想是真實的。

Web3.js 作為最流行的以太坊 JavaScript 庫位居榜首,在 GitHub 上有超過 16000 個啟動,但在我看來,GitHub stars 只能證明先發(fā)優(yōu)勢。

另一方面,ethers.js 在 GitHub 上擁有超過 6k 星。

NPM 下載量

NPM 下載顯示開發(fā)人員為他們的項目每周下載庫的次數(shù)。

Web3.js 每周下載量超過 265000 次,而 ethers.js 每周下載量超過 610 次。

此下載顯示從 web3.js 到 ethers.js 發(fā)生了變化或轉(zhuǎn)變。

文檔

這兩個庫都有相當詳盡的文檔。無論哪種方式,ethers.js 都比 web3.js 有優(yōu)勢,這要歸功于它的入門和游戲區(qū)域。

使用的便利性

Web3 將錢包和供應(yīng)商的處理變成一個單一的對象,但它的以太坊使讀取區(qū)塊鏈、修改其狀態(tài)和管理密鑰成為所有單獨的操作。

性能表現(xiàn)

在性能方面,Ethers.js 是一個更好的庫。由于其緊湊的尺寸,它適合在前端應(yīng)用程序上使用。以太是 248 kB 未壓縮和 77 kB 壓縮。

維護

Web3.js 由以太坊基金會維護,但在 2020 年秋季獲得了 ChainSafe 的資助[5],用于使用現(xiàn)代 Typescript 重寫 web3.js。

隨著這一發(fā)展,Chainsafe 致力于帶來改變,以緩解使用 Web3.js 的痛點。

根據(jù) Chainsafe 的說法,他們計劃修復(fù)的領(lǐng)域是:

  • 高效地過渡到 Typescript。
  • 完全擁有 Typescript 中的整個庫。
  • 創(chuàng)建靈活統(tǒng)一的庫版本。
  • 支持 eth2 的各種功能。

總之,Chainsafe 似乎致力于做好維護 web3.js 的工作。

然而,ethers.js 由一位加拿大軟件工程師 Richard Moore 維護。在 GitHub 上,只列出了 15 名貢獻者。

下一步是什么

使用這些庫時要自己判斷哪一個最適合您的要求。互聯(lián)網(wǎng)上有很多教程可以幫助您盡快入門。

結(jié)論

Web3.js 和 Ethers.js 都有強大的生態(tài)系統(tǒng),可用于創(chuàng)建極快的 dApp。

令人驚奇的是,在我對這篇文章的研究過程中,這些庫已經(jīng)擴展了多少并且仍在使用。我希望這能讓您有所了解,并讓您更清楚地選擇適合工作的工具。

資源

ethers.js[6]

Web3.js[7]

原文:[Godwin Alexander Ekainu] https://flutterpage.hashnode.dev/comparison-of-libraries-web3js-vs-ethersjs

責任編輯:武曉燕 來源: 李留白
相關(guān)推薦

2019-08-29 10:58:02

Web 開發(fā)框架

2025-01-17 09:29:42

2019-02-21 10:38:10

Web 開發(fā)代碼

2016-11-14 15:51:42

JavaScriptAngular.jsReact.js

2022-04-04 16:53:56

Vue.js設(shè)計框架

2019-03-21 08:28:23

框架AngularVue

2015-07-28 10:43:38

js\height\

2013-07-12 13:34:44

JSWeb開發(fā)

2025-03-28 08:20:00

惡意軟件網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2025-03-27 03:30:00

Web框架組件

2017-09-27 16:44:23

前端

2019-12-26 16:21:59

ReactJSAngularJSVue.js

2021-10-03 23:11:55

Node.jsWeb框架

2012-03-07 14:32:41

Node.js

2023-09-26 15:22:02

2013-09-10 14:01:40

WebEmber.jsAngular.js

2016-11-03 13:46:08

javascript測試工具

2012-12-24 14:40:54

iosjs

2015-08-17 09:46:15

UIjs

2015-08-05 09:37:34

PHPNode.js 對比挑戰(zhàn)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: www亚洲成人 | 亚洲精品视频导航 | 欧美国产日韩一区 | 久久五月婷 | 精品久久精品 | 天天干夜夜操 | 亚洲福利视频网 | 日韩国产在线观看 | 精品国产乱码久久久久久牛牛 | 欧美偷偷 | 成人小视频在线观看 | h视频网站在线观看 | 亚洲成人av在线播放 | 亚洲网址在线观看 | 久久国产精品72免费观看 | 成人精品视频99在线观看免费 | 国产成人精品一区二 | 欧美国产免费 | av一区二区在线观看 | 欧美激情亚洲 | 亚洲永久免费 | 欧美 日韩 亚洲91麻豆精品 | 黄色毛片在线看 | 久久久久久高潮国产精品视 | 亚洲综合在线视频 | 天天精品综合 | 欧美一区二区三区的 | 欧美一区2区三区4区公司 | 四虎永久影院 | 看亚洲a级一级毛片 | 亚洲精品美女在线观看 | 免费一看一级毛片 | 国产在线不卡 | 国产福利在线播放 | 亚洲午夜精品一区二区三区 | 亚洲三级视频 | 日韩精品久久久久 | 精品九九九 | 国产精品视频久久久 | 中文字幕在线播放第一页 | 日韩色在线 |