本文主要是介绍ETH私链,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
更新于:2019-11-07
ETH私链
- 搭建私链
- 下载安装
- 准备创世区块配置文件
- 初始化创世区块
- 常用命令
- 启动geth
- 创建账户
- 查看地址列表
- 查询账户余额
- 挖矿
- 停止挖矿
- 解锁账户
- 转账
- 查询交易状态
- 处理交易
- 获取区块高度
- 查看区块
- 代币转账
- 运行JS控制台
- 部署合约
- 已存在的合约
- 编译合约(以PAX为例)
- 下载合约源码
- 安装环境
- node.js
- truffle
- 编译
- 配置
- truffle compile
- 部署
更多区块链信息可查看:https://blog.csdn.net/ted_sky/article/details/102932065
搭建私链
下载安装
https://gethstore.blob.core.windows.net/builds/geth-windows-amd64-1.8.27-4bcc0a37.exe
生成两个文件
准备创世区块配置文件
genesis.json
{"config": {"chainId": 22222,"homesteadBlock": 0,"eip155Block": 0,"eip158Block": 0},"coinbase" : "0x0000000000000000000000000000000000000000","difficulty" : "0x01","extraData" : "","gasLimit" : "0xffffffff","nonce" : "0x0000000000000042","mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000","parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000","timestamp" : "0x00","alloc": { }
}
初始化命令 | 作用 |
---|---|
mixhash | 与nonce配合用于挖矿,由上一个区块的一部分生成的hash |
nonce | nonce就是一个64位随机数,用于挖矿 |
difficulty | 设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度 |
alloc | 用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以 |
coinbase | 矿工的账号,随便填 |
timestamp | 设置创世块的时间戳 |
parentHash | 上一个区块的hash值,因为是创世块,所以这个值是0 |
extraData | 附加信息,随便填,可以填你的个性信息 |
gasLimit | 该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大 |
初始化创世区块
geth --datadir "D:\Tool\ETH\data" init "D:\Tool\ETH\genesis.json" console
如果在执行上面的命令报错,先删除原来的创世块geth removedb --datadir data
初始化成功后,会在数据目录 data 中生成 geth 和 keystore 两个文件夹,此时目录结构如下:
常用命令
启动geth
geth --datadir "D:\Tool\ETH\data" console --rpc
创建账户
personal.newAccount('Your Password')
> personal.newAccount("1")
"0x12a97a88c217890aea39918b989b7ae1027295ad"
查看地址列表
> eth.accounts
["0x12a97a88c217890aea39918b989b7ae1027295ad", "0x0dd6f494848afd8cb6e9bb29335edbc341cac7b9"]
查询账户余额
eth.getBalance(eth.accounts[0])
> eth.getBalance(eth.accounts[0])
0
挖矿
miner.start()
停止挖矿
miner.stop()
解锁账户
personal.unlockAccount(eth.accounts[0])
> personal.unlockAccount(eth.accounts[0])
Unlock account 0x12a97a88c217890aea39918b989b7ae1027295ad
Passphrase:
true
转账
eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value:1000})
查询交易状态
> txpool.status
{pending: 1
这篇关于ETH私链的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!