Hi Guest

More contents, please log on!

Bitmere.com 区块链技术 Content

Geth搭建以太坊私链环境

温室小书生室d
33 1 0
安装Geth
https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu
  1. sudo apt-get install software-properties-common
  2. sudo add-apt-repository -y ppa:ethereum/ethereum
  3. sudo apt-get update
  4. sudo apt-get install ethereum
Copy the Code

初始化创世区块
https://github.com/ethereum/go-ethereum
chainId不能为0,否则交易会报错: insufficient funds for gas*price+value
  1. cd home
  2. mkdir blockChain&& cd blockChain
  3. vim genesis.json
  4. //摘自官网
  5. {
  6.   "config": {
  7.         "chainId": 14,
  8.         "homesteadBlock": 0,
  9.         "eip155Block": 0,
  10.         "eip158Block": 0
  11.     },
  12.   "alloc"      : {},
  13.   "coinbase"   : "0x0000000000000000000000000000000000000000",
  14.   "difficulty" : "0x05000",
  15.   "extraData"  : "",
  16.   "gasLimit"   : "0x2fefd8",
  17.   "nonce"      : "0x0000000000000042",
  18.   "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  19.   "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  20.   "timestamp"  : "0x00"
  21. }
Copy the Code

官方文档中的chainId为0,应该修改为非0的值,不然会导致 insufficient funds for gas * price + value
difficulty表示挖矿的难度值,官方文档中为0x20000,由于测试机器配置低,修改为0x05000。
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环境
更多参数:https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options
*/
挖矿以及转账
//创建coinbase账户
personal.newAccount("coinbase")
//查看账户列表
eth.accounts
//开始挖矿
miner.start()
//继续挖矿,不要停~
挖矿一段时间之后,再打开一个shell通过ipc连接到刚才的服务
geth attach ipc:/home/blockChain/data/00/geth.ipc
//查看coinbase账户余额
baseAccount = eth.accounts[0]
num = eth.getBalance(baseAccount)
//换算单位为eth
web3.fromWei(num)
//新建一个账户
personal.newAccount("account")
//查看新建账户的余额
account1 = eth.accounts[1]
eth.getBalance(account1)
//从coinbase账户转给account1账户1eth
personal.unlockAccount(baseAccount ,"coinbase")
eth.sendTransaction({from : baseAccount, to : account1 , value : web3.toWei(1,"ether")})
//观察挖矿shell的输出,等待交易打包完成后,查询account1的账户余额
eth.getBalance(account1)
提交转账之后,观察挖矿shell的输出,会出现一条打包转账交易的记录,等待新的区块继续生成的时候,account1 账户的余额才会更新。

如果交易很久之后才能被确认,很有可能是服务器性能不足导致的。
通过mist客户端访问私链
从以太坊爱好者或者官网,下载mist客户端:http://ethfans.org/wikis/Mist-Mirror
安装完成之后,找到mist安装目录 C:\Program Files\Mist,双击mist启动。
然后打开cmd,并切换到mist目录,执行
mist --rpc http://ip_address:port
其中,ip_address是私链的服务器地址,port是该节点运行的端口号,默认为8545。
如果不先运行一个mist程序,直接通过命令行连接私链的话,会报错 Couldn’t start swarm process.
Tags: Geth
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
You have to log in before you can reply Login | 立即注册

Points Rules

Write the first review

温室小书生室d 初中生
  • Follow

    0

  • Following

    0

  • Articles

    13

Promoted