前言
这个是教学文章,主要是为了解以太坊和区块链技术所用。是出于技术的好奇写下这篇文章。
区块链技术开始运用虚拟货币,当中本聪在 2009 年 1 月启动比特币区块链时。比特币诞生,通过多次上涨价格让区块链技术闻名于世。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链怎样应用于货币以外的领域。
而以太坊( Ethereum )是下一代智能合约和去中心化应用平台。以太坊的目标使用以太坊这种语言,用户只要简单地用几行代码来实现逻辑,就能够创建以上提及的所有系统以及许多我们还想象不到的的其它系统。如虚拟合同和虚拟信货等。
以太坊通过建立终极的抽象的基础层内置有图灵完备编程语言的区块链,使得任何人都能够创建合约和去中心化应用并在其中设立他们*定义的所有权规则、交易方式和状态转换函数。智能合约一包含价值而且只有满足某些条件才能打开的加密箱子一也能在我们的平台上创建.并且因为图灵完备性、价值知晓( value-awareness )、区块链知晓( blockchain-awareness )和多状态所增加的力且而比比特币脚本所能提供的智能合约强大得多。我个人对区块链技术未来发展充满信心。
了解技术最先从实操入手。挖矿是运用手段之一,通过搭建矿机在矿池中挖矿这个过程。来从中了解所用到的知识。
区块链
区块链就是一个具有共享状态的密码性安全交易的单机 ( cryptographically secure transactional singleton machine with shared-stete )。分开字段来介绍就是下面这个表格。
字段 | 说明 |
---|---|
密码性安全( Cryptographically secure ) | 指用一个很难被解开的复杂数学机制算法来保证数字货币生产的安全性。将它想象成类似于防火姗的这种。它们使得欺骗系统近乎是一个不可能的事情(比如:构造一笔假的交易,消除一笔交易等等 》。 |
交易的单机( Transactional singleton machine) | 只有一个权威的机器实例为系统中产生的交易负责任。换句话说,只有一个全球真相是大家所相信的。 |
具有共享状态( with shared-state ) | 在这台机器上存储的状态是共享的,对每个人都是开放的。 |
一个区块,每个区块包含一个时间戳、一个随机数、一个对上一个区块的引用 (即哈希)和上一区块生成以来发生的所有交易列表。这样随替时间流逝就创建出了一个持续增长的区块链,它不断地更新,从而能够代表比特币账本的最新状态。
以太坊的区块链虽然有一些不同,但以太坊的区块链在很多方面类似于比特币区块链。它们的区块链架构的不同在于,以太坊区块不仅包含交易记录和最近的状态,还包含区块序号和难度值。
挖矿
虚拟货币会定时生成一个数据块。所有的参与运算的计算机都在尝试打包这个数据块提交,而最终成功生成这个数据块的人,就可以得到一笔虚拟货币报酬。
而要成功生成数据块,就需要计算机需要找到那个有效的哈希值(这个计算机叫做矿工或者矿机)。由于哈希运算是不可逆的,寻找到符合要求的随机调整数非常困难。而要得到正确的哈希值,没有捷径可以走,只能靠猜,猜是一个可以预计总数的不断试错过程。猜中了,你就得到了虚拟货币。(而这种猜的行为就叫挖矿)
以太坊使用一种内在数字代币一以太币( Ether )作为奖赏。每次矿工证明了一个新区块,那么就会产生一个新的以太币并被奖励给矿工。
而以太坊挖矿机制设计目标
1 .抵抗矿机( ASIC Resistance )。使用专门优化的芯片产生的挖矿优势应该尽可能的小,小到即使使用普通 CPU 挖矿也能产生收益。
2 .轻客户端可验证。轻客户端应该有能力验证每一个块的真实性。目标是在普通桌面电脑上运行用 C 实现的验证算法,验证时间小于 0.01 秒,用 Python 或者 Javascript小于 0.1 秒,使用内存不超过 IMB。
以太币挖矿算法
以太币( ether )的挖矿算法叫做 Ethash ,又名 Dashimoto ( Dagger - Hashimoto ) ,它的特点是挖矿的效率基本与 Cpu 无关,却和内存大小和内存带宽正相关。对内存大小和带宽的要求意昧着那些通过共享内存的方式大规模部署的矿机芯片并不能在挖矿效率上有线性或者超线性( super-linear )的增长。
因此以太币挖矿是不需要专业矿机的。用 Cpu或者 Gpu 来挖矿即可。
矿池
能够获取虚拟币的地方,叫做矿池。而我选择的是 F2Pool 鱼池 (www.f2pool.com)是国内的最大的矿池。矿池特色是免收手续费,因此成为国内外许多矿工们的首选。通过简单的注册,即可加入挖矿。
图片数据来字: qukuai.com
为什么要用矿池
用比特币来说,如比特币全网算力 1600p + ,而当前最先进的矿机算力 10 丁左右,单台矿机单独挖到一个块的概率不到 16 万分之一,矿工(人)投入真金白银购买矿机、交付电费,不会做风险那么高的投资,显然投入矿池抱团挖矿以降低风险,获得稳定收益更加适合。因此矿池的出现是必然,也不可消除,无论是否破坏系统的去中心化原则。
矿池的核心工作是给矿工分配任务,统计工作里并分发收益。矿池会根据每个矿工的算力情况分配不同难度的任务。
比特币矿池中心化
比特币矿池一直都是一个矛盾的存在,毫无疑问,矿池是中心化的,如上图所示,全网算力集中在几个矿池手里,网络虽然几千个节点同时在线,但只有矿池链接的几个点击拥有投票权,其他节点都只能行使监督权。矿池再一次将矿工至于“黑暗”之中,矿工对于区块链再次变得一无所知,他们只知道完成矿池分配的任务。
为什么造成比特币矿池中心化呢?第一种.挖矿生态系统被专门设计的因而在比特币挖矿这一特殊任务上效率提高上千倍的 ASICs (专用集成电路)和电脑芯片控制。这意昧看比特币挖矿不再是高度去中心化的和追求平等主义的,而是需要巨额资本的有效参与。第二种,大部分比特币矿工事实上不再在本地完成区块验证;而是依赖中心化的矿池提供区块头。
以太坊去中心化
以太坊现在的目的是使用一个基于为每 1000 个随机数随机产生唯一哈希的函数的挖矿算法,用足够宽的计算域,去除专用硬件的优势。这样的策略当然不会使中心化的收益减少为零,但是也不需要。注怠每单个用户使用他们的私人笔记本电脑或台式机就可以几乎免费地完成一定且的挖矿活动,但当到了 100 % 的 CPU 使用率之后更多地挖矿就会需要他们支付电力和硬件成本。 ASIC 挖矿公司需要从第一个哈希开始就为电力和硬件支付成本。所以,如果中心化收益能够保持在( E + H ) / E 以下,那么即使 ASICs 被制造出来普通矿工依然有生存空间。另外,我们计划将挖矿算法设计成挖矿瀚要访问整个区块链,迫使矿工存储完成的区块链或者至少能够验证每笔交易。这去除了对中心化矿池的需要;虽然矿池依然可以扮演平滑收益分配的随机性的角色,但这功能可以被没有中心化控制的 P2P 矿池完成地同样好。这样即使大部分普通用户依然倾向选择轻客户端,通过增加网络中的全节点数虽也有助于抵御中心化。
前期准备
电脑
为了符合以太坊设计目标,我使用了家里的台式电脑来进行挖矿。配置如下:
系统:Window 10 专业版 64 位系统
内存:内存 4G
CPU : Int6r 15 一 4200U
内存:4G DDR3
硬盘:机械硬盘 500G
显卡:NVIDIA GeForce GT 750M
显卡
以太坊挖矿是用显卡的 GPU 来进行运算的。前面已经说过,挖矿是采用哈希值运算,这种算法会进行大最的 32 位整数循环右移运算。这种算法操作在 AMD GPU 里可以通过单一硬件指令实现.而在 NVIDIA GPU 里则要三次硬件指令来模拟,仅这一条就为 AMD GPU 带来额外的 1.7 倍的运算效率优势。因此 AMD 显卡挖矿是首选。
钱包
钱包是虚拟货币的所授权,就是找到的以太坊存入的地方。我使用 Ethereum 官方钱包 Mist。申请好钱包地址记录下来.挖坑需要哦。
Ethereum 钱包下载: http://github.com/ethereum/mist/releasesa
安装教程:http://ethans.org/posts/584
挖矿
准备好一切资料现在开始挖坑机部署。 GO
1.下载工具
http://miner.tools/portal/article/index/cid/7/id/13
该挖矿软件支持单挖和双挖两种,单挖是指只挖 ETH/ ETC 一种币,双挖是指 ETH/ ETC 和另外一种币一起挖,不会影响单挖 E 丁日/ E 下 C 的算力,但双挖功耗很高,而且可以使机器温度过高,容易导致烧毁电源或线路等问题,所以要谨慎选择。
2.配置矿机
( 1 ) .打开bat 文件用记事本打开。
( 2 ) .修改里面的配置。
位置 | 说明 |
---|---|
第一框 | eth.f2pool.com:8080 (矿池地址) |
第二框 | 钱包号 |
第三框 | 填入一个计算机名就可以(旷工号 ) |
3 .开始挖矿
双击 start.bat 开始挖矿,出现下面代表正常。
4.查看收益
通过访问矿池 https:/ / www.f2pool.com /eth/钱包号,就可以查看到收益了。
例如: https://www.f2pool.com/eth/0X3CB643c3891fd41C8c4164B32D52d5Ec16572085
5.相关问题
Q1:遇到本地时间和服务器时间不同步
A1:只要在电脑时间选择“与 internet 时间服务器同步”就可以了。
Q2 : ” No AMD OPENCL or NVIDIA CUDA GPUS found , exit’
A2 :没有检测到 AMD 和 NVIDIA 的硬件或者驱动,安装显卡或者驱动就解决了。
结论
主要这篇只是说明区块链和以太坊的文章,挖矿只是一点实操而已。
引用文章:
1. https://baljiahao.baidu.com/s?id=1581231980661527205&wfr=spider&for=pc
2. http://detail.zol.com.cn/picture_index_1126/index11257467.Shtml
3. https://jingyan.baidu.com/article/295430f16808aaOC760050d9.html
4. http://blog.csdn.net/taifei/article/details/72895903
5. http://ethfans.org/wikis/%E4%BB%A5%E5%A4%AA%E5%9D%8A%E7%99%BD%E7%9A%AE%E4%B9%A6