下载
编译
将 添加到环境变量中
然后执行 ,使配置生效。
检查是否安装成功
如果输出一些帮助提示命令,则说明安装成功。
搭建私有链
配置初始状态
要运行以太坊私有链,需要定义自己的创世区块,创世区块信息写在一个 JSON 格式的配置文件中。首先将下面的内容保存到一个 JSON 文件中,例如
genesis.json 的代码
其中,chainID 指定了独立的区块链网络 ID。网络 ID 在连接到其他节点的时候会用到,以太坊公网的网络 ID 是 1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络 ID。不同 ID 网络的节点无法相互连接。配置文件还对当前挖矿难度 difficulty、区块 Gas 消耗限制 gasLimit 等参数进行了设置。
初始化:写入创世区块
准备好创世区块配置文件后,需要初始化区块链,将上面的创世区块信息写入到区块链中。首先要新建一个目录用来存放区块链数据,假设新建的数据目录为 ~/privatechain/data0,genesis.json 保存在 ~/privatechain 中,此时目录结构应该是这样的:
执行初始化命令:
上面的命令的主体是 ,表示初始化区块链,命令可以带有选项和参数,其中 选项后面跟一个目录名,这里为 ,表示指定数据存放目录为 , 是 命令的参数。
运行上面的命令,会读取 文件,根据其中的内容,将创世区块写入到区块链中。如果看到以下的输出内容,说明初始化成功了。
初始化成功后,会在数据目录 data0 中生成 geth 和 keystore 两个文件夹,此时目录结构如下:
其中 中存放的是区块数据, 中存放的是账户数据。
启动私有链节点
上面命令的主体是 ,表示启动节点并进入交互式控制台,–datadir选项指定使用data0作为数据目录, 选项后面跟一个数字,这里是110,表示指定这个私有链的网络id为110。网络id在连接到其他节点的时候会用到,以太坊公网的网络id是1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络id。
运行上面的命令后,就启动了区块链节点并进入了该节点的控制台:
这是一个交互式的 JavaScript 执行环境,在这里面可以执行 JavaScript 代码,其中 > 是命令提示符。在这个环境里也内置了一些用来操作以太坊的 JavaScript 对象,可以直接使用这些对象。这些对象主要包括:
eth:包含一些跟操作区块链相关的方法;
net:包含一些查看p2p网络状态的方法;
admin:包含一些与管理节点相关的方法;
miner:包含启动&停止挖矿的一些方法;
personal:主要包含一些管理账户的方法;
txpool:包含一些查看交易内存池的方法;
web3:包含了以上对象,还包含一些单位换算的方法。
控制台操作
进入以太坊 Javascript Console 后,就可以使用里面的内置对象做一些操作,这些内置对象提供的功能很丰富,比如查看区块和交易、创建账户、挖矿、发送交易、部署智能合约等。
常用命令有:
personal.newAccount():创建账户;
personal.unlockAccount():解锁账户;
eth.accounts:枚举系统中的账户;
eth.getBalance():查看账户余额,返回值的单位是 Wei(Wei 是以太坊中最小货币面额单位,类似比特币中的聪,1 ether = 10^18 Wei);
eth.blockNumber:列出区块总数;
eth.getTransaction():获取交易;
eth.getBlock():获取区块;
miner.start():开始挖矿;
miner.stop():停止挖矿;
eth.coinbase:挖矿奖励的账户
web3.fromWei():Wei 换算成以太币;
web3.toWei():以太币换算成 Wei;
txpool.status:交易池中的状态;
admin.addPeer():连接到其他节点;
创建账户
输入 查询系统中的账户:
显示为 ,表示没有账户,接下来使用 来创建一个账户:
表示输入密码, 表示输入确认密码
再次创建一个账户
查看刚刚创建的用户:
账户默认会保存在数据目录的 文件夹中。可以查看其中的文件
查看账户余额
通过 可以查看账户余额
目前两个账户的以太币余额都是0,要使账户有余额,可以从其他账户转账过来,或者通过挖矿来获得以太币奖励。
启动&停止挖矿
通过 启动挖矿
其中 start 的参数表示挖矿使用的线程数。第一次启动挖矿会先生成挖矿所需的 DAG 文件,这个过程有点慢,等进度达到 100% 后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。
停止挖矿,在 console 中输入:
挖到一个区块会奖励5个以太币,挖矿所得的奖励会进入矿工的账户,这个账户叫做coinbase,默认情况下coinbase是本地账户中的第一个账户:
可以通过 将其他账户设置成 即可
重新启动挖矿,查看 是否可以获得以太币
查询账户余额:
发现账户0 和 账号1 都有以太币,说明 设置成功。
返回值的单位是wei,wei是以太币的最小单位,1个以太币=10的18次方个wei。要查看有多少个以太币,可以用web3.fromWei()将返回值换算成以太币:
发送交易
我们从账户0转移10个以太币到账户1,首先要解锁账户 0,才能发起交易:
发起交易
查询 账户1 的余额:
发现账户余额没有发生改变,此时交易已经提交到区块链,但还未被处理,这可以通过用 命令可以看到本地交易池中有一个待确认的交易:
其中有一条pending的交易,pending表示已提交但还未被处理的交易。
要使交易被处理,必须要挖矿。这里我们启动挖矿,然后等待挖到一个区块之后就停止挖矿:
发现账户收到了账户的钱,还多了5个以太币。其实多出的5个以太币是挖矿奖励。
查看交易和区块
查看当前区块总数:
通过区块号查看区块:
通过交易hash(hash 值包含在上面交易返回值中)查看交易:
领取专属 10元无门槛券
私享最新 技术干货