主页 > imtoken支持bcc > 区块链:比特币的灵魂,下一个风口

区块链:比特币的灵魂,下一个风口

imtoken支持bcc 2023-02-01 05:17:29

Image title

简介:比特币作为近年来最成功的数字加密货币,在全球范围内引起了极大的关注。记录交易信息的集中式分布式网络的关键是区块链:一种可能在未来十年彻底改变金融和其他行业的技术。立即了解与比特币相结合的区块链技术。

1、场景描述

假设世界上有两家银行:银行 A 和银行 B,以及两个用户:用户 C 和用户 D。用户 C 还使用了第三方支付软件 E。

银行A使用自己的信息系统为用户记录账户余额,银行B也使用自己的信息系统为用户记录账户余额,第三方支付E也使用系统记录账户用户C的余额,这基本上就是今天金融界的样子,如下图:

Image title

我们可以清楚地看到以下事实:

银行A的系统记录了银行B欠它800万美元,银行B的系统也记录了它欠银行A 800万美元的事实,这意味着相同的信息被两家银行的不同系统记录了两次。 B银行和第三方支付E也记录了类似的信息。

用户C在A银行透支15000元,B银行存款68000元,第三方支付E余额5000元,所以只能通过两家银行和一个第三方支付-派对 需要三个系统来计算用户 C 真正拥有的财产。

比特币链上数据查询

我们可以看到,每家银行都需要花费大量的时间和金钱来开发和维护记录信息的系统,更严重的是他们需要在每家银行花费更多的时间和金钱。为了相互核对和对账,银行业的数据需要记录在至少两个不同的系统中。为了确保各方信息的正确性,需要一个昂贵的对账过程。

我们来做个改动,只用一张表来记录上例中的所有数据,如下图:

Image title

上一张表中记录的内容与前五张表相同,唯一不同的是这张表多了一列。有了这张表,银行和用户就不需要维护自己的系统,最重要的是彻底消除了银行之间的对账过程。那么,为什么全世界都不能有一个统一的账本呢?有人可能会立即说,有什么单一系统能够维护这个账本?维护这个账本的系统有多贵?如果这个系统失败,它将对世界产生多大的影响?如果这个中央系统在账本中作弊怎么办?

创建一个中央系统来维护一个统一的账本似乎是不可行的,那么我们是否可以创建一个所有银行和用户都在这个网络中的共享网络,并且没有中央系统来维护账本比特币链上数据查询,而是所有银行和网络中的用户拥有该账本的最新内容,该账本由网络中的所有参与者共同维护,防止了因中心系统故障而导致的账本丢失,如果某些参与者想欺骗其他人,也不会会同意,相当于每一个参与者都在为账本的安全稳定做出贡献。

上述技术方案可行吗?可行的;这种技术解决方案叫什么?区块链;现在有成功案例吗?比特币。

2、区块链概念

区块链是网络上去中心化的分布式共享账本或数据库。该账本或数据库的一致性、安全性和可维护性。比特币是区块链在全球网络中的第一个大规模应用。区块链技术本身并不局限于比特币等数字货币。还可应用于支付、证券交易、股票交易、物联网、身份认证、电子合同等诸多领域。

比特币链上数据查询

3、比特币中的区块链

比特币概述

2008 年,神秘人中本聪发表了一篇论文,阐述了比特币的概念及相关技术。这篇论文后来被称为“比特币白皮书”或“中本聪白皮书”。 2009年,中本聪等人实现了相关技术,系统正式在互联网上运行,标志着不受央行和任何金融机构控制的比特币正式诞生。两年后,中本聪突然从网上消失了,直到现在没人知道这个在现实世界中相当于比特币世界的创世先知的人物的真实身份。目前他创造的比特币总价值已经超过100亿美元,每天都有数百万比特币在网络上交易。

比特币的原理

比特币在基于互联网的 P2P 网络上运行。 P2P 是运行在 TCP 协议之上的应用层协议。在P2P网络中,访问网络中的每一台设备都是平等的。网络中没有中心节点。每个节点随机连接到许多其他节点,为这些节点提供服务,同时也从这些节点获取服务。因此,P2P 网络是去中心化的。 ,可靠性和开放性。近年来最成功的P2P网络应用出现在文件共享领域,比如国外的BitTorrent和中国的迅雷,都是通过P2P网络下载文件的。

在比特币的P2P网络中,每笔交易信息都会以一次传输的形式通知网络中的所有节点进行验证十、十次传输,只有网络中的大部分节点验证通过后,才会进行交易记录在区块链的当前区块中。在比特币网络中,平均每 10 分钟生成一个区块,该区块记录了前 10 分钟网络上的所有交易。对于交易,每个节点都有权生成一个块。只要节点能够在这 10 分钟内计算出特定数学问题的解,其他节点就会识别该区块并将该区块添加到自己的区块链中。获得解决方案的节点将获得一定数量的比特币奖励。在比特币网络中,试图产生区块并获得奖励的节点通常称为矿工,产生区块的过程称为挖矿。自 2009 年以来,动态调整的数学问题的难度使比特币网络平均水平处于平均水平。每 10 分钟生成一个块(矿工找到数学问题的解决方案),并且随着每个块的生成,生成一定数量的比特币作为奖励并支付给矿工,从每个块开始生成的比特币奖励是50,这个数字每四年减半。 2140年后比特币数量固定为2100万,届时不会再产生新的比特币。

任何机器都可以运行一个完整的比特币节点,一个完整的比特币节点包括以下功能: 比特币钱包,允许用户在比特币网络上进行交易;完整的区块链,记录比特币历史上的所有交易,通过特殊的结构保证历史交易的安全性,用于验证新交易的合法性;矿工通过记录交易和解密数学问题生成新区块,成功可以获得奖励;路由功能将其他节点发送的交易数据等信息传递给更多的节点。比特币网络中的节点除了路由功能外没有其他功能。有的节点只有钱包功能,有的节点只负责挖矿。

Image title

比特币链上数据查询

区块链的数据结构

比特币的区块链记录交易信息,每个完整的节点在本地存储一条完整的区块链,每条完整的区块链都记录了自2009年比特币诞生以来的所有交易信息。每当产生新的交易申请时,节点可以新交易通过完整的区块链进行验证,验证后的交易将记录在下一个要生成的新区块中。每个区块由一个包含元数据的区块头和一个包含上一时期交易信息的区块体组成。块头的大小为 80 字节,块体通常非常大。如果一个平均块包含 400 字节的交易,那么块体通常比块头大 1000 倍以上。因此,区块体只负责记录交易信息,而区块链的大部分功能都是通过区块头来实现的。

区块头主要包括以下信息:

它所引用的父区块的哈希值记录在每个区块的区块头中。这个哈希值是通过SHA256算法得到的,通过对父块的块头进行二次哈希计算得到。某区块链部分区块信息如下:

Image title

区块链的构建过程

生成新块并将添加到区块链的过程称为比特币网络中的挖掘。通过挖矿,交易信息被记录在区块链中,正是由于工作量证明机制(解决数学问题)保证了区块链中交易信息的一致性和安全性;对于比特币来说,成功挖矿后的奖励机制使得新的比特币能够进入比特币网络流通。在比特币网络中,有一些节点称为矿工节点。这个矿工节点可以是用户的普通PC机,也可以是企业机房内数百台机器组成的计算集群,也可以是由矿工组成的多A矿池,比特币对矿工节点的机器没有限制,但是计算性能更高的矿工节点将比其他节点更容易解决数学问题,从而获得记账权和比特币奖励。

矿工在努力生成区块的同时,也会将新的交易信息保存到本地内存中,以便放入下一个区块。当前区块生成并被自身或其他矿工验证后,所有矿工立即开始生成下一个区块。此时,本地内存中的交易信息会记录在块体中,在块体中会生成该块中所有交易信息的默克尔树。将 Merkle 树根的值存储在块头中。 Merkle 树是一种哈希二叉树,可用于快速检查大规模数据的完整性。在比特币网络中,默克尔树用于汇总一个区块中的所有交易信息,最终生成该区块中所有交易信息的统一哈希值。区块中交易信息的任何变化都会使 Merkle 树发生变化。我们假设一个区块中有四个交易,分别是A、B、C和D。首先,通过两种SHA256算法生成交易数据的32字节哈希值。这些值作为叶子节点存储在 Merkle 树中。 ,然后将相邻叶子节点的两个32字节哈希值拼接成一个64字节的字符串,然后使用两次SHA256算法为这个字符串生成一个32字节的哈希值作为这两个的父节点叶节点存储在 Merkle 树中,以此类推,最终生成区块中所有交易信息的统一哈希值。这个哈希值就是默克尔树的根节点,存储在区块头中。用节点hash值,如下图:

比特币链上数据查询

Image title

Merkle根填充到块头后,系统会将刚刚生成的最后一个块的块头的数据通过SHA256算法生成一个32位的哈希值,填充到父哈希中当前区块的值,然后将当前 Unix 时间保存在时间戳字段中,难度值字段也将基于上一段。调整时间块的平均生成时间,以应对整个比特币网络不断变化的整体计算量。如果计算量增加,系统会增加数学题的难度值,使得完成下一个区块的预期时间仍然在十分钟左右。区块头最后一个字段是Nonce,初始值为0。

区块头和区块体构建完成后,就可以开始挖矿,也就是解决数学问题。挖矿的目标是改变区块头中的 Nonce 值,使区块头可以使用 SHA256 算法得到的哈希值满足难度值的要求。 SHA256 算法是一种加密的哈希算法。该算法的特点是不同的输入会产生完全不同的哈希值。没有规律可循,不管输入的大小,SHA256算法的输出长度始终是256bit。 32 位。比特币挖矿的目标是找到一个Nonce值,使得该值下块头的SHA256哈希值的输出必须小于难度值中设置的值,难度值通常以多个0开头。难度要求是得到的 256 位哈希值中的前 68 位必须为 0,这需要整个比特币网络每秒进行大约 6x1020 次哈希计算,矿工大约需要 10 分钟才能找到。所需的 Nonce 值。在挖矿过程中,由于每个矿工创建的新区块头中的时间戳可能不同,并且每个矿工选择不同的一组交易进入这个区块,因此区块头中的默克尔根的值也不同。 ,所以即使很多矿工开始从 Nonce 等于 0 开始累积寻找合格的哈希值,他们仍然在不同的位置寻找它们。挖矿过程是整个比特币网络中所有矿工节点的计算能力。在回答的过程中,每个矿工都有机会找到正确的答案,但计算能力越高的矿工找到答案的概率越高。

当矿工成功找到使区块头哈希值小于目标难度的 Nonce 值时,他会立即将该区块广播到比特币网络。几秒钟后,网络中的所有矿工都会收到这个区块。当他们验证成功后,他们将立即停止生成当前区块的努力,将矿工找到的区块添加到区块链中,并在完成后立即开始生成下一个区块。过程。这样,一个区块就被添加到了完整的区块链中。

区块链的一致性和安全性

上面讨论了区块链的数据结构和构建过程,但还有两个最关键的问题需要说明:

p>

整个区块链如何在分布式网络中的所有节点之间保持一致性。如何保证没有节点恶意篡改区块链中的信息(比特币中的交易信息),即如何让我们相信区块链中的信息是真实的信息。

比特币链上数据查询

关于一致性问题,其实在上述区块链构建过程的最后已经说明了。网络中的所有节点都将通过解决数学问题来争取创建当前区块的权利。当一个节点成功解决问题后,问题的答案和构建的区块将通过比特币网络发送给其他节点。只要其他节点通过答案的验证,它们就会立即停止创建当前块的努力,并发送传输的块。将区块添加到本地区块链中,然后根据本区块的区块头的哈希值填充下一个区块的区块头中的信息,立即开始构建下一个区块。这样,一个区块链中一个新区块的构建过程就在网络中完成了。

这个过程似乎没有问题,但是考虑以下情况:在同一时间(1秒内),可能有两个或多个不同的节点找到了答案,他们立即将答案进行比较该地区。块被发送到连接到它们的节点。这些节点验证通过后,会立即开始基于这个区块构建下一个区块。由于每个节点产生的区块不同(数学题有多种解法),所以每个区块的哈希值也不同,后续区块的哈希值也会发生变化,从而形成多个区块链分叉在整个网络中,不同的节点在不同的分叉上反向构建一个新的区块。

Image title

如何解决分叉问题,答案是等到下一个区块或下一个区块,当前区块被多个节点同时解决,下一个区块的分叉被全网识别后,错误分叉上的节点会将自己分叉到前一个错误的块中。块被替换,使整个网络恢复统一。这就是为什么比特币会将每个区块的求解时间控制在 10 分钟左右。更难的问题和更长的解决时间使得同时解决答案的概率更低。在比特币的历史上,很少有分叉包含两个区块的情况。因此,区块链中新生成的区块可能确实存在一致性问题,但6个区块之前的所有区块必须是一致的。

Image title

对于安全和信任问题,主要体现在两个方便,一个是节点试图改变前一个区块的交易信息,另一个是有节点试图控制新区块的产生,而解决这两个问题的关键在于保证解决数学问题背后所代表的巨大计算能力。如果一个节点想要改变前一个区块的交易信息,只要交易信息发生变化,该信息的哈希值就会发生变化,最终会导致默克尔树和区块头中所有交易信息的值发生变化块头的哈希值也发生了变化。之前的 Nonce 值不再是改变区块头的解决方案。这个块的数学问题需要重新计算。更严重的是,这个块的下一个块所引用的父哈希也发生了变化,所以下一个块也需要重新计算,以此类推,所有后续块都需要重新计算。也就是说,只有在重新计算变更区块的所有后续区块,并赶上网络中合法区块链的进度后,将长区块链分叉提交给网络中的其他节点,才有可能被阻塞。识别,只有重新生成被恶意篡改的区块并提交,不会被网络上的诚实节点识别。在全网巨大算力的背景下,恶意节点很难重新计算多个区块并赶上全网。一般认为第六块之前的所有块都不能更改。 那么如果你试图控制新块的产生,也就是说,每个新块都被最先获得数学问题解的恶意节点识别。这样,由于包含在块中的交易是由节点自由决定的,恶意节点这样一来,就永远无法接受交易包含在区块链中。这种方法理论上是可行的。如果恶意节点的算力高于网络中所有其他节点的算力之和,即恶意节点占据全网算力的51%,他就可以控制新区块。这种攻击被称为 51% 攻击。当然,在现实中,一个节点的计算能力很难超过所有其他节点的总和。限于篇幅,还有很多安全问题,比如DoS攻击的解决方案,这里就不一一说明了。

4、总结

现代互联网的基础是 TCP/IP 技术。基于该技术,网络上的所有节点都可以与任何其他节点进行公平自由的通信。但这项技术只解决了去中心化通信的问题,并没有解决去中心化信用的问题。区块链技术的出现让我们看到了解决这个问题的希望,它在比特币上的大规模应用也让我们看到了它的技术可行性。本文介绍了基于比特币的区块链相关技术,但区块链技术的应用并不局限于数字货币领域。它在各个行业的尝试已经开始。让我们跟随最新的技术,并提供最终成熟,做出自己的贡献。

本文作者:罗玉祥,从事Web工作比特币链上数据查询,从事大数据,懂一点数据挖掘,做过推荐系统,喜欢探索新的技术领域,注重理论结合和实践。目前就职于点融北京团队。