win7下以太坊环境搭建+私有链开发+集成开发环境搭建(未完待续)

一、win7下以太坊环境搭建

1.geth安装
geth是Go Ethereum项目的简称,是一款使用Go语言编写的以太坊客户端软件,使用者可以通过geth与以太坊网络进行交互,完成挖矿、编制合约等功能。geth安装步骤如下:
(geth的安装建议单独设立文件夹保存,比方我在D盘建立了一个Ethereum文件夹,下面继续设立geth文件夹,此后大部分与以太坊相关文件将在这些文件夹下操作)
①打开 https://geth.ethereum.org/downloads/ 下载Windows版本的geth客户端:
 
②打开下载保存目录,找到geth.exe文件,双击执行:
 
③geth安装完成(这一步几乎不会出现问题,如果遇到问题可搜索自行解决,不会很困难)
 
2.配置Go语言环境
以太坊的应用程序开发是基于Go语言,因此要在环境中配置Go语言环境。这里使用choco命令行安装,所以首先还需要额外安装choco:
①打开cmd.exe,复制以下指令:
 
②等待在线安装choco(chochlatey)
③安装结束后输入指令choco,得到下图安装成功界面:
 
以上是安装choco,作为Go语言安装的前期准备,接下来是Go的环境配置:
①打开cmd.exe,执行如下命令:
C:\Users\Administrator> choco install git 
C:\Users\Administrator> choco install golang 
C:\Users\Administrator> choco install mingw
(因为我的机器上已经安装过了,所以不作展示)
②这一步也很简单,一般不会出错,如果遇到问题也可自行解决。
 
3.Ethereum安装
①进入到自己建立的Ethereum文件夹下
②输入下条指令,使得在线将github.com下的ethereum文件复制到本地ethereum文件夹下创建新文件夹go-ethereum:
git clone https://github.com/ethereum/go-ethereum
③输入下条指令,进入本地go-ethereum文件夹:
cd go-ethereum
④输入下条指令,使用go get 安装golang安装包:
go get -u -v golang.org\x\net\context
【高潮来了!!!以下部分是其他教程中没有涉及到的问题(可能别人都没有遇到过这个问题,当然我希望你们都不会遇到T^T)】
这条语句输入之后出现如下错误提示:
......unrecognized import path "golang.org\x\net\context"......
为什么会出现这个问题?
Because your PC can not visit the true Internet.
 
所以接下来就解决一下如何使用普通方法完成安装:
①我们要明白,从技术上考虑,该指令无法执行是由于golang.org无法获取,所以只要能获取安装包就可以
②找到问题根源就好入手。从大神处获悉,其实golang在github上建立了一个镜像库,https://github.com/golang/net 即是 https://golang.org/x/net 的镜像库
也就是说,想要通过指令golang.org\完成的任务都可以改用https://github.com/golang/xxx.git来实现
③所以我们学以致用,输入指令:
go get https://github.com/golang/x/net/context.git
⑤但是我更悲剧的是,之前用的不是这样的方法修正的,所以走了许多弯路,中间依然多次提示路径错误,这就很崩溃了,但是还是要慢慢排查问题所在。。。于是我想,是不是需要一个一个包分开单独安装?比方说,golang有了,那么x是不是没有?于是我就执行:
https://github.com/golang/x.git
然后提示:
fatal:destination path 'x' already exists and is not an empty directory
也就是说人家已经存在了,于是我接着往下,找net.git,依然是同样的回复,然后我又往下找context.git,还是同样的结果:
 

这个时候我好像明白了什么。。。之前从网上找到的好多教程都用指令go get -u -v golang.org\x\net\context,但是对我来说不太管用,所以我使用指令go get https://github.com/golang/x/net/context.git代替之后,实际上已经安装成功了,只不过我用了前面的这个指令去验证的时候是验证失败的,所以我一直以为自己操作有误,但实际上现在已经成功了。
为了进一步证明我安装成功,我去尝试了后面的测试指令:
go install -v
发现和别人的结果是一模一样的,这下就真的彻底放心了~~~
 
以上就是以太坊环境的搭建,目的在于搭建以太坊私有链,以便后期DApp可以在私有链下运行。
 
二、以太坊私有链搭建
第一部分是后续所有操作的基础,接下来就是紧接着第一部分搭建私有链。
①在自己喜欢的方便的位置建立一个文件夹,例如D:/Ethereum/examples/shall_scripts/test/
②进入到该文件夹下,建立一个test.json文件
③打开test.json文件,并在其中填入以下内容:
 
