如何使用 GPU 和矿池挖矿?
GPU 挖掘
硬件
算法是内存难解的,为了使 DAG 适合内存,每个 GPU 需要 1-2GB 内存,如果你得到错误提示:Error GPU mining. GPU memory fragmentation? 说明你没有足够的内存。GPU 挖矿软件是基于 OpenCL 实现的,AMD GPU 会比同一水准的 NVIDIA GPU 更快。ASIC 和 FPGA 相对低效因而被阻拦。要给芯片集成平台获取 openCL,尝试:
- AMD SDK openCL
- NVIDIA CUDA openCL
Ubuntu Linux 设置
对于这个快速指南,你会需要 Ubuntu 14.04 或 15.04 以及 fglrx 图像驱动器。你也可以使用 NVidia 驱动器和其他平台,但是你必须要找到自己的方式来获得有效的 OpenCL 安装,比如 Genoil 的 ethminer 分叉。
如果你在用 15.04,到"软件与更新〉额外的驱动器"设置为"从 fglrx 为 AMD 图形加速器使用视频驱动器"。
如果你在用 14.04,到"软件与更新〉额外的驱动器"设置为"从 fglrx 为 AMD 图形加速器使用视频驱动器"。很遗憾,对于一些人来说,这种方法可能不管用,因为 Ubuntu 14.04.02 中有个已知的程序错误会阻止你转换到 GPU 挖矿所必须的专属图形驱动器。
所以,如果你遇到这个程序错误,先到"软件与更新〉更新"选择"预发行的可靠更新提议"。然后,回到"软件与更新〉额外的驱动器"设置为"从 fglrx 为 AMD 图形加速器使用视频驱动器"。重启之后,值得检查一下现在确实正确安装了驱动器(例如通过再到"额外驱动器")。
不管做什么,如果你在用 14.04.02,一旦安装之后,就不要改变驱动器或者驱动器配置。例如,aticonfig –initial 的使用(尤其是-f, –force 选项)会"破坏"你的设置。如果你偶然改变了配置,会需要卸载驱动器,重启,再次安装驱动器并重启。
Mac 设置
wget http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.29_mac.pkg
sudo installer -pkg ~/Desktop/cuda_7.0.29_mac.pkg -target /
brew update
brew tap ethereum/ethereum
brew reinstall cpp-ethereum --with-gpu-mining --devel --headless --build-from-source
查看冷却状态:
aticonfig --adapter=0 --od-gettemperature
Windows 设置
下载最新的 Eth++安装,在安装界面的"选择组件"页面选择 ethminer。
用 geth 使用 ethminer
eth account new // Set-up ethereum account if you do not have one
geth --rpc --rpccorsdomain localhost 2>> geth.log &
ethminer -G // -G for GPU, -M for benchmark
tail -f geth.log
ethminer 在端口 8545(geth 的默认 RPC 端口)和 geth 沟通。你可以通过给 geth—rpcport 选项来改变这种情况。ethminer 会在任何端口发现 geth。注意你需要用—rpccorsdomain localhos 设置 CORS 标题。你也可以用-F http://127.0.0.1:3301 在 ethminer 设置端口。如果你想要在同一个电脑上挖几个实例,设置端口是必需的,尽管有些没有意义。如果你在私有链上测试,我们推荐你用 CPU 挖掘代替。
注意:你不需要把—mine 选项给 geth,或者在控制台开启挖矿,除非你想要在 GPU 挖掘顶端做 CPU 挖掘。
如果 ethminer 的默认无效,试试用—opencl-device X 来规定 OpenCL 装置,其中 X 是{0, 1, 2,…}。用-M(基础测试程序)运行 ethminer 时,你会看到这样的文字:
Benchmarking on platform: { "platform": "NVIDIA CUDA", "device": "GeForce GTX 750 Ti", "version": "OpenCL 1.1 CUDA" }
Benchmarking on platform: { "platform": "Apple", "device": "Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.7
为 geth 排错:
geth --rpccorsdomain "localhost" --verbosity 6 2>> geth.log
为矿工排错:
make -DCMAKE_BUILD_TYPE=Debug -DETHASHCL=1 -DGUI=0
gdb --args ethminer -G -M
注意:GPU 挖矿时,散列率信息在 geth 上不可用。
用 ethminer 检查散列率,miner.hashrate 总会报告 0。
用 eth 使用 ethminer
在单独的 GPU 上挖矿
为了在单独的 GPU 上挖矿,只需要用以下参数运行 eth:
eth -v 1 -a 0xcadb3223d4eebcaa7b40ec5722967ced01cfc8f2 --client-name "OPTIONALNAMEHERE" -x 50 -m
- -v 1 将冗长的信息设置为 1。不要被信息刷屏。
- -a YOURWALLETADDRESS 设置挖矿奖励会去的 coinbase。以上地址只是一个例子。这一参数十分重要,确保不要在钱包地址出错,否则会接收不到以太币支出。
- —client-name "OPTIONAL" 设置可选择的客户端名称,在网络上确定身份。
- -x 50 请求大量的端点。帮助在开始找到端点。
- -m on 在挖矿开启的状态下实际启动。
- -G 打开 GPU 挖掘。
客户端运行时,你可以用 geth 附属或[ethconsole]和它互动( https://github.com/ethereum/ethereum-console)。
在多个 GPU 上挖矿
用多个 GPU 和 eth 挖矿与用 geth 和多个 GPU 挖矿十分相似。确保 eth 节点和正确设置的 coinbase 地址一起运行: eth -v 1 -a 0xcadb3223d4eebcaa7b40ec5722967ced01cfc8f2 —client-name "OPTIONALNAMEHERE" -x 50 -j
注意我们也添加了-j 参数以使客户端有可用的 JSON-RPC 服务器与 ethminer 实例沟通。此外由于 ethminer 可以为我们挖矿,我们移除了与挖矿相关的参数。每个 GPU 都会执行一个不同的 ethminer 实例:
ethminer --no-precompute -G --opencl-device X
X 是索引号码,与你想 ethminer 用{0, 1, 2,…}的 OpenCL 装置一致。为了轻松获取 OpenCL 装置列表,你可以执行 ethminer —list-devices,它会提供一个 OpenCL 可以检测到的所有装置,以及每个装置的一些附加信息。
下面是一个样本输出:
[0] GeForce GTX 770
CL_DEVICE_TYPE: GPU
CL_DEVICE_GLOBAL_MEM_SIZE: 4286345216
CL_DEVICE_MAX_MEM_ALLOC_SIZE: 1071586304
CL_DEVICE_MAX_WORK_GROUP_SIZE: 1024
最终—no-precompute 参数请求 ethiminers 不要提前创建下一个 epoch 的 DAG。尽管不推荐这样,因为每次 epoch 过渡的时候,你都会有一个挖矿中断。
基准测试程序
挖矿能力通常以内存带宽衡量。我们的实现写在 OpenCL 上,很典型地在 NVidia 上被 AMD GPU 支持得更好。实验证据确认了在价格方面,AMD GPU 比对应的 NVidia 挖矿表现更好。
用基准程序测试单一装置设置,你可以在基准测试程序模式下通过-M 使用 ethminer。
ethminer -G -M
如果你有很多装置,你会喜欢分别用基准程序测试,可以用–opencl-device 选项,与之前章节相似: ethminer -G -M —opencl-device X 用 ethminer —list-devices 来列出可能的数字替代 X {0, 1, 2,…}。 开始在 Windows 上挖矿,首先要下载 geth windows binary。
- 解压缩 Geth (单击右键选择打开),启用命令提示符。用 cd 导航到 Geth 数据文件夹的位置(例如 cd / 到 C: 盘)
- 输入 geth —rpc 开启 geth。 进入以后,以太坊区块链会开始下载。有时候防火墙肯能会阻止同步进程(阻止时会有提示)。如果被阻止,点击"允许进入"。
- 首先下载安装 ethminer, C++挖矿软件 (防火墙或 Windows 本身可能会有反应,允许进入)
- 打开另一个命令提示符 (保持第一个运行!) 输入 cd/Program Files/Ethereum(++)/release 改变目录。
- 确保 eth 完成区块链同步。如果同步不再进行,就可以在命令提示符输入 ethminer -G 开启挖矿进程。
此时可能会出现一些问题。如果有错误发生, 可以输入 Ctrl+C 来中断矿工。如果错误显示(提示)"内存不足",就说明没有足够的 GPU 内存来挖以太币。
矿池挖矿
矿池挖矿是旨在通过联合参与矿工的挖矿力来解决预期收益问题的合作社(挖矿的矿工的算力来解决预期收益问题的合作组织)。作为回报,通常收取 0-5%的挖矿奖励。挖矿池从中央账户用工作量证明提交区块并按照参与人贡献的挖矿力比例来重新分配奖励。
警告:大多数挖矿池包含第三方,中心组件,意味着他们是不需信任的。换言之,挖矿池操作人可以把你的收入拿走。谨慎操作。有很多具备开源数据库、不需信任的、去中心化的挖矿池。
警告:挖矿池只会外包工作量证明运算,他们不会使区块生效或运行虚拟机来检查执行交易带来的状态过渡。 这能有效地使挖矿池在安全方面像单个节点一样表现,他们的增长会造成 51%攻击的中心化威胁。确保遵守网络能力分配,不要让挖矿池长得太大。
矿池
- coinotron
- nanopool
- ethpool — 可预测的单独挖矿,非常规支出机制,附属于 etherchain.org。
- supernova
- coinmine.pl
- eth.pp.ua
- talkether — 非常规支出机制,部分去中心化
- weipool
- ethereumpool
- pooleum
- alphapool
- cryptopool
- unitedminers
- dwarfpool — 尽量避免(目前超过网络的 50%)
- laintimes — 停止使用
挖矿相关资源汇总
- 过去 24 小时以太币链上领先的矿工
- 2015 年 8 月挖矿池散表率分配
- 论坛上未维护的挖矿池列表
- cryptocompare 上的挖矿盈利能力计算器
- cryptowizzard 上的挖矿盈利能力计算器
- etherscan 上的挖矿盈利能力计算器
- In The Ether 上的挖矿盈利能力计算器
- etherscan 上的挖矿难度表
POS vs POW
- https://www.reddit.com/r/ethereum/comments/38db1z/eli5_the_difference_between_pos_and_pow/
- https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/
- https://www.reddit.com/r/ethereum/comments/42o8oy/can_someone_explain_the_switch_to_pos_how_and_when/
参考资料:
文章中的列表对应的链接可以参考《Ethereum Homestead Documentation》第 67 页 1.6.4 GPU mining
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论