主页 > imtoken钱包华为手机安装不了 > 王晓明对区块链和以太坊的思考
王晓明对区块链和以太坊的思考
以太坊串口(19):如何使用CPU挖矿?
2016 年 7 月 15 日
CPU挖矿
您可以使用计算机的中央处理单元 (CPU) 开采以太币。由于 GPU 矿工的效率提高了两个数量级,因此不再有利可图。但是,您可以在 Morden 测试网或私有链上使用 CPU 挖矿来创建测试合约和交易所所需的以太币,而无需在实时网络上花费真实的以太币。
注意:Testnet Ether 除了用于测试目的之外没有任何价值(参见 Testnet)。
使用 geth
使用 geth 启动以太坊节点时,挖矿不是默认设置。要启用 CPU 挖掘模式,您将使用 --mine 命令行选项。-minerthreads 参数可用于设置并行挖掘线程的数量(默认为处理器内核总数)。
1
geth --mine --minerthreads=4
您还可以在执行期间使用控制台启动或停止 CPU 挖掘。miner.start 采用矿工线程数的可选参数。
1 2 3 4
> miner.start(8)
true
> miner.stop()
true
请注意,仅当您与网络同步时,挖掘真实以太才有意义(因为您在共识块之上进行挖掘)。因此,以太坊区块链下载器/同步器将延迟挖掘直到同步完成,之后挖掘自动开始,除非您使用 miner.stop() 取消挖掘。
为了赚取以太币,您必须设置一个 etherbase(或 coinbase)地址。此 etherbase 默认为您的第一个帐户。如果您没有 etherbase 地址,则 geth --mine 将无法启动。
您可以在命令行重置 etherbase:
1 2
geth --etherbase 1 --mine 2>> geth.log // 1 is index: second account by creation order OR
geth --etherbase '0xa4d8e9cae4d04b093aac82e6cd355b6b963fb7ff' --mine 2>> geth.log
您还可以在控制台中重置 etherbase:
1
miner.setEtherbase(eth.accounts[2])
请注意,您的 etherbase 不必是本地帐户地址,只要它存在即可。
可以选择将额外数据添加到您的挖掘块(仅 32 个字节)。按照惯例,它被解释为 Unicode 字符串,您可以设置短期的虚荣标签。
1 2 3 4 5 6 7 8 9 10 11 12 13
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(每秒算力操作数)表示。
1 2
> miner.hashrate
712000
成功挖出部分区块后,您可以查看您的 etherbase 账户中的以太币余额。现在假设您的 etherbase 是一个本地帐户:
1 2
> eth.getBalance(eth.coinbase).toNumber();
'34698870000000'
为了将您赚取的汽油用于交易,您需要解锁您的帐户。
1 2 3
> personal.unlockAccount(eth.coinbase)
Password
true
您可以在控制台上使用以下代码段来检查特定矿工(地址)开采了哪个区块:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
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余额时,很可能会发现它已经出现了相当大的波动。
在下一篇文章中,我们将介绍《以太坊串口(20):如何使用GPU挖矿?》)
感谢 Azure 和 Bob 团队参与《以太坊家园文档》的翻译和验证。
关于我
蓝莲花(王晓明):HPB芯链(hpb.io)创始人,巴比特专栏作家。十余年金融大数据和区块链技术开发经验,参与创建银联大数据。创作了30多集区块链教学视频节目《解说》,编写了《以太坊官网文档中文版》,作为主要作者编写了《区块链开发指南》。在中国区块链社区,以ID“蓝莲花”闻名。2018年6月9日,HPB芯链荣登“2018胡润区块链企业排行榜”区块链创新企业TOP50榜单。
不公开
发布者 Bob Wang 2016 年 7 月 15 日以太坊
« 以太坊串行(18):什么是挖矿和Ethash算法?以太坊串行(20):如何使用GPU和矿池挖矿?»
关于我的最新文章
蓝莲花(王晓明):HPB芯链(hpb.io)创始人,巴比特专栏作家。十余年金融大数据和区块链技术开发经验,参与创建银联大数据。创作了30多集区块链教学视频节目《解说》,编写了《以太坊官网文档中文版》,作为主要作者编写了《区块链开发指南》。在中国区块链社区,以ID“蓝莲花”闻名。2018年6月9日,HPB芯链荣登“2018胡润区块链企业排行榜”区块链创新企业TOP50榜单。
不公开
链接