【区块链】以太坊搭建私有链,教你如何挖矿(初级版)!

区块链最近一直很火,跟随区块链一起火的还有挖矿。。。

至于什么是区块链?什么是以太坊?什么是私有链?大家自行百度吧。说实话,我也不能说出个所以然来,但也随潮流来部署了一次挖矿!

至于挖矿,首先你要有台很好配置的电脑或者服务器。。。不然你会被卡死 卡死 死~~~

因为阿里云这些已经封禁了挖矿的服务器,所以这次我们还是拿虚拟机来做下教程

配置方面给了2核4G内存,起初我觉得这个配置对虚拟机系统已经很不错了。。。

我们需要用到的工具(软件)有两个

1:Ubuntu 16.04 64位 或者 Ubuntu 14 64位 这个百度下都能找到 下载iso文件

2:geth 也就是我们所说的以太坊官方客户端 

首先我们先把Ubuntu搭建起来,如果不知道什么是Ubuntu的,可以直接关闭这个网页。。。

不知道怎么搭建的可以百度,Ubuntn是桌面版的,比较方便用户操作。

要记住搭建Ubuntn时设置的密码,最简单就是设置123456,用过Macbook的应该都知道,我们在安装很多软件、或者设置一些属性都需要输入一个密码,没错Ubuntu也是这个原理,差不多。

进入Ubuntu系统后,先去配置语言成中文(不设置也是可以的,如果要设置的话,还是百度。。。)

在Ubuntu桌面右键,选择 Open Terminal 打开命令窗口

QQ截图20180126161952.png

你会看到这个界面,显示 leo@ubuntu  @前面是我在搭建系统时候设置的用户名

QQ截图20180126162316.png

这时候我们就开始安装部署以太坊了:

首先确保你的网络可以用

> sudo add-apt-repository -y ppa:ethereum/ethereum
> sudo apt-get update
> sudo apt-get install ethereum

执行第三个命令后 等待100%  安装完成后 输入

> geth version

显示出现这个界面,说明以太坊搭建成功

QQ截图20180126162953.png


接下来就是重点了,挖矿教程~~~

首先 配置文件    

我这里是在/home下面新建了一个文件夹privatechain。当然,这个目录地址和文件名你们可以随意

然后在这个文件夹里面创建一个json文件,也就是区块配置文件,命名genesis.json

配置内容如下

   {
        "config": {
            "chainId": 15,
            "homesteadBlock": 0,
            "eip155Block": 0,
            "eip158Block": 0
        },
        "difficulty": "10000",
        "gasLimit": "2100000",
        "alloc": {
            "7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
            "f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
        }
    }

不知道什么意思的可以先用着。。。其实我也不太懂。。。 这是官方给的一个示例文件

然后就是初始化区块

在这之前,我们先在privatechain文件夹下面创建一个新的文件夹data0,为了避免权限问题 可以 sudo chmod -R 777 这个文件夹

然后在 privatechain 文件夹下执行

> sudo geth --datadir data0 init genesis.json

geth init,表示初始化区块链,命令可以带有选项和参数,其中--datadir选项后面跟一个目录名,这里为data0,表示指定数据存放目录为data0,genesis.json是init命令的参数

执行后,你可能看到一大堆的INFO信息刷屏,没事,看最后一句,如果出现

successfully wrote genesis block and/or ....之类的,就说明初始化成功了

这时候可以去看下data0这个文件夹下面,多出了两个文件夹 geth和keystore

geth下面还有一个chaindata文件夹,是存放区块数据的

接着 启动私有链 

> sudo geth --datadir data0 --networkid 1108 console

geth console,表示启动节点并进入交互式控制台,--datadir选项指定使用data0作为数据目录,--networkid选项后面跟一个数字,这里是1108,表示指定这个私有链的网络id为1108。网络id在连接到其他节点的时候会用到,以太坊公网的网络id是1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络id

执行后出现这个界面

QQ截图20180126164916.png

当你看到Welcome to the Geth JavaScript console!

说明你现在已经进入到以太坊的交互式的Javascript执行环境

到这里就可以开始我们的挖矿之旅了

现在我们先创建一个账户,你可以理解为股票开户

跟着命令走

> eth.accounts
> personal.newAccount()

这时候会出现Passphrase:这么一个英文,不要怕、这个是让你设置账户的密码,你可以设置123456,但是建议你设置得稍微复杂一点(输入过程不会显示,设置完直接回车),然后会看到一个新的英文 Repeat passphrase:  意思就是让你确认刚才输入的密码,再重新输入一次就行了 回车

这个时候就会出现一串"0xc......................"很长的英语加数字的字符串 这个就是你创建成功的账户了!

然后在执行

> eth.accounts

就会看到你刚才的账户已经创建成功

现在你可以看下这个账户下有多少的余额(当然,肯定是0)

> eth.getBalance(eth.accounts[0])

重点来了——挖矿   

输入命令

> miner.start(1)

这个就是开始挖矿的命令

输入这个命令之前,还是先提醒下大家,电脑配置不好的不要盲目测试,不要把大量内存分配给虚拟机,不然你的电脑就会卡死 卡死 卡死

输入后,你就会看到一连串的命令在刷屏,不要怕、这个时候你的电脑已经开始在辛勤的挖矿了,至于能不能挖到算你的本事了!!!

怎么停止挖矿呢? 你可以复制这个命令 miner.stop() 然后粘贴到命令台,直接回车就行 ,中间可能被挖矿刷掉,没事,直接回车,看到返回true就可以了

然后你可以随时关注你的账户余额了

