A. 手机性能比肩PC实测旗舰手机挖比特币
【IT168 评测】比特币近期可是着实火了一把,曾经一文不值的极客玩物,现在变成中国大妈热炒的“金融衍生品”了。稍微了解比特币的人可能就知道,比特币的获得方式是十分精密和复杂的,但简单来说,就是谁的计算机运算能力强,谁就能获得更多的比特币。为何笔者今天为大家带来一片实测手机挖比特币的文章?原因有两个:1.通过这篇文章让大家简单的了解一下比特币。2.笔者看到DIY的同事,利用高性能的最新产品疯狂的掠夺着公司的资源,将测试机用于挖比特币而“中饱私囊”很是眼红,也想用手机试试,看看能不能捞一点好处~蚊子肉也是肉嘛,废话不多说,开始今天的“致富”之旅。
文章背景:比特币近期价格突破7000元大关,并且稳定在5500元左右。那些曾经手中有上百个比特币的“土豪”们现在都可以买房了!虽然进场的最佳时机已经过了,但是我们知道挖比特币的过程是特别依赖运算性能的,都说目前旗舰手机性能强悍都已经比肩台式机了,笔者就用挖比特币来试试目前旗舰机型手机的性能。
1. 比特币到底是个神马东东?挖矿又是怎么一回事?
比特币的概念是一个名叫“中本聪”的网友在一个论坛上提出的。至于中本聪是个人还是个组织,目前没有明确的答案。而按照中本聪的设想,比特币是一种点对点的虚拟货币。用户通过计算产生一串特殊的秘钥,而这串秘钥则就是我们俗称的比特币。
▲比特币近期疯长
比特币是一种不受到中央银行控制的货币,从比特币诞生伊始,中本聪就为比特币制定了产出规则:每10分钟全球将产出50个比特币,并且按照时间以此递减,目前产量为每10分钟25个。也就是说,当2140年的时候,全球总过产出的比特币将为2100万个。没有中央银行,任何人都能得到,总量有限速度稳定,能够有效的避免通货膨胀。这也是目前很多投资者看好比特币的原因。
▲淘宝销售2TH/S算力矿机 售价46000元
而我们常常听到的挖矿也就是获得比特币过程的一个形象的称呼。用户通过计算机强大的运算能力获得比特币的过程就被称作挖矿。而挖矿软件则是获得比特币的客户端,矿机则是用来获得比特币的计算机。
▲双HD7990显卡算力2.4GH/s
前面我们说过,目前单纯通过挖矿来支付的蓝海已经不再了,为什么这么说呢,原因很简单,由于比特币的价格暴涨,所以目前全球在挖矿的计算机运算能力也已经暴涨,已经过了CPU和GPU就能够轻松挖矿的时代了,目前淘宝上专业的矿机已经能够稳定300GH/S(Hash/S为比特币算力单位),而目前顶级GPU的算力大概为1GH/S,而顶级处理器的算力大概仅为10MH/S左右,所以对于入门级别用户来讲,挖矿的门槛已经越来越高。并且前面我们也说过,比特币的产出速度随时间降低,在产出越来越少,算力越来越高的今天,想纯靠挖比特币挣钱,还真不是入门级的用户能办到的。
前面我们说了,如果你现在还不知道比特币是神马,并且也没钱买矿机,那是不是现在开始挖比特币就没什么意义了呢?当然不是,对于像笔者这样的人来讲,挖比特币的过程非常有意义,学会如何挖比特币也算是一项技能,可以增加和别人聊天时的谈资。嘿嘿,是不是很贱呢?接下来,笔者就教大家如何挖比特比。
2. 如何挖比特币?
目前全球有很多比特币矿池,想要挖比特币需要先选择一个矿池。笔者在这里为大家推荐几个比较主流的稳定矿池。选择一个稳定矿池是十分必要的。不然很有可能你辛辛苦苦挖出来的比特币会不翼而飞。由于目前盗窃比特币的行为在法律上无法界定,所以矿池矿主卷走大家的比特币也是发生过的事情。
1. slushs pool
▲slushs pool
老牌矿池,拥有中文版用户界面,但界面并不友好。目前矿池总算力能够进入世界前十。
2. BTC Guild
▲BTC GUILD 目前总算力最高的矿池之一
目前矿池总算力前三之一的矿池,大多数中国用户曾经或正在该矿池上挖比特币。网站界面友好,但最近国内连接该矿池由于网络的原因有些不稳定。
3.50BTC
▲50BTC
概况吃目前国内连接稳定,用户界面友好。但曾经在10月份的时候遇到过黑客攻击,丢失了用户的比特币,虽然50BTC已经全部承担了损失,但依旧流失了一些用户。
我们就以Slushs Pool作为例子,为大家简单介绍下如何才能成为一名合格的比特币矿工,首先打开Slush’s pool的官网:http://mining.bitcoin.cz/
。
▲第一步点击大大的注册按钮
Slush’s Pool的官网支持中文,不过看上去中文页面翻译水平有限,所以大家也不用在意,一步一步注册就好。
▲第二步填写信息
▲确认后得到矿工账号密码
用户名、密码、邮箱等填写完毕后,点击现在确认,邮箱内会收到一封确认注册的邮件。点击邮件内的确认连接就可以完成注册了。
▲登陆后界面
登录之后,你就可以看到你自己的账户和矿工的状态了。账户中有比特币地址这一项是为了将你挖出的比特币导出到这个账户中的,我们可以先不填写,先期先挖矿,后期比特币到达一定数量的时候,在选择一个交易平台将比特币导出(目前主流的交易平台为比特币中国等)。
接下来就是下载比特币挖矿软件开始挖矿了。文章的这一部分我们先介绍下PC端的挖矿软件,目前主流的挖矿软件为GUIMINER和CGMINER,其中GUIMINER界面较为友好,并且支持的矿池也算丰富。初学者可以选择该软件进行挖矿。GUIMINER下载地址:http://guiminer.org/
▲可以选定中文
GUIMINER支持中文,用户可以点击语言—Chinese Simplified进行切换语言,重启后即可生效。
▲设置界面
只差最后一部就可以进行挖矿了。服务器选择你注册的矿池:Slush’s pool,用户名填写你矿工的用户名,密码填写矿工密码,每个用户可以设置多个矿工,分别登陆同时挖矿,这是为了方便用户多个设备同一账户同时挖矿的需求。设备方面可以选择处理器或者显卡,然后点击开始采矿。
▲18.3Mh/s的算力着实寒酸
连接成功后,软件的右下方就会显示出你目前的算力。笔者笔记本的Quadro K2000M算力仅为18MH/S左右,真是令人发指的低啊。不过此时,我们已经成为一个有理想有抱负有社会责任心的比特币矿工了。了解了如何挖矿后,我们进入今天文章的正题:旗舰手机实测挖比特币。
3. 手机性能真的比肩PC?挖比特币试试。
前面我们也介绍了如何挖比特币和目前顶级矿机、顶级GPU和顶级CPU的挖矿能力了。接下来我们就来试试手机挖矿的实力到底如何,能否真的像现在传的那样性能比肩PC?
▲i7-3720算力简直弱爆了
首先,笔者用自己笔记本的处理器进行了挖矿,发现速率稳定在4MH/S左右,要知道笔者的处理器为Intel i7 3720qm,也算是去年笔记本电脑中的较高水平了。这个成绩真的是令人沮丧,那么手机的性能如何呢?我们先要在手机上安装ARM MINER这个软件。点击此处下载。
▲软件设置方法
进入ARM MINER软件后,点击SETTING界面后,在Algorithm(算法)中选择SHA-256,这种算法下手机处理器性能发挥更充分。Url则填写Slush’s Pool的API端口:http://api.bitcoin.cz:8332。 User则填写矿工名称。Password则填写矿工密码。Threads选择最大。点击屏幕右上方的保存按钮就可以回到MINING界面点击Start开始挖矿了。
▲手机挖矿结果一览
▲手机挖矿结果一览
▲手机挖矿结果一览
通过测试,我们发现,搭载高通800处理器的Nexus5和LG G2突发算力在4MH/S,而搭载和小米3相同的Tegra4处理器的Nvidia Shield游戏机的突发算力和高通800处于相同水平。而搭载猎户座5410“4+4”核处理器的魅族MX3突发算力在3.6MH/S,而搭载高通APQ8064处理器的小米2S突发算力在3.3MH/S,而采用MT6589T的红米手机突发算力为1.7MH/S左右。但一旦开启挖矿软件,就会出现处理器迅速过热,从而主频下降,最终会导致算力下降严重。
通过测试,我们可以发现,单纯从挖掘比特币的运算能力上来看,目前ARM的顶尖处理器在突发运算能力上,已经和目前的主流英特尔处理器没有太大差别了。但是如果说ARM处理器目前就能够比肩PC处理器了是不准确的。由于ARM自身的定位就是低功耗高效率轻量级移动处理器,对于目前ARM处理器的崛起,与其说是ARM处理器性能的飞速发展,不如说目前消费者越来越重视移动处理,使得各大硬件软件厂商也开始重视对移动端处理器的优化和开发。不过近期ARM处理器性能要想真正赶超PC处理器,还是不可能的。
如果按照这个速度和目前的算力来讲,如果说要用手机挖出1个比特币的话,需要十几年甚至几十年,所以,想要靠手机挖比特币挣钱?这只是个美丽的传说。不过相信大家通过今天的文章,也简单的了解了比特币和如何开采比特币,这就够了。如果你和笔者一样没有一夜暴富的命,那就每天高高兴兴上班来,平平安安回家去吧。
B. 小米WiFi链是什么 小米WiFi链有什么用 小米
小米WiFi链是小米开发的一款App,该应用利用当下热门的区块链技术,允许用户赚取“米粒”兑换相应的奖品。
小米官方介绍称它应用了区块链技术,能够“为用户提供用网价值”。具体使用方法很简单,用户只需要绑定一个WiFi即可,该WiFi下连接的设备会为用户提供“生长因子”,连接的设备越多,提供的“生长因子”越多。
所谓的“生长因子”能帮助用户获得“米粒”,得到“米粒”后用户可以用它换取相应的奖品。因为“WiFi链”还处于测试阶段,只开放了部分玩法,在测试期,小米提供了加密兔、F码等兑换物。[1]
在这个App中,关键名词有两个——“生长因子”和“米粒”。先说“生长因子
”,只要有设备连接了绑定WiFi就能获得生长因子,它的主要作用于计算每天能获得多少“米粒”;“米粒”这个概念就好理解多了,它有点像虚拟货币,可以用来兑换奖品。不过小米生态链副总裁唐沐在微博上表示“‘米粒’不是币,只是一个最小的去中心化的记账单位”。
而所有这些回报都需要“米粒”。根据介绍,米粒是对每一个WiFi节点的奖励,可用于消费与兑换。所有米粒都会被记录在公开透明的区块链上,一旦被拥有,就无法被任何复制、修改或者销毁。此外,米粒总量有限,随着时间的推移获取难度逐渐加大,前期参与者更有优势。
那用户如何获取“米粒”么?需要生长因子。生长因子是WiFi节点的贡献计量因子,也是米粒的影响因子,WiFi节点的贡献越多,生长因子越多,那么收获的米粒越多。
米粒每天的产量固定,按照用户当前的生长因子值在全网的占比来分配米粒。
假设每日发放米粒总数C,用户每日领取到的米粒=C*该用户当前生长因子/所有用户生长因子之和。
WiFi节点下的理解设备可以贡献生长因子,连接设备越多,生长因子越多。
----来自网络
C. 关于比特币的谜题(完结)
你可曾想过: 为什么矿机算力越大越好?(既然是解数学题那为什么不是拼谁的算法厉害啊喂!) 比特币的数量总和为什么是2100万? 比特币盗窃是怎么回事? 我不玩比特币,就真的与比特币无关了吗…… 🤔️
关于大众不再感到陌生的比特币,背后还有许多巧妙之处。本文介绍了比特币的基本原理和主要原则,并结合对部分技术细节的剖析,来对上述的一些疑问作出解答。全文较长,约7000字,阅读时间约为22分钟,建议收藏后阅读😁
文章可以分成以下几个部分:
* 比特币先验知识
-- 密码学相关
-- 比特币重要概念
* 交易的生命周期
* 区块链的构成
* 区块链的生长
-- “挖矿”的数学本质
-- “矿工”的收益
* 比特币的共识机制
-- 比特币的去中心化共识
-- “最长链优先”原则
* 比特币安全性
比特币作为第一个去中心化的数字货币,其设计中运用了不少的密码学相关知识,主要包括非对称加密技术、哈希函数等等。理解这些密码学知识,能帮助我们更好地理解比特币中的一些概念及规则。
以下是比特币的一些定义及概念解说,了解过的小伙伴们可以直接跳过~
在比特币这个创新的支付网络中,一个交易的生命周期大概可以分为几个阶段:创建、传播和被验证交织、被打包进区块记录到区块链中、获得更多的确认。图1对这几个阶段做出了示意。
注:
1⃣️一个支付方A在发起一个比特币交易时,会使用自己的私钥对交易信息的哈希值进行签名。因此A向全网广播的内容除了交易信息之外,还有自己的公钥信息、对消息的签名。其他矿工只要利用A的公钥即可对这个交易进行验证,判断是否真的由A创建。
2⃣️”交易传播和交易验证“交替意味着 各个节点基于一定的规则独立验证每个交易(共识基础1) , 一个节点只有认为这个交易有效才会把它继续传播出去。
比特币的底层技术是区块链。区块链系统是一种分布式共识系统,区块链网络中所有的参与节点将就交易的状态达成一致。
区块链到底是什么呢?你可以把它理解成一种分布式的交易的共享账本,以区块为基本单位链接在一起。交易信息将被整理并打包记录在区块中。每一个区块,包含区块头,以及紧跟其后的交易列表。区块头包含3个区块元数据集合:前序区块哈希(严格来说是前序区块头哈希,因为只有区块头被用于哈希运算)、元数据集(包括难度、时间戳、随机数等)、一个基于加密哈希来高效概括区块中所有交易的默克尔树(merkle tree)。了解这个结构,将帮助我们更好地理解挖矿的数学本质。
你可能听说过“挖矿”这个词,或者听说众人争相购买挖矿机器来发家致富。但让人疑惑的是:都说打包区块的本质是解数学难题,但单凭那些看似简陋的机器嗡嗡嗡疯狂耗费电力,就能确保自己解出比特币难题的胜率高了吗?比特币技术原理中,矿工们解决的数学题,难道是一个暴力破解题?
看了一圈,发现矿工们解决的题,还真有点暴力破解的意思,每次尝试解题的过程几乎都是茫茫然、去碰运气的。拼的是谁足够幸运,也拼谁算的足够快;算的快了么,试错次数多,自然胜算也就大了。
解题的背景是这样的—— 挖矿节点通过基于工作量证明算法(Proof-of-Work,POW)的证明运算,独立将交易汇聚到新区块中(共识基础2)。 当矿工从网络中接收到一个新的区块的时候,他发现自己已经在上一轮竞争中失败了,所以立即开始新区块的挖矿过程。为了创建一个新的区块,他从内存池中选择交易来填充区块(加入区块的第一笔交易是一个“铸币交易”,3.2节会给出详相关细节)。接下来是填充字段来创建区块头(包括前序区块的区块头哈希、交易的默克尔树(Merkel树)、时间戳、难度目标值、随机数),然后开始计算这个新区块的工作量证明。
这个计算的过程简单来说是对区块头部进行两次sha256运算,得到一个RESULT,如果这个RESULT满足特定要求,这个人才能算是算对了、才有权利去记账。满足要求的RESULT被称为“工作量证明”(中本聪论文中称为“proof of work”)。
关于这个计算过程,强调以下几点:
第一,区块头部,包含了前序区块头部的哈希、本区块交易信息的默克尔树、时间戳、难度目标值、随机数等信息(见图2)。
第二,哈希运算具有“知道y,无法推出使得h(x)=y成立的x”、“即使输入只改变一点点,输出也会差很多”、“利用任意长度的数据作为输入,生成一个固定长度的确定结果”的特性。所以大家也不知道什么样子的输入才能产生自己想要的结果,矿工只能不断尝试。
第三,前面说到,区块头哈希值需要满足一个特定要求才能成为工作量证明——小于某一阈值,或者说哈希值含有给定前缀。阈值的大小求和挖矿难度有关:挖矿难度是一个动态参数,其值越大,则阈值越小,说明哈希值符合要求的概率更小,矿工每次计算能成为工作量证明的概率越小。比特币有一个自我调节过程——通过对现有的挖矿算力情况进行估算,来对应调整挖矿难度,可以保证区块链每十分钟出一个块,达到控制发行速度的目的。(这个过程的基本思想类似产品笔试的数据估算题,根据“一个提供、一个需要“的思路去构造一个等式,然后求解等式一边的一个因子;想了解挖矿难度系统和调整方式的同学可以进一步查阅~)
综合以上三点来看,为了产生工作量证明,用户基本上会通过调整随机数来碰运气(因为其他字段基本不变)、进行多次运算直至符合要求,别无他法。如此一看,随机数就具有“幸运数字”的意味了。因此,平均来讲,谁计算的能力越强(尝试的次数越多),就更有希望打包块。
你可能会想,矿工这么心甘情愿地消耗算力去维护区块链,是受到怎样的利益驱使呢?简单来说,矿工的收益来源有二:1、计算出工作量证明,创造一个新区块所获得的新币奖励;2、记账矿工费。
当矿工找到工作量证明、打包一个新区块,并把区块传送给他的所有对等节点。 每一个挖矿节点都独立验证新区块、把合格的新区块整合进区块链(共识基础3) ,并把这个区块继续传给自己的对等节点。结果是,只有经过验证的区块才会在网络当中广泛传播,保证了诚实矿工挖出的新区块能被区块链所接纳。挖矿成功的个体节点或集体节点,可以同时获得新币奖励和记账矿工费。
新币奖励类似于货币的发行,其遵循规则是,第一个四年每一个新区块产生50btc,第二个四年每一个新区块产生25btc,第三个四年每个新区块产生12.5btc,如此周期指数递减。按照等比数列求和可知,到2140年,比特币产生的总和约为21000000(所以说比特币数量有限,天生紧缩)。届时,不再随区块的产生增加新的比特币,矿工不再拥有第一项收益。但现实中,由于挖矿成本高昂,挖矿成功的往往是是一个矿池的所有参与者。收益被分给矿池地址,矿池按照组内算力贡献比例来分摊收益的。
记账矿工费又称交易费用,以交易输入和交易输出之间的差值的形式存在;一个区块的总交易费用是对加入区块的所有交易的(交易输入-交易输出)求和。一般来说,矿工费越高的交易,会越快被处理。而矿工费在这里起到两个作用,一个是奖励矿工,另一个是防止主链滥用(防止大家发送交易垃圾信息,因为提出交易是有一定代价的)。
矿工的收益以什么样的形式被验证呢?这里不得不提到 “铸币交易” 。每个计算机节点在进行工作量证明计算之前加入区块的第一笔交易,正是“铸币交易”。这个交易从无到有生成比特币,其金额是新币奖励与记账矿工费的总和,被支付到挖矿矿工自己的比特币地址。如果矿工找到了一个工作量证明使区块有效,他就赢得了这个奖励,因为他构造的“铸币交易”生效了。
关于铸币交易和“新币奖励”,之前有一个读者问我:一个矿工把自己挖到新区块的消息公布出去,他的工作量证明 不会被别人剽窃 吗?
个人认为,至少“铸币交易”能防止这件事情发生。让我们来重申一下计算工作量证明的过程——一个矿工E在新区块里加入了奖赏自己的“铸币交易”,并利用时间戳、前序区块头哈希、随机数、本区块交易的merkle树等信息计算出一个符合要求的工作量证明。
在这个过程中,merkle树啥样子,取决于包括“铸币交易”在内的本区块所有交易信息。因此可以把铸币交易视为工作量证明的间接变量之一。那么,即使其他人拿到了E的工作量证明,这个工作量证明也是带有E的印记的、与奖赏E的铸币交易相关的,别人根本无法纳为己用。
你还可以通过设想以下的场景来加深对共识基础2“挖矿节点通过基于工作量证明算法的证明运算,独立将交易汇聚到新区块中”的理解。
为什么一个挖出新区块的矿工不悄悄使个心眼,在创建区块之初就把铸币交易的金额设成1000BTC呢?原因在于每个节点都是基于相同的规则来独立验证区块的。矿工必须创建完美的、符合公共规则的、正确依据工作量证明方法的区块;而一个无效的铸币交易会导致整个区块无效,并被其他节点拒绝,永远无法成为账本的一部分。可以预想,为了生成这个工作量证明,矿工们已经投入了巨大的算力和电量去挖矿,如果涉嫌欺诈而被否决,其为挖矿付出成本都付诸东流。
综上所述,矿工不能冒领他人的奖励,而拿到奖励的矿工也必须只能拿取符合规定的数额。
比特币的卓越之处,在于建立了一种去中心化的自发共识。这种共识是自发产生的,是成千上万在网络中遵循着共同规则的节点,在异步交互中形成的,不依赖于任何中央机构的调解和干涉。
关于比特币的4项主要共识基础,本文在讲解对应细节时有提及,下面做一个整合:
这四个过程相辅相成、互相作用,形成了自发的全网共识,促使全网节点组合出可信、公开、权威的总账。
你可能会想,比特币是一个去中心化的、基于大众信任的、依靠众人力量运转的一个东西。万一有一部分矿工被坏人收买了咋办呢?“51%攻击”指的又是什么?比特币交易所要求的“6个确认”又是怎么回事?
这里首先要提到比特币的一个规则“ 最长链优先 ”。意思是, 比特币的账单链在出现分叉的时候,每个矿工会独立选择长(累积了最多工作量证明)的链条,在上面继续挖矿工作(共识基础4) 。
这个原则主要涉及到两个问题:
当有两个矿工A和B同时挖矿成功(算出符合要求的数学答案)时,他们分别把自己计算出来的工作量证明作为下一个块的前序区块哈希,生成一个块衔接到原有的链后面,由此出现了两个分支。
这个时候,这两个成功的矿工广播了自己打包成功的消息。由于区块链是一个去中心化的数据结构,区块消息到达不同节点的时间点不一致,故不同的节点可能拥有不完全一样的区块链视图——有的矿工会先收到A的消息,有的则先收到B的消息。为了解决这个问题,收到消息的矿工们遵循一个原则:选择并尝试延长最长的链。
因此,这两条分支会各自成长一小段时间,直到他们的长度出现差异(不可能长度一直相同),比如说其中一条链的矿工们,更快地打包在支链后面又加上一块。按照“最长链优先“的规则,较短的链会被抛弃,原本工作在短链上的矿工们都回到长链上工作。
换言之,分叉只是不同节点暂时的不一致现象,当新区块被加入到其中某一分支时,最终收敛将解决这一个问题。[读者可以思考一下,为什么区块链被设置成每十分钟挖出来一个块:如果时间短了,是不是就增加了分支产生的次数?如果时间长了,是不是交易结算的效率就太低了?]
双重支付的本质其实也是区块链的分叉,但这种分叉却是“非自然恶意蓄谋”的产物。
我们假设小敏是密谋双重支付的一方,她把自己仅有的10BTC先给小强、交换一块黄金,待这条交易信息P被打包进区块Q后,她从小强手中拿到了黄金。这时,小敏使了个心眼,她想偷偷抹去、篡改区块Q上的交易信息P,“白嫖”这块黄金。为了实现这样的目的,根据“最长链优先”法则,小敏必须剔除该笔交易P后、重新进行结算工作,集中算力来形成分叉,并让分叉以更快的增速超过并取代Q所在的主链。如果小敏确实能让分叉更长,分叉就成为了主链,其他节点也会转向新主链上继续工作。这样,小强付出了黄金,却没有收到这10个比特币,“赔了夫人又折兵”。
在这个过程中,小敏需要和原链进行“抗争”,使新分叉成为最长的主链,这被称为“共识攻击”。“共识攻击”本质上是对下一区块的争夺,攻击方越“强壮”、哈希算力越大,就越容易成功。
“共识攻击“成功的可能性有多大呢?
大多数比特币交易所规定,一个交易传送到区块链上后需要6个「确认」来完成验证该笔交易。这一规定的根据是,假设意图造假的矿工拥有10%的算力(挖矿成功概率0.1),那么造假矿工要构造另一条伪链实施长度超越,必须至少成功挖矿6次。那么原链被取代、被抛弃的概率约为0.1的6次方,趋近于0。你可以把比特币理解为地质构造层,表层可能因为季节变换而有所改变,甚至可能被风刮走,但一旦深入到地下,地质层就能更加稳定、不受干扰。
而假设有一群拥有了51%算力的矿工,他们控制了一半以上的全网哈希算力,可以故意在区块链中制造分叉、进行双重支付交易 。但事实是,全网哈希算力的大量增加,个体矿工几乎不可能控制哪怕1%的哈希算力了(但矿池带来的算力集中化控制,存在一定的风险)。更何况,如果真有拥有如此强大算力的组织,他完全可以凭借自己强大的算力投入到挖矿中去获取开发新区块所获的的比特币奖励,诚实挖矿比双花更有利可图。
尽管实际上并未出现51%攻击的问题,但不可否认的是,算力的集中违背了比特币去中心化这一初衷,并成为其继续发展的一大隐患。
一个系统的安全性,往往取决于系统安全的最薄弱环节,这也就是所谓的“木桶原理“。与区块链系统相关的安全性问题包括但不限于以下几项:
(1)在区块链上被广泛使用的公钥系统基本上是安全的,但量子算法在理论上能够破解公钥系统;因此,区块链的算法安全性是相对的。
(2)区块链协议本身存在逻辑缺陷,例如受到黑客攻击的区块链系统共识机制。
(3)所有数字货币系统高度依赖私钥,私钥在存储、使用方面的安全性成为区块链系统安全性中至关紧要的一环。
尽管区块链是去中心化系统,但目前绝大多数数字交易所却是中心化的,存在着人为安全漏洞及技术安全漏洞。这些数字交易所拥有存放大量加密货币的私钥,这对于黑客来说无疑是最瞩目的目标;只要黑客偷走了这些私钥,就可以获取到这些加密货币。
作者会继续阅读相关资料、不断完善本文,目标是完成一篇通俗易懂的比特币科普文章。:)
**本文系网上信息与个人理解的结合,如有偏差及误读,欢迎读者指出。也欢迎给出关于文章结构上的指导~
D. 详解比特币挖矿原理
可以将区块链看作一本记录所有交易的公开总帐簿(列表),比特币网络中的每个参与者都把它看作一本所有权的权威记录。
比特币没有中心机构,几乎所有的完整节点都有一份公共总帐的备份,这份总帐可以被视为认证过的记录。
至今为止,在主干区块链上,没有发生一起成功的攻击,一次都没有。
通过创造出新区块,比特币以一个确定的但不断减慢的速率被铸造出来。大约每十分钟产生一个新区块,每一个新区块都伴随着一定数量从无到有的全新比特币。每开采210,000个块,大约耗时4年,货币发行速率降低50%。
在2016年的某个时刻,在第420,000个区块被“挖掘”出来之后降低到12.5比特币/区块。在第13,230,000个区块(大概在2137年被挖出)之前,新币的发行速度会以指数形式进行64次“二等分”。到那时每区块发行比特币数量变为比特币的最小货币单位——1聪。最终,在经过1,344万个区块之后,所有的共20,999,999.9769亿聪比特币将全部发行完毕。换句话说, 到2140年左右,会存在接近2,100万比特币。在那之后,新的区块不再包含比特币奖励,矿工的收益全部来自交易费。
在收到交易后,每一个节点都会在全网广播前对这些交易进行校验,并以接收时的相应顺序,为有效的新交易建立一个池(交易池)。
每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表:
交易的语法和数据结构必须正确。
输入与输出列表都不能为空。
交易的字节大小是小于MAX_BLOCK_SIZE的。
每一个输出值,以及总量,必须在规定值的范围内 (小于2,100万个币,大于0)。
没有哈希等于0,N等于-1的输入(coinbase交易不应当被中继)。
nLockTime是小于或等于INT_MAX的。
交易的字节大小是大于或等于100的。
交易中的签名数量应小于签名操作数量上限。
解锁脚本(Sig)只能够将数字压入栈中,并且锁定脚本(Pubkey)必须要符合isStandard的格式 (该格式将会拒绝非标准交易)。
池中或位于主分支区块中的一个匹配交易必须是存在的。
对于每一个输入,如果引用的输出存在于池中任何的交易,该交易将被拒绝。
对于每一个输入,在主分支和交易池中寻找引用的输出交易。如果输出交易缺少任何一个输入,该交易将成为一个孤立的交易。如果与其匹配的交易还没有出现在池中,那么将被加入到孤立交易池中。
对于每一个输入,如果引用的输出交易是一个coinbase输出,该输入必须至少获得COINBASE_MATURITY (100)个确认。
对于每一个输入,引用的输出是必须存在的,并且没有被花费。
使用引用的输出交易获得输入值,并检查每一个输入值和总值是否在规定值的范围内 (小于2100万个币,大于0)。
如果输入值的总和小于输出值的总和,交易将被中止。
如果交易费用太低以至于无法进入一个空的区块,交易将被拒绝。
每一个输入的解锁脚本必须依据相应输出的锁定脚本来验证。
以下挖矿节点取名为 A挖矿节点
挖矿节点时刻监听着传播到比特币网络的新区块。而这些新加入的区块对挖矿节点有着特殊的意义。矿工间的竞争以新区块的传播而结束,如同宣布谁是最后的赢家。对于矿工们来说,获得一个新区块意味着某个参与者赢了,而他们则输了这场竞争。然而,一轮竞争的结束也代表着下一轮竞争的开始。
验证交易后,比特币节点会将这些交易添加到自己的内存池中。内存池也称作交易池,用来暂存尚未被加入到区块的交易记录。
A节点需要为内存池中的每笔交易分配一个优先级,并选择较高优先级的交易记录来构建候选区块。
一个交易想要成为“较高优先级”,需满足的条件:优先值大于57,600,000,这个值的生成依赖于3个参数:一个比特币(即1亿聪),年龄为一天(144个区块),交易的大小为250个字节:
High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000
区块中用来存储交易的前50K字节是保留给较高优先级交易的。 节点在填充这50K字节的时候,会优先考虑这些最高优先级的交易,不管它们是否包含了矿工费。这种机制使得高优先级交易即便是零矿工费,也可以优先被处理。
然后,A挖矿节点会选出那些包含最小矿工费的交易,并按照“每千字节矿工费”进行排序,优先选择矿工费高的交易来填充剩下的区块。
如区块中仍有剩余空间,A挖矿节点可以选择那些不含矿工费的交易。有些矿工会竭尽全力将那些不含矿工费的交易整合到区块中,而其他矿工也许会选择忽略这些交易。
在区块被填满后,内存池中的剩余交易会成为下一个区块的候选交易。因为这些交易还留在内存池中,所以随着新的区块被加到链上,这些交易输入时所引用UTXO的深度(即交易“块龄”)也会随着变大。由于交易的优先值取决于它交易输入的“块龄”,所以这个交易的优先值也就随之增长了。最后,一个零矿工费交易的优先值就有可能会满足高优先级的门槛,被免费地打包进区块。
UTXO(Unspent Transaction Output) : 每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。一般来说,每一笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。
块龄:UTXO的“块龄”是自该UTXO被记录到区块链为止所经历过的区块数,即这个UTXO在区块链中的深度。
区块中的第一笔交易是笔特殊交易,称为创币交易或者coinbase交易。这个交易是由挖矿节点构造并用来奖励矿工们所做的贡献的。假设此时一个区块的奖励是25比特币,A挖矿的节点会创建“向A的地址支付25.1个比特币(包含矿工费0.1个比特币)”这样一个交易,把生成交易的奖励发送到自己的钱包。A挖出区块获得的奖励金额是coinbase奖励(25个全新的比特币)和区块中全部交易矿工费的总和。
A节点已经构建了一个候选区块,那么就轮到A的矿机对这个新区块进行“挖掘”,求解工作量证明算法以使这个区块有效。比特币挖矿过程使用的是SHA256哈希函数。
用最简单的术语来说, 挖矿节点不断重复进行尝试,直到它找到的随机调整数使得产生的哈希值低于某个特定的目标。 哈希函数的结果无法提前得知,也没有能得到一个特定哈希值的模式。举个例子,你一个人在屋里打台球,白球从A点到达B点,但是一个人推门进来看到白球在B点,却无论如何是不知道如何从A到B的。哈希函数的这个特性意味着:得到哈希值的唯一方法是不断的尝试,每次随机修改输入,直到出现适当的哈希值。
需要以下参数
• block的版本 version
• 上一个block的hash值: prev_hash
• 需要写入的交易记录的hash树的值: merkle_root
• 更新时间: ntime
• 当前难度: nbits
挖矿的过程就是找到x使得
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET
上式的x的范围是0~2^32, TARGET可以根据当前难度求出的。
简单打个比方,想象人们不断扔一对色子以得到小于一个特定点数的游戏。第一局,目标是12。只要你不扔出两个6,你就会赢。然后下一局目标为11。玩家只能扔10或更小的点数才能赢,不过也很简单。假如几局之后目标降低为了5。现在有一半机率以上扔出来的色子加起来点数会超过5,因此无效。随着目标越来越小,要想赢的话,扔色子的次数会指数级的上升。最终当目标为2时(最小可能点数),只有一个人平均扔36次或2%扔的次数中,他才能赢。
如前所述,目标决定了难度,进而影响求解工作量证明算法所需要的时间。那么问题来了:为什么这个难度值是可调整的?由谁来调整?如何调整?
比特币的区块平均每10分钟生成一个。这就是比特币的心跳,是货币发行速率和交易达成速度的基础。不仅是在短期内,而是在几十年内它都必须要保持恒定。在此期间,计算机性能将飞速提升。此外,参与挖矿的人和计算机也会不断变化。为了能让新区块的保持10分钟一个的产生速率,挖矿的难度必须根据这些变化进行调整。事实上,难度是一个动态的参数,会定期调整以达到每10分钟一个新区块的目标。简单地说,难度被设定在,无论挖矿能力如何,新区块产生速率都保持在10分钟一个。
那么,在一个完全去中心化的网络中,这样的调整是如何做到的呢?难度的调整是在每个完整节点中独立自动发生的。每2,016个区块(2周产生的区块)中的所有节点都会调整难度。难度的调整公式是由最新2,016个区块的花费时长与20,160分钟(两周,即这些区块以10分钟一个速率所期望花费的时长)比较得出的。难度是根据实际时长与期望时长的比值进行相应调整的(或变难或变易)。简单来说,如果网络发现区块产生速率比10分钟要快时会增加难度。如果发现比10分钟慢时则降低难度。
为了防止难度的变化过快,每个周期的调整幅度必须小于一个因子(值为4)。如果要调整的幅度大于4倍,则按4倍调整。由于在下一个2,016区块的周期不平衡的情况会继续存在,所以进一步的难度调整会在下一周期进行。因此平衡哈希计算能力和难度的巨大差异有可能需要花费几个2,016区块周期才会完成。
举个例子,当前A节点在挖277,316个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第277,316个区块(父区块为277,315)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。
比特币共识机制的第三步是通过网络中的每个节点独立校验每个新区块。当新区块在网络中传播时,每一个节点在将它转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。
每一个节点对每一个新区块的独立校验,确保了矿工无法欺诈。在前面的章节中,我们看到了矿工们如何去记录一笔交易,以获得在此区块中创造的新比特币和交易费。为什么矿工不为他们自己记录一笔交易去获得数以千计的比特币?这是因为每一个节点根据相同的规则对区块进行校验。一个无效的coinbase交易将使整个区块无效,这将导致该区块被拒绝,因此,该交易就不会成为总账的一部分。
比特币去中心化的共识机制的最后一步是将区块集合至有最大工作量证明的链中。一旦一个节点验证了一个新的区块,它将尝试将新的区块连接到到现存的区块链,将它们组装起来。
节点维护三种区块:
· 第一种是连接到主链上的,
· 第二种是从主链上产生分支的(备用链),
· 第三种是在已知链中没有找到已知父区块的。
有时候,新区块所延长的区块链并不是主链,这一点我们将在下面“ 区块链分叉”中看到。
如果节点收到了一个有效的区块,而在现有的区块链中却未找到它的父区块,那么这个区块被认为是“孤块”。孤块会被保存在孤块池中,直到它们的父区块被节点收到。一旦收到了父区块并且将其连接到现有区块链上,节点就会将孤块从孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。当两个区块在很短的时间间隔内被挖出来,节点有可能会以相反的顺序接收到它们,这个时候孤块现象就会出现。
选择了最大难度的区块链后,所有的节点最终在全网范围内达成共识。随着更多的工作量证明被添加到链中,链的暂时性差异最终会得到解决。挖矿节点通过“投票”来选择它们想要延长的区块链,当它们挖出一个新块并且延长了一个链,新块本身就代表它们的投票。
因为区块链是去中心化的数据结构,所以不同副本之间不能总是保持一致。区块有可能在不同时间到达不同节点,导致节点有不同的区块链视角。解决的办法是, 每一个节点总是选择并尝试延长代表累计了最大工作量证明的区块链,也就是最长的或最大累计难度的链。
当有两个候选区块同时想要延长最长区块链时,分叉事件就会发生。正常情况下,分叉发生在两名矿工在较短的时间内,各自都算得了工作量证明解的时候。两个矿工在各自的候选区块一发现解,便立即传播自己的“获胜”区块到网络中,先是传播给邻近的节点而后传播到整个网络。每个收到有效区块的节点都会将其并入并延长区块链。如果该节点在随后又收到了另一个候选区块,而这个区块又拥有同样父区块,那么节点会将这个区块连接到候选链上。其结果是,一些节点收到了一个候选区块,而另一些节点收到了另一个候选区块,这时两个不同版本的区块链就出现了。
分叉之前
分叉开始
我们看到两个矿工几乎同时挖到了两个不同的区块。为了便于跟踪这个分叉事件,我们设定有一个被标记为红色的、来自加拿大的区块,还有一个被标记为绿色的、来自澳大利亚的区块。
假设有这样一种情况,一个在加拿大的矿工发现了“红色”区块的工作量证明解,在“蓝色”的父区块上延长了块链。几乎同一时刻,一个澳大利亚的矿工找到了“绿色”区块的解,也延长了“蓝色”区块。那么现在我们就有了两个区块:一个是源于加拿大的“红色”区块;另一个是源于澳大利亚的“绿色”。这两个区块都是有效的,均包含有效的工作量证明解并延长同一个父区块。这个两个区块可能包含了几乎相同的交易,只是在交易的排序上有些许不同。
比特币网络中邻近(网络拓扑上的邻近,而非地理上的)加拿大的节点会首先收到“红色”区块,并建立一个最大累计难度的区块,“红色”区块为这个链的最后一个区块(蓝色-红色),同时忽略晚一些到达的“绿色”区块。相比之下,离澳大利亚更近的节点会判定“绿色”区块胜出,并以它为最后一个区块来延长区块链(蓝色-绿色),忽略晚几秒到达的“红色”区块。那些首先收到“红色”区块的节点,会即刻以这个区块为父区块来产生新的候选区块,并尝试寻找这个候选区块的工作量证明解。同样地,接受“绿色”区块的节点会以这个区块为链的顶点开始生成新块,延长这个链。
分叉问题几乎总是在一个区块内就被解决了。网络中的一部分算力专注于“红色”区块为父区块,在其之上建立新的区块;另一部分算力则专注在“绿色”区块上。即便算力在这两个阵营中平均分配,也总有一个阵营抢在另一个阵营前发现工作量证明解并将其传播出去。在这个例子中我们可以打个比方,假如工作在“绿色”区块上的矿工找到了一个“粉色”区块延长了区块链(蓝色-绿色-粉色),他们会立刻传播这个新区块,整个网络会都会认为这个区块是有效的,如上图所示。
所有在上一轮选择“绿色”区块为胜出者的节点会直接将这条链延长一个区块。然而,那些选择“红色”区块为胜出者的节点现在会看到两个链: “蓝色-绿色-粉色”和“蓝色-红色”。 如上图所示,这些节点会根据结果将 “蓝色-绿色-粉色” 这条链设置为主链,将 “蓝色-红色” 这条链设置为备用链。 这些节点接纳了新的更长的链,被迫改变了原有对区块链的观点,这就叫做链的重新共识 。因为“红”区块做为父区块已经不在最长链上,导致了他们的候选区块已经成为了“孤块”,所以现在任何原本想要在“蓝色-红色”链上延长区块链的矿工都会停下来。全网将 “蓝色-绿色-粉色” 这条链识别为主链,“粉色”区块为这条链的最后一个区块。全部矿工立刻将他们产生的候选区块的父区块切换为“粉色”,来延长“蓝色-绿色-粉色”这条链。
从理论上来说,两个区块的分叉是有可能的,这种情况发生在因先前分叉而相互对立起来的矿工,又几乎同时发现了两个不同区块的解。然而,这种情况发生的几率是很低的。单区块分叉每周都会发生,而双块分叉则非常罕见。
比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁地区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。
E. 获特斯拉力挺!比特币再创新高,为何高层人员这么看好比特币
其实比特币对于我们来说一直是让我们比较关注的一个物品,而且我们也觉得比特币真的能够一个比较好的发展,有时候我们对于比特币可能没有那么了解,但是我们却知道比特币能够有一个月亮要的发展,而且价格也在不断的升高,这是一个趋势,而且也可能一直长时间的持续下去,我觉得比特币其实可能会有一个比较好的功能和作用,并且能够应用到越来越多的领域。而且也的确是有越来越多的人都十分看好比特币的未来。
其实也有很多企业都十分看好比特币,并且也认为如果自己能够投资比特币的话,一定能够让自己赚到更多的钱,而且也能够让自己一个月利好的市场份额,并且能够让自己提高竞争力。这是很多企业都想要做的事情,也要很多企业也在实践这个事情。很多企业歧视业投资的比特币,并且也让自己的资金比较多的去投入比特币中,想要让自己获得更多的资金,并且也想要让自己有一个更好的未来。获特斯拉力挺!比特币再创新高,为何高层人员这么看好比特币?我认为主要有三个原因:
一、比特币的发展前景较好,
其实的确很多人都觉得比特币能够有一个比较好的发展,因为很多人都觉得比特币的发展前景是食堂的事,上比特币的确也有一个比较好的发展前景,因为在越来越多的领域都能够去应用到比特币,这就会导致比特币能够有一个越来越好的地位,并且能够让越来越多的人都去重视比特币的发展。
以上就是我的看法,大家还什么想法吗?欢迎在评论区留言。
F. 小米手机无法安装比特派钱包
手机不支持。
如果安装不上去的话,证明你的手机不支持,或者是安装包下载不对导致的。
比特派是由比太团队研发的一款数字钱包,是该团队目前的主打产品。比太不仅是华人世界里技术积淀最深的钱包团队,也是世界范围内技术领先的钱包团队之一。他们研发了华人世界里唯一被bitcoin.org推荐的钱包——比太钱包,帮助全球数十万用户安全的管理了近百万的比特币资产。
G. 小米葡萄牙商店开始接受加密货币支付,这意味着什么
小米葡萄牙商店开始接受加密货币支付,其实这并不意味着什么,这只能意味着小米的海外公司接受了加密货币而已,这只是一个商业公司的正经商业决策,并不能对整个加密货币市场以及相关市场环境产生决定性影响,我们不必想得过多。实话实说,加密货币今年的走势可谓是一波三折,这么折腾下来竟然还有大科技公司进场,这可真的是一件奇闻。
在小米葡萄牙商店宣布这个消息以后,加密货币可以说价格迎来了一波涨幅,这也只是有推手在后面推动着加密货币的价格上升而已,并不是说加密货币就获得了市场的普遍认可。现在这么多人仍然关注着加密货币,主要是因为很多人都在今年加密货币起起落落的时候被套牢在了顶峰,这时候加关注加密货币也只是想快点脱离风吹体谅的日子而已。
综合以上种种,小米葡萄牙商店开始接受加密货币支付并不意味着什么,这只能说小米葡萄牙商店做出了一个有利于本公司的商业决策而已。
H. 比特币是什么
比特币(Bitcoin)的概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生。根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的虚拟的加密数字货币。点对点的传输意味着一个去中心化的支付系统。
与所有的货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。比特币与其他虚拟货币最大的不同,是其总数量非常有限,具有极强的稀缺性。
本条内容来源于:中国法律出版社《中华人民共和国金融法典:应用版》
I. 小米葡萄牙商店开始接受比特币等加密货币支付,你支持小米这一行为吗
其实对于这一点,我是完全不能够接受的,毕竟不管怎么说,小米公司还是属于国内的企业,在葡萄的商店里边儿开始接受比特币等加密货币进行支付,按照道理来说实际上是不允许的,主要就是因为我们国内目前不承认比特币这类的虚拟货币,而且甚至已经开始打击他们。那么今天就跟大家来探讨一下我对小米这一个行为的看法。
第三,如何看待小米公司的行为?
小米公司这样做,我是完全不太理解的,一方面是因为加密货币在今年和前年的市场的确发展得非常的厉害,市场的规模正在逐渐的扩充当中,但说实话,比特币这样的虚拟经济只不过是昙花一现,现在他的市值已经缩水了快要一倍。从这里就可以看出小米公司这一次的选择并不是非常的高明。