A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不二晨 金牌黑马   /  2018-8-24 10:05  /  1165 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

【转】https://blog.csdn.net/koastal/article/details/78737543
实验机器

Ubuntu 16.04.3 LTS
1G内存
虚拟机环境

搭建环境安装Geth

https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu

sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum
  • 1
  • 2
  • 3
  • 4
初始化创世区块

https://github.com/ethereum/go-ethereum
chainId不能为0,否则交易会报错: insufficient funds for gas*price+value

cd homemkdir blockChain&& cd blockChainvim genesis.json//摘自官网
  • 1
  • 2
  • 3
  • 4
{  "config": {        "chainId": 14,        "homesteadBlock": 0,        "eip155Block": 0,        "eip158Block": 0    },  "alloc"      : {},  "coinbase"   : "0x0000000000000000000000000000000000000000",  "difficulty" : "0x05000",  "extraData"  : "",  "gasLimit"   : "0x2fefd8",  "nonce"      : "0x0000000000000042",  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",  "timestamp"  : "0x00"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

官方文档中的chainId为0,应该修改为非0的值,不然会导致 insufficient funds for gas * price + value
difficulty表示挖矿的难度值,官方文档中为0x20000,由于测试机器配置低,修改为0x05000。

geth --datadir /home/blockChain/data/00 init genesis.jsongeth --networkid 14 --nodiscover --datadir /home/blockChain/data/00 --rpc --rpcapi net,eth,web3,personal --rpcaddr ip_address console
  • 1
  • 2
/*--nodiscover 关闭p2p网络的自动发现,需要手动添加节点,这样有利于我们隐藏私有网络--datadir 区块链数据存储目录--networkid 网络标识,私有链取一个大于4的随意的值--rpc 启用ipc服务,默认端口号8545--rpcapi 表示可以通过ipc调用的对象--rpcaddr ipc监听地址,默认为127.0.0.1,只能本地访问console 打开一个可交互的javascript环境更多参数:https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
挖矿以及转账//创建coinbase账户personal.newAccount("coinbase")//查看账户列表eth.accounts//开始挖矿miner.start()//继续挖矿,不要停~
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

挖矿一段时间之后,再打开一个shell通过ipc连接到刚才的服务

geth attach ipc:/home/blockChain/data/00/geth.ipc

//查看coinbase账户余额baseAccount = eth.accounts[0]num = eth.getBalance(baseAccount)//换算单位为ethweb3.fromWei(num)//新建一个账户personal.newAccount("account")//查看新建账户的余额account1 = eth.accounts[1]eth.getBalance(account1)//从coinbase账户转给account1账户1ethpersonal.unlockAccount(baseAccount ,"coinbase")eth.sendTransaction({from : baseAccount, to : account1 , value : web3.toWei(1,"ether")})//观察挖矿shell的输出,等待交易打包完成后,查询account1的账户余额eth.getBalance(account1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

提交转账之后,观察挖矿shell的输出,会出现一条打包转账交易的记录,等待新的区块继续生成的时候,account1 账户的余额才会更新。

如果交易很久之后才能被确认,很有可能是服务器性能不足导致的。
通过mist客户端访问私链

从以太坊爱好者或者官网,下载mist客户端:http://ethfans.org/wikis/Mist-Mirror

安装完成之后,找到mist安装目录 C:\Program Files\Mist,双击mist启动。
然后打开cmd,并切换到mist目录,执行

mist --rpc http://ip_address:port
  • 1

其中,ip_address是私链的服务器地址,port是该节点运行的端口号,默认为8545。

如果不先运行一个mist程序,直接通过命令行连接私链的话,会报错 Couldn't start swarm process.


2 个回复

正序浏览
奈斯,加油加油
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马