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的情況下不得復制、傳播或抄襲經翻譯文章。
Lancez-vous
Inscrivez-vous et obtenez un bon de
100$
!
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.