Ubuntu系统下以太坊Go语言搭建以及控制台基础命令的使用
官方github:https://github.com/ethereum/go-ethereum
Ubuntu安装说明
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
安装过程中如果出错请自行查询,安装完成后在你的节点上创建一个账户
geth account new
查看 geth 帮助
geth --help
搭建Geth(命令行客户端)
如果没有安装 git 请首先安装
sudo apt install git
转到你的目录
cd /usr/src
sudo mkdir mygit
cd mygit
Git克隆go-ethereum
sudo git clone https://github.com/ethereum/go-ethereum
构建geth需要安装Go和C编译器:
sudo apt-get install -y build-essential
安装golang开发环境
sudo apt-get install golang
最后,geth使用以下命令构建程序
进入目录
cd go-ethereum
sudo make geth
进入你的目录创建一个ethdev文件夹,并且附加权限
cd /usr/src
sudo mkdir ethdev
sudo chmod 777 ethdev/ -R
cd ethdev/
启动geth开发模式
geth --datadir "./" --rpc --rpcport 8545 --port 30303 --rpccorsdomain="*" -rpcapi eth,web3,personal,net --nodiscover console 2>>geth.log --dev --dev.period 1
datadir 这是你私链的地址 这里就是/usr/src/ethdev下面
rpc –启动rpc通信,可以进行智能合约的部署和调试
rpcport –rpc接口的端口号
port –网络监听端口,用于节点之间通信
rpcapi –设置rpc的范围,暂时开启eth,web3,personal足够
console –启动命令行模式
更多选项参考:https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options
以后也可以附加到geth控制台
ubuntu@VM-0-14-ubuntu:/$ cd /usr/src/ethdev/
ubuntu@VM-0-14-ubuntu:/usr/src/ethdev$ ll
total 656
drwxrwxrwx 4 root root 4096 Apr 6 23:35 ./
drwxr-xr-x 6 root root 4096 Apr 6 23:28 ../
drwx------ 4 ubuntu ubuntu 4096 Apr 6 23:35 geth/
srw------- 1 ubuntu ubuntu 0 Apr 6 23:35 geth.ipc=
-rw-rw-r-- 1 ubuntu ubuntu 647583 Apr 6 23:45 geth.log
drwx------ 2 ubuntu ubuntu 4096 Apr 6 23:35 keystore/
ubuntu@VM-0-14-ubuntu:/usr/src/ethdev$ geth attach geth.ipc
WARN [04-06|23:45:28.592] Sanitizing cache to Go's GC limits provided=1024 updated=328
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.23-stable-c9427004/linux-amd64/go1.10.4
coinbase: 0x63835863263e7d235464da7d8ab08eb6560772d8
at block: 869 (Sat, 06 Apr 2019 23:45:28 CST)
datadir: /usr/src/ethdev
modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 shh:1.0 txpool:1.0 web3:1.0
>
进入控制台,使用eth.getBalance查看默认账户余额,开发模式自动设置余额,自动开始挖矿
ubuntu@VM-0-14-ubuntu:/usr/src/ethdev$ geth --datadir "./" --rpc --rpcport 8545 --port 30303 --rpccorsdomain="*" -rpcapi eth,web3,personal,net --nodiscover console 2>>geth.log --dev --dev.period 1
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.23-stable-c9427004/linux-amd64/go1.10.4
coinbase: 0x63835863263e7d235464da7d8ab08eb6560772d8
at block: 1 (Sat, 06 Apr 2019 23:29:26 CST)
datadir: /usr/src/ethdev
modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 shh:1.0 txpool:1.0 web3:1.0
> eth.accounts //查询用户
["0x63835863263e7d235464da7d8ab08eb6560772d8"]
> user1=eth.accounts[0]
"0x63835863263e7d235464da7d8ab08eb6560772d8"
> user1
"0x63835863263e7d235464da7d8ab08eb6560772d8"
> eth.getBalance(user1) //查询余额
1.15792089237316195423570985008687907853269984665640564039457584007913129639927e+77
> eth.blockNumber
174
> eth.blockNumber
177
> eth.blockNumber
178
> personal.newAccount("输入密码"); //创建用户
0x3ea19c66a3c1f6e868ee275150361bc23d278704
> user2='0x3ea19c66a3c1f6e868ee275150361bc23d278704'
"0x3ea19c66a3c1f6e868ee275150361bc23d278704"
> personal.unlockAccount(user1,"密码"); //解锁用户,开发模式不需要解锁可以跳过
> eth.sendTransaction({from: eth.accounts[0],to: eth.accounts[0],value: web3.toWei(3,"ether")}); //发起交易,可以自己转给自己
"0x8793e03c3477e1f5bb56c7e7352af562b56e3c3f1c253cedcc45c5ee8497af22"
> eth.getTransaction("0x8793e03c3477e1f5bb56c7e7352af562b56e3c3f1c253cedcc45c5ee8497af22") //通过交易 Hash 查看交易
{
blockHash: "0x70f2ae4380f3fd7fb5722ddc3e9b8c00792eb91ac9efc4b4a34b1f639ce37045",
blockNumber: 1255,
from: "0x63835863263e7d235464da7d8ab08eb6560772d8",
gas: 90000,
gasPrice: 1,
hash: "0x8793e03c3477e1f5bb56c7e7352af562b56e3c3f1c253cedcc45c5ee8497af22",
input: "0x",
nonce: 0,
r: "0x8ad7b49d35bbc02418d57a7231445da4eecbc13478c081ab7099e6ab15c597f5",
s: "0x3c44c7bf251f4860b4d013f5ec041a38ad608cea655e9d130acc7cc6931a0fa0",
to: "0x63835863263e7d235464da7d8ab08eb6560772d8",
transactionIndex: 0,
v: "0xa96",
value: 3000000000000000000
}
>
注意:创建新账户,内存太小会直接退出控制台,查看geth.log有提示内存过小等错误信息
geth控制台更多命令参考:https://www.jianshu.com/p/9fa31e4cdf4d
到此geth客户端搭建以及简单命令使用的教程结束,但是控制台始终不方便Dapp开发,所以下一篇文章发布Web3与geth的交互,感谢阅读!