Ethers.js:以太坊的 Javascript 庫

新手3/18/2024, 8:47:39 AM
以太坊是一種以其工具包、智能合約和代碼對齊生態系統而聞名的區塊鏈協議。它嚴重依賴 ethers.js(一個 Javascript 庫)來爲其以開發人員爲中心的方法提供所需的效力。

轉發原文標題:《What Is Ethers.js? A Deep Dive Into Ethereum’s JavaScript Library》

如果您更看重以太坊(ETH)而不是其他加密貨幣玩家,那麼您應該花點時間從更深入的技術角度來了解以太坊。以太坊是一種以其工具包、智能合約和代碼對齊生態系統而聞名的區塊鏈協議,嚴重依賴 ethers.js(一個 Javascript 庫)來爲其以開發人員爲中心的方法提供所需的效力。

雖然 ethers.js 不是唯一的以太坊原生 JavaScript 庫,但對於小型 DApp 來說,它是更好的選擇。在本文內容中,我們將深入研究 ethers.js 的各個方面,幫助您理解這一技術概念。

大綱內容:

  1. 解析 ethers.js
  2. 爲什麼 ethers.js 很重要?
  3. 了解所有 Ethers.js 版本
  4. ethers.js 入門
  5. 核心特點
  6. 加密出版物如何利用 Ethers.js
  7. Ethers.js 的實際應用
  8. 安全考慮
  9. Ethers.js:多功能工具
  10. 常見問題

解析 ethers.js

ethers.js 是一個 JavaScript 庫——一組可自動執行多個功能的預先編寫的代碼。使用JavaScript庫進行開發可以最大限度地減少代碼編寫的工作量。這個過程變得更加用戶友好,對於 DApp 開發人員來說,這些庫有助於以捆綁包的形式提供基本的區塊鏈特定功能。

Ethers.js 和開發週期:BeInCrypto

這是庫的 GitHub 存儲庫

什麼是 JavaScript 庫?

在深入研究 ethers.js 之前,讓我們仔細看看 JavaScript 庫。這些庫是預先編寫的 JavaScript 代碼集,可以自動執行特定的常見任務。使用 ethers.js 等庫可以加快 DApp 創建過程,甚至加快其他特定於區塊鏈的交互。

爲什麼我們在以太坊中需要 JavaScript 庫?

以太坊已經發展成爲一個去中心化的軟件開發平台。從智能合約DeFi 應用程序,再到 DApps,編碼是以太坊生態系統不可或缺的一部分。這正是以太坊定制的 JavaScript 庫(如 ethers.js)存在的原因。使用這些庫,開發人員可以連接到網路,部署智能合約並與之交互,並輕鬆管理區塊鏈數據。

你可知道,Ethers.js 並不是唯一已知的以太坊 Javascript 庫。另一個著名的例子是由以太坊基金會創立的 Web3.js。Web3.js 以其全面的文檔集合而聞名,適用於更復雜的 DApp。

爲什麼 ethers.js 很重要?

如前所述,ethers.js 旨在爲與以太坊區塊鏈互動的開發人員提供支持。至於重要性,這個由Richard Moore開發的庫,以“Ethers”之名推廣,對以下工作非常有用:

  1. 簡化多個以太坊交易
  2. 提供全面的文檔和資源訪問
  3. 促進 DApp 的開發

Ethers.js 生態系統及其可以承擔的角色:BeInCrypto

Ethers.js生態系統及其可承擔的角色:BeInCrypto

以下是用於獲取以太坊帳戶當前餘額的代碼片段示例。讓我們先閱讀代碼並了解ethers.js如何簡化工作:

javascript

Copy code

const { ethers } = require(‘ethers’);

// 連接至以太坊網路

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY‘);

// 指定帳戶地址

const accountAddress = ‘0xBCH123…’;

// 獲取並顯示餘額

provider.getBalance(accountAddress).then((balance) => {

// 將餘額從Wei轉換爲Ether

const balanceInEther = ethers.utils.formatEther(balance);

console.log(`Balance: ${balanceInEther} ETH`);

});

