搭建私链的目的:在区块链开发中可以使用公网主链,但会造成不必要的金钱浪费。在以太坊链上干任何事都需要消耗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)
来源:oschina
链接:https://my.oschina.net/u/4457320/blog/3169402