以太坊环境搭建(Winodws版)1

话说在最前,区块链是P2P的,因此没有谁是主服务器,每个点都是平等的。

自己动手搭建以太坊开发环境,可能版本也比较多,总没有一个能成功到底的,所以自己写了一个。

参考文献:

https://blog.csdn.net/weixin_34402090/article/details/91700963

1、Geth安装

主要讲解Windows 环境下的Geth安装,下载Windows-Geth安装包直接安装即可:

https://geth.ethereum.org/downloads/

不知道为什么有个遮罩层,用F12,display=none去掉,就可以点击了

下载后双击安装,安装完成后Geth会自己配置环境变量,

如果没有设置成功,我安装确实没有设置成功,可以手动设置,path增加:D:\Program Files\Geth(安装的根路径)

在命令行中执行 geth version  查看到版本即安装成功,如下:

2、使用Geth创建以太坊私有链

1、新建创世块文件

    新建工作目录文件夹,例如:Gth,在此文件下新建创世块文件:genesis.json,内容如下:

{

"config": {

"chainId":4528989,

"homesteadBlock": 0,

"eip150Block": 0,

"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",

"eip155Block": 0,

"eip158Block": 0,

"byzantiumBlock": 0,

"constantinopleBlock": 0,

"petersburgBlock": 0,

"istanbulBlock": 0,

"ethash": {}

},

"nonce": "0x0",

"timestamp": "0x5ddf8f3e",

"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",

"gasLimit": "0x47b760",

"difficulty": "0x00002",

"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",

"coinbase": "0x0000000000000000000000000000000000000000",

"alloc": { }

},

"number": "0x0",

"gasUsed": "0x0",

"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"

}

chainId : 以太坊区块链网络Id,ethereum主链是1,私有链只用不要与主链冲突即可。

alloc : 预留账户,如下

  "alloc":{

   "0x0000000000000000000000000000000000000001":{"balance":"121312321"},

   "0x0000000000000000000000000000000000000002":{"balance":"121312321"},

  }

Coinbase: 旷工账户

Difficulty: 挖矿难度,0x400,这个是简单。

extraData:相当于备注

gasLimit:最小消耗gas

nonce : 64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊黄皮书中的要求

parentHash : 上一个区块的Hash值,因为是创世块,石头里蹦出来的,没有在它前面的,所以是0

  Timestamp : 时间戳

2、新建第一个账户

命令行cd到genesis.json所在目录,我为了方便,放在Geth目录下了

命令行执行初始化客户端:

初始化:

geth --datadir data0 init genesis.json

启动客户端:

geth --identity "TestNode1" --datadir "data0" --rpc --rpcapi "db,eth,net,web3,admin,personal" --rpcaddr "127.0.0.1" --ipcpath "data0\geth\geth.ipc" --rpcport "8486" --port "30304" --networkid "4528989"--allow-insecure-unlock console

没有error就是成功了

这里可能出现的错误要么就是datadir冲突,要么就是端口冲突,自己改改。

如果networkid没有和创世块一致,可能就没有连到本机私有链,最明显的问题就是转账是会提示余额不足

执行命令创建账户

// 新建账户,括号里是交易密码

> personal.newAccount("123456")

// 列出客户端上的账户

> eth.accounts

["0xc47420632c4ae1bc4d7954a24b804720ad02fcc0"]

// 显示账户余额

eth.getBalance(eth.accounts[0])

0

// 解锁

personal.unlockAccount(eth.accounts[0])

// 转账, 需要创建第2个账户才能交易

eth.sendTransaction({from:eth.accounts[0],to:"0x32bcf0bf330fdfca200d5def003bc5fcac646f90",value:"100"})

开启挖矿

// 开启挖矿

miner.start()

// 停止挖矿

miner.stop()

// 挖到后再查看余额,余额会增加

eth.getBalance(eth.accounts[0])

18000000000000

这样我们就创建好第一个账户了

3、新建第二个账户

我们再创建一个账户

// 初始化客户端

> geth --datadir data1 init genesis.json

// 

> geth --identity "TestNode2" --datadir "data1" --rpc --rpcapi "db,eth,net,web3,admin, personal" --rpcaddr "127.0.0.1" --ipcpath "data1\geth\geth.ipc" --rpcport "8487" --port "30305" --networkid "4528989" --allow-insecure-unlock console

// 新建账户,括号里是交易密码,密码可以相同

> personal.newAccount("123456")

// 解锁账号

> personal.unlockAccount(eth.accounts[0])

// 查看enode

admin.nodeInfo.enode

"enode://cb42a93bc5378357d30f3598942e43f7b7ec69716f42d7789f840e144d57f78c203c1a78d18ff9637fcb76b12da1639010dbfe2ce1c8b1f0d53b02d2a9432a6f@221.232.139.254:30305"

然后在第一个客户端上附加这个节点, encode就是之前记录的

> admin.addPeer("enode://cb42a93bc5378357d30f3598942e43f7b7ec69716f42d7789f840e144d57f78c203c1a78d18ff9637fcb76b12da1639010dbfe2ce1c8b1f0d5

3b02d2a9432a6f@221.232.139.254:30305")

true

此时,我们可以使用命令号转账了

//客户端2上输入eth.accounts查看账号id

> eth.accounts

["0x5e0bbf69fbcfbe730c6d1c972b541f97a549f5d0"]

//现在从第一个客户端账户向第2个客户端账户划点钱,to就是账号2的id,,这里的钱单位我不太确定

> eth.sendTransaction({from:eth.accounts[0],to:"0x5e0bbf69fbcfbe730c6d1c972b541f97a549f5d0",value:"100"})

转账后必须开启挖矿才能传输上去,双方都可以开起来挖矿

// 开启挖矿

miner.start()

// 停止挖矿

miner.stop()

// 显示余额

eth.getBalance(eth.accounts[0])

可以明显看到,少了100

这样我们就完成了2个客户端的交互与转账

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容