在這個示例中,您可以清楚地看到命令——ethers.providers.JsonRpcProvider——調用了一個Infura端點,並且getBalance方法獲取了餘額。您不需要直接處理以太坊的JSON RPC或遠程過程調用。在這種情況下,您可以將ethers.js視爲一個使以太坊變得更容易和更熟悉的翻譯器。

仍然不太了解ethers.js的重要性嗎?以下給出了一個簡單的類比。

想象一下ethers.js就像一個舊的圖書館借書卡。還記得那些卡上有目錄,讓您通過定位通道,然後使用書架號碼找到正確的書嗎?這就是ethers.js的目標。它簡化並組織了以太坊的龐大功能,使開發人員能夠準確找到他們所需的東西。

了解所有 Ethers.js 版本

多年來,出現了多個 Ethers.js 版本,每個版本都引入了新功能或修復了漏洞。此外,版本控制遵循標準語義,例如 v1.2.3,其中第一個數字表示主要版本,第二個和第三個數字表示次要版本和補丁。我們現在只考慮主要版本升級——可能不向後兼容的更改。

  1. 版本 1.x(舊版):這是最初的版本,隨後提供了與交易籤名、錢包管理等相關的功能。
  2. 版本 2.x(以太坊錢包):專注於錢包實用程序和功能,包括安全存儲私鑰
  3. 版本 3.x(以太坊提供商):引入了用於連接以太坊節點的抽象。可以容納不同類型的玩家,包括 Infura、WebSocket 等。
  4. 版本 4.x(以太坊合約):擴展了智能合約主導的屬性,提供了更多用於編碼和解碼數據、事件過濾器等的實用程序。
  5. 版本 5.x:提供模塊化架構,增強了對ENS的支持、全面的錯誤處理等等。
  6. 版本 6.x:包含 ES6 功能、BigInt 介紹、重載可訪問性等。

Ethers.js 架構和組件:BeInCrypto

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

您可以通過查看 Ethers.js 的原始文件,找到與每個版本相關的更多詳細信息。

“Ethers.js 憑藉卓越的區塊鏈互操作性、原生 TypeScript 支持和先進的調試工具而大放異彩。這是一個精益、簡單的庫,可以無縫集成到 React、Vue、Angular 等流行框架中。”

Redbelly 實習生、構建者:X

ethers.js 入門

在您計劃利用 ethers.js 的潛力之前,有必要了解它在 DApp 或智能合約開發的哪個階段被調用。對於那些需要從頭開始了解和理解這些元素的人來說,可參閱此處的快速細分內容。

“Web3.js 適合初學者,並且比 ethers.js 更簡潔。

另一方面,Ethers.js 提供了更多選項並且是新的;它比 Web3.js 稍微復雜一點。”

degenBRo是一位區塊鏈開發者、Solidity Finance 創始人:正如 BeInCrypto 所說

首先,您需要打開計算機並設置開發環境。這包括 Node.js 和集成開發環境。請注意,JavaScript 通常在瀏覽器上運行,但使用 Node.js,同樣可以在計算機上運行。它是 Node.js 運行時環境,安裝了像 ethers.js 這樣的 Javascript 庫。

至於軟件開發人員需要測試的IDE,您可以考慮VS Code、Sublime Text或其他任何東西。

安裝 ethers.js 支持

下一步是安裝 Ethers,這是托管 ethers.js 的庫。

npm 安裝以太坊

然後,您需要使用 Ethers 連接到以太坊錢包,因爲與區塊鏈的交互將需要此步驟來驗證憑證。爲此,您可以使用已安裝的 Ethers 庫。這是示例命令:

相關閱讀:

更多文章

以太坊 ETF:它是什麼以及如何運作

如何獲得比特幣 (BTC) 付款:您需要了解的一切

const { ethers } = require(‘ethers’);

// 連接至 MetaMask 錢包

const provider = new ethers.providers.Web3Provider(window.ethereum);

完成後,您可以使用 IDE 編寫 Solidity 代碼並爲 DApps 創建智能合約。Ethers.js 將用於部署相同的智能合約。您甚至可以使用 Truffle 和 Hardhat 等環境在本地測試 DApp 或合約。然後,您可以將合約部署到以太坊網路上,這需要使用 ethers.js。

