https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-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
初始化创世区块7 s: V( Q9 ~) q+ Y8 D
https://github.com/ethereum/go-ethereum' f2 _) B7 Z5 n
chainId不能为0,否则交易会报错: insufficient funds for gas*price+value
- cd home
- mkdir blockChain&& cd blockChain
- vim genesis.json
- //摘自官网
- {
- "config": {
- "chainId": 14,
- "homesteadBlock": 0,
- "eip155Block": 0,
- "eip158Block": 0
- },8 U0 P) K8 J9 T+ u0 s# f( H* Q
- "alloc" : {},
- "coinbase" : "0x0000000000000000000000000000000000000000",
- "difficulty" : "0x05000",
- "extraData" : "",' d* [, v1 g. ]. L
- "gasLimit" : "0x2fefd8",
- "nonce" : "0x0000000000000042",
- "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",# b; w3 y3 C' f+ J; R! g
- "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",8 x/ X$ J! y3 ]# o3 ^
- "timestamp" : "0x00"
- }
官方文档中的chainId为0,应该修改为非0的值,不然会导致 insufficient funds for gas * price + value' O0 H+ y; o; j
difficulty表示挖矿的难度值,官方文档中为0x20000,由于测试机器配置低,修改为0x05000。: _& |6 V, F- A- s6 i K0 A$ `
geth --datadir /home/blockChain/data/00 init genesis.json
geth --networkid 14 --nodiscover --datadir /home/blockChain/data/00 --rpc --rpcapi net,eth,web3,personal --rpcaddr ip_address console
/*
--nodiscover 关闭p2p网络的自动发现,需要手动添加节点,这样有利于我们隐藏私有网络
--datadir 区块链数据存储目录
--networkid 网络标识,私有链取一个大于4的随意的值
--rpc 启用ipc服务,默认端口号8545
--rpcapi 表示可以通过ipc调用的对象
--rpcaddr ipc监听地址,默认为127.0.0.1,只能本地访问
console 打开一个可交互的javascript环境6 I' _7 {; J& i) D# X) z
更多参数:https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options+ l5 O. e1 ?) S/ m
*/
挖矿以及转账" `" H* v. ]& e; ` q
//创建coinbase账户
personal.newAccount("coinbase")3 Y3 f' M9 }$ x+ t' c ~) C
//查看账户列表
eth.accounts% v- b/ f% {0 F, I- B" D- ~
//开始挖矿
miner.start()
//继续挖矿,不要停~
挖矿一段时间之后,再打开一个shell通过ipc连接到刚才的服务
geth attach ipc:/home/blockChain/data/00/geth.ipc( [5 M" i; x" ]: ^( Z( W! K8 a, v- G
//查看coinbase账户余额) L; F* k3 i$ S! x- O" _4 M% l" w
baseAccount = eth.accounts[0]$ h- N$ R6 h1 Z" t* ~9 `: e
num = eth.getBalance(baseAccount)
//换算单位为eth- z4 C9 ?7 P' B2 E N; b8 n
web3.fromWei(num)
//新建一个账户
personal.newAccount("account")1 |: V" n; ^4 o: {) X& l( s
//查看新建账户的余额
account1 = eth.accounts[1]
eth.getBalance(account1)5 z5 Q$ i% ]6 a1 l
//从coinbase账户转给account1账户1eth
personal.unlockAccount(baseAccount ,"coinbase")
eth.sendTransaction({from : baseAccount, to : account1 , value : web3.toWei(1,"ether")}); X& y+ W: z( a. S8 V
//观察挖矿shell的输出,等待交易打包完成后,查询account1的账户余额
eth.getBalance(account1)
提交转账之后,观察挖矿shell的输出,会出现一条打包转账交易的记录,等待新的区块继续生成的时候,account1 账户的余额才会更新。
如果交易很久之后才能被确认,很有可能是服务器性能不足导致的。. B; N2 K u ~: `0 x1 X
通过mist客户端访问私链
从以太坊爱好者或者官网,下载mist客户端:http://ethfans.org/wikis/Mist-Mirror
安装完成之后,找到mist安装目录 C:\Program Files\Mist,双击mist启动。' c, C- e. \2 [. ~/ }
然后打开cmd,并切换到mist目录,执行
mist --rpc http://ip_address:port- A* J% ~# B+ F+ l# R: z
其中,ip_address是私链的服务器地址,port是该节点运行的端口号,默认为8545。
如果不先运行一个mist程序,直接通过命令行连接私链的话,会报错 Couldn’t start swarm process.



