首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链技术概括及基础

区块链是随着比特币等数字加密货币的日益普及而逐渐兴起的一种全新技术,它提供了一种去中心化的、无需信任积累的信用建立范式,目前已经引起金融行业、科研机构、政府部门和投资公司的高度重视与广泛关注。

区块链技术通过建立一个共同维护且不可被篡改的数据库来记录过去的所有交易记录和历史数据,所有的数据都是分布式存储且公开透明的。在这种技术下,任何互不相识的网络用户都可以通过合约、点对点记账、数字加密等方式达成信用共识,而不需要任何的中央信任机构。

区块链本质上是一个对等网络(peer-to-peer)的分布式账本数据库。区块链本身其实是一串链接的数据区块,其链接指针是采用密码学哈希算法对区块头进行处理所产生的区块头哈希值。每一个数据块中记录了一组采用哈希算法组成的树状交易状态信息,这样保证了每个区块内的交易数据和,区块链里链接的区块。

一个完整的区块链系统包含了很多技术,其中有存储数据的数据区块及其之上的数字签名、时间戳等技术,有作为支撑的P2P网络和维护系统的共识算法,有挖矿和工作量证明机制,有匿名交易机制和比特币钱包,还有链龄、UTXO、Merkle树、双花等相关技术概念。正是这些技术,使得区块链在无中心的网络上形成了运转不息的引擎,为区块链的交易、验证、链接等功能提供了源源不断的动力。

那么区块链技术包涵哪些呢?下面十二个要点可以为你解答

一、数据区块

以比特币为例,比特币的交易记录会保存在数据区块之中,比特币系统中大约每10分钟会产生一个区块,每个数据区块一般包含区块头(Header)和区块体(Body)两部分,如下图所示:

区块头封装了当前的版本号,前一区块地址、时间戳、随机数、当前区块的目标哈希值、Merkle树的根值等信息。区块体中则主要包含交易计数和交易详情。交易详情就是比特币系统中的记账本,每一笔交易都会被永久地记入数据区块中,而且任何人都可以查询。区块体中的Merkle树将会对每一笔交易进行数字签名,如此可以确保每一笔没有重复交易都不可伪造。所有的交易将通过Merkle树的Hash过程产生一个唯一Merkle根值记入区块头。

如果你使用的是比特币钱包,那么每当你打开客户端时,区块数据文件会被同步到电脑硬盘中,可以在blocks文件下找到它们。我们还可以使用hexdump指令在终端上将数据区块以十六进制的方式显示出来。我们可以通过解析这些数据得出交易记录、区块大小等基本信息,因此我们说区块中的数据是完全公开透明的。

二、挖矿与分叉问题

区块在挖矿过程中产生。所谓挖矿,实际上是穷举随机数算法,把上个区块的哈希值加上10分钟内的全部交易单打包,再加上一个随机数,算出一个256位的字符串哈希值,输入的随机数Nonce使哈希值满足一定条件就获得这个区块的交易记账权。新产生的区块需要快速广播出去,以便其它节点进行对其验证,以防造假。每个区块存着上一个区块的哈希,可以溯源到头,只有经过验证后才最终获得区块的交易记账权。比特币系统会让挖矿的矿工竞争记账权(在主链上链接区块的权利),这个竞争机制就是工作量证明机制。挖矿需要付出大量的能源和时间,谁付出的工作量多就能以更大的概率获得一个区块的记账权。获取记账权的矿工会将当前区块链接到前一区块,形成最新的区块主链,所有的区块链接在一起形成了区块链的主链。在区块链上的所有数据历史都可以被追溯和查询。

需要说明的是,可能会出现不同地区的两个矿工几乎同时“挖出”两个新区块加以链接的情况,这时主链上就会出现“分叉”,系统并不会马上确认哪个区块不合理,而是约定后续矿工总是选择累计工作量证明最大的区块链。因此,当主链分叉以后,后续区块的矿工将通过计算和比较,将其区块链接到当前累计工作量证明最大化的备选链上,形成更长的新主链,并自动抛弃分叉处的短链,从而解决分叉问题。

三、时间戳和不可篡改性

时间戳是指从格林威治时间(北京时间1970年01月01日08时分秒)起至现在的总秒数,通常是一个字符序列,唯一的标识某一刻的时间。在比特币系统中,获得记账权的节点在链接区块时需要在区块头中加盖时间戳,用于记录当前区块数据的写入时间。每一个随后区块中的时间戳都会对前一个时间戳增强工作量证明,形成一个时间递增的链条。时间戳技术本身并没有多复杂,但在区块链技术应用时间戳却是一个重大创新,时间戳为未来基于区块链的互联网和大数据增加了一个时间维度,使得数据更容易追溯,重现历史也成为可能。同时,时间戳可以作为存在性证明的重要参数,它能够证实特定数据必然在某特定时刻是的确存在的,这保证了区块链数据库是不可簒改和不可伪造的,这也是为区块链技术应用于公证、知识产权注册等时间敏感领域提供了可能。

四、分布式数据库

比特币系统中的区块就像一个记账本一样,记录了所有比特币的交易信息,每一个比特币用户的比特币收支情况都被永久地嵌入了数据区块中以供别人查询。这些数据区块中的交易数据存放在每一个比特币用户的客户端节点中,所有的这些节点则组成了比特币及其坚韧的分布式数据库系统。任何一个节点的数据被破坏都不会影响整个数据库的正常运转,因为其它的健康节点中都保存了完整的数据库。