const contract = new ethers.ContractFactory(abi, bytecode, signer);

const deployedContract = await contract.deploy();

對於不熟悉的人來說,abi、Bytecode、Signer 是無縫智能合約開發的必要術語。Abi 或應用程序二進制接口更像是一個標籤,有助於網路識別您的智能合約。Bytecode 是智能合約的編譯或者說是網路就緒版本,而 signer 則是生成籤名的實體。

前端的 Ethers.js

// 部署智能合約後,您需要構建 DApp 的前端或用戶界面。爲此,您可以使用 Angular 或 React。您甚至可以在前端中集成 Ethers.js,以確保它可以與以太坊智能合約進行交互。以下是相同的示例代碼:

const provider = new ethers.providers.Web3Provider(window.ethereum);

const contract = new ethers.Contract(contractAddress, contractABI, provider.getSigner());

完成後,您需要在測試網絡上測試 DApp,比如 Rinkeby 或 Ropsten。一旦滿意,您可以在主網絡上啓動 DApp。請注意,在整個過程中您需要多次與 Ethers 或 ethers.js 進行交互。

核心特點

Ethers.js 是一個綜合性的以太坊庫。以下是一些可以讓開發人員的生活變得輕鬆的獨家產品:

提供商

// Ethers.js 提供商充當您正在開發的 DApp 與以太坊網路之間的橋梁。這涉及簡化區塊鏈數據查詢,並幫助廣播交易。Infura 是 ethers.js 使用的提供商之一。

以下是相同操作的示例代碼:

const { ethers } = require(‘ethers’);

// 使用 Infura 進行連接

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

// 檢查當前區塊號

provider.getBlockNumber().then((blockNumber) => {

console.log("Current block number:", blockNumber);

});

錢包

Ethers.js 可讓您管理錢包、創建新帳戶、導入現有帳戶、安全管理用於籤署交易的私鑰等等。

合約

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

Ethers.js 的這個組件支持對象實例化。這使得調用特定的合約函數變得更容易,更像原生 Javascript 方法。


Ethers.js 和智能合約交互:BeInCrypto

ENS 集成

// Ethers.js 可以將 ENS 名稱解析爲其以太坊地址,反之亦然。該功能可降低錯誤風險。

以下是此操作的示例代碼片段:

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

const ensName = ‘alice.eth’;

provider.resolveName(ensName).then((address) => {

console.log(`${ensName} is resolved to ${address}`);

});

除了上述功能外,Ethers.js 還具有以下方面或功能,可幫助開發人員直接訪問以太坊特定內容:

籤名者

功能

事件偵聽器和過濾器(用於激活對區塊鏈操作的實時響應)

交易

多調用支持

TypeScript 支持(旨在提高代碼可靠性和整體開發人員體驗)

使用 Ethers.js 的一些額外好處:https://twitter.com/juniorrbn_dev/status/1765370617937736000?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765370617937736000%7Ctwgr%5Ec1f906e08013316a8e26d4dc67 36b846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解釋%2F

加密出版物如何利用 Ethers.js

像 BeInCrypto 這樣的媒體出版物可以利用 Ethers.js 從頭開始​​創建高級且資源豐富的 web3 工具。這樣,就可以使用區塊鏈或更確切地說,以太坊驅動的功能來增強可用性。以下是人們可以考慮的選項:

數據饋送

// Ethers.js 功能可用於集成實際的實時加密數據源,如網路統計信息、gas費用等,以保持文章和資源的時效性。以下是一個示例代碼,用於獲取最新的區塊號,比如比特幣,以實時跟蹤減半事件。

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

provider.getBlockNumber().then((blockNumber) => {

console.log("Current block number:", blockNumber);

// 將這些數據集成到您的出版平台中,以獲取實時數據源

});

交互式內容

出版物可以創建一些交互式內容,允許用戶直接與智能合約互動,參與投票,甚至在需要時玩一些小遊戲。

以下是一個示例代碼片段,用於從智能合約中檢索特定裏程碑的問候語:

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.Web3Provider(window.ethereum);

const contractAddress = ‘0x…’;

