分享

更多

   

比特世界(下部)

2013-09-17  bagu2013


比特世界(下部)


如何使用比特币
       既然比特币目前看上去不像个骗局,那么就让我们来看看比特币到底可以为我们做些什么。除了挖点比特币作为自己的养老基金以外,目前比特币最好的消息来自eBay。eBay CEO约翰·多纳霍(John Donahoe)接受媒体采访时表示,这家电子商务巨头正在探索各种方式,希望将比特币整合到PayPal支付网络中。

        和在银行开立账户一样,比特币里的对应概念为地址。每个人都可以有1个或若干个地址,该地址用来付账和收钱。每个地址都是一串以1开头的字符串,一个比特币账户由一对公钥和私钥唯一确定,要保存账户,只需要保存好私钥文件即可。虽然使用bitcoin的软件可以看到当前账户的余额,但和银行不一样,并没有一个地方维护每个地址的账面余额,它只能通过所有历史交易记录去实时推算账户余额。简单的说就是银行账户不一样的地方在于,银行会保存所有的交易记录和维护各个账户的账面余额,而bitcoin的交易记录则由整个P2P网络通过事先约定的协议共同维护。
        当我与某人达成了交易,需要从地址A(自己的账户)向对方的地址B付账时,付账额为X,此时双方将向各个网络节点公告交易信息,告诉地址A向地址B付账,付账额为X。为了防止有第三方伪造该交易信息,该交易信息将使用地址A的私钥进行加密,此时接受到该交易信息的网络节点可以使用地址A的公钥进行验证该交易信息的确由A发出。当然交易软件会帮我们做这些事情,我们只需要在软件中输入相关参数即可。
       那么网络节点收到交易信息后会做什么?历史上发生过的所有交易信息分为两类,一类为"验证过"的交易信息,即已经被验证过的交易信息,它保存在一连串的“blocks”里面。每个"block"的信息为前一个"bock"的ID(每个block的ID为该block的HASH码)和新增的交易信息(参见一个实际的block)。另外一类指那些还"未验证"的交易信息,上面刚刚付账的交易信息就属于此类。
      当一个网络节点接收到新的未验证的交易信息之后(可能不止一条),由于该节点保存了历史上所有的交易信息,它可以推算中在当时每个地址的账面余额,从而可以推算出该交易信息是否有效,即付款的账户里是否有足够余额。在剔除掉无效的交易信息后,它首先取出最后一个"block"的ID,然后将这些未验证的交易信息和该ID组合在一起,再加上一个验证码,形成一个新的“block”。
      上面构建一个新的block需要大量的计算工作,因为它需要计算验证码,使得上面的组合成为一个block,即该block的HASH码的前若干位为1。目前需要前13位为1(大致如此,不确定具体方式),这意味着如果通过枚举法生成block的话,平均枚举次数为1613。使用CPU资源生成block被称为“挖金矿”,因为生产该block将得到一定的奖励,该奖励信息已经被包含在这个block里面。
       当一个网络节点生成一个新的block时,它将广播给其它的网络节点。但这个网络block并不一定会被网络接受,因为有可能有别的网络节点更早生产出了block,只有最早产生的那个block或者后续block最多的那个block有效,其余block不再作为下一个block的初始block。
         当该笔支付信息分发到网络节点后,网络节点开始计算该交易是否有效(即账户余额是否足够支付),并试图生成包含该笔交易信息的blocks。当累计有6个blocks(1个直接blocks和5个后续blocks)包含该笔交易信息时,该交易信息被认为“验证过”,从而该交易被正式确认,对方可确认支付成功。
        一个可能的问题为,我将地址A里面的余额都支付给地址B,同时又支付给地址C,如果只验证单比交易都是有效的。此时,我的作弊的方式为在真相大白之前产生6个仅包括B的block发给B,以及产生6个仅包含C的block发给C。由于我产生block所需要的CPU时间非常长,与全网络相比,这样作弊成功的概率微乎其微。
        从上面描述可以看出,为了让交易信息有效,需要网络节点生成1个和5个后续block包含该交易信息,并且这样的block生成非常耗费CPU。那怎么样让其它网络节点尽快帮忙生产block呢?答案很简单,协议规定对生产出block的地址奖励BTC,以及交易双方承诺的手续费。目前生产出一个block的奖励为50BTC,未来每隔四年减半,比如2013年到2016年之间奖励为25BTC。
         那么我刚完成的这个交易是匿名的么?是,也不是。所有BITCOIN的交易都是可见的,我们可以查到每个账户的所有交易记录,比如我的。但与银行货币体系不一样的地方在于,每个人的账户本身是匿名的,并且每个人可以开很多个账户。总的说来,所谓的匿名性没有宣称的那么好。bitcoin用来做黑市交易还有一个好处,它无法冻结。即便警方追踪到了某个bitcoin地址,除非根据网络地址追踪到交易所使用的电脑,否则还是毫无办法。
         那么我现在如果收取了比特币,它会保值么?一般来说,在交易活动相当的情况下,货币的价值反比于货币的发行量。不像传统货币市场,央行可以决定货币发行量,bitcoin里没有一个中央的发行机构。只有通过生产block,才能获得一定数量的比特币。由于比特币总量是一定的,理论上比特币不会贬值。但是要相信这世界上投机商人的力量,黄金都能贬值,更何况比特币。顺便问一下,您股票解套了么?与股票相比,比特币目前价格只比峰值低50%,还算可以吧?
       有个故事是这样的。2010年5月21日,一位昵称为 laszlo 的人在论坛上发帖,想出售10000比特币,要价50美元。但是,没有人买。不过,有人表示,愿意用价值25美元的比萨饼优惠券换这10000比特币。Laszlo答应了。如今(2013年5月)市价,10000比特币大概可以兑换 800万人民币。哦,价值800万的披萨。