> eth.getBalance(eth.accounts[0])

当然,肯定还是0

哪有那么容易让你挖到,开玩笑。

可能你会发现挖矿还是挺简单?那继续看下面这些吧,你必须了解的一些以太坊挖矿:

以太坊客户端mist和geth加快区块同步速度的方法

李赫 2016.06.29 

以太坊已经发布了windows下的图形客户端mist和命令行客户端geth,但是中国区发现一个问题,新建一个以太坊账号,目前需要同步170万个区块,速度非常的慢,往往好几天都没有同步完。主要原因就是国内的节点过少,根据 Ethernodes 统计,国内以太坊节点数量发文时是143个,而且国内特殊的网络原因也会影响到国内用户同步区块数据。 

为了国内用户更加流畅地同步区块,EthFans 发起星火节点计划,组织国内对以太坊项目感兴趣的组织和个人自愿运行超级节点,星火节点的信息将被打包到node(节点)文件中,让社区成员自由下载,连接到更多超级节点,加快同步速度,具体操作步骤如下:


1、不管是mist客户端还是geth或eth等其他客户端,都共用一个应用配置,即存放数据的位置一样,默认的 datadir 根据不同的系统位置不同。

Mac: ~/Library/Ethereum

Linux: ~/.ethereum

Windows: %APPDATA%\Ethereum

2、找到如上的文件存放目录,将下面的内容存为static-nodes.json,放到以太坊datadir目录下,比如windows下,放到%APPDATA%\Ethereum\static-nodes.json,注意保存时,编码格式选择ANSI。

[

"enode://6427b7e7446bb05f22fe7ce9ea175ec05858953d75a5a6e4f99a6aec0779a8bd6276f1959a42fe5948acbe14bcd0652082dc546d3b37ae8f2aea41eba4eca43b@121.201.14.181:30303",

"enode://91922b12115c067005c574844c6bbdb114eb262f90b6355cec89e13b483c3e4669c6d63ec66b6e3ca7a3a462d28edb3c659e9fa05ed4c7234524e582a8816743@120.27.164.92:13333",

"enode://3dde41a994b3b99f938f75ddf6d48318c78ddd869c70b48d00b922190bb434fc5474f6250c143723f4387273d123e02f6a38f07d0311f240d2915f6140e09850@207.226.141.212:30303",

"enode://7ab8fa90b204f2146c00939b8474549c544caa3598a0894fa639a5cdbd992cbc6135fd776f8bcf97ae95fdaa3afbfa2d107fea71549119afd7ea57356b899be5@121.201.24.236:30303",

"enode://db81152a8296089b04a21ad9bf347df3ff0450ffc8215d9f50c400ccf8d18963118010cacf03c4b71981cf9cac5394438cab3039e98db4d2aae5859ab7d1793e@139.198.1.244:30303",

"enode://68dd1360f0a4ac362b41124692e31652ffe26f6f06a284ca11f3b514b3968594ac1f4320d1aa1ca343b06327c18a2e40eded74edfb3086e1baaa27ca24226b21@113.106.85.172:30303",

"enode://58f6b6908286cefe43c166cfc4fed033c750caa1bc3f6e1e1e1507752c0b91248addb3122f8557c5f8912e702285a160ab3a10203ae1eff3807eda25d6ed6478@45.113.71.186:30303",

"enode://87190a01c02cafb97e7f49672b4c3be2937cf79c3969e0b8e7b35cac28cebfbda52a13d56fd2113c726a1dd359c9476ccf7e60651439cef56e3a71039f6a4f5e@119.29.207.90:30303",

"enode://d1fdd05a62fd9544eeb455e4f4d4bd8bb574138d82d8f909f3041d0792e3401f8695133d39ad0a3aa5d217e3c5bed0511b531505a67b03607a909ae9096720d2@120.26.129.121:30303",

"enode://a1e9cf99eca94590ae776c8dd5c6c043a8c1f0375e9e391c9fb55133385bf453ac3d3fb3ead8e63415b2ef99d54a19e2a7bc830cd1fdbbb283818e3bcb0ea31e@182.254.209.254:30303",

"enode://562796b19d43d79dfb6160abd2d7bb78a2f2efd9501a0a767c00677e0fb3a4407235f813c3003682c2a421a58709c52f595827bc15708cc5f534f55d0f8d03ad@121.40.199.54:30303",

"enode://fa2c17dcc83a6e2825668210abf7480452de4b13d8bdea8f301c3b603701918bc4dade9e68d119d7a8214e90e7ea10a2782041c98951385d97bee73358fb08f4@120.26.124.58:30303",

"enode://0b331b27e2976d797aed1d1464ac483a7f262860334cb5737a01a0188da08d79226a6973adc5f2a2c1a20192b399161eee23a0d56ecf472cbe4058d010ecc89f@47.89.49.61:30303",

"enode://fd2a5d30e4f3917ee640876cc57d72a8bf5ecf049e9106c95e60cf306dd7a5dd68d1a295f3718af44a7083252686926d6e8a402f1abe6f805e10e7281967db28@121.201.29.82:30303",

"enode://0d1b9eed7afe2d5878d5d8a4c2066b600a3bcac2e5730586421af224e93a58cd03cac75bf0b2a62fd8049cd3692a085758cc1e407c8b2c94bb069814a5e8d0f0@209.9.106.245:30303"

]

3、以太坊客户端默认启动连接的节点数位11-13个,如果觉得不够,可以使用在启动时增加启动参数 –maxpeers 100命令,让连接启动节点数增加到100上限,当然,也会大量消耗你的硬盘和CPU。