const contractABI = [

"function getGreeting() view returns (string)"

];

const contract = new ethers.Contract(contractAddress, contractABI, provider);

async function displayGreeting() {

const greeting = await contract.getGreeting();

document.getElementById('greeting').innerText = greeting;

}

在KuCoin上開設帳戶,立即獲得高達700 USDT的保證金。

以KuCoin開始您的加密貨幣交易旅程,提前佔領優勢!

在KuCoin上放心交易!我們的平台優先考慮您的安全,爲您的數字資產提供一流的保護。

探索KuCoin龐大的加密貨幣世界!

立即註冊

Ethers.js的實際部署示例:

https://twitter.com/ronakpal1/status/1767071343345095092?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1767071343345095092%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b 846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解釋%2F

去中心化出版

媒體出版物還可以考慮去中心化發布,其中文章的一部分被發布到區塊鏈網路上。這有助於抵抗審查和確保內容的完整性。

以下是一個示例代碼,其中文章哈希作爲發布證明存儲在線上:

const { ethers } = require(‘ethers’);

const wallet = new ethers.Wallet(‘YOUR_PRIVATE_KEY’, provider);

const contentHash = ethers.utils.id(“Article content here”);

const tx = await wallet.sendTransaction({

to: '0xSomeStorageContractAddress',

data: contentHash // 假設合約接受並存儲此數據

});

console.log(“Transaction hash (proof of publication):”, tx.hash);

這只是媒體出版物的一些用例。但還有其他行業可以利用 ethers.js 的功能。這些包括:

  • 區塊鏈開發人員(預期)

  • 使用 DeFi 指標的金融分析師

  • 遊戲開發人員

  • 內容創作者

  • 供應鏈管理者

  • 等等。

Ethers.js 的實際應用

除了在 DeFi、NFT 和遊戲項目中有用之外,還有一些現有的 DApps 支持使用 Ethers.js。其中包括以下內容:

Uniswap:Ether.js 與 Uniswap 的內置智能合約進行交互,用於執行交易、增加流動性,甚至查詢流動性池統計數據。在這種情況下,DApp 開發人員計劃構建與 Uniswap 交互的工具,如交易機器人、投資組合管理工具等。

Aave:DApp 開發人員和其他感興趣的人可以、利用 Ether.js 的功能與 Aave 特定的智能合約進行交互。這樣,他們可以爲借貸資產、存入抵押品等準備好前端。

打破一些關於 Ethers.js 的謬論:

https://twitter.com/imashuttoshh/status/1765558806291894739?refsrc=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765558806291894739%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736 b846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解釋%2F

安全考慮因素

使用 Ethers.js 需要考慮一系列安全性考慮因素。以下是一些需要遵循的要點:

建議不要在應用程序的代碼庫中硬編碼私鑰。

每次與智能合約進行交互之前,都應先進行測試並對合約進行廣泛審計。

與智能合約進行交互時,使用“call”等安全模式進行只讀任務。

爲了優化 ethers.js 的使用,可以考慮請求批處理。這是一種可以批量處理讀取請求以最小化網路調用次數的方法。毫無疑問,這些優化技術可使應用程序具有高度可擴展性和成本效率。

以下是其工作原理的示例:

// 使用 Ethers.js 批處理合約調用的僞代碼(概念示例)

const contract = new ethers.Contract(address, abi, provider);

const [value1, value2, value3] = await Promise.all([

contract.viewFunction1(),

contract.viewFunction2(),

contract.viewFunction3()

]);

Ethers.js:通用工具

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

正如本指南所展示的,Ethers.js 是一款多功能工具。雖然我們已經簡要介紹了它的功能,但要完全理解 Ethers.js 的最佳方式是深入了解智能合約、JavaScript、集成開發環境(IDE)、去中心化應用(DApps)等領域。此外,加入以太坊和 Ethers 社區也會很有幫助。

聲明:

  1. 本文轉載自[beincrypto],原文標題《What Is Ethers.js? A Deep Dive Into Ethereum’s JavaScript Library》,著作權歸屬原作者Ananda Banerjee,如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。

Ethers.js:以太坊的 Javascript 庫

