如何使用 Web3 以太坊 JavaScript API

概述以太坊仍然是领先的Web3开发区块链,许多其他区块链都依靠以太坊虚拟机追随以太坊的脚步。这意味着最流行的替代方案与EVM兼容。因此,最终的以太坊Web3API也是最好的EVMAPI。因此,对于希望快速轻松地创建dapps(去中心化应用程序)的开发人员来说,它是一个必不可少

<!--StartFragment-->

概述

以太坊仍然是领先的 Web3 开发区块链,许多其他区块链都依靠以太坊虚拟机追随以太坊的脚步。这意味着最流行的替代方案与 EVM 兼容。因此,最终的以太坊 Web3 API 也是最好的 EVM API。因此,对于希望快速轻松地创建 dapps(去中心化应用程序)的开发人员来说,它是一个必不可少的工具。此外,由于 JavaScript (JS) 仍然是 Web 开发的领先编程语言,Web3 以太坊 JavaScript API 往往是最受欢迎的选择。但是,正如您将在此处了解到的,您可以使用许多其他编程语言来掌握2023 年最好的以太坊 API。 

接下来,我们首先要确保您知道什么是以太坊网络。我们还将快速重复一下什么是 API。然后,我们将向您介绍Moralis——市场领先的企业级 Web3 API 提供商。在这里,您将了解是什么让这个工具箱如此通用和强大。最后但并非最不重要的是,我们将采用一种“ Web3 JS 教程”,您将在其中学习如何创建 NodeJS dapp 并获取有用的链上数据。 <!--EndFragment-->

<!--StartFragment-->

以太坊网络——它是什么?

您可能知道,以太坊是第一个完全可编程的区块链,于 2015 年 7 月上线。它由 Vitalik Buterin、Gavin Wood、Charles Hoskinson、Anthony Di Iorio 和 Joseph Lubin 创立。以太坊遵循比特币的领先和区块链的定义,是一个去中心化的数字公共账本。它验证并记录其网络上的交易。然而,由于其可编程性,它远远超出了比特币——领先的去中心化网络。因此,以太坊和 EVM 为 Web3 的基础增添了不少内容。后者是专注于所有权的 Web 新迭代。 <!--EndFragment-->

Screenshot.png <!--StartFragment-->

此外,正如“ ethereum.org ”所解释的那样,以太坊提供了对数字货币和数据友好型服务的开放访问。任何拥有互联网连接的人都可以使用和构建以太坊网络。此外,发送和接收加密资产的能力是以太坊Web3网络的重要组成部分。后者包括以太坊的原生代币(以太币或ETH)、同质化代币(例如ERC20代币)和非同质化代币(NFT)。

领先的可编程链的另一个关键核心方面是智能合约。这是许多 dapp 和所有加密货币的基础。此外,智能合约(Web3 合约)是链上软件。当满足某些预定义条件时,它们会触发特定的预定义操作。借助智能合约,Web3 可以消除无数中间服务。但是,借助最佳的以太坊 Web3 API,您无需部署智能合约即可创建各种 dapp。 

什么是 API?

API,即应用程序编程接口,促进软件之间的通信。本质上,它翻译指令以便相互理解。通过这样做,API 提供了可靠且一致的功能和请求供应。这还可以确保在安全且受控的开发环境中进行可靠的编程。

<!--EndFragment-->

Screenshot.png <!--StartFragment-->

整个互联网生态系统都依赖于 API。我们都在不断接触这些接口。每当我们使用任何设备(智能手机或电脑)时,它们都会连接到互联网并将信息传输到服务器或数据库(见上图)。然后,接收端必须解释数据,执行某些操作,并向我们的设备发送响应。接下来,我们的设备继续分析信息并以可读的方式呈现它。此外,API 促进了整个过程,以确保所涉及的软件能够成功通信。

<!--EndFragment-->

Screenshot.png <!--StartFragment-->

什么是以太坊 Web3 API?

在去中心化网络的背景下,以太坊 API 可确保区块链节点与去中心化应用程序 (dapps) 的后端脚本之间的通信。作为 Web3 开发人员,您可以通过使用可靠的以太坊 Web3 API 节省大量时间和资源。毕竟,后者使您能够使用现有的代码片段来获取各种链上数据。此外,合适的 Web3 以太坊 JavaScript API 允许您使用其他 JS 工具来创建任何类型的 dapp。 

考虑到这个定义,显然合适的以太坊 Web3 API 可以让区块链开发变得更加容易。通过消除重新发明轮子的需要,这样的 API 可以让你专注于 dapp 开发的其他方面。

<!--EndFragment--> Screenshot.png <!--StartFragment-->

介绍最佳以太坊 Web3 API

目前有多家以太坊 Web3 API 提供商。然而,Moralis 的 EVM API 的范围、可靠性和速度,加上 24/7 全球客户支持,使其成为 dapp 开发的首选工具。此外,Moralis 还使您能够弥合 Web2 和 Web3 之间的开发差距。得益于其跨平台互操作性,您可以利用您的传统技能和工具加入 Web3 革命。

<!--EndFragment--> Screenshot.png <!--StartFragment-->

此外,借助 Moralis 的 Web3 Ethereum JavaScript API,您的 JS 熟练程度足以创建杀手级 dapp。但是,您可以将许多其他编程语言、框架和平台与 Moralis 的 API 结合使用,包括 NodeJS、Python、C# 等! <!--EndFragment--> Screenshot.png <!--StartFragment-->

另一个重要方面是 Moralis 的跨链互操作性,它支持所有领先的区块链,并不断增加对新的知名区块链的支持。反过来,Moralis 的 API 服务于以太坊和许多其他区块链。此功能为您提供了许多选择,并为您的工作提供了未来保障,因为您永远不会被困在任何特定的链上。

<!--EndFragment--> Screenshot.png

<!--StartFragment-->

Moralis 的 Web3 API

以下是 Moralis 核心 Web3 API 的列表,这些 API 专注于以太坊和其他领先的 EVM 兼容链:

  • Web3 Auth API– Web3 身份验证是每个 dapp 的网关。 Moralis 使该功能的集成变得尽可能简单。 Web3 Auth API 与 OpenID、OAuth、DID 和其他标准兼容。

<!---->

  • 代币 API– 加密代币也是 Web3 的核心元素之一,尤其是在 DeFi 中。因此,如果您希望轻松构建 DeFi dapps,Moralis 的代币 API终极 ERC20 代币 API 是必备工具。除其他链上数据外,此工具还使您能够获取 ERC20 代币的余额。 

<!---->

  • NFT API – 就目前情况而言,NFT 将继续风靡一时。因此,能够轻松地围绕这些独特的加密资产构建各种 dapp 非常重要。借助 Moralis 的 NFT API,您可以轻松构建 NFT 市场、NFT 游戏、NFT 追踪器等。

<!---->

  • Streams API – 您是否一直在想是否要使用 Web3.js 或 ethers.js?使用 Streams API,您无需担心两个领先的 ETH JS 库中的任何一个。毕竟,Web3 Streams API 允许您轻松监听区块链。因此,您可以使用各种链上事件来触发 dapp 的特定功能。 <!--EndFragment--> <!--StartFragment-->

如何使用 Web3 以太坊 JavaScript API

要使用上面介绍的任何 API,您需要一个 Moralis 帐户。通过访问 Moralis 的主页,您可以免费开始:

<!--EndFragment--> Screenshot.png <!--StartFragment-->

另一个重要的难题是您的 Moralis Web3 API 密钥。幸运的是,一旦您准备好 Moralis 帐户,您就可以通过两个步骤获得它:

<!--EndFragment--> Screenshot.png <!--StartFragment-->

