Skip to content

开始使用Covalent API

概览

Covalent通过统一的API为所有区块链网络上的资产提供完全的公开透明。简而言之,用户无需任何代码,就可以从各个区块链上获取详细的区块链交易数据。通过统一的Covalent API界面,用户可以创建全新的应用程序或者调整现有的应用程序,无需重新配置或维护基础设施。Covalent现已支持Moonbase Alpha,并且计划支持Moonbeam和Moonriver。

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

快速上手

如果您熟悉Covalent并希望学习如何直接进入任何基于Moonbeam的网络,您只需提供Chain ID:

1284
1285
1287

终端类型

Covalent API有两类终端:

  • A类 —— 可以在所有区块链网络中使用,能够返回详细区块链数据的终端,包括余额、交易和日志事件等
  • B类 —— 专门为特定区块链上的特定协议而设置的终端,例如Uniswap就是仅适用于以太坊的终端,无法在其他区块链网络上使用

Covalent API基础知识

  • Covalent API是RESTful,围绕网页端界面主要资源进行开发
  • 当前的Covalent API版本为版本1
  • 所有终端的默认返回形式为JSON
  • 所有请求均要求验证,用户需要有可用的API密钥才能使用Covalent API
  • Covalent API的根URL为https://api.covalenthq.com/v1/
  • 所有请求均通过HTTPS完成(若使用HTTP则请求失败)
  • Covalent API采用实时刷新方式,刷新率为30秒或2个区块,每批次为10分钟或40个区块

支持终端

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

请求格式

终端 格式
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}/

查看先决条件

所有请求均需进行验证。要想使用Covalent API,用户需要有可用的API密钥,此外还需要执行以下操作:

Covalent API使用测试

首先确保您已获得以“ckey_”开头的API密钥。Token Holders终端将返回某一特定代币所有持有者的列表,调用这个API需要执行以下操作:

  • 您的API密钥
  • Moonbase Alpha Chain ID: 1287 (hex: 0x507)
  • 智能合约(此示例中为ERTH代币):0x08B40414525687731C23F430CEBb424b332b3d35

使用Curl

将占位符替换为您的API密钥,然后在终端窗口运行以下指令。

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

注意事项

API密钥后的冒号:非常重要,如果没有这个冒号,您就会被要求输入密码(但其实不需要密码)。

Covalent API将返回ERTH代币持有者名单。如果您未持有ERTH代币,名单中将不会出现您的地址。访问Moonbase Alpha ERC-20代币任务中心,先铸造一些ERTH代币,然后再重复以上的Covalent API请求步骤。Covalent API会进行实时更新,现在您应该会在ERTH代币持有者名单中看到自己的地址。

Javascript示例

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

// set your API key
const apiKey = INSERT_YOUR_API_KEY;

function getData() {
const address = '0xFEC4f9D5B322Aa834056E85946A32c35A3f5aDD8'; //example
const chainId = '1287'; //Moonbeam Testnet (Moonbase Alpha 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'; //Moonbeam Testnet (Moonbase Alpha 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();

输出内容应与以下内容相似。余额终端将返回所有ERC-20和NFT代币余额(包括ERC-721和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
    r = requests.get(url, auth=(INSERT_YOUR_API_KEY,''))
    print(r.json())
    return(r.json())

#Example address request
fetch_wallet_balance('0xFEC4f9D5B322Aa834056E85946A32c35A3f5aDD8')

注意事项

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

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