新手3/18/2024, 8:47:39 AM
以太坊是一種以其工具包、智能合約和代碼對齊生態系統而聞名的區塊鏈協議。它嚴重依賴 ethers.js(一個 Javascript 庫)來爲其以開發人員爲中心的方法提供所需的效力。

轉發原文標題:《What Is Ethers.js? A Deep Dive Into Ethereum’s JavaScript Library》

如果您更看重以太坊(ETH)而不是其他加密貨幣玩家,那麼您應該花點時間從更深入的技術角度來了解以太坊。以太坊是一種以其工具包、智能合約和代碼對齊生態系統而聞名的區塊鏈協議,嚴重依賴 ethers.js(一個 Javascript 庫)來爲其以開發人員爲中心的方法提供所需的效力。

雖然 ethers.js 不是唯一的以太坊原生 JavaScript 庫,但對於小型 DApp 來說,它是更好的選擇。在本文內容中,我們將深入研究 ethers.js 的各個方面,幫助您理解這一技術概念。

大綱內容:

  1. 解析 ethers.js
  2. 爲什麼 ethers.js 很重要?
  3. 了解所有 Ethers.js 版本
  4. ethers.js 入門
  5. 核心特點
  6. 加密出版物如何利用 Ethers.js
  7. Ethers.js 的實際應用
  8. 安全考慮
  9. Ethers.js:多功能工具
  10. 常見問題

解析 ethers.js

ethers.js 是一個 JavaScript 庫——一組可自動執行多個功能的預先編寫的代碼。使用JavaScript庫進行開發可以最大限度地減少代碼編寫的工作量。這個過程變得更加用戶友好,對於 DApp 開發人員來說,這些庫有助於以捆綁包的形式提供基本的區塊鏈特定功能。

Ethers.js 和開發週期:BeInCrypto

這是庫的 GitHub 存儲庫

什麼是 JavaScript 庫?

在深入研究 ethers.js 之前,讓我們仔細看看 JavaScript 庫。這些庫是預先編寫的 JavaScript 代碼集,可以自動執行特定的常見任務。使用 ethers.js 等庫可以加快 DApp 創建過程,甚至加快其他特定於區塊鏈的交互。

爲什麼我們在以太坊中需要 JavaScript 庫?

以太坊已經發展成爲一個去中心化的軟件開發平台。從智能合約DeFi 應用程序,再到 DApps,編碼是以太坊生態系統不可或缺的一部分。這正是以太坊定制的 JavaScript 庫(如 ethers.js)存在的原因。使用這些庫,開發人員可以連接到網路,部署智能合約並與之交互,並輕鬆管理區塊鏈數據。

你可知道,Ethers.js 並不是唯一已知的以太坊 Javascript 庫。另一個著名的例子是由以太坊基金會創立的 Web3.js。Web3.js 以其全面的文檔集合而聞名,適用於更復雜的 DApp。

爲什麼 ethers.js 很重要?

如前所述,ethers.js 旨在爲與以太坊區塊鏈互動的開發人員提供支持。至於重要性,這個由Richard Moore開發的庫,以“Ethers”之名推廣,對以下工作非常有用:

  1. 簡化多個以太坊交易
  2. 提供全面的文檔和資源訪問
  3. 促進 DApp 的開發

Ethers.js 生態系統及其可以承擔的角色:BeInCrypto

Ethers.js生態系統及其可承擔的角色:BeInCrypto

以下是用於獲取以太坊帳戶當前餘額的代碼片段示例。讓我們先閱讀代碼並了解ethers.js如何簡化工作:

javascript

Copy code

const { ethers } = require(‘ethers’);

// 連接至以太坊網路

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY‘);

// 指定帳戶地址

const accountAddress = ‘0xBCH123…’;

// 獲取並顯示餘額

provider.getBalance(accountAddress).then((balance) => {

// 將餘額從Wei轉換爲Ether

const balanceInEther = ethers.utils.formatEther(balance);

console.log(`Balance: ${balanceInEther} ETH`);

});

