搭建以太坊私有链(Windows)

本小妞迷上赌 提交于 2020-02-27 01:54:04

搭建私链的目的:在区块链开发中可以使用公网主链,但会造成不必要的金钱浪费。在以太坊链上干任何事都需要消耗gas。

所以对于实验开发,一般都是在自己的私链上做实验。

Geth客户端下载

官网下载地址:https://ethereum.github.io/go-ethereum/downloads/

初始化创世区块genesis.json配置文件

{   
    //64位随机数,用于挖矿
    "nonce":"0x0000000000000042",
    
    //与nonce 共同用于挖矿
    "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    
    //挖矿难度
    "difficulty": "0x4000",
    
    //用来提前设置帐号的以太币数量,例:
    //"alloc": {
    //“0x0000000000000000000000000000000000000001”:{"balance":"10000000"},
    //"0x0000000000000000000000000000000000000002":{"balance":"20000000"}
    //},
    
    "alloc": {},
    
    //挖矿的账户,默认钱包地址,这里因为没有地址,所有全是0
    //后面运行geth后创建新账户时,如果geth 发现没有地址,会默认将第一个账户地址设置为矿工帐号
    "coinbase":"0x0000000000000000000000000000000000000000",
    
    //创世区块的时间戳
    "timestamp": "0x00",
    
    //上一个区块的Hash值,因为是创世块,前面没有,所以是0
    "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    
    //附加信息,随便填文本或不填也行
    "extraData": "0x00000000",
    
    //gas最高限制,以太坊运行交易,合约等消耗的gas最高限制,这里设置为最高
    "gasLimit":"0xffffffff",
    
    "config": {
		//区块链的ID,公有链为1 
		"chainId": 666,
		"homesteadBlock": 0,
		"eip155Block": 0,
		"eip158Block": 0
	}
}

初始化创世区块

为了不和主链的数据冲突,建议建立私链数据文件夹。我在E盘建了一个Eth文件夹作为以太坊实验工作区,并在里面创建了一个PrivChain文件夹作为这个私链的数据存放文件夹 。将genesis.json也放在了文件夹下。 打开Windows命令行

geth --datadir "E:\Eth\PrivChain" init "E:\Eth\genesis.json"

–datadir 选项用来指定私链存放的数据目录 init命令为创世命令,后面紧跟是创世配置文件路径

打开geth命令行

geth --datadir "E:\Eth\PrivChain" --dev console

创建账户

personal.newAccount('wyj')

括号里面的是密码 会返回账户地址

查询账户是否存在

eth.accounts

如果没有会显示 [],如果已经成功创建帐号则显示地址,如:["0x12255e04ecd9ba003ac8093f4733d534d9f59843"]

查询对应的账户地址 由于我们第一次创建账户,所以目前只有一个账户。可以用eth.accounts[0]提取第一个账户地址。

eth.accounts[0]

查询当前账户余额

eth.getBalance(帐号地址)

eth.getBalance(eth.accounts[0])

my=eth.accounts[0]
eth.getBalance(my)

开始挖矿

miner.start()

停止挖矿

miner.stop()

交易

需要先解锁账户

personal.unlockAccount(账户) 
//格式化币数量
amount = web3.toWei(5,'other')
//发起交易  返回交易hash值
eth.sendTransaction({from:发起交易账户地址,to:接收账户地址,value:货币数量}) 

查看当前区块链数量

eth.blockNumber

通过交易hash值可以查看交易信息

eth.getTransaction(交易hash值)

通过区块号查看区块

//这里查询创世块信息
eth.getBlock(0)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!