# 区块链浏览器 ## 概述 区块链浏览器提供了实时浏览、查询区块链信息和统计信息的功能。主要由前端(`Web`展示)、后端及数据库三部分组成。数据库采用的是`MySQL`,后端采用go语言开发,前端使用的是`react`框架。 ## 安装指南 ### 环境依赖 **docker** `docker`版本为`20.10.7`或以上 ```sh # 以centos7为例,其他安装方式见下方官网 $ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine $ sudo yum install -y yum-utils $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin ``` `docker-compose`版本为`1.29.2`或以上 ```sh # 以centos7为例,其他安装方式见下方官网 $ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose ``` 下载地址: - [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/) - [https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/) 若已安装,请通过命令查看版本: ```bash $ docker -v $ docker-compose -v ``` ### 浏览器部署 #### 前置环境 浏览器部署需要依赖一个`ChainMaker`运行环境。具体的`ChainMaker`环境安装部署请参考对应的文档[通过命令行体验链](../quickstart/通过命令行体验链.md)。 #### 代码下载 下载地址: https://git.chainmaker.org.cn/chainmaker/chainmaker-explorer 代码版本:v2.3.1 下载代码: ```bash $ git clone -b v2.3.1 --depth=1 https://git.chainmaker.org.cn/chainmaker/chainmaker-explorer.git ``` #### 启动运行 > 提示: > 若以前启动过浏览器则需要将以前数据清除, > 可以使用 `docker-compose -f docker-compose.yml down -v` ##### 启动docker ```shell cd chainmaker-explorer/docker # 常规启动(快速) docker-compose -f docker-compose.yml up -d # 增强evm参数解析启动(慢) # 此版本新增了合约参数解析功能,新增了一个查询evm函数签名服务镜像,将增加部署时长。 docker-compose -f docker-compose_evm.yml up -d ``` ##### 停止docker ```sh # 常规 docker-compose -f docker-compose.yml down # 增强 docker-compose -f docker-compose_evm.yml down ``` ##### 查看日志 ```sh $ docker logs -f --tail 200 docker_cm_explorer_server_1 ``` ##### 访问地址 ``` http://localhost:9996 ``` #### 配置调整 浏览器配置文件:`configs/config.yml`,它的配置内容包括四部分,以下是详细说明: ```yml web: address: 0.0.0.0 # 监听端口 port: 9997 # 是否跨域 cross_domain: true node: # 链和节点更新时间 update_time 30 # 节点断开连接时间和新增链时间 sync_time: 30 chain: # 是否展示多条链的列表控件 show_config: true # mysql配置信息 db: host: cm_explorer_db port: 3306 database: chainmaker_explorer_dev user: chainmaker passwd: Baec&chainmaker ``` Docker配置文件:`docker-composer.yml` ``` cm_explorer_server: image: chainmakerofficial/explorer-backend:v2.3.1 depends_on: - cm_explorer_db ports: - “9997:9997” # 使用docker-compose 启动时,如果环境变量有show_config,会优先使用环境变量里的config # show_config = 0 启动,show_config = 1 关闭 # environment: # show_config: 0 restart: always ``` - 如果您的浏览器是本地测试使用,则可设置`show_config = 0` ,此时任意访问用户都可在界面上管理订阅链,包括新增订阅链,取消订阅等。 - 如果您的浏览器是部署给C端用户使用,则可设置`show_config = 1` ,此时界面上将隐藏管理订阅链的入口。 ### 浏览器版本升级 1. 停止旧版浏览器:在旧版本项目`chainmaker-explorer/docker`目录下执行:`docker-compose down -v`,注意有个后缀-v,删除所有数据; 2. 按照上方教程启动新版浏览器; 3. 重新订阅所需要的链。 ## 使用手册 ### 初始化 - 初始化时,需要先订阅一条链,请确保所填写的信息和要订阅的链是一致的,并且用来订阅的节点的网络连接是通畅的。 - 如需订阅多条链,后续可在区块链管理处继续添加订阅。 - 参数说明 - 区块链ID:使用命令行创建的链默认链ID为chain1 - 节点ip和端口:ip为部署链的机器ip,port使用对应节点的rpc地址,一般默认为12301 - 组织ID:可以从每个节点对应的配置文件chainmaker.yml(`chainmaker-go/build/config/node1/chainmaker.yml`)获取 - TLS:请根据您的链的实际情况,选择是否开启TLS。目前通过官方开源文档教程上起的链,默认TLS(路径:`chainmaker-go/build/config/node1/chainmaker.yml对应的参数net.tls.enabled`)是开启的,默认的TLSHostname为chainmaker.org,如您自定义修改过,请按照实际情况填写。 - 组织ca证书:根据选择的组织id,从对应的节点中拿到对应组织下的ca.crt(eg:组织id为wx-org1.chainmaker.org的证书路径`chainmaker-go/build/config/node1/certs/ca/wx-org1.chainmaker.org/ca.crt`) - 用户证书、私钥:需要使用sign证书和私钥,一般默认使用admin.sign.crt和admin.sign.key(路径:`chainmaker-go/build/config/node1/certs/user/`) ### 首页 - 通过右上角可以切换跳转到已经订阅的其他链的浏览器页面,也可继续添加订阅链。 - 支持通过区块哈希/区块高度/交易id/合约名称直接搜索。 - 点击左下角统计当前链的相关数据,如区块高度,交易数等,点击将跳转到对应的区块列表页、交易列表页、合约列表页、组织列表页、节点列表页、账户列表页等。 - 首页将展示当前最新的区块信息,包含每个区块的区块高度、包含交易数、出块节点。 - 首页将展示当前最新的区块信息,包含每笔交易的交易id、交易发起者、所调用的合约以及交易发起时间。 - 首页将展示当前最新的区块信息,包含每个合约的合约名称、合约创建者、合约版本、合约部署时间。 ### 订阅区块链 - 支持同时订阅多条链,再订阅链时,请确保所填写的信息和要订阅的链是一致的,并且用来订阅的节点的网络连接是通畅的。 - 支持订阅Cert,和Public两种账户模式的链。 - 不允许同时订阅同一条链,也不允许同时订阅ChainID相同的链。 - 如果订阅后,所订阅的节点运行出现异常,如停机了,或者被踢出网络了,则浏览器也将无法获取信息,您可以通过重新订阅按钮,修改到正常运行的节点,恢复订阅。 - 支持删除订阅,删除后,将不会再获取该链的信息,且原来的已经订阅的数据都会被删除,如需重新获取,需要再次订阅。 ### 区块信息 - 此处展示区块列表,点击查看,可以查看该区块的详情。 - 支持查看某一区块的具体信息,包括区块哈希,读写集哈希,DAG信息,以及本区块内的交易信息。 ### 交易信息 - 此处展示交易列表,支持通过实际时间维度筛选交易,点击查看,可以查看该交易的详情。 - 支持查看某一条交易详情,包括交易的所属区块信息,交易发起人信息,交易所调用的合约执行情况。 ### 合约信息 - 此处展示合约列表,点击查看,可以查看该合约的详情。 - 如果安装了长安链Web3插件v1.5.2+,可以直接把合约订阅到插件内。 #### 合约详情 - 支持查看合约信息,包括合约的地址,合约的创建者信息,以及合约调用的历史交易记录。 - 支持查看合约调用过程中,产生的事件信息。 #### CMDFA合约详情 - 如果所订阅的合约符合长安链合约标准协议规范,类型为CMDFA则浏览器处会额外展示CMDFA内的合约资产的流转记录。 #### CMNFA合约详情 - 如果所订阅的合约符合长安链合约标准协议规范,类型为CMNFA则浏览器处会额外展示CMNFA内的合约资产的流转记录。 - 以及可以查看合约内的数字藏品资产详情。 - 注意,相关数字藏品的metadata信息必须符合长安链合约标准规范否则将解析失败。具体如下: ```json { "author":"凌风出品", "orgName":"北京美好景象图片有限公司", "name":"Lionel Messi", "description":"利昂内尔·安德烈斯·“利奥”·梅西·库奇蒂尼,简称梅西(西班牙语:Lionel Messi),生于阿根廷圣菲省罗萨里奥,现正效力于法甲俱乐部巴黎圣日耳曼,同时担任阿根廷国家足球队队长,司职边锋、前锋及前腰。目前他共获得7座金球奖、6次世界足球先生及6座欧洲金靴奖。", "image":"https://www.strikers.auction/images/cards/000.png", "seriesHash":"5fabfb28760f946a233b58e99bfac43f3c53b19afa41d26ea75a3a58cbfc1491" } ``` - 请注意metadata必须是一段标准的json,且字段名称需与上述例子保持一致,否则将无法解析到对应的数据。其中 - 作品URL为该NFT图片资源存放的地址, - 作品哈希为该图片对应的sha256哈希值,通过将资源哈希值上链进行存证,确保就算是存储在中心化云服务的NFT也不可被篡改。 ### 组织信息 - 此处展示参与该区块链的组织信息。 - 因public模式的链没有组织概念,故而该模式下不展示组织信息模块。 ### 节点信息 - 此处展示参与该区块链的节点信息。 ### 链账户信息 - 此处展示该区块链目前已经发送过或者接收过交易的用户信息。 - 无论是证书账号还是公钥账户都有其对应的链账户地址。