如何做一个有效率的矿工
       
       花费最少的时间来挖掘更多的财宝是每个矿工的终极梦想。就像魔兽中不是每锄头下去都能冒出奥术水晶一样,我们现在根本别想指望在短短几天就能够挖出一个比特币。
目前比特币的主要挖矿方式有三种,其一就是大家普遍使用的显卡挖矿,其次是FPGA矿机,最后是计算效率最高的ASIC矿机。
使用显示卡挖矿,我们首先需要确定的是你机器里安装的是一块AMD显示芯片的显卡。如果你不幸用的是NVIDIA芯片显示卡,那么忘记挖矿这个概念吧。根据维基百科的解释,就GPU构架来讲, AMD显卡的ALU单元比NVIDIA卡多得多。在这点上,A卡要快上2-3倍。挖矿算法是基于SHA-256的,这个算法会有大量的位操作“right-rotate”,对于这个操作,A卡原生只需要1个硬件指令,而N卡需要用3个硬件指令来模拟。在这点上,A卡又要快上1.7倍。所以在挖矿运算上,A卡的性能要比N卡快上3-5倍。

        一有适当的利润,资本就会非常胆壮起来。只要有10%的利润,它就会到处被人使用;有20%,就会活泼起来;有50%,就会引起积极的冒险; 有100%,就会使人不顾一切法律;有 300%,就会使人不怕犯罪,甚至不怕绞首的危险。
        资本论第一卷总结的真理放在比特币世界同样适用。比特币的市场表现逐渐的吸引了更多的早期玩家的加入。疯狂的升值,让大家不在像以前那么淡定,也有人开始研究如何挖掘到更多的比特币。比特币设计之初,就决定了每天比特币的总产量是有限的。你的运算能力越强大,获取比特币的概率就越大。这是一个充分竞争的自由市场。人们八仙过海,各显神通,用尽各种手段,提升自己的运算能力,以期挖出更多的比特币:黑客们,通过深埋地下的病毒木马,控制了大量计算机组成僵尸网络,来挖矿获取暴利;正道的Hacker们则研究发现,比特币挖矿所依赖的SHA-256哈希值运算,GPU(也就是显卡)的计算速度比CPU高成百甚至上千倍。然后,中国人来了。时至今日,也就是到2013年5月31日,在中国一共有85220个比特币节点,我们又一次站到了世界的巅峰。此时美国节点数为75258、德国30395。
