001 以太坊钱包开发-下载、编译 go-ethereum,搭建 eth 私有链

下载

编译

将 添加到环境变量中

然后执行 ,使配置生效。

检查是否安装成功

如果输出一些帮助提示命令,则说明安装成功。

搭建私有链

配置初始状态

要运行以太坊私有链,需要定义自己的创世区块,创世区块信息写在一个 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 值包含在上面交易返回值中)查看交易:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180724G1YKV500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券