区块浏览器和索引器


下一步是能够查看您的区块链中实际发生的情况。 一个简单的方法是使用 Blockscout (opens new window)

# 先决条件

# 存档模式

Blockscout 期望与以存档模式 (opens new window)运行的以太坊执行客户端进行交互。 如果您的 op-geth 是以完整模式运行的,您可以创建一个单独的存档节点。 要这样做,请按照添加节点的说明进行操作,但在启动 op-geth 的命令中替换为:

	--gcmode=full \
1

with

	--gcmode=archive \
1

# Docker

运行Blockscout最简单的方法是使用Docker。 下载并安装Docker引擎 (opens new window)

# 安装和配置

  1. 克隆 Blockscout 仓库。

    cd ~
    git clone https://github.com/blockscout/blockscout.git
    cd blockscout/docker-compose
    
    1
    2
    3
  2. 根据您所使用的Docker版本,可能会出现环境路径的问题。 运行以下命令来修复它:

    ln -s `pwd`/envs ..
    
    1
  3. 如果以存档模式运行的 op-geth 在不同的计算机上或端口不是8545,请编辑 docker-compose-no-build-geth.yml 文件,将 ETHEREUM_JSONRPC_HTTP_URL 设置为正确的URL。

  4. 启动 Blockscout

    docker compose -f docker-compose-no-build-geth.yml up
    
    1

# 使用方法

在docker容器启动后,浏览到 http://< 运行Blockscout的计算机 >:4000 查看用户界面。

您还可以使用API (opens new window)

# GraphQL

Blockscout的API支持在/graphiql下使用GraphQL (opens new window)。 例如,这个查询查看地址。

query {
  addresses(hashes:[
   "0xcB69A90Aa5311e0e9141a66212489bAfb48b9340", 
   "0xC2dfA7205088179A8644b9fDCecD6d9bED854Cfe"])
1
2
3
4

GraphQL查询从顶层实体(或实体)开始。 在这种情况下,我们的顶层查询 (opens new window)是针对多个地址的查询。

请注意,您只能查询已建立索引的字段。 例如,在这里我们查询了地址。 然而,我们无法查询contractCodefetchedCoinBalance

 {
    hash
    contractCode
    fetchedCoinBalance
1
2
3
4

上述字段是从地址表中获取的。

    transactions(first:5) {
1

我们还可以获取包含该地址的交易(无论是作为源地址还是目标地址)。 由于API不允许我们获取无限数量的交易,因此在这里我们只请求了前5个。

      edges {
        node {
1
2

因为这是一个 (opens new window),连接两种类型(例如地址和交易)的实体被称为边缘。 在每个边缘的另一端,有一个单独的节点,代表一个交易。

          hash
          fromAddressHash
          toAddressHash
          input
        }
1
2
3
4
5

这些是我们读取每个交易的字段。

      }
    }
  }
}
1
2
3
4

最后,关闭所有的括号。