一步步搭建本地以太坊链与RadSystems集成:展示链上数据与实时查询

引言

在区块链应用的开发过程中,如何高效地测试和展示链上的数据是每个开发者必须面临的挑战。无论是查询账户余额,还是展示区块信息,我们都需要一个可操作的开发环境。今天,我们将通过搭建本地以太坊链环境、使用 GraphQL 和 JSON-RPC 接口获取数据,并将这些数据实时展示在 RadSystems 中,帮助大家更好地理解如何从链上获取数据并进行展示。

1. 本地以太坊链的搭建与启动

1.1 启动本地链

首先,我们需要准备本地的以太坊节点,并开启 GraphQL 服务。我们使用 Geth(Go Ethereum)来启动本地链并启用 GraphQL 接口。

这里我们需要调用外部Geth Graphql,具体可见官网:

https://geth.ethereum.org/docs/interacting-with-geth/rpc/graphql

在命令行中,使用以下命令启动 Geth 服务:

geth --datadir "." --dev --dev.period 2 --http --http.api eth,web3,net --http.corsdomain "http://remix.ethereum.org" --password password.txt --http.port 8888 --graphql

此命令会启动一个开发模式的以太坊节点并启用 GraphQL 和 JSON-RPC 服务,端口设置为 8888。开发模式允许快速实验,但注意它会将数据存储在内存中,重启后会丢失数据。

为了方便启动,我们可以在本地链的文件位置中,新建一个start.bat文件,将启动命令写入即可双击启动。

注意在启动 Geth 节点时,不同版本的 Geth 可能会有不同的启动命令和配置。对于大多数 Geth 版本,你只需要在原先的启动命令中加上 --graphql 即可启用 GraphQL 接口。这样,你的节点就会同时提供 JSON-RPC 和 GraphQL 两种接口供外部调用。并且每个人指定的 HTTP 服务的端口号也可能是不一致的。

1.2 本地链调试

一旦启动节点,我们可以通过命令行与节点交互:

geth attach \\.\pipe\geth.ipc

此命令连接到 Geth 节点的 IPC 接口,我们可以使用以下命令查询账户信息和余额:

eth.accounts 
eth.getBalance(eth.accounts[0])

这样,你就可以确认节点已成功启动,并能够查询账户信息和账户余额。

如果本地链无效,可选择下载已经配置好的本地链

百度网盘链接: https://pan.baidu.com/s/1zhuzHt38Ev-UPAado9zJcQ,具体步骤如下:

  1. 解压文件,双击start-graphql.bat启动geth节点;
  2. 使用命令geth attach \\.\pipe\geth.ipc进入控制台;
  3. 测试获取账户信息:eth.accounts;测试获取余额:eth.getBalance(eth.accounts[0])。

2.如何查询区块交易信息

在本地链中查询区块交易信息前,首先需要确保已进行交易,因为只有在发生交易后,区块链上才会生成相关交易记录。以下是使用 Remix IDE 连接本地链并进行交易的步骤:

2.1 使用 Remix 连接本地链并部署合约

首先,您需要打开 Remix IDE,并使用 Custom - External Http Provider 连接到您本地链的端口(例如:端口 8888)。这将允许您与本地链进行交互,并部署您的智能合约。

  1. 打开 Remix 网站:https://remix.ethereum.org

  2. 在 Remix IDE 的左侧面板中,选择 Deploy & run transactions 插件。

  3. Environment 环境下拉菜单中选择 Custom - External Http Provider

  4. URL 输入框中,输入您的本地链 RPC 地址,例如:http://localhost:8888

  5. 配置完成后,您可以通过 Remix 部署合约,并进行相应的交易。

2.2 完成交易后开始查询区块信息

当您完成交易并希望查询区块中的交易记录时,可以使用 GraphQL 或 JSON-RPC 接口查询区块信息。

使用上述步骤进行交易后,区块链中的交易数据将成为查询的有效内容。可以使用 GraphQL 查询区块范围,获取交易记录(包括交易哈希、发送者、接收者以及转账金额等)。

2. 2.1配置 GraphQL 接口,启动 GraphQL 服务

本地链启动后,我们可以通过 http://localhost:8888/graphql访问 GraphQL 查询界面。

首先我们需要检查界面是否正常显示 GraphQL 查询工具。

正常显示即可根据:https://github.com/ConsenSys/ethql/wiki/Log-Query-Fields网址查询日志信息

通过 GraphQL,我们可以方便地查询指定区块的交易记录。

示例:

例如,查询用于获取指定区块范围内的交易信息。

查询区块号在 256260 和 256261 之间的交易记录:

query blockInfo {
  blocks(from:256260,to:256261) {
    number
    transactions {
      hash
      from {
        address
      }
      to {
        address
      }
      value
    }
  }
}

查询结果将包含交易哈希、发送方和接收方地址以及交易金额。

2.3 在 Postman 中测试 GraphQL

你还可以使用 Postman 来测试 GraphQL 查询。在 Postman 中配置如下请求:

  • 设置 HTTP 方法为 POST
  • URL 设置为 http://localhost:8888/graphql
  • 在 Body 中选择 raw 格式,数据类型为 JSON,并输入以下查询内容:
{ "query": "query { blocks(from: 256260, to: 256261) { number transactions { hash from { address } to { address } value } } }" }

点击 Send,检查返回的结果,确保包含区块号、交易信息和转账金额等数据。

2.4 使用 JSON-RPC 接口测试账户余额

设置 Postman 查询账户余额

通过 JSON-RPC 接口,我们也可以查询账户的余额。在 Postman 中设置以下请求:

  • 方法:POST
  • URL:http://localhost:8888
  • Body(请求体):
{ "jsonrpc": "2.0", "method": "eth_getBalance", "params": [ "0xYourEthereumAddress", "latest" ], "id": 1 }

"0xYourEthereumAddress" 替换为你的目标账户地址,"id": 1:用于标识请求的 ID通常可以是任意数字。点击 Send 后,你将获得该账户的余额,返回结果为十六进制表示的余额。

3. 在 RadSystems 中展示链上数据

3.1 页面布局与数据绑定

在 RadSystems 中创建一个新的页面布局,选择合适的模板(如 Blank PageDashboard),然后通过 DataComponent 组件展示从 GraphQL 查询到的数据。

  1. 新建一个自定义页面布局。
  2. 配置数据源为 GraphQL 接口,通过设置 DataComponent 组件展示查询的数据,如账户余额和交易记录。

3.2 配置数据源

确保页面的数据源设置正确,数据字段映射正确。例如,将从 GraphQL 查询中获取的余额、交易信息等字段绑定到组件中。

3.3 实时展示

一旦配置完成,RadSystems 页面就会实时展示链上的数据。你可以在页面中看到目标账户的余额、交易记录等信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值