一、基本概念 “区块链” 这个概念是由一个网名为中本聪的人在2008年发表的《比特币:一种点对点的电子现金系统》中提出的。随后他实现了一个比特币系统,并发布了加密数字货币—比特币。接下来出现了以太坊和超级账本这样的大型区块链项目。 那么在你的认知中,区块链是什么样的?下面整理了几种选项,看下是否有符合你认知的选项。 区块链是比特币,比特币就是区块链 区块链很值钱 区块链可以运用在任何领域 区块链是免费的 区块链是非常安全的 通常来说,选项1是大多倾向的结果。但比特币和区块链两者不能等同,实际上,区块链是比特币的底层技术,如果要举例比喻的话,就好比用面粉可以做包子,但不能说面粉等于包子,包子等于面粉。而这里的面粉就相当于是包子。当然了作为底层技术的存在,不仅仅应用于比特币的实现中,还有很多其他基于区块链技术的应用。 那么区块链究竟是什么?从比较专业的维度上看,可以从以下三点来解释 区块链是底层技术 作为一个底层技术,它是包含了 P2P动态组网、基于密码学的共享账本、共识机制、智能合约 等关键技术 区块链是一个数字货币和账本系统 从货币学的角度看,区块链是数字货币系统的分布式共享账本系统,这是一个去中心化的、网内用户共同维护的账本系统。 区块链是互联网的基础设施 它提供了分布式去中心化的价值互联网,为更多大规模的共享、协作应用创造可能。 作为解释依据,这里提取了来自中本聪在2008年发表的《比特币:一种点对点的电子现金系统》中的一段描述: 时间戳服务器对以区块(Block)形式存在的一组数据是实施随机散列并加上时间戳,然后将该随机散列进行广播,就像在新闻后世界性新闻组网络(Usenet)的发帖一样。显然,该时间戳能够证实特定数据于某特定时间是的确存在的,因为只有在该时刻存在了才能获取相应的随机散列值。每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强(Reinforcing),这样就形成了一个(Chain),即区块链,如下图所示: 文字较为苍白,我们看图可以很清晰的看出 区块链就是由 区块 和 链 构成的 1)区块 区块是区块链的组成单元,就像金字塔是由一块块石头组成的一样,区块链就是一个个区块组成的。 区块是由一系列特征值和一段时间内的交易记录组成的一个数据结构。区块的数据结构是由 区块头 和 区块体 组成。其中区块头包含了当前区块的特征值,区块体中包含的是实际的交易记录数据。 1、数据结构 1️⃣ 区块头 区块头是由 80 个字节组成,主要由版本号、前一个区块的哈希值、Merkle根、时间戳、bits、Nonce 这几项区块的特征值组成。 ver: 版本号,表示本区块遵守的验证规则 prev_block: 父区块哈希值,指的是这个区块连接的上一个区块的哈希值 mrkl_root: mrkl_root 根,是该区块链交易的 Merkle 树根的哈希值(Merkle 是一种哈希树的数据结构) time: 时间戳,区块生成的时间 bits: 区块的难度值,该区块工作量证明算法的难度目标,使用特定的算法编码 Nonce: 是一个随机数,为了找到满足难度目标所设定的 2️⃣ 区块体 区块体主要包括了 交易数量(n_tx)、区块大小(size)和长度不定的交易记录(tx 字段包含的交易列表) 等信息。但这只是比特币中的区块体结构,实际上区块体重可以包括任何内容,比如以太坊的区块体中除了交易数据还包含智能合约。 2)区块特点 区块是由计算机通过加密算法生成的。如果成功地生成一个有效的区块,该计算机(节点)就能获得一定的奖励,这个奖励就是加密数字货币,也就是所谓的 挖矿。 加密算法并不是容易生成结果的,而是该区块的哈希值必须满足一定的条件。这个条件就是能够使得区块头中特征值相加生成的哈希值需要符合一定格式,比如难度值为 000,由于哈希值随着输入的不同而不同,因此计算机要不断尝试改变区块头的 Nonce 值直至最终生成的哈希值满足条件才算生成了一个有效的区块。 我们可以借助 Blockchain Demo 工具来尝试生成一个区块。 从图中可以看出在 HASH 一栏中的数据是红色的,说明该哈希值是无效的。因为未满足 000 […]