五、UTXO交易模式

UTXO是未花费的交易输出,它是比特币交易过程中的基本单位。除创世区块以外,所有区块中的交易会存在若干个输入(来源)和若干个输出(去向),创世区块和后来挖矿产生区块中给矿工奖励的交易没有输入,除此之外,在比特币系统中,某笔交易的输入必须是另一笔交易未被使用的输出,同时这笔输入也需要上一笔输出地址所对应的私钥进行签名。当整个区块链网络中的UTXO会被储存在每个节点中,只有满足了来源于UTXO和数字签名条件的交易才是合法的。所以区块链系统中的新交易并不需要追溯整个交易历史,就可以确认当前交易是否合法。

六、哈希函数

哈希函数在比特币系统中也有着重要的应用,区块链中的数据并不只是原始数据或者交易记录,还包括它们的哈希函数值,即将原始数据编码为特定长度的、由数字和字母组成的字符串后,记入区块链。哈希函数有着很多适合存储区块链数据的优点。

1.哈希函数处理过的数据是单向性的,通过处理过的输出值几乎不可能计算出原始的输入值。

2.哈希函数,例如SHA256,将需要处理的数据分块,每块512字节,然后用Merkle-Damgard转换函数把初始量和第一块做输入,生成256字节,再做为初始向量与下一数字块进行转换,如此重复直到最后一个数据块,最后结果就是一个256字节的哈希值。因此输入数据越长,哈希函数处理的时间就越长。

3.哈希函数的输入值相差一个字节,结果也会迥然不同。

七、Merkle树

Merkle树就数据结构中的一种树,可以是二叉树,也可以是多叉树,它具有树结构的所有特点。它的作用主要是快速归纳和校验区块数据的完整性,它会将区块链中的数据分组进行哈希运算,向上不断递归运算产生新的哈希节点,最终只剩下一个Merkle根存入区块头中,每个哈希节点总是包含两个相邻的数据块或其哈希值。Merkle树极大限度地提高了区块链的运行效率和可扩展性,使得区块头只需要包含哈希值而不必封装所有底层数据。Merkle树可支持“简化支付验证协议”,即在不运行完整区块链网络节点的情况下,也能够对交易数据进行检验。

八、双重支付——双花

双重支付问题又称为“双花”问题,即利用货币的数字特性用“同一笔钱”完成两次或者多次支付。在传统的金融和货币体系中,由于金钱货币是物理实体,具有客观唯一存在的属性,所以可以避免双重支付的情况。但在其它的电子货币系统中,则需要可信的第三方管理机构提供保证。区块链技术则可在去中心化的系统中则可以不借助任何第三方机构而只通过分布式节点之间的相互验证和共识机制,有效地解决了双重支付问题,在信息传输的同时完成了价值转移。

九、P2P网络

P2P网络是一种对等者之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。区块链系统是建立在IP通信协议和分布式网络的基础上的,它不依靠传统的电路交换,而是建立于网络通信之上,完全通过互联网去交换信息。网络中所有的节点具有同等的地位,不存在任何特殊化的中心节点和层级结构,每个节点均会承担网络路由、验证数据区块等功能。网络的节点根据存储数据量的不同可以分为全节点和轻量节点,全节点的优点是进行数据校验时不需要依靠别的节点,仅依靠自身就可以完成校验更新等操作,缺点是硬件成本较高。

十、加密算法

区块链技术除了哈希算法以外,还有一种为交易加密的非对称加密算法。非对称加密算法指的就是存在一对数学相关的密钥,使用其中一个密钥进行加密的数据信息,只有使用另一个密钥才能对该信息进行解密。这对密钥中,对外公开的密钥叫作公钥,不公开的就叫私钥。打个比方来说,公钥就像银行的账户,私钥就像是该账户的密码或者账户所有者的签名。区块链之上的有效交易有一个用于交易发起方私钥签名有效的数字签名,而该交易的签名可以通过使用交易发起方的公钥进行验证。公钥可以通过算法从私钥中计算得出,但私钥却不能从公钥中推算出。

十一、数字签名

数字签名就是在信息后面加上另一段内容,作为发送者的证明并且证明信息没有被篡改。一般是发送者将信息用哈希算法处理得出一个哈希值 ,然后用私钥对该哈希值进行加密,得出一个签名。然后发送者再将信息和签名一起发送给接收者。接收者使用发送者的公钥对签名进行解密,还原出哈希值,再通过哈希算法来验证信息的哈希值和解密签名还原出来的哈希值是否一致,从而可以鉴定信息是否来自发送者或验证信息是否被篡改。

十二、比特币的隐私模型

传统隐私模型为交易的参与者提供了一定程度的隐私保护,第三方不会交出交易者的个人身份信息,公众所得知的只是某个人将一定数量的货币发给了另外一个人,但是难以将该交易与某个特定身份的人联系起来,公众无法知道这人到底是谁。在比特币的隐私模型中,所有的交易不需要第三方操控,也不需要提供任何身份信息,只需要提供比特币的地址就可以跟任何人完成一次准匿名的交易。

更多信息请关注我们,谢谢点赞

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180630G003B600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券