搭建以太坊私有网络

Geth安装

MacOs:
    brew install ethereum
Ubuntu:
    sudo add-apt-repository -y ppa:ethereum/ethereum
    sudo apt-get update
    sudo apt-get install ethereum

    

创建临时私有链以创建初始账号

genesis.json

{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "coinbase" : "0x0000000000000000000000000000000000000000",
    "difficulty" : "0x40",
    "extraData" : "",
    "gasLimit" : "0xffffffff",
    "nonce" : "0x0000000000000042",
    "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp" : "0x00",
    "alloc": {
    }
}

上面的difficulty最好设置的比较低,否则需要很久才能挖出一个区块,不利于我们实践

//创建私有链
geth --datadir ./data/01 init ./genesis.json
//启动私有链及终端
geth --datadir ./data/01 --networkid 15 --rpc --rpcaddr 0.0.0.0 --rpcport 8100 --rpcapi personal,db,eth,net,web3,miner --nodiscover --verbosity 5 console

这样就进入了geth的终端,创建新账号
//下面输入的密码必须记住,它是你后面操作这个账号的钥匙
> personal.newAccount()
Passphrase:
Repeat passphrase:
"0x4d4ae95f8bffbf7d0246e102e6c18c2bd7608a7d"

创建带初始账号的私有链


//备份账号信息
cp data/01/keystore/UTC--2018-04-25T03-32-37.408413034Z--4d4ae95f8bffbf7d0246e102e6c18c2bd7608a7d /tmp/
//删除临时链
rm -rf data/d01

给前面创建的账号分配初始balance, 即将genesis修改为如下:
{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "coinbase" : "0x0000000000000000000000000000000000000000",
    "difficulty" : "0x40",
    "extraData" : "",
    "gasLimit" : "0xffffffff",
    "nonce" : "0x0000000000000042",
    "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp" : "0x00",
    "alloc": {
        "4d4ae95f8bffbf7d0246e102e6c18c2bd7608a7d": {
            "balance": "20000009800000000000000000000"
        }
    }
}
上面的绿色地址请改为你们前面生成的地址
geth --datadir ./data/01 init ./genesis-alloc.json
//恢复账号文件
cp /tmp/UTC--2018-04-25T03-32-37.408413034Z--4d4ae95f8bffbf7d0246e102e6c18c2bd7608a7d data/01/keystore/

查看账号及挖矿操作实践

//启动私有链及终端
geth --datadir ./data/01 --networkid 15 --rpc --rpcaddr 0.0.0.0 --rpcport 8100 --rpcapi personal,db,eth,net,web3,miner --nodiscover --verbosity 5 console
//看,已经恢复了那个账号
> eth.accounts
[ "0x4d4ae95f8bffbf7d0246e102e6c18c2bd7608a7d” ]
//接着看,这个账号的balance是不是20000009800000000000000000000
> eth.getBalance(eth.accounts[0])
2.00000098e+28
//接着可以挖矿
> miner.start()
//执行完大概1分钟,就可以看到挖出了几个块
> eth
{
  accounts: [ "0x4d4ae95f8bffbf7d0246e102e6c18c2bd7608a7d" ],
  blockNumber: 3,
  coinbase: "0x4d4ae95f8bffbf7d0246e102e6c18c2bd7608a7d" ,
  compile: {
    lll: function() ,
    serpent: function() ,
    solidity: function()
  },

后台运行模式

正常情况,我们是需要geth作为服务在后台运行的,以免终端被kill掉导致geth服务中断
nohup geth --datadir ./data/01 --networkid 15 --rpc --rpcaddr 0.0.0.0 --rpcport 8100 --rpcapi personal,db,eth,net,web3,miner --nodiscover --verbosity 5 &

然后操作可以通过geth attach实现
geth attach data/01/geth.ipc
> eth
{
  accounts: [ "0x4d4ae95f8bffbf7d0246e102e6c18c2bd7608a7d" ],
  blockNumber: 37 ,
  coinbase: "0x4d4ae95f8bffbf7d0246e102e6c18c2bd7608a7d" ,
  compile: {
然后就可以和前面一样执行geth终端命令了

/********************************
* 本文来自CSDN博主"爱踢门"
* 转载请标明出处 : http://blog.csdn.net/itleaks
******************************************/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值