Linux下Geth的使用
Posted Nothing_doit
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下Geth的使用相关的知识,希望对你有一定的参考价值。
演示环境:
Linux version 3.10.0-693.el7.x86_64 (cat /proc/version-查看系统版本)
安装geth客户端(选择从源码编译的方式):
1.安装go语言开发环境
命令:
下载Go 1.9版本:curl -O https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
环境配置:移动压缩包到指定的目录,如:mv go1.9.linux-amd64.tar.gz /home/app
解压至当前目录:tar -zxvf go1.9.linux-amd64.tar.gz
检查go环境是否安装成功:
创建一个工作目录(存放go语言文件):mkdir /home/work
配置GOPATH环境变量:vim /etc/profile
go环境配置:
export GOROOT=/home/app/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
export GOPATH=/home/work
使配置文件生效:source /etc/profile
查看go语言版本:go version
进入工作目录:go run hello.go
hello.go 源码
package main
import "fmt"
func main()
fmt.Println("Hello,主人")
2.下载和编译Geth
安装c编译器:yum -y install gcc gcc-c++ kernel-devel
下载go-ethereum源码版本:git clone https://github.com/ethereum/go-ethereum
编译安装Geth:
cd go-ethereum/
make geth
查看Geth版本:build/bin/geth version
3.搭建测试链:
新建文件genesis.json
"config":
"chainId": 22,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
,
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x400",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000038",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"alloc" :
各个key的含义:百度/eth白皮书,这个可以参考:http://blog.csdn.net/jeffrey__zhou/article/details/63695639
初始化区块链,生成创世区块和初始状态:build/bin/geth --datadir /home/app/eth/path/to/datadir init /home/app/eth/genesis.json
启动节点:build/bin/geth --identity “TestNode” --rpc --rpcport “8545” --datadir /home/app/eth/path/to/datadir --port “30303”–nodiscover console
进入console命令行界面:
创建账户 personal.newAccount()
myAddress=“你刚刚创建的地址”
利用account的索引获取账户余额:eth.getBalance(eth.accounts[1])
使用eth作为单位展示余额:web3.fromWei(eth.getBalance(eth.accounts[1]),‘ether’)
查看账户余额单位wei(1eth=10的18次方wei):eth.getBalance(myAddress)
启动挖矿:miner.start()
停止挖矿:miner.stop()
控制挖一个块就停止挖矿:miner.start(1);admin.sleepBlocks(1);miner.stop();
console命令参考:http://blog.csdn.net/u013096666/article/details/72639906
http://blog.csdn.net/CHENYUFENG1991/article/details/53458175?locationNum=7&fps=1
4.部署智能合约
安装solc编译器(cent os 上尚未安装成功),使用的在线编译。
在线编译网址:https://ethereum.github.io/browser-solidity/
编译成功后,获取abi和code(只能合约的二进制码)
解锁账户:personal.unlockAccount(eth.accounts[0])
发送部署合约的交易:
myContract = eth.contract(abi)
contract = myContract.new(from:eth.accounts[0], data : code, gas:1000000)
查看当前待确认的交易:eth.getBlock(“pending”, true).transactions
启动挖矿:miner.start()
调用只能合约:contract.合约方法名.sendTransaction(参数,from:myAddress)
只想在本地查看返回结果:contract.合约方法名.call(参数)
以上是关于Linux下Geth的使用的主要内容,如果未能解决你的问题,请参考以下文章
geth sendTransaction 错误:gas * price + value 资金不足
来自 eth.coinbase 的 eth.sendTransaction 进行多次交易并减少 eth.coinbase 余额