其他先决条件可能略有不同,具体取决于您决定使用哪个编程平台和框架进行 dapp 开发。但是,一般来说,您需要一个可靠的代码编辑器,例如 Visual Studio Code (VSC),并安装所需的依赖项,包括 Moralis。准备好 MetaMask 钱包、测试网络和可用的测试币也会派上用场,尤其是当您决定测试 dapp 或开始部署智能合约时。

<!--EndFragment--> <!--StartFragment-->

Web3 以太坊 JavaScript API 教程

在本教程中,我们将带您完成以下五个步骤:

  1. 创建 NodeJS 应用程序
  2. 导入并设置最新的 Moralis JS SDK
  3. 设置简单的 Express 服务器
  4. 整合 Moralis 服务
  5. 获取区块链数据  

<!--EndFragment-->

Screenshot.png <!--StartFragment-->

步骤 1:创建 NodeJS 应用程序

首先创建一个新文件夹并将其命名为“Simple-NodeJS”。然后,在 VSC 中打开该文件夹。接下来,使用您的终端并输入以下命令: <!--EndFragment-->

npm init

<!--StartFragment-->

接下来,你需要为项目命名。你可以按几次回车键,保留默认选项。这样,你将得到一个新的“package.json”文件,其中包含以下内容:

<!--EndFragment-->

{
  "name": "simple-nodejs-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

<!--StartFragment-->

第 2 步:导入并设置最新的 Moralis JS SDK

要完成此步骤,您只需执行一个命令即可安装“ moralis ”依赖项。但是,由于您将使用 Express 服务器,因此您可以使用以下命令一举两得:

<!--EndFragment-->

npm install moralis express

Screenshot.png <!--StartFragment-->

步骤3:设置简单的Express服务器

要完成今天的以太坊 Web3 API 教程的第三步,您需要创建一个“index.js”文件。然后,使用以下代码行填充该文件:

<!--EndFragment-->

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

<!--StartFragment--> 接下来返回“package.json”文件并添加“ start ”脚本: <!--EndFragment-->

"scripts": {
  "start": "node index.js"
},

<!--StartFragment--> 现在是时候使用以下命令运行 Express 服务器了: <!--EndFragment-->

npm run start

<!--StartFragment-->

运行上述命令后,您将能够访问“ http\://localhost:3000”并看到“Hello World!”消息。

<!--EndFragment--> <!--StartFragment-->

步骤 4:集成 Moralis 服务 

在集成 Moralis 时,您需要为上面创建的“index.js”文件配备正确的代码行和您的 Moralis Web3 API 密钥。更新后的“index.js”脚本应如下所示:

<!--EndFragment-->

const express = require('express')
// Import Moralis
const Moralis = require('moralis').default
// Import the EvmChain dataType
const { EvmChain } = require("@moralisweb3/common-evm-utils")

const app = express()
const port = 3000

// Add a variable for the API key, address, and chain
const MORALIS_API_KEY = "replace_me"
const address = "replace_me"
const chain = EvmChain.ETHEREUM

app.get('/', (req, res) => {
  res.send('Hello World!')
})

// Add this startServer function that initializes Moralis
const startServer = async () => {
  await Moralis.start({
    apiKey: MORALIS_API_KEY,
  })

  app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
  })
}

// Call startServer()
startServer()

<!--StartFragment-->

由于以太坊区块链是我们以太坊 Web3 API 教程的重点,因此上述脚本使用“ ETHEREUM ”。但是,通过将此参数替换为其他受支持的链,您可以定位另一个与 EVM 兼容的链。 <!--EndFragment--> Screenshot.png <!--StartFragment-->

步骤 5:获取区块链数据

最后,我们来到了今天教程的部分,您将学习如何实现上面介绍的 EVM API 端点。我们首先向您展示如何获取本机余额 - 对于以太坊来说,即 ETH。为此,Moralis 为您提供了“ getNativeBalance ”端点。您可以在“index.js”文件中使用此端点:

<!--EndFragment-->

async function getDemoData() {
  // Get native balance
  const nativeBalance = await Moralis.EvmApi.balance.getNativeBalance({
    address,
    chain,
  })

  // Format the native balance formatted in ether via the .ether getter
  const native = nativeBalance.result.balance.ether

  return { native }
}

app.get("/demo", async (req, res) => {
  try {
    // Get and return the crypto data
    const data = await getDemoData()
    res.status(200)
    res.json(data)
  } catch (error) {
    // Handle errors
    console.error(error)
    res.status(500)
    res.json({ error: error.message })
  }
})

Screenshot.png <!--StartFragment-->

我们的下一站是 ERC-20 余额。按照上面的例子,我们只需要使用不同的端点:“ getWalletTokenBalances ”。后者位于“ token ” EVM API 子组中。因此,这些是您需要添加到脚本中的代码行:

<!--EndFragment-->

// Get token balances
const tokenBalances = await Moralis.EvmApi.token.getWalletTokenBalances({
  address,
  chain,
})

// Format the balances to a readable output with the .display() method
const tokens = tokenBalances.result.map((token) => token.display())

// Add tokens to the output
return { native, tokens }
}

<!--StartFragment-->

最后但同样重要的一点是,让我们使用“ *nft ” EVM API 子组中的“ *getWalletNFTs ”端点来获取给定地址的前十个 NFT:

<!--EndFragment-->

// Get the NFTs
const nftsBalances = await Moralis.EvmApi.nft.getWalletNFTs({
  address,
  chain,
  limit: 10,
})

// Format the output to return name, amount, and metadata
const nfts = nftsBalances.result.map((nft) => ({
  name: nft.result.name,
  amount: nft.result.amount,
  metadata: nft.result.metadata,
}))

// Add nfts to the output
return { native, tokens, nfts }
}

<!--StartFragment-->

完成“index.js”示例脚本

为了避免任何错误,您可能需要复制我们上面使用的整个“index.js”文件。因此,以下是完整的示例脚本: <!--EndFragment-->

const express = require("express")
const Moralis = require("moralis").default
const { EvmChain } = require("@moralisweb3/evm-utils")

const app = express()
const port = 3000

const MORALIS_API_KEY = "replace_me"
const address = "0x9e8f0f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f"
const chain = EvmChain.ETHEREUM

async function getDemoData() {
  // Get native balance
  const nativeBalance = await Moralis.EvmApi.balance.getNativeBalance({
    address,
    chain,
  })

  // Format the native balance formatted in ether via the .ether getter
  const native = nativeBalance.result.balance.ether

  // Get token balances
  const tokenBalances = await Moralis.EvmApi.token.getWalletTokenBalances({
    address,
    chain,
  })

  // Format the balances to a readable output with the .display() method
  const tokens = tokenBalances.result.map((token) => token.display())

  // Get the NFTs
  const nftsBalances = await Moralis.EvmApi.nft.getWalletNFTs({
    address,
    chain,
    limit: 10,
  })

  // Format the output to return name, amount, and metadata
  const nfts = nftsBalances.result.map((nft) => ({
    name: nft.result.name,
    amount: nft.result.amount,
    metadata: nft.result.metadata,
  }))

  return { native, tokens, nfts }
}

app.get("/demo", async (req, res) => {
  try {

    // Get and return the crypto data
    const data = await getDemoData()
    res.status(200)
    res.json(data)
  } catch (error) {
    // Handle errors
    console.error(error)
    res.status(500)
    res.json({ error: error.message })
  }
})

const startServer = async () => {
  await Moralis.start({
    apiKey: MORALIS_API_KEY,
  })

  app.listen(port, () => {
    console.log(`Example app listening on port ${port}`)
  })
}

startServer()
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
加密女士
加密女士
无代码发币平台