Skip to content

开始使用Covalent API

概览

Covalent是一个托管式区块链数据解决方案,提供访问超过100个支持区块链的历史和当前链上数据,包括Moonbeam、Moonriver和Moonbase Alpha。Covalent维护每个支持区块链的完整档案副本,即区块链的余额、日志事件和NFT数据均可以从创世区块获取。这些数据可以通过以下方式获取:

  • Unified API - 使用熟悉的REST API将区块链数据合并到您的app中
  • Increment - 使用无代码分析来创建和嵌入自定义图表

本教程涵盖了使用Covalent API所需的所有内容,以及如何使用curl指令访问Moonbeam API端点、JavaScript和Python片段。

此处提供的信息仅供参考,由第三方提供。 Moonbeam文档网站(https://docs.moonbeam.network/)上列出和描述的任何项目与Moonbeam立场无关。

Unified API

Covalent的Unified API是一个功能强大且易于使用的REST API,它为所有区块链网络上的资产提供可见性。对应每一个网络它的请求和响应对象格式都是一致的。例如,一个用户想要获取同一个钱包地址在所有支持链上的不同Token余额,他只要通过改变请求URL中的唯一区块链名称或ID路径参数就能做到。Covalent的Unified API比JSON-RPC接口提供了更多的数据灵活性,后者通常仅限于特定区块上的数据查询。Covalent的Unified API也允许查询多个对象并批量导出数据。

Example API response in JSON 点击上述图片亲自尝试请求。

快速开始

如果您已熟悉Covalent并已经准备好开始操作,只需chainID和网络名称即可快速开始。

参数
chainName moonbeam-mainnet
chainID 1284
参数
chainName moonbeam-moonriver
chainID 1285
参数
chainName moonbeam-moonbase-alpha
chainID 1287

Unified API基础知识

  • Covalent API是RESTful,围绕网页端界面主要资源进行开发
  • 当前API版本为V1
  • 所有端点的默认返回形式为JSON
  • 所有请求均要验证,用户需要获取一个免费的API密钥来使用Covalent API
  • API调用的收费以credit计价,并根据特定调用而有所不同。创建API密钥后,您将获得大量免费credit开始操作(截至本文撰写时为100,000)。您可以在Increment数据面板上追踪这些免费credit的使用情况
  • API的root URL为https://api.covalenthq.com/v1/
  • 所有请求均通过HTTPS完成(通过纯HTTP的调用将失败)
  • Covalent API采用实时刷新方式,刷新率为30秒或2个区块,每批次为10分钟或40个区块

端点类型

Covalent API有三类端点:

  • A类 — A端点提供丰富的在所有区块链网络共通的数据,包括余额、交易和日志事件等
  • B类 — 专门为特定区块链上的特定协议而设置的端点,例如Uniswap就是仅适用于以太坊的端点,无法在其他区块链网络上使用
  • C类 — 由社区构建并维护,但由Covalent基础设施提供支持的端点

支持端点的示例

支持端点的完整列表请查看Covalent API参考文档。支持端点包括但不限于:

  • Balances — 获取某一地址的Token余额。这一函数将返回一个包含所有ERC-20和NFT Token余额(包括ERC-721和ERC-1155)的列表,以及这些Token目前的现货价格(若有)
  • Transactions — 返回某一地址的所有交易记录,包括解码的日志事件。这一函数将深度抓取区块链并返回索引到这一地址的所有交易
  • Transfers — 获取某一地址的ERC-20 Token转移记录以及历史Token价格(若有)
  • Token holders — 返回Token持有者列表,并标有页码
  • Log events (smart contract) — 返回特定智能合约发出的已解码日志事件列表,并标有页码
  • Log events (topic hash) — 返回已解码日志事件列表,并标有页码,各个事件主题的哈希值之间用逗号分开
  • Security (Token Approvals) — 返回按钱包资产的支出者分类的所有Token合约的批准列表

请求格式

端点 格式
Balances api.covalenthq.com/v1/1284/address/{ADDRESS}/balances_v2/
Transactions api.covalenthq.com/v1/1284/address/{ADDRESS}/transactions_v2/
Transfers api.covalenthq.com/v1/1284/address/{ADDRESS}/transfers_v2/
Token holders api.covalenthq.com/v1/1284/tokens/{CONTRACT_ADDRESS}/token_holders/
Log events (smart contract) api.covalenthq.com/v1/1284/events/address/{CONTRACT_ADDRESS}/
Log events (topic hash) api.covalenthq.com/v1/1284/events/topics/{TOPIC}/
Security (Token Approvals) api.covalenthq.com/v1/1284/approvals/{ADDRESS}/
端点 格式
Balances api.covalenthq.com/v1/1285/address/{ADDRESS}/balances_v2/
Transactions api.covalenthq.com/v1/1285/address/{ADDRESS}/transactions_v2/
Transfers api.covalenthq.com/v1/1285/address/{ADDRESS}/transfers_v2/
Token holders api.covalenthq.com/v1/1285/tokens/{CONTRACT_ADDRESS}/token_holders/
Log events (smart contract) api.covalenthq.com/v1/1285/events/address/{CONTRACT_ADDRESS}/
Log events (topic hash) api.covalenthq.com/v1/1285/events/topics/{TOPIC}/
Security (Token Approvals) api.covalenthq.com/v1/1285/approvals/{ADDRESS}/
端点 格式
Balances api.covalenthq.com/v1/1287/address/{ADDRESS}/balances_v2/
Transactions api.covalenthq.com/v1/1287/address/{ADDRESS}/transactions_v2/
Transfers api.covalenthq.com/v1/1287/address/{ADDRESS}/transfers_v2/
Token holders api.covalenthq.com/v1/1287/tokens/{CONTRACT_ADDRESS}/token_holders/
Log events (smart contract) api.covalenthq.com/v1/1287/events/address/{CONTRACT_ADDRESS}/
Log events (topic hash) api.covalenthq.com/v1/1287/events/topics/{TOPIC}/
Security (Token Approvals) api.covalenthq.com/v1/1287/approvals/{ADDRESS}/

API参数

参数
Response Formats JSON, CSV
Real-Time Data Latency 2 blocks
Batch Data Latency 30 minutes
API Free Tier Limit of 4 RPS
API Premium Tier Limit of 50 RPS
参数
Response Formats JSON, CSV
Real-Time Data Latency 2 blocks
Batch Data Latency 30 minutes
API Free Tier Limit of 4 RPS
API Premium Tier Limit of 50 RPS
参数
Response Formats JSON, CSV
Real-Time Data Latency 2 blocks
Batch Data Latency 30 minutes
API Free Tier Limit of 4 RPS
API Premium Tier Limit of 50 RPS

API参考资料

如何使用Unified API

首先,确保您有API密钥,以ckey_开头。拥有API密钥后,您能够访问任何支持的端点。要获取特定网络的信息,您需要提供chain ID。

查看先决条件

要开始使用Covalent API,您需要准备以下内容:

使用Curl

Token Holder端点是Covalent支持的端点之一,该端点返回特定Token的所有Token持有者的列表。在本示例中,您可以检查ERTH的Token持有者。Moonbase Alpha上的ERTH Token合约地址为:0x08B40414525687731C23F430CEBb424b332b3d35

将占位符替换成API密钥后,尝试在终端窗口中运行以下命令:

curl https://api.covalenthq.com/v1/1287/tokens/\
0x08B40414525687731C23F430CEBb424b332b3d35/token_holders/ \
-u { INSERT_YOUR_API_KEY }:

注意事项

API密钥后面的冒号:必不可少,否则系统会提示您输入密码(实则不需要)。

您的地址需要拥有一些ERTH Token,否则您的地址将不会出现在列表中。前往 Moonbase Alpha ERC-20水龙头,先铸造一些ERTH Token,然后再重复以上的Covalent API请求步骤。Covalent API会进行实时更新,现在您应该会在ERTH Token持有者名单中看到自己的地址。

使用Javascript

复制粘贴以下代码块到您选择的环境中,或是JSFiddle中。设置好API密钥后,将该地址设置为常用地址。请记住,我们在Moonbase Alpha网络中的chain ID是1287

// set your API key
const apiKey = 'INSERT_YOUR_API_KEY';

function getData() {
const address = '0xFEC4f9D5B322Aa834056E85946A32c35A3f5aDD8'; // example
const chainId = '1287'; // Moonbase Alpha TestNet chain ID
const url = new URL(
  `https://api.covalenthq.com/v1/${chainId}/address/${address}/balances_v2/`
);

url.search = new URLSearchParams({
  key: apiKey,
});

// use fetch API to get Covalent data
fetch(url)
  .then((resp) => resp.json())
  .then(function (data) {
  const result = data.data;

  console.log(result);
  return result;
  });
}

getData();
// set your API key
const apiKey = 'INSERT_YOUR_API_KEY';
const address = '0xFEC4f9D5B322Aa834056E85946A32c35A3f5aDD8'; // example
const chainId = '1287'; // Moonbase Alpha TestNet chain ID
const url = new URL(
  `https://api.covalenthq.com/v1/${chainId}/address/${address}/balances_v2/`
);

url.search = new URLSearchParams({
  key: apiKey,
});

async function getData() {
  const response = await fetch(url);
  const result = await response.json();
  console.log(result);
  return result;
}

getData();

balances端点返回所有ERC-20和NFT Token余额的列表,包括ERC-72和ERC-1155余额,及其当前的现货价格(若有)。

JavaScript Console Output

使用Python

Covalent没有官方的API包装器,用户需要使用Python请求库才能直接调用API。通过pip install requests从指令行中将请求安装到运行环境中,然后将其导入,并在您的代码中使用。使用HTTP verbs get方法从API中返回相关信息。复制粘贴以下代码块到您选择的环境并运行。输出内容将与以上截图相似,但形式可能有所不同,这取决于运行环境。

import requests


def fetch_wallet_balance(address):
    api_url = "https://api.covalenthq.com"
    endpoint = f"/v1/1287/address/{address}/balances_v2/"
    url = api_url + endpoint
    response = requests.get(url, auth=("INSERT_YOUR_API_KEY", ""))
    print(response.json())
    return response.json()


# Example address request
fetch_wallet_balance("0xFEC4f9D5B322Aa834056E85946A32c35A3f5aDD8")

注意事项

auth的第二个参数留空,因为不需要密码,只需要您的API密钥。

Increment

Increment是一个无代码图表与报告生成工具,它让用户能够使用数据模型来构建动态、个性化的图表。该工具直接将业务逻辑(包括覆盖范围、留存率和收入)编码到一个SQL编译器中,然后由该编译器输出有效的SQL结果。Increment能够将使用SQL创建的任何图表转换并嵌入进一个标准化且开源的维度(dimension)和度量(measure)集合,其被称为模型。

Example Increment chart 点击上述图片尝试Increment。

常见用例

Increment可用于:

Example network status increment 点击上图获取最新的Moonbeam网络活跃钱包数,交易笔数和Token数(可按日、周、月或年获取数据)。

Increment参考资料

本网站的所有信息由第三方提供,仅供参考之用。Moonbeam文档网站(https://docs.moonbeam.network/)上列出和描述的任何项目与Moonbeam立场无关。Moonbeam Foundation不保证网站信息的准确性、完整性或真实性。如使用或依赖本网站信息,需自行承担相关风险,Moonbeam Foundation不承担任何责任和义务。这些材料的所有陈述和/或意见由提供方个人或实体负责,与Moonbeam Foundation立场无关,概不构成任何投资建议。对于任何特定事项或情况,应寻求专业权威人士的建议。此处的信息可能会包含或链接至第三方提供的信息与/或第三方服务(包括任何第三方网站等)。这类链接网站不受Moonbeam Foundation控制。Moonbeam Foundation对此类链接网站的内容(包括此类链接网站上包含的任何信息或资料)概不负责也不认可。这些链接内容仅为方便访客而提供,Moonbeam Foundation对因您使用此信息或任何第三方网站或服务提供的信息而产生的所有责任概不负责。
Last update: January 25, 2024
| Created: July 8, 2021