{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "coinbase" : "0x0000000000000000000000000000000000000000",
    "difficulty" : "0x40000",
    "extraData" : "",
    "gasLimit" : "0xffffffff",
    "nonce" : "0x0000000000000042",
    "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp" : "0x00",
    "alloc": { }
}
 
【字段解释】
config  定义区块的配置,会影响共识协议,后面生成的区块均会按照创世区块的配置进行设定
(config里尤其尤其要注意的是chainid,表示区块链网络编号,当编号为1表示公有链,所以这里我们只要设定大于1的数即可,但有人提出大于10且没有解释,所以欢迎有朋友提出异议);
coinbase  与新区块同时生成的还有一条特殊的交易记录,就是本次获得新区块记账权的节点账号,即为coinbase;
difficulty  难度系数
extradata  额外数据
timestamp  时间戳
gasLimit  当前区块允许使用的最大算力
(因为我们建立的是私有链,所以不去考虑算力的问题,因此这里算力就设置成最大值);
nonce  随机数
mixhash  一个自行设定的哈希值,用来与nonce结合,从而证明挖矿成功
parentHash  前区块的哈希值
alloc  这里面应该填的是预先设定的账号和余额,但是我们这里不需要,所以设为空即可
 
④保存test.json文件
⑤打开cmd终端,进入test.json文件的存放位置 D:/Ethereum/examples/shall_scripts/test/
 
⑥输入以下指令,初始化test.json文件:
geth --datadir test_data init test.json
(该指令表示,对test.json文件进行初始化,初始化得到的相关数据存放在test_data文件夹中)

 

 

⑦显示如上图即表示初始化成功,如果出现fatal等字样,说明test.json文件里有个别语法错误或缺少必须的字段,可以自行上网查阅修正方法,很简单这里不予赘述。
接下来输入以下指令,开启以太坊私有链:
geth --datadir test_data --networkid 666 console
 
【注意!】
a. 该指令表示,开启私有链进入到以太坊控制台,此后进行的一系列操作日志日志都将记录在test_data文件夹里。所以,这里的test_data就是上面那条指令的test_data!千万不能再另设文件夹,我就是最初另外设定了新的文件夹导致后面挖矿失败。。。
b. networkid表示网络编号,是不是很熟悉,因为在test.json文件里也有提到,所以第二个需要额外注意的问题就是test.json文件里chainid后面跟着的编号和这里的编号必须保持一致!!!
 
⑧出现以下界面表示成功进入操作台,以上就是私有链的开启过程,接下来就是如何使用私有链进行一系列配置设定然后开始挖矿啦~
 
⑨输入指令:
eth.accounts
显示如下,表示当前节点中还没有账号,于是我们第一步就是创建账号
 
10. 输入指令:
personal.newAccount("123456")
括号里的数字是自行设定的密码,私有链根据你的密码进行运算得到唯一的一个账号地址,如下图:
 
 
11. 接下来我们再次尝试指令:
eth.accounts
发现出现了新生成的账号
12.  由于新账号是没有余额的,所以我们可以查看一下当前账号的余额情况:
eth.getBalance(eth.accounts[0])
eth.getBalance(eth.coinbase)
eth.getBalance("xxxxxxxxxxx")
三种指令都可以成功表示余额:
第一种类似于高级语言中的数组,因为现在只有一个账号,所以自然占据的是accounts[0]的位置,如果再生成新的账号就可以再更换括号里的数字;
第二种是coinbase代替,因为现在节点只拥有一个账号,所以该账号就自动默认为coinbase,当然后期想要更换也是可以的,大家可以自行查阅更换coinbase的指令;
第三种就是最直接的方法,引号里的就是前面生成的地址,填进去就可以。
指令查询之后发现余额为0,然后接下来就是挖矿挣钱了
 
13. 输入指令:
miner.start()
如果以上操作无误,那么挖矿是可以顺利执行的,会有如下界面显示:
 
14. 大概几秒之后可以输入以下指令停止挖矿:
miner.stop()
 
15. 然后我们此时再来查看一下余额:
eth.getBalance(eth.coinbase)
还能再顺便查看一下新生成的区块:
eth.blockNumber
 
挖矿结束,账号里有钱,就可以进行交易了,后面我再去学习学习,没什么毛病了再来记录~
 
 
虽然以太坊2014年才出现,但不得不说厉害优秀的人比比皆是,网上的方法很多也很详细,只不过可能由于我操作不当或是系统知识匮乏导致出现非常“奇特”的错误就只能靠自己去摸索,于是写下自己探索的经验,为后来人栽树乘凉,少走弯路。
 
如有不当,热烈欢迎指正

猜你喜欢

转载自www.cnblogs.com/shall1995/p/11578976.html