主页 > imtoken不让安装 > 以太坊区块链浏览器搭建
以太坊区块链浏览器搭建
以太坊区块链浏览器构建 SweetMelody555··2764 次点击·开始浏览
这是一篇创建于 的文章,其中的信息可能已经演变或更改。
第一次站长亲自招募Gopher >>>
1.安装 Git
sudo apt-get update
sudo apt-get install -y make g++ wget ca-certificates
2.安装 Nodejs
// 下载二进制源码包
wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.xz
// 指定压缩包解压到/usr/local/目录下
sudo tar xvf node-v8.11.4-linux-x64.tar.xz -C /usr/local/
// 将node.js设置为全局可用
sudo vim /etc/profile
export NODEJS_HOME="/usr/local/node-v8.11.4-linux-x64"
export PATH="$PATH:$NODEJS_HOME/bin"
// 重新加载配置文件
. /etc/profile
// 查看版本
node -v
npm -v
3.下载eth区块链浏览器源码
git clone https://github.com/etherparty/explorer
4.用 npm 安装 bower
// cd explorer
npm install -g bower -y
// 查看版本
bower -v
5.初始化凉亭
# 初始化 bower
bower init
# 注1问:命令报错 /usr/bin/env:"node" 没有那个文件或目录
# 注1解:sudo ln -s /usr/bin/nodejs /usr/bin/node
# 注2问:命令报错 bower esudo cannot be run with sudo
# 注2解:bower init --allow-root
6.安装凉亭
bower install angular --save-dev --allow-root
图像.png
7.安装 Geth
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install ethereum
8.安装 GoLang
// 下载二进制源码包
wget https://dl.google.com/go/go1.11.6.linux-amd64.tar.gz
// 指定压缩包解压到/usr/local/目录下
sudo tar -zxvf go1.11.6.linux-amd64.tar.gz -C /usr/local/
//设置环境变量
sudo vim /etc/profile
export GOROOT="/usr/local/go"
export GOPATH="$HOME/go"
export GOBIN="$HOME/go/bin"
export PATH="$PATH:$GOROOT/bin:$GOPATH/bin"
//使环境变量立即生效
. /etc/profile
//查看版本
go version
//查看配置环境
go env
8.构建私有以太坊链
注意:根目录在根目录下
作者的根目录
1.下载 go-ethereum
$ git clone https://github.com/ethereum/go-ethereum.git
@ >
2.编译
$ cd go-ethereum
$ make geth
3.将geth添加到环境变量vi ~/.bashrc
export GETH="$GOPATH/src/github.com/ethereum/go-ethereum/build"
export PATH="$PATH:$GETH/bin"
4. 然后执行 source ~/.bashrc 使配置生效。
5.检查是否安装成功
geth --help
如果输出一些帮助提示命令,说明安装成功。
要运行以太坊私有链,您需要定义自己的创世区块。创世块信息以 JSON 格式写入配置文件中。首先将以下内容保存到一个JSON文件中,例如genesis.json
$ mkdir ~/privatechain
$ cd privatechain
$ mkdir data0
$ vi genesis.json
genesis.json 代码
{
"config": {
"chainId": 10,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
其中,chainID指定了一个独立的区块链网络ID。连接到其他节点时使用网络 ID。以太坊公网的网络ID为1。为了不与公链网络冲突,运行私链节点时必须指定自己的网络ID。不同ID网络的节点不能相互连接。配置文件还设置了当前挖矿难度难度、区块gas消耗限制gasLimit等参数。
(2)初始化:写入创世块
创世块配置文件准备好后,需要初始化区块链,上面的创世块也需要初始化。区块信息被写入区块链。首先,必须创建一个新目录来存储区块链数据。假设新创建的数据目录是~/privatechain/data0,而genesis.json存储在~/privatechain中。这时候目录结构应该是这样的:
privatechain
├── data0
└── genesis.json
执行初始化命令:
geth --datadir data0 init genesis.json
上面的命令主体是geth init,意思是初始化区块链。该命令可以有选项和参数。 --datadir 选项后跟一个目录名,这里是data0,表示指定的数据存储目录是data0区块链浏览器下载哪个最好,genesis.json是init命令的参数。 .
运行上述命令,它会读取 genesis.json 文件,并根据内容将创世块写入区块链。如果看到如下输出,说明初始化成功
INFO [01-29|21:21:13] Maximum peer count ETH=25 LES=0 total=25
INFO [01-29|21:21:13] Allocated cache and file handles database=/Users/fujinliang/privatechain/data0/geth/chaindata cache=16 handles=16
INFO [01-29|21:21:13] Writing custom genesis block
INFO [01-29|21:21:13] Persisted trie from memory database nodes=0 size=0.00B time=358.89µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [01-29|21:21:13] Successfully wrote genesis state database=chaindata hash=5e1fc7…d790e0
INFO [01-29|21:21:13] Allocated cache and file handles database=/Users/fujinliang/privatechain/data0/geth/lightchaindata cache=16 handles=16
INFO [01-29|21:21:13] Writing custom genesis block
INFO [01-29|21:21:13] Persisted trie from memory database nodes=0 size=0.00B time=2.633µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [01-29|21:21:13] Successfully wrote genesis state database=lightchaindata hash=5e1fc7…d790e0
初始化成功后,会在数据目录data0中生成geth和keystore两个文件夹。目录结构如下:
privatechain
├── data0
│ ├── geth
│ │ ├── chaindata
│ │ │ ├── 000001.log
│ │ │ ├── CURRENT
│ │ │ ├── LOCK
│ │ │ ├── LOG
│ │ │ └── MANIFEST-000000
│ │ └── lightchaindata
│ │ ├── 000001.log
│ │ ├── CURRENT
│ │ ├── LOCK
│ │ ├── LOG
│ │ └── MANIFEST-000000
│ └── keystore
└── genesis.json
区块数据存储在geth/chaindata中,账户数据存储在keystore中。
(3)启动私链节点
作者是建立在私链上的,所以与读者的命令有一些细微的差异,作者会将不同的命令标记为红色
geth --networkid 110 --nodiscover --datadir "/root/privatechain/" --rpc --rpcapi "db,net,eth,web3,personal" --port 61916 --rpcport 8545 --rpccorsdomain '*' console
geth --networkid 110 --nodiscover --datadir "/root/privatechain/" --rpc --rpcapi "db,net,eth,web3,personal" --port 61916 -- rpcport 8545 --rpccorsdomain ' *' 控制台
阅读器无需任何其他操作即可正常启动geth节点。
上述命令的主体是geth控制台,表示节点启动并进入交互控制台,--datadir选项指定使用data0作为数据目录,后面是--networkid选项用一个数字,这里是110,表示指定私链的network id是110,这个network id连接到它的,其他节点使用的时候会用到。以太坊公网的network id为1,为了不与公链网络冲突,运行私链节点时必须指定自己的network id。
运行上述命令后,启动区块链节点,进入节点的控制台:
欢迎来到 Geth JavaScript 控制台!
实例:Geth/v1.8.10-unstable-ccc0debb/darwin-amd64/go1.10.2
模块:管理员:1.0 调试:1.0 eth:1.0 矿工:1.0 网络:1.0 个人:1.0 rpc:1.0 txpool:1.0 web3:1.0
关于账户操作
< @8.启动 npm
// cd expoerer
npm start
图像.png
至此,基本搭建完成,在浏览器中输入“localhost:8000”即可访问你搭建的区块链浏览器,如下图
图片
9.允许局域网中的其他主机访问
将连接的以太网节点的地址修改为远程节点地址
root@cc-virtual-machine:~# cd explorer
root@cc-virtual-machine:~/explorer# vim app/app.js
将var eth_node_url = 'http://localhost:8545'; 修改为 var eth_node_url = 'http://远程或本地以太坊节点ip:8545';
@ >
修改浏览器地址为本地IP地址
root@cc-virtual-machine:~# cd explorer
root@cc-virtual-machine:~/explorer# vim ./package.json
把"start": "http-server ./app -a localhost -p 8000 -c-1", 改为"start": "http-server
我一直使用虚拟机进行操作,虚拟机配置的ip是192.168.1.201,我改了远程或者本地以太坊节点ip到我自己的192.168.1.201,这样我在我的主机,也就是我自己的电脑上打开浏览器就可以访问了,如下图:
图像.png
文献中的其他操作:
块数据不显示的处理方法
作者可能会疑惑,为什么区块数据不显示?节点没有连接?不,事实是源码需要的js库文件是从ajax.googleapis.com访问的。如果没有(扇)和(强)软件区块链浏览器下载哪个最好,是无法显示区块数据的。
作者给出以下解决方案:
找到项目中使用“ajax.googleapis.com”的地方,使用sublime提供的搜索功能,如下图
图片
他(范)和(强)下载这两个文件的源代码
注意:如果没有fq资源,你也可以在网上找到这两个文件的源码,应该差不多吧。
把下载好的文件放到 explorer-master\app 目录下
修改脚本引用的src路径
此时读者只需刷新浏览器页面即可。
图片
可能的错误处理:
图像.png
如有问题,请加站长微信联系方式(非本文作者)
本文来自:简书