在這個示例中,您可以清楚地看到命令——ethers.providers.JsonRpcProvider——調用了一個Infura端點,並且getBalance方法獲取了餘額。您不需要直接處理以太坊的JSON RPC或遠程過程調用。在這種情況下,您可以將ethers.js視爲一個使以太坊變得更容易和更熟悉的翻譯器。

仍然不太了解ethers.js的重要性嗎?以下給出了一個簡單的類比。

想象一下ethers.js就像一個舊的圖書館借書卡。還記得那些卡上有目錄,讓您通過定位通道,然後使用書架號碼找到正確的書嗎?這就是ethers.js的目標。它簡化並組織了以太坊的龐大功能,使開發人員能夠準確找到他們所需的東西。

了解所有 Ethers.js 版本

多年來,出現了多個 Ethers.js 版本,每個版本都引入了新功能或修復了漏洞。此外,版本控制遵循標準語義,例如 v1.2.3,其中第一個數字表示主要版本,第二個和第三個數字表示次要版本和補丁。我們現在只考慮主要版本升級——可能不向後兼容的更改。

  1. 版本 1.x(舊版):這是最初的版本,隨後提供了與交易籤名、錢包管理等相關的功能。
  2. 版本 2.x(以太坊錢包):專注於錢包實用程序和功能,包括安全存儲私鑰
  3. 版本 3.x(以太坊提供商):引入了用於連接以太坊節點的抽象。可以容納不同類型的玩家,包括 Infura、WebSocket 等。
  4. 版本 4.x(以太坊合約):擴展了智能合約主導的屬性,提供了更多用於編碼和解碼數據、事件過濾器等的實用程序。
  5. 版本 5.x:提供模塊化架構,增強了對ENS的支持、全面的錯誤處理等等。
  6. 版本 6.x:包含 ES6 功能、BigInt 介紹、重載可訪問性等。

Ethers.js 架構和組件:BeInCrypto

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

您可以通過查看 Ethers.js 的原始文件,找到與每個版本相關的更多詳細信息。

“Ethers.js 憑藉卓越的區塊鏈互操作性、原生 TypeScript 支持和先進的調試工具而大放異彩。這是一個精益、簡單的庫,可以無縫集成到 React、Vue、Angular 等流行框架中。”

Redbelly 實習生、構建者:X

ethers.js 入門

在您計劃利用 ethers.js 的潛力之前,有必要了解它在 DApp 或智能合約開發的哪個階段被調用。對於那些需要從頭開始了解和理解這些元素的人來說,可參閱此處的快速細分內容。

“Web3.js 適合初學者,並且比 ethers.js 更簡潔。

另一方面,Ethers.js 提供了更多選項並且是新的;它比 Web3.js 稍微復雜一點。”

degenBRo是一位區塊鏈開發者、Solidity Finance 創始人:正如 BeInCrypto 所說

首先,您需要打開計算機並設置開發環境。這包括 Node.js 和集成開發環境。請注意,JavaScript 通常在瀏覽器上運行,但使用 Node.js,同樣可以在計算機上運行。它是 Node.js 運行時環境,安裝了像 ethers.js 這樣的 Javascript 庫。

至於軟件開發人員需要測試的IDE,您可以考慮VS Code、Sublime Text或其他任何東西。

安裝 ethers.js 支持

下一步是安裝 Ethers,這是托管 ethers.js 的庫。

npm 安裝以太坊

然後,您需要使用 Ethers 連接到以太坊錢包,因爲與區塊鏈的交互將需要此步驟來驗證憑證。爲此,您可以使用已安裝的 Ethers 庫。這是示例命令:

相關閱讀:

更多文章

以太坊 ETF:它是什麼以及如何運作

如何獲得比特幣 (BTC) 付款:您需要了解的一切

const { ethers } = require(‘ethers’);

// 連接至 MetaMask 錢包

const provider = new ethers.providers.Web3Provider(window.ethereum);

完成後,您可以使用 IDE 編寫 Solidity 代碼並爲 DApps 創建智能合約。Ethers.js 將用於部署相同的智能合約。您甚至可以使用 Truffle 和 Hardhat 等環境在本地測試 DApp 或合約。然後,您可以將合約部署到以太坊網路上,這需要使用 ethers.js。

const contract = new ethers.ContractFactory(abi, bytecode, signer);

