有浏览过Besu在线文档的小伙伴该当都清楚AELE是Besu官方推举的以太浏览器,它开源且界面支持中文这对付中国地区开拓者算是相称友好了(连在线翻译的事情都可以省了),并且不用过多的配置可以说说是“开箱即用”级别的了推举各位利用。
接下来将分别讲述“不带token”和“带token”的两种实现办法。
或许有小伙伴会问,为什么还会有不带token的办理方案呢?基于平台或者系统层面Besu私有链(或同盟链)应“受限访问”才能担保接入安全,关于这点我紧张有以下3点考虑:

回归主题...因此这里实在可以直策应用Besu官方的办理方案 alethio/ethereum-lite-explorer:latest 来支配区块链浏览器。
还是老样子,先下载最新的镜像:
[root@node206 ~]# docker pull alethio/ethereum-lite-explorer:latestlatest: Pulling from alethio/ethereum-lite-explorercbdbe7a5bc2a: Pull complete 6ade829cd166: Pull complete 195a36ec5996: Pull complete db920b47b7ea: Pull complete e5d20234098f: Pull complete 999a52eef64d: Pull complete 6ac662ed9701: Pull complete bcc99b34b1bb: Pull complete 695b2acc9528: Pull complete Digest: sha256:1de833711ff9f3ed26987e701c1d12789bcfb1261ead87e1f088b8a0554f9944Status: Downloaded newer image for alethio/ethereum-lite-explorer:latestdocker.io/alethio/ethereum-lite-explorer:latest
接着就能够根据以下命令创建
docker run \--name blockchain_explorer \-p 80:80 \-e APP_NODE_URL="http://192.168.200.203:8644" \--restart always \-d alethio/ethereum-lite-explorer:latest
启动之后访问 http://192.168.200.206/ 就能够看到效果了,如下图所示
带token
那带token的时候要怎么做呢?为什么我按照网上说的做但是无法登录的呢?为什么alethio/ethereum-lite-explorer整合插件不堪利的呢?... 那是由于网上说的都只说了一半,哪怕是Besu官网。
首先这个时候我们就不能按照Besu官方说的那样直策应用alethio/ethereum-lite-explorer:latest版本了。为什么?由于Besu的带权限区块链,须要账号登录拿到JWT Token后方可操作,一样平常的AELE是不带Header访问的因此无法利用。怎么办呢?那就看一下AELE的Github文档是若何办理这个问题吧。
如上图所示,我们若要访问带权限的区块链系统须要增加一个验证身份的插件,在AELE处理eth-lite之前就须要先做身份验证。下方还给了个Besu插件的例子连接。如下图所示:
按上图所述,的确是存在针对besu私有链登录的插件
并且这里已经给出配置例子,在配置中的loginUrl参数项填写Orion集成后的Besu访问登录地址。
接着还要更新eth-lite的适配器项,将nodeUrl(节点地址)配置写成浏览器须要访问的节点地址。
末了给出了在Docker中运行的启动用脚本,这里紧张说的是让我们其余开一个config.json文件在docker run语句中进行挂载(-v),用这个新建config.json文件覆盖掉容器中的config.json文件。同时,我们也留神到这里让我们pull的docker镜像是adetante/explorer-besu-plugin:1.0.4,那事不宜迟就先pull镜像。
但是,docker报了一个缺点,如下所示:
Error response from daemon: manifest for adetante/explorer-besu-plugin:1.0.4 not found: manifest unknown: manifest unknown
这解释在docker hub中并不存在1.0.4这样的版本。
在docker hub中只有latest和1.0.3版本,在这里我们选择的是1.0.3版本。如果利用的是latest版本无论config.json若何修正都会报错,哪怕按照我以下将要解释的办法去改也会报错,但是1.0.3就不会(实践出真知,踩过的坑不想别人再踩了)。
这个时候可能就会有小伙伴会问,我都不知道config.json文件怎么写,那该当怎么修正才对呢?有聪明的小伙伴或许会遐想到,要不就回去刚刚ethereum-lite-explorer的Github看看解释文档中是怎么写的吧,毕竟现在的explorer-besu-plugin也只是在ethereum-lite-explorer上增加了besu插件而已,规则该当还是按照ethereum-lite-explorer的来的。于是他们就回去翻Github的文章......创造了这样的一段话
哦,原来config.json是从config.default.json演化过来的。那直接将config.default.json拷贝过去改名就可以了。
这种做法不能说不对,但是可以有更好的办法...最好的做法当然是直接从镜像中拷贝出来。先从docker hub中将1.0.3的镜像下载下来后先大略的运行一次。
docker run --name eth_explorer \-p 80:80 \-d adetante/explorer-besu-plugin:1.0.3
然后利用docker cp命令将镜像内的config.json文件拷贝到本地。
docker cp eth_explorer:/usr/share/nginx/html/config.json /home/yzh/Documents/docker_data/alethio/
在这个根本上进行loginUrl和nodeUrl的修正,如下图所示:
由于这个AELE是支配在我本机不是CentOS中因此ip为92.168.1.164。所有内容修正完成后就可以启动AELE镜像
docker run --name eth_explorer \-p 80:80 \-v /Users/yuanzhenhui/Documents/docker_data/alethio/config.json:/usr/share/nginx/html/config.json \-d adetante/explorer-besu-plugin:1.0.3
由于是映射80端口,以是直接通过localhost进行访问,如下图:
访问时会让输入用户名和密码,这里输入创建的用户名和密码即可。进入后就能够正常访问了,如下图:
为了验证区块链的可用性,我们利用Postman调用一下Besu区块上链API操作,轻微写个Java工具将字符串转换成16进制的hex编码(这里有点
如上图所示,得到的编码为e8bf99e698afe4b880e4b8aae6b58be8af95e79a84e4bca0e8be93e695b0e68dae之后通过JSON RPC接口发起了区块链的上链操作,如下图:
终极得到tx码返回。0x9ffdcf72cf9c17b640644f2793e40d7c76e25be8412e58eac8c051ce7566547c,我们将这段tx码拷贝到AELE中通过查询定位到区块内容。如下图:
如上图所示,AELE得知区块链刚刚发生了一次事务提交,在0x9ffdcf72cf9c17b640644f2793e40d7c76e25be8412e58eac8c051ce7566547c区块中存在数据(INPUT DATA)0xe8bf99e698afe4b880e4b8aae6b58be8af95e79a84e4bca0e8be93e695b0e68dae
至此数据上链大略验证完毕。
有小伙伴大概会问,为什么上图中显示交易GAS PRICE是0Gwei?大家还记得在《【区块链】HyperLedger Besu集群做事》一文中奖min-gas-price设置为0么,便是在那时候设置上链无需用度,这也是算PoA(威信证明)的一种特色吧,如下图: