导航:首页 > 比特币区 > 比特币hash过程

比特币hash过程

发布时间:2024-10-27 20:09:10

A. 比特币———一个币值8万多元人民币

接触过数字货币的人对比特币都不陌生,它是数字货币的祖宗,如果你在2010年的时候用三美元买1万个比特币留到现在,那么现在你的身价是8亿多人民币,是不是不可思议

区块链技术被称为是继,蒸汽机,电,互联网,之后的一个划时代的标志,

比特币的底层技术是什么呢?

是区块链技术,那么区块链技术又是什么呢,举个通俗易懂的例子,你去招商银行存钱,存了100万,有一天招商银行的银行系统被黑客攻击了,并且把你的账户的钱转走了50万,你的存款单也丢了,这时候银行不想把你丢了的钱补给你,你是不是要抓狂。区块链就是有无数的存储系统,而且里面都存有相同的内容,没有人可以修改已经生产的账单,就像以前只有一个账本,但是用了区块链之后就有无数的记账账本,而且分布在各个地方。更专业一点说,区块链技术是由利用块链式数据结构来验证和存储数据,利用分布式节点共识算法来生成和更新数据,利用密码学的方式来保证数据传输和访问的安全,利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。

但是现在是数字货币泛滥的年代,各种新的数字货币发行进行洗钱跑路,最后一地鸡毛,对于目前国家提倡的区块链技术和企业链改如果落到实地,这样的数字货币还是可以持有的,我们知道只有大公司才能上市,但是所以公司都能上链

如果你对某个数字货币非常了解,并且知道它的运营情况,有没有落地到实地帮助公司进行链改,技术支撑等,不然尽量不要去买。

回到BTC,BTC公链被称为区块链的1.0时代,采用的是POW共识机制,也就是工作量证明,你获得多少货币,取决于你挖矿贡献的有效工作,电脑性能越好,分给你的矿就越多,POW机制解决了拜占庭将军问题,就是在互相不信任的情况下,只要多少人都信任,那么就能保证系统的正确运作,但是也有一定的缺陷,就是处理交易的速度太慢,矿工们需要不断的通过计算来碰撞哈希值,这是劳民伤财且效率低下的。TPS系统吞吐量(用户并发量)7笔/秒。ETH这条公链被称为区块链的2.0时代,ETH提出了新的共识机制POW+POS(权益证明)简单来说就是你持有的币越多,你的权益就越高,因为你持有的币越多,持有币的时间越久,你的计算难度就会降低,挖矿会容易一些,TPS为21笔/秒。EOS被成为3.0的公链,DPOS共识机制(拜占庭容错的委托权益证明)对于POS机制的加密货币,每个节点都可以创建区块,并按照个人的持股比例获得“利息”,出块时间3秒,TPS为5000笔/秒。

一、从比特币看区块链技术

(一)比特币(Bitcoin)是一种数字加密货币比特币是一种数字加密货币,由中本聪(SatoshiNakamoto)2009 年1 月25 日设计上线。比特币的产生、发行和交易机制与传统货币不同。传统货币的产生、发行和交易依托于中央银行、商业银行等中心化的二元模式;而比特币的发行不需要中心化的金融中介,比特币社区用户可通过比特币区块链网络发行和管理数字加密货币。比特币是以黄金模式发行,人们形象地将该过程称为“挖矿(Mining)”,并将所有提供计算力的节点称为“矿工(Miner)”。目前,比特币挖矿的发行方式使每位矿工都可以从中获取6.25 个比特币的收益。实际上,比特币的发行过程是求解多重哈希值解方程(Hash Function)的过程。节点挖矿获得比特币的过程,是通过计算机进行大量计算求出合理的哈希值来实现的。简而言之,这个过程的主要目标是求解交易双方的公钥。每次求出的解都会作为下次计算的初始条件,节点在此基础计算新结果。当一个节点解出一组之前未解出的哈希值时,系统向全网络发布,各节点查验本地数据库。如果各节点发现该解正确,并且数据库中没有此解记录,将确认并记录该解的合法性。当所有节点都确认并记录完毕时,求出该解的节点便被奖励一定数量的比特币。作为比特币最底层的核心技术,区块链技术来源于2014 年10 月大英图书馆的一次研讨会。比特币是区块链技术最成功的金融应用,它以公开账本的形式在全网记录所有交易信息。随着比特币的普及和应用,区块链技术日益受到金融 科技 界的关注。

(二)区块链是弱中心化的分布式账本协议区块链技术提供了一份公共的分布式安全账本,是一种开放式的价值传递协议。实际上,区块链是一个由使用密码学方法相关联产生的数据块构成的弱中心化的数据库,任何发生在此区块链网络上的交易,均会以约定的算法记录到区块链系统上。所有节点都保存一份完整的数据备份,包含自该区块链系统形成以来的所有交易记录。区块链由一个个区块组成。区块是区块链的基本存储单元,记录了10 分钟内各节点的全部交易信息。每一个数据区块中包含一次交易信息,用于验证信息的有效性,并为下一个区块的生成做准备。区块由三部分组成:本区块的地址、交易单和前一个区块的地址。当区块链上一个节点发起一笔交易时,该节点需要将信息向其他节点进行公告。该节点用私钥加密信息,从而可有效防止信息伪造。由于了解 历史 交易信息,收到信息的节点利用备份信息能够判断交易是否真实。各节点验证成功后,将最后一个区块的地址与交易信息结合,形成一个新区块,并打上时间戳(Timestamp)连接到区块链上,完成交易的全过程。由于每个区块都拥有前一个区块的地址,人们可以通过后一区块地址找到前一区块,直至初始区块。因此,区块链就是由根据时间顺序相连接的区块构成的完整交易信息链条。

(三)区块链的特点

区块链是一个全新的数据库系统,具有弱中心化、不可篡改、包容性等特点。其中,弱中心化、不可篡改是区块链技术区别于传统技术的核心特征。这两个特征使得由区块链技术构建的系统能够通过系统机制设置,实现“自信任”。

1. 弱中心化。区块链系统的每个节点都保存着一份完整数据备份,能够有效预防中央服务器发生故障而导致的网络瘫痪和数据丢失,以及黑客对单个节点的恶意攻击,从而保证数据的安全。除非有人能同时控制系统中超过51% 的节点,否则对于单个节点的攻击不能影响其他节点数据的内容。

2. 不可篡改。区块链系统是一个公共的总账本,系统全部数据都公开、透明地记录在该账本上。所有数据通过网络共识算法记录,每笔基于区块链交易的新信息都会向全网发布,经各个节点逐一确认、保存后,将收到的交易信息形成新区块,确保区块链系统信息不可篡改、无法作假、可以追溯。同时,区块链技术使用随机散列算法和时间戳技术,节点在验证时会盖上时间戳,提供交易时间证明,保证同笔交易的唯一性。如果要修改某个区块的交易信息,必须要完成该区块及之后区块的所有信息。由于修改后会造成哈希值与原来的哈希值不同,无法通过其他节点确认,将使得修改无效,大大提高了篡改信息的难度。因此,区块链技术可以为交易提供可靠的信用保证。其不可篡改的特性为解决合同冲突提供了有效方案,可以应用于存储并公证永久性记录和需要确保信息真实性的领域。如,财产所有权的公证。

3. 包容性。区块链技术以算法为基础,摒弃了不同国家文化和经济差异,使各国机构可以建立统一的信用体系。此外,区块链技术是对外开源和共享的:任何进入区块链的机构和个人,不仅能提交记录,还能得到完整的系统 历史 交易记录,并对信息所有者确权;同时,由于区块链系统运行于互联网,符合要求的任何机构和个人都能以节点的方式加入该系统。

4.溯源,公开透明。

因为区块链或者说是数字货币涉及的知识与比应用比较多,感兴趣的朋友可以点关注,我会整理和发布更多的区块链和数字货币的知识

B. 比特币如何算出来的

要想了解bitcoin的技术原理,首先需要了解两个重要的密码技术: HASH码:将一个长字符串转换成固定长度的字符串,并且其转换不可逆,即不太可能从HASH码猜出原字符串。bitcoin协议里使用的主要是SHA256。
公钥体系:对应一个公钥和私钥,在应用中自己保留私钥,并公开公钥。当甲向乙传递信息时,可使用甲的私钥加密信息,乙可用甲的公钥进行解密,这样可确保第三方无法冒充甲发送信息;同时,甲向乙传递信息时,用乙的公钥加密后发给乙,乙再用自己的私钥进行解密,这样可确保第三者无法偷听两人之间的通信。最常见的公钥体系为RSA,但bitcoin协议里使用的是lliptic Curve Digital Signature Algorithm。 和现金、银行账户的区别? bitcoin为电子货币,单位为BTC。在这篇文章里也用来指代整个bitcoin系统。 和在银行开立账户一样,bitcoin里的对应概念为地址。每个人都可以有1个或若干个bitcoin地址,该地址用来付账和收钱。每个地址都是一串以1开头的字符串,比如我有两个bitcoin账户,和。一个bitcoin账户由一对公钥和私钥唯一确定,要保存账户,只需要保存好私钥文件即可。 和银行账户不一样的地方在于,银行会保存所有的交易记录和维护各个账户的账面余额,而bitcoin的交易记录则由整个P2P网络通过事先约定的协议共同维护。 我的账户地址里到底有多少钱? 虽然使用bitcoin的软件可以看到当前账户的余额,但和银行不一样,并没有一个地方维护每个地址的账面余额。它只能通过所有历史交易记录去实时推算账户余额。 我如何付账? 当我从地址A向对方的地址B付账时,付账额为e,此时双方将向各个网络节点公告交易信息,告诉地址A向地址B付账,付账额为e。为了防止有第三方伪造该交易信息,该交易信息将使用地址A的私钥进行加密,此时接受到该交易信息的网络节点可以使用地址A的公钥进行验证该交易信息的确由A发出。当然交易软件会帮我们做这些事情,我们只需要在软件中输入相关参数即可。 网络节点后收到交易信息后会做什么? 这个是整个bitcoin系统里最重要的部分,需要详细阐述。为了简单起见,这里只使用目前已经实现的bitcoin协议,在当前版本中,每个网络节点都会通过同步保存所有的交易信息。 历史上发生过的所有交易信息分为两类,一类为"验证过"的交易信息,即已经被验证过的交易信息,它保存在一连串的“blocks”里面。每个"block"的信息为前一个"bock"的ID(每个block的ID为该block的HASH码的HASH码)和新增的交易信息(参见一个实际的block)。另外一类指那些还"未验证"的交易信息,上面刚刚付账的交易信息就属于此类。 当一个网络节点接收到新的未验证的交易信息之后(可能不止一条),由于该节点保存了历史上所有的交易信息,它可以推算中在当时每个地址的账面余额,从而可以推算出该交易信息是否有效,即付款的账户里是否有足够余额。在剔除掉无效的交易信息后,它首先取出最后一个"block"的ID,然后将这些未验证的交易信息和该ID组合在一起,再加上一个验证码,形成一个新的“block”。 上面构建一个新的block需要大量的计算工作,因为它需要计算验证码,使得上面的组合成为一个block,即该block的HASH码的HASH码的前若干位为1。目前需要前13位为1(大致如此,不确定具体方式),此意味着如果通过枚举法生成block的话,平均枚举次数为16^13次。使用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时间非常长,与全网络相比,我这样作弊成功的概率微乎其微。 网络节点生产block的动机是什么? 从上面描述可以看出,为了让交易信息有效,需要网络节点生成1个和5个后续block包含该交易信息,并且这样的block生成非常耗费CPU。那怎么样让其它网络节点尽快帮忙生产block呢?答案很简单,协议规定对生产出block的地址奖励BTC,以及交易双方承诺的手续费。目前生产出一个block的奖励为50BTC,未来每隔四年减半,比如2013年到2016年之间奖励为25BTC。 交易是匿名的吗? 是,也不是。所有BITCOIN的交易都是可见的,我们可以查到每个账户的所有交易记录,比如我的。但与银行货币体系不一样的地方在于,每个人的账户本身是匿名的,并且每个人可以开很多个账户。总的说来,所谓的匿名性没有宣称的那么好。 但bitcoin用来做黑市交易的还有一个好处,它无法冻结。即便警方追踪到了某个bitcoin地址,除非根据网络地址追踪到交易所使用的电脑,否则还是毫无办法。 如何保证bitcoin不贬值? 一般来说,在交易活动相当的情况下,货币的价值反比于货币的发行量。不像传统货币市场,央行可以决定货币发行量,bitcoin里没有一个中央的发行机构。只有通过生产block,才能获得一定数量的BTC货币。所以bitcoin货币新增量决定于: 1、生产block的速度:bitcoin的协议里规定了生产block的难度固定在平均2016个每两个星期,大约10分钟生产一个。CPU速度每18个月速度加倍的摩尔定律,并不会加快生产block的速度。 2、生产block的奖励数量:目前每生产一个block奖励50BTC,每四年减半,2013年开始奖励25BTC,2017年开始奖励额为12.5BTC。 综合上面两个因素,bitcoin货币发行速度并不由网络节点中任何单个节点所控制,其协议使得货币的存量是事先已知的,并且最高存量只有2100万BTC

C. 什么是算力

算力(也称哈希率)是比特币网络处理能力的度量单位。即为计算机(CPU)计算哈希函数输出的速度。比特币网络必须为了安全目的而进行密集的数学和加密相关操作。 例如,当网络达到10Th/s的哈希率时,意味着它可以每秒进行10万亿次计算。

在通过“挖矿”得到比特币的过程中,我们需要找到其相应的解m,而对于任何一个六十四位的哈希值,要找到其解m,都没有固定算法,只能靠计算机随机的hash碰撞,而一个挖矿机每秒钟能做多少次hash碰撞,就是其“算力”的代表,单位写成hash/s,这就是所谓工作量证明机制POW(Proof Of Work)。

日前,比特币全网算力已经全面进入P算力时代(1P=1024T,1T=1024G,1G=1024M,1M=1024k),在不断飙升的算力环境中,P时代的到来意味着比特币进入了一个新的军备竞赛阶段。

算力是衡量在一定的网络消耗下生成新块的单位的总计算能力。每个硬币的单个区块链随生成新的交易块所需的时间而变化。

D. 比特币挖矿的难度和算力

难度是对挖矿困难程度的度量,即指:计算符合给定目标的一个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天

E. 比特币机制研究

现今世界的电子支付系统已经十分发达,我们平时的各种消费基本上在支付宝和微信上都可以轻松解决。但是无论是支付宝、微信,其实本质上都依赖于一个中心化的金融系统,即使在大多数情况这个系统运行得很好,但是由于信任模型的存在,还是会存在着仲裁纠纷,有仲裁纠纷就意味着不存在 不可撤销的交易 ,这样对于 不可撤销的服务 来说,一定比例的欺诈是不可避免的。在比特币出来之前,不存在一个 不引入中心化的可信任方 就能解决在通信通道上支付的方案。
比特币的强大之处就在于:它是一个基于密码学原理而不是依赖于中心化机构的电子支付系统,它能够允许任何有交易意愿的双方能直接交易而不需要一个可信任的第三方。交易在数学计算上的不可撤销将保护 提供不可撤销服务 的商家不被欺诈,而用来保护买家的 程序化合约机制 也比较容易实现。

假设网络中有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 设计还有一个技术上的理由,这种特别的数据结构可以让双重花费更容易验证。对比一下:

F. 天天说挖矿,比特币挖矿流程概述。

通俗易懂的大概流程

如果你之前对挖矿根本没有了解,这段介绍就适合你阅读,进入状态后再进行更深层次的学习。

其实通俗来讲原理很简单,比特币作为一种点对点的电子货币体系,挖矿的过程就是一个纪录数据的过程,因为整个系统是开放的,人人可参与的,所以人人都可以进行挖矿,虽然理论上人人都可以参与,但无利不起早没有人会平白无故的参与到网络的建设中,中本聪就利用Hash函数设计了一种激励和竞争方式。

大家都进行数据的处理工作,谁处理的又快又准确,谁就获得记账权,同时获得该区块的奖励。既有奖励又有竞争才使得比特币网络得以正常运转。

想要竞争成功就要经历几个基本的流程。

一、首先你要将没有被记录的交易信息检查并归集到一个数据块中。

二、数据块打包好后,进行哈希运算,算出哈希值,哈希值这个概念在昨天文章中已经详细的介绍过。

三、算出哈希值后进行全网广播,其他矿工接收到后进行验证,验证没有问题就会将这一个数据块连接到整个区块链上,就可以获得这个区块的奖励了。

大致过程了解后就可以开始详细的了解整个过程了。

开始挖矿前的准备工作

这里所说的准备,可不是让你准备买矿机或者给矿机通电,说的是在进行POW工作量证明之前记账节点所作的准备工作。也就是前面流程的第一步的具体解释。

想要收集齐全交易信息,第一步就是收集广播中还没有被记录账本的原始交易信息。收集完成后就要自己先进行验证,主要验证两个方面,1.每个交易信息中的付款地址有没有足够付款的余额。2.验证交易是否有正确的签名。这两项必不可少,通俗一点就是你给别人打钱银行需要确认的就是两点,你账号里到底有没有那么多钱,是不是你本人或本人同意的行为。

这两项验证完后就可以将验证好的数据进行打包,打包完成后当然没有完,因为还有对于矿工来说最最重要的 一 步,添加一个奖励交易,写一个给自己地址增加6.25枚比特币的交易。

如果你竞争成功,那么你的账户地址内就会增加6.25枚比特币,在这里也顺便提一下减半,最开始一个区块的记账奖励是50个比特币,比特币大概每4年奖励就进行减半,前一段时间的减半过后比特币一个区块的奖励已经变成了6.25枚。

值得一提的是前两次减半后都伴随着牛市的来临,现在第三次减半已过,在之后会有什么样的变化呢?

准备工作完成后就要正式的争夺了

因为10分钟左右就一个记账的名额,在这个阶段全世界的矿工,都进行着一场没有硝烟的战争。

那这场仗怎么打呢?其实就是计算Hash函数,矿工算力的比拼,所以说在比特币网络哪里都离不开Hash函数。为了保证在10分钟只有一个人能够成功,这个哈希函数的难度必须适当。直接哈希难度过低,所以规定Hash出的结果必须以若干个0构成。

可能直接这么说开头若干个0还没有什么难度概念,那就简单分析一下,进行这样的计算有多难 , 也就顺便可以解释为什么单打独斗的矿工已经不吃香了。

Hash值跟平常我们设置的密码要求相似,是由数字、字母组成,其中字母区分大小写。也就是说每一位都有62种可能,哈希运算本质就是试错,相当于给你一个不限出错次数的手机让你开锁一样 。 而比特币的哈希值是以18个0开头的,理论上需要进行62的18次方,这个数字在普通计算器上都是以科学计数法显示的,结果为1.832527122*10的32次方。

指数爆炸式的运算次数增长保证了其挖矿的难度。同时也因为难度大带来了一些争议,有人就会说耗费那么大却不产生价值,之前挖矿还在一份意见征集稿中放到了落后产能里。可以说对于挖矿行业的争议是一直存在的。

最后一步验证

找到哈希值后,进行广播打包区块,网络节点就会进行验证。

情况无非就是两种,一种是验证通过,那么表明这个区块成功挖出,其他矿工就不再竞争,选择接受这个区块,将这个区块进行记录,挖出这个区块的矿工就获得了该区块的奖励,并且进入下一个区块的竞争。

另外一种就是不通过,那么前面的那些工作都白费了,投入的成本就没有办法收回,所以矿工们都自觉的遵守着打包和验证的规则,因为作恶成本较高,也就维护了比特币网络的安全。

相信你读完文章已经大致了解了比特币挖矿的整个流程,不过挖矿实际操作起来又是另一个概念了,其中什么时候适合进场挖矿、入手什么样的矿机进行挖矿、通过什么样的方式参与挖矿都是有一定学问的。

挖矿有风险投资需谨慎呀,搞懂再行动,没搞懂之前就要多学习。

G. 谁知道比特币是什么它是怎么运作的

比特币是一种P2P形式的虚拟的加密数字货币。点对点的传输意味着一个去中心化的支付系统。与所有的货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生。

比特币及其众多衍生品被称为加密货币。 该系统使用了加密技术来生成新币,以及进行转帐验证。 加密序列有以下几个目的:使交易几乎不可能被伪造;使货币银行或货币钱包可作为数据轻松转移;验证比特币从一个用户转移到另一个用户。

在比特币被使用之前,必须先由系统生成或挖矿得到新币。 这些区块的编码和解码过程需要大量的算力,那些成功生成新区块的用户将获得一些比特币或一部分交易费用作为奖励。

这样一来,将比特币从一位用户转移到另一位用户的同样过程中,在同等基础上也为贡献给比特币网路的更多算力创造了需求,从而生成出可供使用的新币。

(7)比特币hash过程扩展阅读:

比特币的作用

比特币就像现实中的金币一样:它们具有价值,也可以像金币一样用于交易。 可以透过比特币进行投资——买入加密货币并从其价格波动中获利。 每天都有新的地方将比特币列入支付方式。

比特币没有一个正式价格。 比特币的价格是根据人们愿意支付的价格来确定的。比特币的价格通常以一枚比特币的花费来表示。 但是,交易所一般会允许以任何金额购买,即可以购买少于一枚比特币。 Libertex 的价格指数就是即时查看比特币价格的优质资源。

参考资料来源:网络-比特币

阅读全文

与比特币hash过程相关的资料

热点内容
比特币天涯论坛手里有6000元 浏览:488
ubuntu以太坊私有链挖矿 浏览:581
比特币hash过程 浏览:879
以太坊kick 浏览:642
遭遇比特币爆仓 浏览:164
以太坊近期一直涨 浏览:718
以太坊公链被黑 浏览:544
2020比特币什么时候能涨 浏览:528
空中比特币俱乐部银行卡 浏览:243
比特币日线是什么意思 浏览:619
以太坊还会涨吗不涨我要跑了 浏览:745
以太坊场外交易小故事 浏览:316
虚拟货币逐仓杠杆 浏览:666
笔记本可以比特币怎么挖 浏览:220
镇江比特币 浏览:101
800多个以太坊 浏览:584
如何免费赚取更多比特币 浏览:915
以太坊基金会怎么联系 浏览:573
比特币交易银行卡冻结半年 浏览:252
比特币浪费大量资源 浏览:817