const deployedContract = await contract.deploy();

對於不熟悉的人來說,abi、Bytecode、Signer 是無縫智能合約開發的必要術語。Abi 或應用程序二進制接口更像是一個標籤,有助於網路識別您的智能合約。Bytecode 是智能合約的編譯或者說是網路就緒版本,而 signer 則是生成籤名的實體。

前端的 Ethers.js

// 部署智能合約後,您需要構建 DApp 的前端或用戶界面。爲此,您可以使用 Angular 或 React。您甚至可以在前端中集成 Ethers.js,以確保它可以與以太坊智能合約進行交互。以下是相同的示例代碼:

const provider = new ethers.providers.Web3Provider(window.ethereum);

const contract = new ethers.Contract(contractAddress, contractABI, provider.getSigner());

完成後,您需要在測試網絡上測試 DApp,比如 Rinkeby 或 Ropsten。一旦滿意,您可以在主網絡上啓動 DApp。請注意,在整個過程中您需要多次與 Ethers 或 ethers.js 進行交互。

核心特點

Ethers.js 是一個綜合性的以太坊庫。以下是一些可以讓開發人員的生活變得輕鬆的獨家產品:

提供商

// Ethers.js 提供商充當您正在開發的 DApp 與以太坊網路之間的橋梁。這涉及簡化區塊鏈數據查詢,並幫助廣播交易。Infura 是 ethers.js 使用的提供商之一。

以下是相同操作的示例代碼:

const { ethers } = require(‘ethers’);

// 使用 Infura 進行連接

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

// 檢查當前區塊號

provider.getBlockNumber().then((blockNumber) => {

console.log("Current block number:", blockNumber);

});

錢包

Ethers.js 可讓您管理錢包、創建新帳戶、導入現有帳戶、安全管理用於籤署交易的私鑰等等。

合約

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

Ethers.js 的這個組件支持對象實例化。這使得調用特定的合約函數變得更容易,更像原生 Javascript 方法。


Ethers.js 和智能合約交互:BeInCrypto

ENS 集成

// Ethers.js 可以將 ENS 名稱解析爲其以太坊地址,反之亦然。該功能可降低錯誤風險。

以下是此操作的示例代碼片段:

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

const ensName = ‘alice.eth’;

provider.resolveName(ensName).then((address) => {

console.log(`${ensName} is resolved to ${address}`);

});

除了上述功能外,Ethers.js 還具有以下方面或功能,可幫助開發人員直接訪問以太坊特定內容:

籤名者

功能

事件偵聽器和過濾器(用於激活對區塊鏈操作的實時響應)

交易

多調用支持

TypeScript 支持(旨在提高代碼可靠性和整體開發人員體驗)

使用 Ethers.js 的一些額外好處:https://twitter.com/juniorrbn_dev/status/1765370617937736000?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765370617937736000%7Ctwgr%5Ec1f906e08013316a8e26d4dc67 36b846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解釋%2F

加密出版物如何利用 Ethers.js

像 BeInCrypto 這樣的媒體出版物可以利用 Ethers.js 從頭開始​​創建高級且資源豐富的 web3 工具。這樣,就可以使用區塊鏈或更確切地說,以太坊驅動的功能來增強可用性。以下是人們可以考慮的選項:

數據饋送

// Ethers.js 功能可用於集成實際的實時加密數據源,如網路統計信息、gas費用等,以保持文章和資源的時效性。以下是一個示例代碼,用於獲取最新的區塊號,比如比特幣,以實時跟蹤減半事件。

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

provider.getBlockNumber().then((blockNumber) => {

console.log("Current block number:", blockNumber);

// 將這些數據集成到您的出版平台中,以獲取實時數據源

});

交互式內容

出版物可以創建一些交互式內容,允許用戶直接與智能合約互動,參與投票,甚至在需要時玩一些小遊戲。

以下是一個示例代碼片段,用於從智能合約中檢索特定裏程碑的問候語:

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.Web3Provider(window.ethereum);

const contractAddress = ‘0x…’;

const contractABI = [

"function getGreeting() view returns (string)"

];

const contract = new ethers.Contract(contractAddress, contractABI, provider);

