以Windows系统搭建基于Ethereum(以太坊)的区块链开发环境(具体操作与截图)
以Windows系统搭建基于Ethereum(以太坊)的区块链开发环境(具体操作与截图)
区块链设计开发小组 2019/04/01
借鉴博客:https://blog.csdn.net/cuiran/article/details/79239393
环境搭建
访问https://geth.ethereum.org/downloads/ ,下载geth-windows-amd64-1.7.3-4bb3c89d.exe
下载完成后点击geth.exe安装。
配置go语言环境
可通过choco进行安装,可访问链接 https://chocolatey.org 进行安装choco 。
或以下步骤安装:
1.使用cmd.exe安装
运行一下命令:
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
运行后截图:
2.输入命令:Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
安装PowerShell。
若安装失败,则还可运行命令:choco upgrade chocolatey
对chocolatey进行升级。
3.升级完成后重新dos窗口执行如下命令:
C:\Windows\system32> choco install git
C:\Windows\system32> choco install golang
C:\Windows\system32> choco install mingw
截图如下:
安装完成后,设置环境变量。
下载go-ethereum
在F盘创建一个文件夹ethereum ,然后通过进入此目录执行
git clone https://github.com/ethereum/go-ethereum
cd go-ethereum
go get -u -v golang.org/x/net/context
go install -v
至此环境安装完毕。
自定义创世区块,创世区块写在json格式文件中,例如genesis.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": { }
}
进入上述创建的F盘ethereum文件夹中,执行以下指令:
geth –datadir data init genesis.json
上面的命令的主体是geth init,表示初始化区块链,命令可以带有选项和参数,其中–datadir选项后面跟一个目录名,这里为data,表示指定数据存放目录为data,genesis.json是init命令的参数。运行上面的命令,会读取genesis.json文件,根据其中的内容,将创世区块写入到区块链中。
启动私有链节点
geth –datadir “./” –nodiscover console 2>>geth.log
然后就能执行如下挖坑、交易等操作
> eth.accounts
[]
> personal.newAccount("123456")
"0xacc9150f4d8c5664bd98a51c3aca63f5b5938fd5"
> eth.accounts
["0xacc9150f4d8c5664bd98a51c3aca63f5b5938fd5"]
> miner.start()
null
> miner.stop()
true
> eth.accounts
["0xacc9150f4d8c5664bd98a51c3aca63f5b5938fd5"]
> eth.blockNumber
0
> personal.newAccount("12345")
"0xa6b519c11b19fd73d08262a8e964ccda3509c015"
> user1=eth.accounts[0]
"0xacc9150f4d8c5664bd98a51c3aca63f5b5938fd5"
> user2=eth.accounts[1]
"0xa6b519c11b19fd73d08262a8e964ccda3509c015"
> eth.getBalance(user1)
0
> eth.getBalance(user2)
0
> miner.start()
null
> miner.stop()
true
> eth.coinbase
"0xacc9150f4d8c5664bd98a51c3aca63f5b5938fd5"
> miner.setEtherbase(user1)
true
> eth.coinbase
"0xacc9150f4d8c5664bd98a51c3aca63f5b5938fd5"
> eth.getBalance(user1)