难度是对挖矿困难程度的度量,即指:计算符合给定目标的一个HASH值的困难程度。
difficulty = difficulty_1_target / current_target
difficulty_1_target 的长度为256bit, 前32位为0, 后面全部为1 ,一般显示为HASH值:, difficulty_1_target 表示btc网络最初的目标HASH。 current_target 是当前块的目标HASH,先经过压缩然后存储在区块中,区块的HASH值必须小于给定的目标HASH, 区块才成立。
例如:如果区块中存储的压缩目标HASH为 0x1b0404cb , 那么未经压缩的十六进制HASH为
所以,目标HASH为0x1b0404cb时, 难度为:
比特币的挖矿的过程其实是通过随机的hash碰撞,找到一个解 nonce ,使得 块hash 小于 目标HASH 值。 而一个矿机每秒钟能做多少次hash碰撞, 就是其“算力”的代表, 单位写成 hash/s 或者 H/s
算力单位:
比特币系统的难度是动态调整的, 每挖 2016 个块便会做出一次调整, 调整的依据是前面2016个块的出块时间, 如果前一个周期平均出块时间小于10分钟,便会加大难度, 大于10分钟,则减小难度,目的是为了保证系统稳定的每过 10分钟 产出一个块,所以难度调整的时间大概是2周(2016 * 10 分钟)
全网算力是btc网络中参与竞争挖矿的所有矿机的算力总和。当前难度周期全网算力会影响下一个周期的难度调整, 如果全网算力增加,挖矿难度增大,单台矿机固定时间的产出就会减少。目前全网算力大概是24.42EH/s, 一台蚂蚁S9矿机的算力大概是14TH/s
那么, 已知当前全网算力,下一个周期难度将如何调整呢?
根据公式:
因为出块时间要稳定在10分钟, 也就是600s:
那么,在3.46e+12的难度下, 一台算力为14TH/s的矿机平均要花多长时间才能出一个块呢?
根据公式:
有:
结果大概是12270天
『贰』 比特币算力大幅下降,会有什么影响
1、低成本的币可能增加市场的抛压
尤其是7nm矿机的大规模上市,其挖矿成本在26000人民币上下, 对于矿工而言,仍有较大的利润空间,出于运营维护矿场日常的需求,必然存在部分抛压,算力的下降,反倒会减少市场上流动的币。
2、矿机商为了新矿机的销售,可能通过打压币价,淘汰老矿机,从而增加新矿机的销售量
以上一款主流老矿机蚂蚁S9为例,当算力增加到100EH/S时,只要币价达到7000美元左右,蚂蚁S9以上的老旧矿机都将淘汰,只要这样的币价维持2个月左右,将倒逼矿场与矿工出清老矿机,购买新的大算力矿机。
3、当前市场普遍看好减半行情,为了减少下降的阻力,极有可能会经历一波下行
为减轻减半的下降主力,市场有较大的可能经历一波下行,矿场与矿工为了为了锁定挖矿的收益,有较大的可能采取套保措施,从某种程度上,会增加市场的下降阻力,增加上行的风险。
也就是说算力下降的背后,是由于币价的下行,以及7nm矿机的投产,在利润空间增大的刺激下,市场购买大量新型矿机,投入到挖矿中,从而造成比特币算力的下降。
众所周知,算力的大幅上涨,是币价上涨的结果,而不是币价上涨的原因。反倒是大算力矿机投产导致的算力的快速上涨,增加了比特币的抛压,增加了下行的风险。
比特币算力下降影响价格吗?
首先,如果BTC的价格可以维持,目前还在挖矿的矿工利润上升了,而且上升的比例不止15%,举个简单的例子,假如之前有矿工电费成本10元,能挖到20元的币,利润是10元,难度下降之后,能多挖15%的币,就是23元,电费成本不变,利润就是13元,利润上升了30%。前段时间币圈有大佬说矿场和部分矿工可能在托盘,因为BTC的价格即将跌破他们的关机价,现在来看,由于利润上升,他们的底线可能会下调,短期内对比特币的价格可能是一个利空,不过影响BTC价格的因素还有很多,我们可以拭目以待。
比特币算力下降意味着什么?以上就是比特币算力下降意味着什么的相关内容,其实挖比特币的算力实质上是一直在求解,这样就能保证最长的链条拥有全网最大的工作量,从而不会被更改,这样也就实现了比特币系统是坚固的,是不会被人攻击的,也就是说比特币算力是为了维护比特币网络的安全,因此比特币算力对于比特币来说是非常重要的,而对于矿工来说,比特币算力也是极为重要的,毕竟比特币算力的变化直接影响矿工挖矿的难度。
比特币挖矿赚不赚钱,有5个非常关键的数据对其产生影响:比特币价格、算力、电费成本、全网挖矿难度、矿机成本价。后面4个因素,彼此之间互相影响,最后可能对BTC价格产生影响。
4月6日,一篇题为《中国比特币区块链运行的碳排放量与可持续性的政策评估》的论文发表在了《自然通讯》上,来自中国科学院、清华大学学者的这篇论文,引发了中国甚至海外媒体的关注。在国家的「双控」目标下,新疆、内蒙等地的火力发电的矿场被迫停止运营。在针对比特币挖矿的监管要求下达后,近期比特币全网算力暴跌了20%。
那么比特币全网算力大跌以后对广大矿工有什么影响呢?首先咱们要这里先解释一下什么是挖矿难度调整。中本聪在发明比特币时,将难度调整的逻辑写在了代码中,每个全节点中独立自动发生。这个逻辑是:比特币大约每10分钟挖出一个块,每挖出2016个块调整一次,正常情况下,每14天左右会调整一次难度,挖矿的难度是根据之前一个周期的比特币全网算力来调整,所以难度和全网算力是相关的,时间上有一定程度的滞后。概括来说,挖矿难度调整是为了调整出块(比特币)的快慢,难度越高出块越慢,难度越低出块越快。
从上图可以看出,预测挖矿难度会在5月30日下降到21.86T,不难猜测,近期的难度下降比较明显的原因有两方面:1、国家监管出拳,整顿内蒙、新疆等地的虚拟货币矿场,矿场停运导致的全网算力下降。2、BTC价格大幅下跌,导致老的矿机已经不赚钱,这部分矿机的关机会导致全网算力下降。
那么全网算力、挖矿难度是一个什么样的关系呢?这里有一个逻辑,全网算力下降说明挖矿的人少了,导致的结果是出块的速度加快,也就是挖矿难度下降了。那么咱们是不是可以这么理解:全网算力下降,致使挖矿难度下降,矿工更容易挖到比特币了呢?
更好挖了,钱都让别人赚去了
『叁』 比特币算力复苏了
四方投研社区6月27日讯 从6月23日开始,比特币算力连续四天出现上涨,一些业内人士认为,算力市场可能已经从“6·19” 24:00四川所有比特币等虚拟货币矿机集体断电后恢复了,但真是这样吗?下面就让我们一起来盘点下最近这段时间究竟发生了什么吧。
6月18日,据澎湃新闻最先报道,四川省有关部门下发通知,要求发电企业自查自纠,立即停止向虚拟货币“挖矿”项目供电,不折不扣落实国家清理要求。通知还要求,各市(州) 于6月20日前完成省内26个疑似虚拟货币挖矿重点项目的甄别、清理和关停工作,同时要求发电企业立即停止向虚拟货币挖矿项目供电,并于6月25日前上报自查、整改情况。此外,各市(州)政府也被要求开展拉网式排查,对发现的挖矿项目立即关停。
6月19日24点,即6月20日零点,四川所有矿场被集体断电,来不及转移的比特币矿工因此遭遇巨大损失,据悉四川是国内乃至世界最大的比特币矿工聚集地,大约有800万的负荷正用于加密货币挖矿。当日算力随机跌破100 E,创下近7个月最低点。上一次比特币比特币全网算力新低发生在2020年11月3日,当时算力为87.8228 E。
6月20日,四川矿场集体断电后,数据显示多个有国内背景的比特币矿池算力正急剧下降,前10大矿池算力出现普跌,蚂蚁矿池跌幅超过25%、ViaBTC、鱼池F2Pool、BTC.com等矿池算力也都出现了10-20%的跌幅。
6月21日,主流矿池算力进一步下降,蚂蚁矿池减少近2500 P,鱼池F2Pool减少近2000 P、Poolin减少了超过1000 P。结果比特币全网算力跌破90 E(最低触及88.9964 E),系2020年11月以来首次。比特币全网算力曾在2020年11月3日跌至87.8228 E。之后在长达半年多时间里一直处于90 E以上,这也是比特币全网算力自5月19日四川省清退挖矿之后连续第三天下跌。
6月22日,比特币全网算力依然没有停止下跌,下滑至87.3106 E,随之而来的是比特币价格重挫,一度跌破29,000 USDT,创下近五个月新低。
6月23日,比特币全网算力跌至83.4331 EH/s,创下近一年新低(实际上也是近13个月新低),上一次低于该算力值的时间发生在2020年5月26日,当日比特币全网算力为76.4801 EH/s。
不过,随后的情况似乎出现好转。
6月24日,比特币全网算力开始回升,达到86.3269 E,此外多个国内背景的矿池算力也出现上涨。
6月25日,比特币全网算力反弹到90 E以上(92.4852 E),前五大矿池算力24小时变化均恢复正增长,其中Poolin算力24小时涨幅3.84%、蚂蚁矿池算力24小时涨幅1.48%、ViaBTC算力24小时涨幅1.44%。
据decrypt报道,Ycharts数据显示,比特币算力在6月26-27日上涨了近5%,一度反弹至104 EH/s——这可能是因为许多矿工开始将自己的矿机迁往北美(美国德克萨斯州、马里兰州和加拿大等地)和哈萨克斯坦,比如:
6月21日广州物流公司向CNBC确认,他们空运了3000公斤(6600磅)比特币矿机到美国马里兰州,每公斤价格低至9.37美元;
嘉楠耘智则于6月23日发布的新闻稿中称,已在哈萨克斯坦建立了运营基地并开展挖矿业务,欲将其业务多元化至比特币挖矿,并继续出售挖矿设备,以帮助提升其财务业绩;
与此同时,美股上市企业比特矿业官网消息称其首批虚拟货币矿机运抵哈萨克斯坦,320台矿机总算力约为18.2 PH/S,预计在6月27日部署完毕并投入运营,其他自有矿机也正分批运往海外。
值得注意的是,随着全网算力表现出复苏迹象,比特币价格也开始略微回暖,本文撰写时据CoinGecko数据显示为33,222.32美元,24小时涨幅达到6.1%。
但据业内人士分析,除非国内政策放松,否则至少在半年内很难恢复到以前(130 E)的水平。与比特币算力相关的一系列数字变化,凸显出数字货币与国内政策之间存在密不可分的联系,数字货币行业不能低估这种影响力,但对未来政策开放也要有一定预期(虽然短期内不可能)。
『肆』 比特币的算力在增加,BCH在减少,怎么回事
比特币和比特币现金(BCH)的挖矿机制是相同的。矿工会根据挖矿收益的高低来选择是挖比特币还是挖比特币现金,比特币算力增加,比特币现金算力减少是一种正常现象。
简单来说就是在利益驱动下的一种算力重新分配。
『伍』 比特币基础知识 你绝对想不到
椭圆曲线数字签名算法
椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线对数字签名算法(DSA)的模拟,该算法是构成比特币系统的基石。
私钥
非公开,拥有者需安全保管。通常是由随机算法生成的,说白了,就是一个巨大的随机整数,32字节,256位。
大小介于1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之间的数,都可以认为是一个合法的私钥。
于是,除了随机方法外,采用特定算法由固定的输入,得到32字节输出的算法就可以成为得到私钥的方法。于是,便有了迷你私钥(Mini Privkey),原理很简单,例如,采用SHA256的一种实现:
private key = SHA256()1
迷你私钥存在安全问题,因为输入集合太小,易被构造常见组合的彩虹表暴力破解,所以通常仿轮纳还是使用系统随机生成的比较好,无安全隐患。
公钥
公钥与私钥是相对应的,一把私钥可以推出唯一的公钥,但公钥却无法推导出私钥。公钥有两种形式:压缩与非压缩。
早期比特币均使用非压缩公钥,现大部分客户端已默认使用压缩公钥。
这个貌似是比特币系统一个长得像feature的bug,早期人少活多代码写得不够精细,openssl库的文档又不足够好,导致Satoshi以为必须使用非压缩的完整公钥,后来大家发现其实公钥的左右两个32字节是有关联的,左侧(X)可以推出右侧(Y)的平方值,有左侧(X)就可以了。
现在系统里两种方式共存,应该会一直共存下去。两种公钥的首个字节为标识位,压缩为33字节,非压缩为65字节。以0x04开头为非压缩,0x02/0x03开头为压缩公钥,0x02/0x03的选取由右侧Y开方后的奇偶决定。
压缩形式可以减小Tx/Block的体积,每个Tx Input减少32字节。
签名
使用私钥对数据进行签署(Sign)会得到签名(Signature)。通常会将数据先生成Hash值,然后对此Hash值进行签名。签名(signature)有两部分组成: R + S。由签名(signature)与Hash值,便可以推出一个公钥,验证此公钥,便可知道此签名是否由公钥对应的私钥签名。
通常,每个签名会有三个长度:73、72、71,符合校验的概率为25%、50%、25%。所以每次签署后,需要找出符合校验的签名长度,再提供给验证方。
地址
地址是为了人们交换方便而弄出来的一个方案,因为公钥太长了(130字符串或66字符串)。地址长度为25字节,转为base58编码后,为34或35个字符。base58是类似base64的编码,但去掉了易引起视觉混淆的字符,又在地址末尾添加了4个字节校验位,保障在人们交换个别字符错误时,也能够因地址校验失败而制止了误操作。
由于存在公钥有两种形式,那么一个公钥便对应两个地址。这两个地址都可由同一私钥签署交易。
公钥生成地址的算法:
Version = 1 byte of 0 (zero); on the test network, this is 1 byte of 111
Key hash = Version concatenated with RIPEMD-160(SHA-256(public key))
Checksum = 1st 4 bytes of SHA-256(SHA-256(Key hash))
Bitcoin Address = Base58Encode(Key hash concatenated with Checksum)1234
下图是非压缩公钥生成地址的过程:
对于压缩公钥生成地址时,则只取公钥的X部分即可。
推导关系
三者推导关系:私钥
公钥
两个地址。过程均不可逆。拥有私钥便拥有一切,但通常为了方便,会把对应的公钥、地址也存储起来。
交易
比特币的交易(Transation,缩写Tx),并不是通常意义的桐散交易,例如一手交钱一手交货,而是转账。交易由N个输入和M个输出两部分组成。交易的每个输入便是前向交易的某个输出,那么追踪到源头,必然出现一个没有输入的交易,此类交易称为CoinBase Tx。CoinBase类备没交易是奖励挖矿者而产生的交易,该交易总是位于Block块的第一笔。
拥有一个输入与输出的Tx数据:
Input:
Previous tx:
Index: 0
scriptSig:
241501
Output:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160
OP_EQUALVERIFY OP_CHECKSIG12345678910
一旦某个Tx的第N个输出成为另一个Tx的输入,那么该笔比特币即为已花费。每个交易有唯一Hash字符串来标识,通过对交易数据做两次SHA256哈希运算而来:
Tx Hash ID = SHA256(SHA256(Tx Data))1
矿工费
矿工费(Transaction Fee)是鼓励矿工将Tx打包进Block的激励报酬。计算一笔交易的矿工费:
Transaction Fee = SUM(Inputs amount) - SUM(Outputs amount)1
每笔Tx的矿工费必然大于等于零,否则该笔Tx即为非法,不会被网络接收。
数据块
数据块(Block)是存储Block Meta与Tx的地方。Block的第一笔Tx总是CoinBase Tx,因此Block中的交易数量总是大于等于1,随后是这段时间内网络广播出来的Tx。
找到合适的Block是一件非常困难的事情,需要通过大量的数学计算才能发现,该计算过程称为“挖矿”。首个发现者,会得到一些比特币作为奖励。
数据链
多个Block连接起来成为数据链(Block Chain)。
为了引入容错与竞争机制,比特币系统允许Block Chain出现分叉,但每个节点总是倾向于选择最高的、难度最大的链,并称之为Best Chain,节点只认可Best Chain上的数据。
首个Block称为Genesis Block,并设定高度为零,后续每新增一个Block,高度则递增一。目前是不允许花费Genesis Block中的比特币的。
每个Block中的Tx在此Block中均唯一
一个Tx通常只会在一个Block里,也可能会出现在多个Block中,但只会在Best Chain中的某一个Block出现一次
货币存储
比特币是密码货币、纯数字化货币,没有看得见摸得着的硬币或纸币。一个人持有比特币意味着:
其拥有一些地址的私钥
这些地址是数笔交易的输出,且未花费
所有货币记录均以交易形式存储在整个blockchain数据块中,无交易无货币。货币不会凭空产生,也不会凭空消失。遗失了某个地址的私钥,意味着该地址上的Tx无法签署,无法成为下一个Tx的输入,便认为该笔比特币永久消失了。
货币发行
既然所有交易的输入源头都是来自CoinBase,产生CoinBase时即意味着货币发行。比特币采用衰减发行,每四年产量减半,第一个四年每个block的coinbase奖励50BTC,随后是25btc, 12.5btc, 并最终于2140年为零,此时总量达到极限为2100万个btc。
减半周期,严格来说,并不是准确的四年,而是每生成210000个block。之所以俗称四年减半,是因为比特币系统会根据全网算力的大小自动调整难度系统,使得大约每两周产生2016个block,那么四年约21万块block。
该函数GetBlockValue()用于计算挖得Block的奖励值:
int64 static GetBlockValue(int nHeight, int64 nFees)
{
int64 nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210000 blocks, which will occur approximately every 4 years
nSubsidy = (nHeight / 210000);
return nSubsidy + nFees;
}123456789
当达到2100万btc以后,不再有来自CoinBase的奖励了,矿工的收入来源仅剩下交易的矿工费。此时,每个block的收入绝对值btc很低,但此时比特币应当会非常繁荣,币值也会相当的高,使得矿工们依然有利可图。
杜绝多重支付
传统货币存在多重支付(Double Spending)问题,典型的比如非数字时代的支票诈骗、数字时代的信用卡诈骗等。在比特币系统里,每笔交易的确认均需要得到全网广播,并收录进Block后才能得到真正确认。每笔钱的花销,均需要检测上次输入交易的状态。数据是带时间戳的、公开的,BlockChain由巨大的算力保障其安全性。所以比特币系统将货币的多重支付的风险极大降低,几近于零。通过等待多个Block确认,更是从概率上降低至零。一般得到6个确认后,可认为非常安全。但对于能影响你人生的重大支付,建议等待20~30个确认。
匿名性
任何人均可以轻易生成大量的私钥、公钥、地址。地址本身是匿名的,通过多个地址交易可进一步提高匿名性。但该匿名性并不像媒体宣传的那样,是某种程度上的匿名。因为比特币的交易数据是公开的,所以任何一笔资金的流向均是可以追踪的。
不了解比特币的人为它的匿名性产生一些担忧,比如担心更利于从事非法业务;了解比特币的人却因为它的伪匿名性而苦恼。传统货币在消费中也是匿名的,且是法律保障的,大部分国家都不允许个人涂画纸币。
地址本身是匿名的,但你可以通过地址对应的私钥签名消息来向公众证明你拥有某个比特币地址。
其他名词
哈希
哈希(Hash)是一种函数,将一个数映射到另一个集合当中。不同的哈希函数映射的空间不同,反映到计算机上就是生成的值长度不一样。同一个哈希函数,相同的输入必然是相同的输出,但同一个输出却可能有不同的输入,这种情况称为哈希碰撞。
常见的哈希函数有CRC32, MD5, SHA1, SHA-256, SHA-512, RIPEMD-160等,哈希函数在计算中有着非常广泛的用途。比特币里主要采用的是SHA-256和RIPEMD-160。
脑钱包纸钱包
前面提到过的脑钱包与纸钱包,这其实不算是钱包的分类,只是生成、存储密钥的方式而已。脑钱包属于迷你私钥的产物。脑钱包就是记在脑袋里的密钥,纸钱包就是打印到纸上的密钥,仅此而已。
有同学提到过,以一个计算机文件作为输入,例如一个数MB大小的照片,通过某种Hash运算后得到私钥的方法。这个方案的安全性还是不错的,同时可以防止盗私钥木马根据特征扫描私钥。文本形式存储私钥是有特征的,而一个照片文件却难以察觉,即使放在云盘等第三方存储空间中都是安全的。
『陆』 比特币 一台58T的矿机多久能挖到一个比特币
按照现在比特币算力估算,58T一天大约可以获得0.00095352个比特币,大概要一千天才能获得一个比特币,但是,比特币的算力是会调整的,目前看,难度还是会增加,意思就是,每隔一段时间,每天挖的数量就会下降一次。
『柒』 比特币机制研究
现今世界的电子支付系统已经十分发达,我们平时的各种消费基本上在支付宝和微信上都可以轻松解决。但是无论是支付宝、微信,其实本质上都依赖于一个中心化的金融系统,即使在大多数情况这个系统运行得很好,但是由于信任模型的存在,还是会存在着仲裁纠纷,有仲裁纠纷就意味着不存在 不可撤销的交易 ,这样对于 不可撤销的服务 来说,一定比例的欺诈是不可避免的。在比特币出来之前,不存在一个 不引入中心化的可信任方 就能解决在通信通道上支付的方案。
比特币的强大之处就在于:它是一个基于密码学原理而不是依赖于中心化机构的电子支付系统,它能够允许任何有交易意愿的双方能直接交易而不需要一个可信任的第三方。交易在数学计算上的不可撤销将保护 提供不可撤销服务 的商家不被欺诈,而用来保护买家的 程序化合约机制 也比较容易实现。
假设网络中有A, B ,C三个人。
A付给B 1比特币 ,B付给C 2比特币 ,C付给A 3比特币 。
如下图所示:
为了刺激比特币系统中的用户进行记账,记账是有奖励的。奖励来源主要有两方面:
比特币中每一笔交易都会有手续费,手续费会给记账者
记账会有打包区块的奖励,中本聪在08年设计的方案是: 每10分钟打一个包,每打一个包奖励50个比特币,每4年单次打包的奖励数减半,即4年后每打一个包奖励25个比特币,再过四年后就奖励12.5个比特币... 这样我们其实可以算出比特币的总量:
要说明打包的记录以谁为准的问题,我们需要引入一个知名的 拜占庭将军问题 (Byzantine failures)。拜占庭将军问题是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。
假设有9个互相远离的将军包围了拜占庭帝国,除非有5个及以上的将军一起攻打,拜占庭帝国才能被打下来。而这9个将军之间是互不信任的,他们并不知道这其中是否有叛徒,那么如何通过远距离协商来让他们赢取战斗呢?
口头协议有3个默认规则:
1.每个信息都能够被准确接收
2.接收者知道是谁发送给他的
3.谁没有发送消息大家都知道
4.接受者不知道转发信息的转发者是谁
将军们遵循口头规则的话,那就是下面的场景:将军1对其他8个将军发送了信息,然后将军2~9将消息进行转达(广播),每个将军都是消息的接受者和转发者,这样一轮下来,总共就会有9×8=72次发送。这样将军就可以根据自己手中的信息,选择多数人的投票结果行动即可,这个时候即便有间谍,因为少数服从多数的原则,只要大部分将军同意攻打拜占庭,自己就去行动。
这个方案有很多缺点:
1.首先是发送量大,9个将军之间要发送72次,随着节点数的增加,工作量呈现几何增长。
2.再者是无法找出谁是叛徒,因为是口头协议,接受者不知道转发信息的转发者是谁,每个将军手里的数据仅仅只是一个数量的对比:
这里我们假设有3个叛徒,在一种最极端的情况下即叛徒转发信息时总是篡改为“不进攻”,那么我们最坏的结果就如上图所示。将军1根据手里的信息可以推出要进攻的结论,却无法获知将军里面谁是叛徒。
这样我们就有了方案二:书面协议。
书面协议即将军在接受到信息后可以进行签字,并且大家都能够识别出这个签字是否是本人,换种说法就是如果有人篡改签字大家可以知道。书面协议相对比口头协议就是增加了一个认证机制,所有的消息都有记录。一旦发现有人所给出的信息不一致,就是追查间谍。
有了书面协议,那么将军1手里的信息就是这样的:
可以很明显得看出,在最坏的一种情况——叛徒总是转发“不进攻”的消息之下,将军7、8、9是团队里的叛徒。
这个方案解决了口头协议里历史信息不可追溯的问题,但是在发送量方面并没有做到任何改进。
在我们的示例中,比特币系统里的每个用户发起了一笔交易,都会通过自己的私钥进行签名,用数学公式表示就是:
所以之前的区块就变成了这样:
这样每一笔交易都由交易发起者通过私钥进行数字签名,由于私钥是不公开的,所以交易信息也就无法被伪造了。
如书面协议末尾所说的那样,书面协议未能解决信息交流过多的问题。当比特币系统中存在上千万节点的时候,如果要互相广播验证,请求响应的次数那将是一个非常庞大的数字,显然势必会造成网络拥堵、节点处理变慢。为了解决这个问题,中本聪干脆让整个10分钟出一个区块,这个区块由谁来打包发出呢?这里就采用了工作量证明机制(PoW)。工作量证明,说白了就是解一个数学题,谁先解出来数学题,谁就能有打包区块的权力。换在拜占庭将军的例子中就是,谁先做出数学题,谁就成为将军们里面的总司令,其他将军听从他发号的命令。
首先,矿工会将区块头所占用的128字节的字符串进行两次sha256求值,即:
这样求得一个值Hash,将其与目标值相比对,如果符合条件,则视为工作量证明成功。
工作量证明成功的条件写在了区块链头部的 难度数 字段,它要求了最后进行两次sha256运算的Hash值必须小于定下的目标值;如果不是的话,那就改变区块头的 随机数 (nonce),通过一次次地重复计算检验,直到符合条件为止。
此外, 比特币有自己的一套难度控制系统,使得比特币系统要在全网不同的算力条件下,都保持10分钟生成一个区块的速率。这也就意味着:难度值必须根据全网算力的变化进行调整。难度调整的策略是由最新2016个区块的花费时长与期望时长(期望时长为20160分钟即两周,是按每10分钟一个区块的产生速率计算出的总时长)比较得出的,根据实际时长与期望时长的比值,进行相应调整(或变难或变易)。也就是说,如果区块产生的速率比10分钟快则增加难度,比10分钟慢则降低难度。
PoW其实在比特币中是做了以下的三件事情。
这样可以防止一台高性能机器同时跑上万个节点,因为每完成一个工作都要有足够的算力。
有经济奖励就会加速整个系统的去中心化,也鼓励大家不要去作恶,要积极地按照协议本来的执行方式去执行。(所以说,无币区块链其实是不可行的,无币区块链一定导致中心化。)
也就是说,每个节点都不能以自身硬件条件去控制出快速度。现在的比特币上平均10分钟出一个块,性能再好的机器也无法打破这个规则,这就能够保证 区块链是可以收敛到共同的主链上的 ,也就是我们所说的共识。
综上,共识只是PoW三个作用中的一点,事实上PoW设计的作用有点至少有这么三种。
默克尔树的概念其实很简单,如图所示
这样,我们区块的结构就大致完整了,这里分成了区块头和区块体两部分。
区块链的每个节点,都保存着区块链从创世到现在的每一区块,即每一笔交易都被保存在节点上,现在已经有几百个GB了。
每当比特币系统中有一笔新的交易生成,就会将新交易广播到所有的节点。每个节点都把新交易收集起来,并生成对应的默克尔根,拼接完区块头后,就开始调整区块头里的随机数值,然后就开始算数学题
将算出的result和网络中的目标值进行比对,如果是结果是小于的话,就全网广播答案。其他矿工收到了这个信息后,就会立马放下手里的运算,开始下一个区块的计算。
举个例子,当前A节点在挖38936个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第38936个区块(前一个区块为38935)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。
整个流程就像下一张图所展示的这样:
简单来说,双花问题是一笔钱重复花了两次。具体来讲,双花问题可分为两种情况:
1.同一笔钱被多次使用;
2.一笔钱只被使用过一次,但是通过黑客攻击或造假等方式,将这笔钱复制了一份,再次使用。
在我们生活的数字系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况,为了解决双花问题,日常生活中是依赖于第三方的信任机构的。这类机构对数据进行中心化管理,并通过实时修改账户余额的方法来防止双重支付的出现。而作为去中心化的点对点价值传输系统,比特币通过UTXO、时间戳等技术的整合来解决双花问题。
UTXO的英文全称是 unspent transaction outputs ,意为 未使用的交易输出 。UTXO是一种有别于传统记账方式的新的记账模型。
银行里传统的记账方式是基于账户的,主要是记录某个用户的账户余额。而UTXO的交易方式,是基于交易本身的,甚至没有账户的概念。在UTXO的记账机制里,除了货币发行外,所有的资金来源都必须来自于前面某一个或几个交易。任何一笔的交易总量必须等于交易输出总量。UTXO的记账机制使得比特币网络中的每一笔转账,都能够追溯到它前面一笔交易。
比特币的挖矿节点获得新区块的挖矿奖励,比如 12.5 个比特币,这时,它的钱包地址得到的就是一个 UTXO,即这个新区块的币基交易(也称创币交易)的输出。币基交易是一个特殊的交易,它没有输入,只有输出。
当甲要把一笔比特币转给乙时,这个过程是把甲的钱包地址中之前的一个 UTXO,用私钥进行签名,发送到乙的地址。这个过程是一个新的交易,而乙得到的是一个新的 UTXO。
这就是为什么有人说在这个世界上根本没有比特币,只有 UTXO,你的地址中的比特币是指没花掉的交易输出。
以Alice向Bob进行转账的过程举例的话:
UTXO 与我们熟悉的账户概念的差别很大。我们日常接触最多的是账户,比如,我在银行开设一个账户,账户里的余额就是我的钱。
但在比特币网络中没有账户的概念,你可以有多个钱包地址,每个钱包地址中都有着多个 UTXO,你的钱是所有这些地址中的 UTXO 加起来的总和。
中本聪发明比特币的目标是创建一个点对点的电子现金,UTXO 的设计正可以看成是借鉴了现金的思路:我们可能在这个口袋里装点现金,在那个柜子角落里放点现金,在这种情况下不存在一个账户,你放在各处的现金加起来就是你所有的钱。
采用 UTXO 设计还有一个技术上的理由,这种特别的数据结构可以让双重花费更容易验证。对比一下:
『捌』 比特币挖矿机的算力随时间衰减吗
这个不好说。如果币价持续下跌,矿工普遍对比特币失去信心,挖矿的收益严重低于挖矿成本,那么大量的矿工就会停止挖矿,算力就会骤降。还有就是因为世界各主要的国家对比特币采取了更加严厉的态度,例如中国和美国,那么比特币算力也可能会出现骤降,甚至挖矿消失。
但比特币挖矿作为一种基础设施,如果比特币能持续的存在下去,虽然挖矿的收益减少了,但是为了整个比特币网络系统的安全,一些大的比特币公司可能会出资进行挖矿,维护比特币网络系统的安全。还有就是比特币未来的前景更加明朗化,前途一片光明,比特币算力不但不会降低,还会增加。
『玖』 比特币在2012年十一月底算力减半为多少
第一次减半:2012年11月28日,第210000个区块被挖出,区块奖励第一次减半,区块奖励为25BTC。
第二次减半:2016年7月10日,从第420.000个区块开始每个区块产出的比特币奖励减半至12.5BTC。
第三次减半:2020年5月12日,比特币奖励减半至6.25BTC
下一次减半:2024年5月9日,比特币奖励将减半至3.125BTC