async function displayGreeting() {

const greeting = await contract.getGreeting();

document.getElementById('greeting').innerText = greeting;

}

在KuCoin上開設帳戶,立即獲得高達700 USDT的保證金。

以KuCoin開始您的加密貨幣交易旅程,提前佔領優勢!

在KuCoin上放心交易!我們的平台優先考慮您的安全,爲您的數字資產提供一流的保護。

探索KuCoin龐大的加密貨幣世界!

立即註冊

Ethers.js的實際部署示例:

https://twitter.com/ronakpal1/status/1767071343345095092?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1767071343345095092%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b 846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解釋%2F

去中心化出版

媒體出版物還可以考慮去中心化發布,其中文章的一部分被發布到區塊鏈網路上。這有助於抵抗審查和確保內容的完整性。

以下是一個示例代碼,其中文章哈希作爲發布證明存儲在線上:

const { ethers } = require(‘ethers’);

const wallet = new ethers.Wallet(‘YOUR_PRIVATE_KEY’, provider);

const contentHash = ethers.utils.id(“Article content here”);

const tx = await wallet.sendTransaction({

to: '0xSomeStorageContractAddress',

data: contentHash // 假設合約接受並存儲此數據

});

console.log(“Transaction hash (proof of publication):”, tx.hash);

這只是媒體出版物的一些用例。但還有其他行業可以利用 ethers.js 的功能。這些包括:

  • 區塊鏈開發人員(預期)

  • 使用 DeFi 指標的金融分析師

  • 遊戲開發人員

  • 內容創作者

  • 供應鏈管理者

  • 等等。

Ethers.js 的實際應用

除了在 DeFi、NFT 和遊戲項目中有用之外,還有一些現有的 DApps 支持使用 Ethers.js。其中包括以下內容:

Uniswap:Ether.js 與 Uniswap 的內置智能合約進行交互,用於執行交易、增加流動性,甚至查詢流動性池統計數據。在這種情況下,DApp 開發人員計劃構建與 Uniswap 交互的工具,如交易機器人、投資組合管理工具等。

Aave:DApp 開發人員和其他感興趣的人可以、利用 Ether.js 的功能與 Aave 特定的智能合約進行交互。這樣,他們可以爲借貸資產、存入抵押品等準備好前端。

打破一些關於 Ethers.js 的謬論:

https://twitter.com/imashuttoshh/status/1765558806291894739?refsrc=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765558806291894739%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736 b846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解釋%2F

安全考慮因素

使用 Ethers.js 需要考慮一系列安全性考慮因素。以下是一些需要遵循的要點:

建議不要在應用程序的代碼庫中硬編碼私鑰。

每次與智能合約進行交互之前,都應先進行測試並對合約進行廣泛審計。

與智能合約進行交互時,使用“call”等安全模式進行只讀任務。

爲了優化 ethers.js 的使用,可以考慮請求批處理。這是一種可以批量處理讀取請求以最小化網路調用次數的方法。毫無疑問,這些優化技術可使應用程序具有高度可擴展性和成本效率。

以下是其工作原理的示例:

// 使用 Ethers.js 批處理合約調用的僞代碼(概念示例)

const contract = new ethers.Contract(address, abi, provider);

const [value1, value2, value3] = await Promise.all([

contract.viewFunction1(),

contract.viewFunction2(),

contract.viewFunction3()

]);

Ethers.js:通用工具

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

正如本指南所展示的,Ethers.js 是一款多功能工具。雖然我們已經簡要介紹了它的功能,但要完全理解 Ethers.js 的最佳方式是深入了解智能合約、JavaScript、集成開發環境(IDE)、去中心化應用(DApps)等領域。此外,加入以太坊和 Ethers 社區也會很有幫助。

聲明:

  1. 本文轉載自[beincrypto],原文標題《What Is Ethers.js? A Deep Dive Into Ethereum’s JavaScript Library》,著作權歸屬原作者Ananda Banerjee,如對轉載有異議,請聯系Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得復制、傳播或抄襲經翻譯文章。
Розпочати зараз
Зареєструйтеся та отримайте ваучер на
$100
!