主页 > imtoken不让安装 > 以太坊区块链浏览器搭建

以太坊区块链浏览器搭建

imtoken不让安装 2023-05-03 06:24:10

以太坊区块链浏览器构建 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

如有问题,请加站长微信联系方式(非本文作者)

本文来自:简书