为什么CPU和GPU在挖掘比特币的时候存在非常巨大的差距?
 
       CPU(中央处理单元)是计算机的主要执行器件,根据程序代码来控制其他所有元件的运作。有的计算机拥有多个CPU,有的CPU拥有多核(这类似于多个CPU集成到一个物理封装上)。CPU通常是插在计算机主板上的可拆装部件,在上部有较大的金属散热片或风扇。
        
        GPU(图形处理单元)是计算机视频渲染系统的一部分。很多时候GPU位于一块单独的电路板(也就是视频卡)供插入主板使用,GPU的典型功能是协助渲染三维图像以及处理视觉效果。也有很多电脑没有GPU,GPU不是必需的,不过在现代的电脑上GPU近似于标准配置,因为现在新的操作系统支持依靠GPU处理的增强视觉效果。例如Windows 7的半透明窗口,或Mac OS X图标在鼠标指针附近的凸起效果,这都是GPU的功劳。
        GPU类似于CPU,但是它们内部的重要区别是各自适应自己的特殊专有任务,这些差异使得使用GPU进行比特币挖掘更为有利。一个典型的CPU核心可以在一个时钟周期内执行4个32位的指令(使用128位的SSE指令),而类似于AMD Radeo HD 5970这样的GPU可以每周期执行3200个32位指令(使用它的3200个算术逻辑单元或称流处理器)。这就是800倍于CPU的指令执行速度。截至2011年,最快的CPU拥有6核、8核或12核,以及多少高一点的时钟频率(2000-3000MHz ,而Radeon HD 5970是725MHz),但是这远远不足以弥补速度上的巨大差异。
        CPU如同执行长官,它被设计为通过软件的操控作出决定,CPU能进行所有种类的数学运算,在每一个CPU里都有一个或多个算术逻辑单元(ALU),CPU同样非常适于快速的任务切换与逻辑判断。CPU也要处理其他的复杂事务,诸如不同程序间的优先级设定,向后兼容旧有代码等等。
       GPU类似于劳工,GPU虽然也能做数学运算,但是它最主要的设计用途是进行视觉图形处理而不是执行者的角色。图形处理是大量的重复任务,因为它被安排对屏幕上大量的像素进行处理,为了更有效率的运算,图形处理器的巨大优势在于执行大量重复劳动,而不是快速的任务切换。GPU拥有大量的算术逻辑单元,数量远远超过CPU,这使得它在执行大批量的重复算术运算时远远胜于CPU。
 
        一个形象的比喻是CPU如同一小组快速执行任务的精兵良将,GPU如同一大群相对迟缓的笨人,他们单个看上去并不那么精干快捷,但是被训练去做大量的重复劳动,而在整体的角度上可能就会更有效率。
GPU的算术逻辑单元ALU被分区为多组,每一组算术逻辑单元共享管理,这样组内成员就完成进行不同的任务,他们彼此协作集群完成那些单一环节变化很小的任务。比特币挖掘的背后是重复尝试Hash(散列)运算,这就是非常适合GPU的重复劳动,每一次运算尝试只改变被散列数据的一个数字。
        AMD Radeon HD 5970为例,它有3200个流处理器,这可以理解成是3200个很笨的处理单元被训练用于大量重复劳动而不用做决策工作来打断工作流。这些处理单元构建于群组内,5970使用VLIW-5架构,也就相当于这3200个流处理器事实上是640个核,每个核能在一个时钟周期内处理5条指令。NVIDIA把这些核称为Cuba Cores,但他们不是VLIW,这意味着他们单位周期内的运算能力低些。这也是为什么仅仅比较显卡的核数来判定性能是不准确的原因,也是为什么NVIDIA在做SHA-256 hash的时候落后ATI这么多的原因。
         算术逻辑单元ALU决定了比特币挖掘的效率,可用的ALU数目对最终的散列输出结果有直接影响。这就是为什么GPU在挖掘比特币的时候会比CPU高效很多的原因,因为比特币挖掘不需要CPU那样的决策任务,而只是重复的数学运算,比特币挖掘中唯一的决策任务是求证“我是否拥有一个有效的区块?”因此这样的任务很适合GPU完成。
        起初,AMD为GPU设计了很多在相对低的时钟频率上(通常是1120-3200个算术逻辑单元运行于626-900MHz)运行的简单ALU填充器(VLIW架构),而Nvidia的微处理器架构包含相对少一些更复杂的算术逻辑单元,通过在更高的渲染时钟频率上(通常是448-1024个算术逻辑单元运行于1150-1544MHz)运行来补偿总体效率。因为VLIW和非VLIW架构的差异,NVIDIA每个ALU多占用更多面积的空间,这样每个芯片里的ALU数量就更低,比AMD更早地触及频率上的性能瓶颈。这在AMD那里就体现为单个ALU的运行优势:
AMD Radeon HD 6990: 3072 ALUs x 830 MHz = 2550 billion 32位指令/秒
NVIDIA GTX 590: 1024 ALUs x 1214 MHz = 1243 billion 32位指令/秒
 
       这大致表现AMD和NVIDIA的GPU在全线产品上存在的2倍-3倍性能差异,这在跟ALU相关的GPU运算中表现明显,例如比特币挖掘、密码暴力破解等等。
此外,推荐使用AMD GPU的另一个原因在于挖掘算法基于SHA-256,它大量进行32位整数循环右移运算,这一操作在AMD GPU那里可以通过单一硬件指令实现,而在NVIDIA GPU那里需要三步硬件指令来模拟(2移+1加),仅这一条就为AMD带来额外的1.7倍运算效率优势(大约1900指令来执行SHA-256压缩操作,而不是NVIDIA的大约3250指令)。

专业矿机
         目前的矿机焦点集中在ASIC矿机上。我们可以在市面上买到的是蝴蝶矿机,虽然跳票了很久,但是已经开始按照订单顺序发货。5G速度的蝴蝶矿机价格在274美元,这就意味着当蝴蝶矿机全面发货以后,挖矿的难度会进一步提升。

 


淘宝上可以买到的专业矿机主要集中在FPGA矿机,其速度从200-400M左右,可以叠加使用。其优势在于功耗较低,但是在ASIC浪潮来临之际,再投资买FPGA矿机就有些不明智了。-


----------------------------------华丽的分割线-------------------------------------------------
 
比特币挖矿实操

        由于比特币总数量固定,而且越来越多高性能“矿工锄”(即专用ASIC设备)出现在矿工的生产车间,挖矿难度正在被迅速提高,现在比特币整个网络的最快运行速度达到了exaFLOP(百亿亿次,10的18次方)。这个运行速度已经超过全球最强大的超级计算机的运行速度。据悉,exaFLOP是全球排名前500的所有超级计算机运行速度的9倍之多。就连全球最强大的超级计算机Sequoia,它最快的运行速度也只有16 petaFLOPS(0.0163 exaFLOPS)。
所以,一般人想要让自己那点儿微弱计算能力(不超过1Ghash/s)湮灭于计算的海洋之前挖出点真金白银,办法只有一个:不要耽搁,操起键鼠尽快开挖。
找一个合适的矿场
        想要挖矿,自然要寻找一个适当的矿场。在目前世界上Deepbit、Slush、BTC Guild三大矿床,这三大矿床特色各不相同,例如Deepbit矿场的规模最大;Slush成立时间很早而且产出稳定;BTC Guild则免收手续费。鉴于现在挖矿的难度日渐提高,我们建议你去免收手续费的BTC Guild矿床进行采矿,省得原本就不高的收益被再次盘剥。
既然要去公共矿场中淘金,那么就必须有一个ID,证明你有资格在矿床上开矿,以我们推荐的BTC guild矿场为例,你首先要去
http://www.btcguild.com/上注册一个ID,这很简单,填上一个你喜欢的名字输入密码并提交即可。
 
注册信息,如同你在论坛注册一样,非常简单。
         
          注册完成后你需要建立矿工帐号,通常情况下有几个挖矿设备就建几个矿工号,并选择不同的挖矿难度,难度越高的模式挖出几率越高。

        进入Dashboard面板后可以对采矿的全局信息进行了解。例如可以在“Active Worker Summary”列表中看到每个矿工开采的具体速度。
