0%

DevRecord-BlockScout区块链浏览器初步搭建

Pre:

预期效果:配置rpc,先用公开测试网的rpc,能够在区块链浏览器应用中看到数据后,再切成私有链的rpc,能看到自己模拟的交易记录。

简介:

BlockScout是一个Elixir应用程序,允许用户搜索交易,查看账户和余额,并验证Ethereum上的智能合约,包括分叉和侧链。
BlockScout为用户提供了一个全面的、易于使用的界面,以查看、确认和检查EVM(Ethereum虚拟机)区块链上的交易。BlockScout目前承载着POA网络、xDai Chain、Ethereum Classic、Sokol & Kovan测试网以及许多其他测试网、私有链和侧链。

部署安装:

主要参考Centos7下安装BlockScout,辅助参考BlockScout 开源浏览器安装部署指南

遇到报错则通过google解决😈😈😈

这次用的源码编译的部署方式,挺费时的,下次试试docker。

需要的依赖:

20220808150135

安装新版node:

安装教程里安装的node版本过低,编译时会报如下错,需要装较新版本的node

1
HookWebpackError: Only file and data URLs are supported by the default ESM loader

升级node,直接重装

1
wget https://nodejs.org/dist/v16.6.0/node-v16.6.0-linux-x64.tar.gz

升级erlang:

添加以下存储库

1
2
3
4
5
6
7
$ wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
$ rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
# 使用以下命令更新存储库列表:

$ yum update
# 使用以下命令安装erlang
$ yum install erlang

升级elixir:

https://github.com/elixir-lang/elixir/releases/download/v1.13.1/Precompiled.zip
也是重新安装

定义环境变量

以下是部署客户端时不可或缺的环境变量

环境变量 默认
BLOCKSCOUT_VERSION unknown
COIN POA
DB_HOST -
DB_PASSWORD -
DB_PORT -
DB_USERNAME -
ETHEREUM_JSONRPC_HTTP_URL http://localhost:8545
ETHEREUM_JSONRPC_TRACE_URL http://localhost:8545
ETHEREUM_JSONRPC_WS_URL ws://localhost:8546
ETHEREUM_JSONRPC_VARIANT parity
HEART_BEAT_TIMEOUT 30
HEART_COMMAND sudo systemctl restart explorer.service
LOGO /images/blockscout_logo.svg
NETWORK POA Network
SUBNETWORK Sokol Testnet
NETWORK_ICON _test_network_icon.html
LINK_TO_OTHER_EXPLORERS true
1
2
3
# 自定义环境变量
vim /etc/profile
source /etc/profile

修改全局变量debug_traceTransaction:

20220829113433
浏览器程序会非常频繁的请求rpc节点的debug_traceTransaction方法,一般的rpc节点不支持该路径的api,会报很多错,修改全局变量降低请求频率。

1
2
# 在/etc/profile加入变量
export ETHEREUM_JSONRPC_DEBUG_TRACE_TRANSACTION_TIMEOUT="600s"

然后需要重新编译,才能生效.

Manage debug_traceTransaction JSON RPC method timeout #5505

部署测试效果:

Question List:

  1. 用的rpchttps://rpc.ankr.com/eth_ropsten,不支持某些数据的获取,导致数据显示不全。问题不大,基本的流程是跑通了。

  2. 测试server的硬件配件太差了,VMware的centos7 配置过低,等换更好的硬件后再进行后续测试。

telnet一下4000端口,能通之后,再打开http://192.168.2.160:4000/

20220811173627

20220811173613

Others:

缺少txpool_content接口:

1
2
# 报错
2022-09-15T01:43:03.220 application=indexer fetcher=pending_transaction [error] %{code: -32601, message: "the method txpool_content does not exist/is not available"}
1
2
# geth启动项添加
--http --http.addr 0.0.0.0 --http.api "eth,net,web3,debug,txpool" --http.corsdomain '*'

系统读取文件限制:

1
2
# 报错
ENOSPC: System limit for number of file watchers reached

解决办法:

1
2
3
4
sysctl -w fs.inotify.max_user_watches=100000
# 新增文件
vim /etc/sysctl.d/10-user-watches.conf
fs.inotify.max_user_watches = 100000

Refs: Nodemon Error: System limit for number of file watchers reached

webpack报错:

1
2
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
致命错误:达到堆限制分配失败-JavaScript堆内存不足

解决办法:

1
2
3
4
# 全局安装  
npm install -g increase-memory-limit
# 项目执行
increase-memory-limit

Centos7设置代理:

临时设置(重连后失效)在命令行中直接输入下列命令即可

1
2
export http_proxy=http://192.168.2.50:7890/
export https_proxy=https://192.168.2.50:7890/

linux的centOS下如何删除代理

1
2
3
export -n http_proxy
export -n https_proxy
export -n no_proxy

Refs: