以太坊如何使用CPU挖矿?
CPU挖掘
你可以用电脑的中央处理器(CPU)挖以太币。自从GPU矿工的效率高出两个数量级,它就不再盈利了。然而你可以用CPU挖掘在Morden测试网或私有链上挖矿,以便创建你测试合约和交易所需要的以太币, 而无需花费实时网络上的真实以太币。
注意:测试网以太币除了用于测试目的外没有其他价值。
使用geth
用geth启动以太坊节点时,并不是默认挖掘。在CPU挖掘模式开启,你会用—mine命令行选项。-minerthreads参数可以用于设置平行于挖掘线程的数量(默认为处理器核心的总数)。
geth --mine --minerthreads=4
你也可以在执行期间用控制台开启或停止CPU挖掘。miner.start取一个矿工线程数量的可选参数。
> miner.start(8)
true
> miner.stop()
true
注意挖掘真实以太币只有在你与网络同步时才有意义(由于你是在共识区块顶部挖矿)。因此以太区块链下载器/同步器会延迟挖掘直到同步完成,此后挖掘自动开始,除非你用miner.stop()取消挖矿。
为了赚取以太币,你必须有etherbase(或coinbase)地址集。这个etherbase默认为你的第一个账户。如果你没有etherbase地址,geth –mine就不会开启。
你可以在命令行重新设置etherbase:
geth --etherbase 1 --mine 2>> geth.log // 1 is index: second account by creation order OR
geth --etherbase '0xa4d8e9cae4d04b093aac82e6cd355b6b963fb7ff' --mine 2>> geth.log
你也可以在控制台重新设置etherbase:
miner.setEtherbase(eth.accounts[2])
注意你的etherbase不必是本地账户地址,只要是现存的就可以。
有一个给你挖掘过的区块添加额外数据的选项(只有32字节)。按照惯例,它被解释为统一码字符串,你可以设置短期虚荣标签。
miner.setExtra("ΞTHΞSPHΞΞ")
...
debug.printBlock(131805)
BLOCK(be465b020fdbedc4063756f0912b5a89bbb4735bd1d1df84363e05ade0195cb1): Size: 531.00 B TD: 643485290485 {
NoNonce: ee48752c3a0bfe3d85339451a5f3f411c21c8170353e450985e1faab0a9ac4cc
Header:
[
...
Coinbase: a4d8e9cae4d04b093aac82e6cd355b6b963fb7ff
Number: 131805
Extra: ΞTHΞSPHΞΞ
...
}
你可以用miner.hashrate检查散表率,结果用H/s表示(每秒散表操作)。
> miner.hashrate
712000
成功挖掘一些区块以后,你可以检查etherbase账户中的以太币余额。现在假定你的etherbase是个本地账户:
> eth.getBalance(eth.coinbase).toNumber();
'34698870000000'
为了花费你赚的gas来交易,你需要解锁账户。
> personal.unlockAccount(eth.coinbase)
Password
true
你可以在控制台上用以下代码片段,检查哪个区块被特殊的矿工(地址)挖掘过:
function minedBlocks(lastn, addr) {
addrs = [];
if (!addr) {
addr = eth.coinbase
}
limit = eth.blockNumber - lastn
for (i = eth.blockNumber; i >= limit; i--) {
if (eth.getBlock(i).miner == addr) {
addrs.push(i)
}
}
return addrs
}
// scans the last 1000 blocks and returns the blocknumbers of blocks mined by your coinbase
// (more precisely blocks the mining reward for which is sent to your coinbase).
minedBlocks(1000, eth.coinbase);
//[352708, 352655, 352559]
请注意,发现一个区块但是不能把它变成典型链会经常发生。这意味着你在当地把挖过的区块包括在内,当前的状态会显示归于你账户的挖矿奖励,然而不久后,会发现更好的链,我们转换到不包含你区块的链,因而不会记入任何挖矿奖励。因此很有可能矿工监控coinbase余额的时候会发现,它发生了相当程度的浮动。
nohup geth --nodiscover --identity "meiguo110" --rpc --rpccorsdomain "*" --datadir /data/ethbase --port "30303" --rpcapi "db,net,personal,web3,eth,debug" --networkid 314590 -rpcaddr 172.26.0.3 --rpcport 8545 --mine --minerthreads=1 &
以太坊如何使用CPU挖矿?的更多相关文章
- 以太坊挖矿源码:ethash算法
本文具体分析以太坊的共识算法之一:实现了POW的以太坊共识引擎ethash. 关键字:ethash,共识算法,pow,Dagger Hashimoto,ASIC,struct{},nonce,FNV ...
- 以太坊挖矿源码:clique算法
上文我们总结了以太坊最主要的共识算法:ethash算法,本文将重点分析以太坊的另一个共识算法:clique. 关键字:clique,共识算法,puppeth,以太坊地址原理,区块校验,认证结点,POA ...
- 区块链入门(2):搭建以太坊私有链(private network of ethereum),以及挖矿的操作..
在做一些测试工作的时候, 为了方便控制以及更快的进入真正的测试工作,可能需要搭建一个私有的以太坊网络. 而以太坊节点之间能够互相链接需要满足1)相同的协议版本2)相同的networkid,所以搭建私有 ...
- 以太坊难度炸弹是什么?极大抑制矿工继续以POW方式挖矿!
以太坊的“难度炸弹”(“Difficulty Bomb”)指的是,在挖掘算法中,使用以太币在区块链上对矿工进行奖励的难度越来越大.随着游戏变得更加复杂(矿工发现以太币难挣得多),在以太坊区块链上块的生 ...
- 区块链入门到实战(26)之以太坊(Ethereum) – 挖矿
以太坊(Ethereum)与其他公共区块链一样,使用工作量证明机制确保区块链网络正常运行. 矿工进行工作量证明计算,即挖矿,来选择区块,写入区块链,确认交易. 交易过程如下图所示: 从技术角度来看,以 ...
- 使用Geth 构建以太坊区块链并模拟挖矿过程
使用Geth 构建以太坊区块链并模拟挖矿过程 Go-ethereum 是以太坊官方的一个Golang 实现,我们可以使用Geth 工具来创建创世区块并启动区块链,使用Clef 实现以太坊钱包的功能,以 ...
- 使用 Go-Ethereum 1.7.2搭建以太坊私有链
目录 [toc] 1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球 ...
- 以太坊客户端Geth命令用法-参数详解
Geth在以太坊智能合约开发中最常用的工具(必备开发工具),一个多用途的命令行工具. 熟悉Geth可以让我们有更好的效率,大家可收藏起来作为Geth命令用法手册. 本文主要是对geth help的翻译 ...
- 如何从零开始学习区块链技术——推荐从以太坊开发DApp开始
很多人迷惑于区块链和以太坊,不知如何学习,本文简单说了一下学习的一些方法和资源. 一. 以太坊和区块链的关系 从区块链历史上来说,先诞生了比特币,当时并没有区块链这个技术和名词,然后业界从比特币中提取 ...
随机推荐
- 排查java进程cpu占用高的问题
一.思路 分两步,主要是找出占用cpu高的进程,再找出该进程内到底是哪个线程占用cpu高. 二.找出占用cpu高的进程 参考: https://blog.csdn.net/hfhwfw/article ...
- C# 数组转json
////////试题信息///////////////// // 已知 // h.d两个数组分别表示表头和内容 // 要求 // 编写函数一:rs2Array // 返回一个数组,每一项为一个对象. ...
- linux-Centos 7下bond与vlan技术的结合
服务器eno1与eno2作bonding,捆绑成bond0接口,服务器对端交换机端口,同属于301.302号vlan接口 vlan 301: 10.1.2.65/27 ...
- autolayout 高度自适应
https://lvwenhan.com/ios/449.html #import "ViewController.h" #import "MyTableViewCell ...
- JVM内存GC的骗局——JVM不抛出OOM但内存已经泄露
概述 在日常测试中,我们会去重点观察java的内存使用情况,比如:进程会抛出OOM异常,不再接收新的请求:响应时间在固定时间段内变长,超时或者不响应,CPU使用率时常像过山车一样等.有时候JVM还会发 ...
- python爬虫之真实世界中的网页解析
Request和Response Request是我们平常浏览网页,向网站所在的服务器发起请求,而服务器收到请求后,返回给我们的回应就是Response,这种行为就称为HTTP协议,也就是客户端(浏览 ...
- jquery <img> 图片懒加载 和 标签如果没有加载出图片或没有图片,就显示默认的图片
参考链接:http://www.jq22.com/jquery-info390 或压缩包下载地址:链接:http://pan.baidu.com/s/1hsj8ZWw 密码:4a7s 下面是没有 ...
- 一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。
小结: 1.一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0. https://baike.baidu.com/item/随机存取存储器/4099402?fr=a ...
- page 页 分页 分段
小结: 1. 页:磁盘和内存间传输数据的最小单位: MySQL: What is a page? https://stackoverflow.com/questions/4401910/mysql-w ...
- [daily][CentOS][SELinux]用key免登陆不成功,原来是SElinux在搞事情
为了提高效率,一般情况下,会把公钥放到sshd主机的 $HOME/.ssh/authorized_keys 文件内. 把私钥放在client的 $HOME/.ssh/ 下. 然后就可以免密登录了.然而 ...