但仅在矿场注册ID还不够,这仅相当于你申请到了挖矿营业执照,你还需为你的工人注册“工作证”,所以当你在注册完成之后进入“Worker Management”页面,会发现有一个专门的挖矿帐号选项,在这里你可以给矿机中的计算核心冠以不同的名字,一般有几块显卡就创建几条,而命名规则采用“用户名_矿工名”的格式。例如你的系统中有两块显示卡,那么就可以用“BTC_GPU1、BTC_GPU2”的名称命名,矿工帐号不仅可以统计子系统挖矿效率,而且管理挖矿设备的工作进程,该帐号需要记清楚,因为在挖矿软件上需要填写。

        此外在Worker设置页面里,我们还可以分别对矿式帐户的开采支付模式进行设置。Payment method,即开采支付方法。这里有二种类型可供选择,PPS和PPLNS,区别在于开采模式和手续费上。PPS的手续费为7.5%,而PPLNS的手续为3%。系统默认为采用 PPLNS,如果要更改,请点击 Payment method 下方的“change”按钮。

 选择挖矿软件
         

        对于新手,我们推荐使用Gui Miner作为采矿工具,该软件最大的优点在于傻瓜化设计,他能自动识别电脑中的所有采矿设备,无论有多少GPU/CPU都可以被调用起来进行采矿,而且可以单独打开/关闭某一项采矿设备。

         Gui Miner可以在网站:http://guiminer.org/上找到,这是一个绿色软件解压即可投入使用。需要注意是在新建的采矿器时根据你使用的采矿设备不同需要使用不同的工作模式:ATi显示卡需要使用OpenGL采矿器、NVIDIA显示卡需要是用CUDA采矿器、CPU则使用的Ufasoft采矿器。
如果我们的注册账户是“XXX”, 那网站会默认为我们设置一个挖矿用户名为“XXX_1”。密码可以任意输入,比如输入“123”也可,只要不为空即可。

       新建采矿器后,点击挖矿即可开始采矿,此时处理器会开始进入满负荷工作状态:你随之会听到机器上的静音风扇提高了两个等级。值得注意的是,由于只是显卡在满载运行,此时CPU的负载只有个位数,所以丝毫不影响您上网、办公等不涉及3D处理的应用,如果你尝试玩3D游戏那会非常不乐观。此外,我们不建议你使用CPU进行挖矿,因为CPU的运算能力很低,而且CPU跑起来会导致系统很卡,还会拖累显卡的运算性能(因为显卡做OpenCL运算时也会占用一些CPU资源)。
 
建立一个钱包

        当花了大把时间、电费之后也许会得到若干比特币,但这些比特币还不能直接消费,因为他们还存放在BTC guild矿场的数据库内,无法兑换为纸币,所以你需要去国内的比特币交易平台上注册账户,并将BTC guild矿场中的比特币转移到交易平台后才能进行消费,我们选择了比特币中国(
https://btcchina.com)作为国内的比特币交易、提现平台。

        在注册完成后,进入账户管理界面可以看到“比特币充值”选项,在这个选项中交易平台会提供交易帐号,但这个地址只能被充值一次(这是该平台出于安全性的考虑),充值成功后作废,在新的交易时系统会重新派发给你一个新的地址,因此每次充值都要及时更新钱包地址,否则会导致充值失败或丢失。
 
系统会生成一个随机密码,就是你的本次汇款的账户,也叫电子钱包。

        在以上全就绪后,你可以回到矿场主页(例如
http://www.btcguild.com/)登入你之前注册的账户,并找到“Account Settings”页面中的“Bitcoin Wallet”栏,将从交易平台中得到钱包地址填入就可以完成转账。
回到矿场网站的Account Settings页面,可以看到Bitcoin Settings选项,在网站获得的钱包名称填入并点击Change即可将矿场中的比特币发送到自己帐号中。

        除了可以使用网页交易的方式外,你还可以使用比特币钱包,例如Bitcoin Wallet,在这个客户端上你可以接收、发送你掌握的比特币,和上面提到的网络比特币钱包相比,钱包客户端使用更加方便,但据传闻累计接收100个比特币之后必须要备份钱包数据,否则会发生比特币丢失的现象。最后,如果你拥有大量比特币,我们建议你分别储存在多个钱包内,防止盗窃由于最近比特币价格不断上涨,不法之徒已经将目光集中到了比特币上。


 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    猜你喜欢

    0条评论

    发表

    类似文章
    喜欢该文的人也喜欢 更多