go-ethereum是以太坊的客户端之一,是一个基于Go语言的客户端。以太坊还有别的客户端包括C++,JavaScript,python,Java等,比较常用的就是Go语言实现的客户端geth (go-ethereum),其他常用的还有一个叫testrpc的工具, 它使用了Python客户端pyethereum。
1.打开Powershell,win10自带,win7版本需要去微软官方下载补丁,是一个类似于Python pip的包管理装置,并需要以管理员身份运行:
2.设置Get-ExecutionPolicy可用,PowerShell中输入:
set-ExecutionPolicy RemoteSigned
3.安装Chocolatey,这是一个第三方的包管理器,官方网址:https://chocolatey.org/
iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
4.环境准备,先安装Go语言等前置环境:
C:\Windows\system32> choco install git
C:\Windows\system32> choco install golang
C:\Windows\system32> choco install mingw
5.创建工作环境,及克隆源:
C:\Users\xxx> set "GOPATH=%USERPROFILE%"
C:\Users\xxx> set "Path=%USERPROFILE%\bin;%Path%"
C:\Users\xxx> setx GOPATH "%GOPATH%"
C:\Users\xxx> setx Path "%Path%"
C:\Users\xxx> mkdir src\github.com\ethereum
C:\Users\xxx> git clone https://github.com/ethereum/go-ethereum src\github.com\ethereum\go-ethereum
C:\Users\xxx> cd src\github.com\ethereum\go-ethereum
C:\Users\xxx> go get -u -v golang.org/x/net/context
6.安装geth:
C:\Users\xxx\src\github.com\ethereum\go-ethereum> go install -v ./...
PS:本人配置的时候,不知为何,配置完成后将我原先就有的Python环境完全移除了,也是莫名其妙,这里有Python环境的人要注意下。
以开发者的角度,介绍下基本用法:
1.首先,将自定义的创始区块放入
C:\Users\XXX:
目录下,创始区块必须是.json文件,文件名可自定,这里设置为piccgenesis.json,文件内容如下:
{
"nonce":"0x0000000000000042",
"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x4000",
"alloc": {},
"coinbase":"0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "PICC GenesisBlock",
"gasLimit":"0xffffffff"
}
2.初始化一条私有链:
geth --datadir "%cd%\chain" init piccgenesis.json
3.运行并进入该私有链的控制台:
geth --identity "PICCetherum" --rpc --rpccorsdomain "*" --datadir "%cd%\chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 95518 console
1.查询账户:
eth.accounts
2.创建账户,密码为“123456”:
personal.newAccount('123456')
3.账户赋值给变量:
user1 =eth.accounts[0]
4.查询账户余额:
eth.getBalance(user1)
5.显示当前区块:
eth.blockNumber
6.开始挖矿(默认第一个账户得到挖矿收益):
miner.start()
7.停止挖矿:
miner.stop()
8.解锁账户(获得账户使用权):
personal.unlockAccount(user1, "123456")
9.user1转账3以太币给user2:
eth.sendTransaction({from: user1, to: user2, value: web3.toWei(3,"ether")})