Web3.js和ethers.js都是JavaScript庫,其作用是使開發者可以與以太坊區塊鏈交互。這兩個庫都很實用,都能滿足大多數以太坊開發者的需求。本文將重點圍繞web3.js和ethers.js的相同點和不同點來對它們進行比較,以便你能更好地理解它們的細微區別。本文的目的是幫助開發者理解兩個庫的優缺點,以便能夠決定哪個庫適合其具體用例。本文中提供了一些資源,可能對剛接觸區塊鏈開發的用戶有用。
一言以蔽之:兩個庫都有用,針對你的使用場景不同,總有一個庫更加適合你(編者注:登鏈社區對2個文案均有翻譯,web3.js中文文檔地址:https://learnblockchain.cn/docs/web3.js/),ethers.js中文文檔地址:https://learnblockchain.cn/docs/ethers.js/。
Web3.js擁有一個與以太坊基金會相關的用戶和維護者社區。它提供實用的API參考。從大約2015年開始,它在許多項目中被廣泛使用。因此,該庫已經成為許多“構建去中心化應用新手入門”教程的“必備資源”。
Ethers.js的優勢之處在于緊湊小巧,同時又包含大量測試案例。它提供實用的“新手入門”文檔,因此新用戶也可使用。許多開發者評價ethers.js使用起來“簡單”、“直觀”,并且該庫在近兩年越來越受歡迎,下載量和在項目中的使用量也不斷增加。
什么是web3.js?
web3.js庫是由以太坊基金會構建的開源JavaScript庫,包括通過JavaScript對象表示法-RemoteProcedureCall(JSON-RPC)協議與以太坊節點進行通信的函數。也就是說,它是一個支持開發者與以太坊區塊鏈進行交互的JavaScript庫。Web3.js最新版本為1.2.9,在本文中將引用該版本。Web3.js由四個模塊組成。
什么是模塊?
在JavaScript中,模塊是在更大的程序中具有特定功能的代碼。模塊應該具有獨立性,即如果將某個模塊從庫、程序或應用中移除,整個庫、程序或應用應該不會停止運行。熟悉python或java的用戶可能也熟悉“類”,它與模塊類似。FreeCodeCamp對JavaScript模塊進行了詳細解釋,應該對于剛接觸JavaScript的用戶有用。
web3.js由哪些模塊組成?
Web3.js有一個主類,稱為web3。在該類中可以找到該庫的大多數功能。組成web3js的另外5個模塊分別是:
web3-eth
web3-shh
web3-bzz
web3-net
數據:幣安平臺的以太坊鏈上USDC余額約50億美元:金色財經報道,區塊鏈分析公司Nansen發推稱,過去24小時Circle已銷毀價值23.4億美元的美元穩定幣USDC,其中70%(約16.5億美元)是在過去8小時內銷毀。另外根據Nansen標記的中心化交易所地址,當前以太坊鏈上USDC在幣安約有50億美元,Crypto.com約有7.66億美元,Coinbase約有3.03億美元。此外Uniswap約有6.53億美元,Voyager約有5.29億美元,Curve約有5.15億美元,dYdX約有3.68億美元。[2023/3/11 12:56:25]
web3-utils
web3-eth有什么作用?
web3-eth模塊中包含函數,其作用是使web3.js的用戶可以與以太坊區塊鏈進行交互。具體來說,這些函數能夠與智能合約、歸外部所有的賬戶、節點、挖出的區塊以及交易進行交互。下面是三個說明示例:
_web3.eth.getBalance_的作用是獲得指定區塊的某個地址的以太坊余額
_web3.eth.signTransaction_的作用是對交易簽名
_web3.eth.sendSignedTransaction_的作用是將簽名的交易發送到以太坊區塊鏈。
web3-shh有什么作用?
web3-shh模塊的作用是使你可以與Whisper協議進行交互。Whisper是一個消息傳輸協議,其目的是輕松廣播消息以及進行低層異步通信。下面顯示了兩個說明性示例:
_web3.shh.post_將whisper消息發布到網絡
_web3.shh.subscribe_創建傳入的whisper消息訂閱
web3-bzz有什么作用?
web3-bzz模塊的作用是使你可以與Swarm交互。Swarm是一個去中心化存儲平臺和內容分發服務,它可以用來為去中心化應用存儲圖片或視頻等文件。下面顯示了兩個說明性示例:
_web3.bzz.upload_的作用是使你可以將文件和文件夾上傳到Swarm
_Web3.bzz.download_的作用是使你可以從Swarm下載文件和文件夾
web3-net有什么作用?
web3-net模塊的作用是使你可以與以太坊節點的網絡屬性進行交互。通過web3-net,你可以采用你需要獲得的信息所關聯的協議后加.net來查找該節點的相關信息。下面顯示了兩個說明性示例:
web3.*.net.getID返回網絡ID
以太坊網絡當前已銷毀194.79萬枚ETH:金色財經報道,據Ultrasound數據顯示,截止目前,以太坊網絡總共銷毀1947979.89枚ETH。其中,OpenSea銷毀231120.5枚ETH,ETHtransfers銷毀185218.4枚ETH,UniswapV2銷毀125752.5枚。注:自以太坊倫敦升級引入EIP-1559后,以太坊網絡會根據交易需求和區塊大小動態調整每筆交易的BaseFee,而這部分的費用將直接燃燒銷毀。[2022/3/5 13:39:48]
web3.*.net.getPeerCount返回連接到節點的對等點數
web3-utils有什么作用?
web3-utils模塊為你提供實用程序函數,這些函數可在以太坊去中心化應用以及其他web3.js模塊中使用。實用程序函數可以重復使用,使代碼編寫更輕松,在JavaScript和其他編程語言中很常見。Web3-utils包含實用程序函數,這些函數用于轉換數字、驗證值是否滿足特定條件以及搜索數據集。下面顯示了三個說明性示例:
_web3.utils.toWei_將以太轉換為Wei
_web3.utils.hexToNumberString_將十六進制值轉換為字符串
web3.utils.isAddress,校驗特定字符串是否為有效的以太坊地址。
什么是ethers.js?
Ethers.js是一個JavaScript庫,其作用是使開發者可以與以太坊區塊鏈進行交互。該庫包含JavaScript和TypeScript中的實用程序函數,以及以太坊錢包的所有功能。Ethers.js的最新版本為5.0.3。Ethers.js是通過Ethers創建的,是采用MIT許可證的開放源。
與web3.js相似,ethers.js有四個模塊,構成應用程序編程界面(API)。
Ethers.provider
Ethers.contract
Ethers.utils
Ethers.wallets
ethers.provider有什么作用?
Ethers.provider的作用是封裝與以太坊區塊鏈的連接。它可以用于簽發查詢和發送已簽名的交易,這將改變區塊鏈的狀態。下面顯示了三個說明性示例:
_ethers.providers.InfuraProvider_的作用是使你可以與Infura托管的以太坊節點網絡建立連接
_ethers.provider.getBalance_將為你獲取區塊鏈中某個地址或區塊的以太坊余額
Gemini創始人:以太坊2.0啟動信標鏈是加密史上的分水嶺:Gemini聯合創始人Tyler?Winklevoss今日發推稱,比特幣占據了主流媒體的大部分頭條,但最近任何人都在密切關注以太坊,因為以太坊2.0啟動信標鏈。這是加密史上的分水嶺,讓升級開始吧。[2020/12/5 14:05:36]
_ethers.provider.resolve_將解析傳遞到以太坊地址的以太坊名稱服務(ENS)名稱。
注:_web3.js_也有服務于此目的的提供商,位于_web3_基礎模塊中。_Ethers.js_和_web3.js_的組織方式截然不同,因此盡管兩個庫的功能非常相似,但模塊間并非總是能清晰對應。
ethers.contract有什么作用?
Ethers.contract的作用是部署智能合約并與它交互。具體來說,該模塊中的函數用于偵聽從智能合約發射的事件、調用智能合約提供的函數、獲取有關智能合約的信息,以及部署智能合約。下面顯示了兩個說明性示例:
_ethers.ContractFactory.fromSolidity_從Solidity編譯器的編譯器輸出或從Truffle生成的JSON文件創建一個用于部署智能合約的“工廠”。_ethers.Contract_使你可以與已部署的智能合約進行交互。ethers.utils有什么作用?
Ethers.utils提供用于格式化數據和處理用戶輸入的實用程序函數。Ethers.utils的作用方式與web3-utils相似,能夠簡化去中心化應用的構建流程。下面提供了三個示例:
_ethers.utils.getContractAddress_從用于部署智能合約的交易中提取智能合約地址
_ethers.utils.computeAddress_通過傳遞與地址相關的公鑰或私鑰的函數來計算地址_ethers.utils.formatEther_將所傳遞的Wei金額轉換為Ether十進制字符串格式
ethers.wallet有什么作用?
Ethers.wallet提供的功能與我們目前討論過的其他模塊截然不同。Ethers.wallet的作用是使你可以與現有錢包建立連接、創建新錢包以及對交易簽名。下面提供了三個示例:
_ethers.wallet.createRandom_將創建隨機新賬戶。
_ethers.wallet.sign_將對交易簽名并將已簽名的交易返回為十六進制字符串的形式。
_ethers.wallet.getBalance_將為我們提供錢包地址的以太坊余額。
觀點:ETH2.0將降低以太坊通脹率 使ETH成為稀缺性超黃金的資產:V神最近聲稱,原定于7月份啟動的以太坊2.0開發工作仍在進行當中。著名分析師和投資者Alex Saunders以以太坊2.0會如期啟動為假設繪制了以太坊的流量和存量(stock-to-flow, S2F)圖表。Alex Saunders稱,以太坊在2019年的S2F比率為21.95,和銀等貴金屬的S2F值22非常接近。然而,該S2F圖表2020年部分顯示,ETH可能在稀缺性方面超越白銀。桑德斯預測,到今年年底,ETH的S2F將達到28.25。他指出,隨著以太坊2.0按預期啟動,其S2F到2021年將躍升100%。然而由于這些都是基于協議升級的實現,而此前該協議已被多次推遲,社區將不得不等待以太坊2.0的最終發布,屆時質押(staking)將取代挖礦。Alex Saunders預計,隨著協議改變,所有人都將會將ETH用來質押。他預計,到2021年,以太坊的流量和存量比將達到57.2,到2022年會接近58.5。黃金目前的存量和流量比率約為60,這意味著以太坊將可能成為更惜售的資產。隨著ETH這一第二大加密貨幣變得更為稀缺,預計其通脹率將會下降。隨著股權證明的實施,預計以太坊的通脹率將下降2%。這一降幅接近比特幣三次減半后1.8%的通脹率。以太坊的通脹率將達到2.5%,甚至比黃金等貴金屬的通脹率還要低。(AMBCrypto)[2020/5/29]
Web3.js在web3.eth模塊中有一個類似的包,稱為web3.eth.accounts。但是,在該包的文檔中有如下說明:“該包未經審核,可能不安全。在用于生產環境之前,請注意妥善清除內存,安全存儲私鑰,并適當測試交易接收和發送功能!”
web3.js還是ethers.js?
我如何確定在去中心化應用中到底應該使用web3.js還是ethers.js呢?兩者有何區別?
首先,如果你要基于樣板應用或教程開發,則使用該樣板或教程建議你使用的庫,不管是web3.js還是ethers.js。這將為你省去不少麻煩,讓你可以更好地跟著教程操作。請務必使用教程指定的web3.js或ethers.js版本。有許多教程沒有更新,不要想當然地認為你可以使用最新版本的庫,除非教程中具體說明。
如果你要從零開始構建應用并確定需要使用的庫,我們有一個使用評估流程,下面列出了9個問題。在確定哪個庫適合你時應該思考這些問題。此外還提供了一些上下文和信息以幫助你回答這些問題。
庫的受歡迎程度有多重要?“在Github上受歡迎的項目正如你所料。也就是說,有許多人提問、參與和支持。這些活動能讓軟件更加可靠。通過查看任何一個項目的加星數、已發布的問題數量、處理中的拉取請求以及項目的參與者數量,可以確定它的受歡迎程度。”
動態 | 以太坊核心開發人員退出以太坊社區:以太坊核心開發人員Afri Schoedon發布推文稱:“我沒有退出社交媒體,我是退出了以太坊。我只是離開了社區。我不再協調硬分叉、構建測試網或以其他方式做出貢獻。我沒有在Polkadot做工作,我從未做過,我曾在以太坊工作過。我不曾討厭以太坊,我喜歡過它。”Schoedon表示,除了其在Parity以太坊客戶端上所做的工作,從2015年至今他的所有貢獻,包括協調硬分叉都未被支付。此外,如果任何人有一個非常重要、激動人心但不附帶令牌的項目,可以給他發郵件。 Schoedon表示自己關心激進的權力下放和隱私增強項目、數據、安全性和賦權。此前據coindesk報道,Schoedon因遭到網友批評而退出社交媒體平臺,將不再直接回答公眾提出的請求或一般技術問題。[2019/2/20]
截止到撰寫本博客時,Web3.js獲得了近8,800顆星,而ethers.js獲得了近1,500顆星。在GitHub上使用web3.js的資源庫有51,300個,而使用ethers.js的有18,500個。Web3.js存在的時間更長,這也是web3.js更受歡迎的原因之一。
庫的維護有多重要?我們希望自己使用的庫能夠頻繁更新,以修復錯誤和添加新功能。盡管不完美,但通過查看一兩個月期間的提交數、已解決的問題數、正在處理的問題數以及維護者數,可了解開源項目的優勢和弱點。用戶從中也能看到庫的維護模式,了解庫一般有哪些更新并修復了哪些錯誤,并以此作為判斷庫維護情況的代理指標。我們來查看兩個庫在GitHub上的每月動態,以了解它們的統計數據。
ethers.js的維護者只有一人—RichardMoore,他完成的提交數和已解決的問題數相當驚人,值得稱贊。Web3.js有12位維護者,絕大多數提交數都是由其中三人完成的。在這方面沒有明顯的勝負差異,但在選擇庫時應注意,這些統計數據可以幫助你確定,在維護性方面你最看重哪些,并根據你的需求確定庫的優先性。
庫的開發負責人是誰?使用庫的項目有多少個?Web3.js是以太坊基金會的一個項目。以太坊基金會是一個非營利性組織,致力于協議層開發的研究和組織。Ethers.js的目的是建立“一個完整、簡單、小巧的庫,取代web3和ethereum.js”。Ethers.js的開發者是RichardMoore,并由他來創建和維護庫。
有些項目公開聲明了他們使用的是哪個庫,我們認為從這些數據中可以看出兩個庫受歡迎的程度都很高。查看web3.js和ethers.js依賴圖,以了解你信任的項目使用的是哪個庫,或者他們是否同時使用/支持兩個庫。
庫具有測試有多重要?如果預編寫的測試對你的項目來說很重要,那么從歷史數據來看,ethers.js勝。截至撰寫本文時止,Ethers.js已經在Github上發布了3.0發行版的清晰測試文檔,但還沒有為5.0發行版更新該文檔。Web3.js在測試文檔方面稍遜一籌。如果ethers.js在接下來幾周更新測試文檔,那么在測試和測試文檔方面將繼續保持優勝地位。到目前為止尚無定論,因為ethers.js它測試套件至今似乎還未更新。
庫的下載量有多重要?由于web3.js存在的時間更長,因此它的下載量超過了ethers.js的下載量,但是如果查看周下載量,ethers.js超過了web3.js,因此目前的下載次數更加頻繁。Ethers.js的近期下載量更高,而web3.js的總下載量更高。
Web性能有多重要?如果web性能對你來說非常重要,則我們認為ethers.js庫的性能更加優越。ethers.js庫聲稱未壓縮大小為284kb,而在NPM上列出的解壓縮大小為3.5MB。Web3.js至少大一個數量級,解壓縮大小為10.6MB。考慮到ethers.js比web3.js更加小巧,因此推測使用ethers.js的應用程序比使用web3.js的相同應用程序加載速度更快。這是因為不管使用什么庫,它都會和構成web應用程序的其他資源一起加載。我們沒有使用web3.js和ethers.js分別對完全相同的應用程序測試加載速度,因此在這一點上應該持保留態度。如果數據量大小對應用程序會有影響,則數據量較小的ethers.js庫會有優勢。
文檔質量有多重要?文檔質量是一個主觀性指標,但評估文檔質量的其中一種方式是閱讀文檔,看它的閱讀難易程度如何。最理想的情況是,編寫的文檔能夠讓新用戶理解如何使用庫。文檔在結構安排上也應該能夠讓資深用戶快速找到他們需要查找的內容。
Web3.js具有廣泛而相當實用的API參考。這是文檔最重要的部分。“新手入門”材料較為簡單,這可能會深受資深用戶的歡迎,但適合web3.js新用戶使用的材料很少。
Ethers.js包括“新手入門”部分以及拓展性API參考。這些材料非常實用,使得ethers.js相對于web3.js具有優勢,尤其是對以太坊生態系統中的入門級開發者而言。針對ethers.js的文檔中有一些不完整的部分,這對用戶來說很不方便。Ethers.js還清晰地介紹了使用ethers.js的優勢。
兩個庫的文檔都存在不足之處,因此如果文檔對你來說很重要,請花一些時間來了解并確定哪個庫提供了充分的信息來幫助你實現你需要構建的特性。
庫的總使用量有多重要?由于web3.js存在的時間更長,因此具有更高的下載量和GitHub加星數,而ethers.js在受歡迎程度上有所上升。最終應該由你自己來決定庫的哪些方面對你的用例最重要。
許可證有多重要?根據你的具體用例,開源軟件許可證對你來說可能很重要。Web3.js有LGPLv3許可證,ethers.js有MIT許可證。聯系關于該主題的法律專家可以獲取有關許可證的更多詳細信息。但是,SlavaTodavchich在文章“了解開源和免費軟件許可”中針對該主題進行了生動有趣的闡述。
結論
正如我們開篇就已指出,兩個庫都能夠完成任務。Ethers.js在近兩年來越來越受歡迎,下載量和項目使用量都不斷增加。Web3.js一直以來都作為標桿存在,并且仍然擁有許多開發者共享資源。
請關注第二部分。我們將發布一份跟進教程,介紹如何連接到_InfuraAPI_并使用_web3.js_和_ethers.js_發送交易。
參考資料
web3.js中文文檔:https://learnblockchain.cn/docs/web3.js/
ethers.js中文文檔:https://learnblockchain.cn/docs/ethers.js/
對JavaScript模塊進行了詳細解釋:https://www.freecodecamp.org/news/javascript-modules-a-beginner-s-guide-783f7d7a5fcc/
Whisper:https://geth.ethereum.org/docs/whisper/whisper-overview
Swarm:https://ethersphere.github.io/swarm-home/
Ethers:https://ethers.io/
承諾:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
承諾:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
web3.js:https://github.com/ethereum/web3.js/pulse/monthly
ethers.js:https://github.com/ethers-io/ethers.js/pulse/monthly
以太坊基金會:https://ethereum.org/en/
“一個完整、簡單、小巧的庫,取代web3和ethereum.js”:https://www.youtube.com/watch?v=P-UzQTDfdXY
web3.js:https://github.com/ethereum/web3.js/network/dependents
ethers.js:https://github.com/ethers-io/ethers.js/network/dependents?package_id=UGFja2FnZS0xNjEzMjI4Ng==
在Github上發布了3.0發行版的清晰測試文檔:https://github.com/ethers-io/ethers.js/tree/master/docs
截至5月20日止為14,703,432次:https://npm-stat.com/charts.html?package=web3&from;=2015-01-01&to;=2020-05-20
截至5月20日止為8,500,336次:https://npm-stat.com/charts.html?package=ethers&from;=2015-01-01&to;=2020-05-20
184,798:https://www.npmjs.com/package/ethers
175,661:https://www.npmjs.com/package/web3
ethers.js庫聲稱未壓縮大小為284kb:https://docs.ethers.io/v5/
解壓縮大小為3.5MB:https://www.npmjs.com/package/ethers
解壓縮大小為10.6MB:https://www.npmjs.com/package/web3
API參考:https://web3js.readthedocs.io/en/v1.2.9/web3.html
“以太坊基本介紹”部分:https://docs.ethers.io/v5/concepts/events/
NPM:https://www.npmjs.com/package/web3
了解開源和免費軟件許可:https://medium.com/@moqod_development/understanding-open-source-and-free-software-licensing-c0fa600106c9
InfuraAPI:https://infura.io/dashboard
本文來源于非小號媒體平臺:
登鏈社區
現已在非小號資訊平臺發布105篇作品,
非小號開放平臺歡迎幣圈作者入駐
入駐指南:
/apply_guide/
本文網址:
/news/9558543.html
免責聲明:
1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場
上一篇:
幣安為何推出第三條鏈?這對BNB意味著什么?
Tags:ETHHERTHEETHEEthereum ApexCipher Core TokenITHEUMtogetherbnb手游下載破解
幣友們好!在今天的《推特大咖說》第117期中,你將看到:01Twitter的首席執行官JackDorseyTwitter計劃資助一個由最多五個開源架構師,工程師和設計師組成的小型獨立團隊.
1900/1/1 0:00:00Gate.io一直秉承真實,透明的理念,不造假數據,不干預市場交易,為用戶提供真實自由的市場工具和穩定健康的市場服務。杠桿交易提供做多和做空機制,可以有效穩定市場到合理價值.
1900/1/1 0:00:00萬向區塊鏈董事長肖風談區塊鏈和人工智能在數據要素市場中的作用。原文標題:《世界人工智能大會|萬向區塊鏈肖風:數據要素市場與分布式AI平臺》演講:肖風,萬向區塊鏈董事長兼CEO2020年7月10日.
1900/1/1 0:00:00Overview概述 本文將會先從BitMex在中心化世界的地位出發,說明寡頭市場同樣會在DeFi世界出現,第二部分筆者將討論BitMex所遇到的監管挑戰是否會在DeFi世界重現.
1900/1/1 0:00:00這里是IPFS資訊快車,想進filecoin技術交流群的以及與圈內大佬深入溝通,或者了解更多FIL資訊,深入了解FIL的(+V:FIL101).
1900/1/1 0:00:00在1月2日的NearProtocol的北京見面會上,ASResearch就“公有鏈vs聯盟鏈“的話題進行了分享.
1900/1/1 0:00:00