【哈希值】哈希值又叫“ 数字指纹”,无论多大的数据,经过一番计算后,都可以得到一个固定长度( 例如 256 比特) 的哈希值; 数据的内容不同, 哈希值必然不同, 就像人和人不会有相同的指纹。
【区块链】一系列数据块( 即区块) 连接而成的链条, 连接的方式是: 其中第N+1 个区块中, 包含第 N 个区块的哈希值。而且这样的数据块的链条, 同时被分布广泛、数量巨大的服务器节点所存储和维护,每个服务器节点都拥有一份区 块链的完整拷贝( 即区块链数据的存储是高度冗余的) 。公众号关注:博森科技小蝶。
【去中心化( 服务器)系统】数量巨大的服务器节点彼此平等,靠某种事先达成的协议来保证大家拥有数据是完全相同的拷贝,它们就构成了一个去中心化系统。 而在一个中心化系统中,某个中心节点拥有更高的权力,它负责更新数据,所有其它节点从它那里获得更新后的数据。
【哈希碰撞】计算哈希值的过程是不可逆的,预先给定一个值,如果请你构造出一段数据,希望它的哈希值正好是这个给定值,那么就算你拿最强大的计算机算到天荒地老,也构造不出来。哪怕退一步,只要求你构造一段数据让它的哈希值小于给定值,都需要算很久很久。而且这个构造过程没有任何巧妙的算法可以利用, 只能傻傻地去尝试所有可能的数据。这是一个“ 瞎猫撞到死耗子” 的过程, 因此被叫做哈希碰撞。
【工作量证明】区块链上的区块,除了包含上一个区块的哈希值( 数字指纹)之外, 还至少要包括一串无意义的数字, 它被称为 nonce。改变 nonce 的值, 就可以改变本区块的哈希值。服务器节点尝试不同 nonce 的值, 碰撞出一个足够小的哈希值,这个过程被称为工作量证明。哈希值有多小,就证明你大致尝试过 多少个不同 nonce。
【共识协议】维护同一个区块链的服务器数量众多,要维护数据的一致性,它们 就必须在“ 谁来决定下一个区块内容”这一问题上达成共识。目前所广泛采用的
共识协议是,谁先给自己的区块找到足够小的哈希值来完成工作量证明,谁的区 块就是下一个区块。
【孤块】由于服务器的数量太多了,彼此通讯的延迟有大有小,有时候会产生区 块链的分叉,比如说甲、乙两台服务器几乎同时找到了工作量证明,那么会导致 有的服务器把甲的区块追加到自己所存储的区块链上,其它则追加乙的。这个时 候,区块链就出现了甲乙两个分支,在两个分支上都有服务器在持续追加块。为 了解决这个问题,共识协议约定,以最长的链为准,即经过一段时间之后,如果 在甲分支上追加了的区块的数量大于乙分支,就以甲为准,这个时候乙分支上的 块, 就成为了孤块, 不被系统所承认。
【51% 攻击】“ 以最长链为准”,其合理性在于,最长链上累计的哈希碰撞的工作量最大,相当于服务器之间用哈希碰撞的算力来进行投票,投票选出的链,必 然是最长链。只要系统中作恶的坏节点的算力不超过 50%, 它们就无法累积出最长链。但反过来讲, 如果有 51% 的节点都是坏节点, 它们联合起来, 能任意决定区块中的内容, 破坏整个系统, 这就是 51% 攻击。
【确认数】某一笔交易被加入区块链的某个区块中,称为得到了一次确认。这个 区块之后,区块链每被追加一个区块,就增加了一次确认。确认的数量越多,这 笔交易所在的块成为孤块的可能性就越低。
Part 2: 数字货币( 特别是比特币) 相关概念
【非对称加密】用户生成一对公私密钥,用公钥加密的数据,只能用私钥才能解 密;用私钥加密的数据,用公钥才能解密。用户把自己的公钥公之于众,想给他发送秘密信息的人,只需用公钥把信息加密,就不怕信息传递过程中被窃听。私 钥必须严格保护起来, 不得泄漏。
【数字签名】我希望对外发布一个文件,怎样避免这个文件在传输中被篡改? 只需把文件的哈希值用私钥加密, 和文件一起对外发布即可。接受者用公钥解密, 得到了正确的哈希值,就证明文件的确是我所发布的,因为,一、文件一旦改变, 哈希值就会变;二、天下只有我拥有私钥。这个被私钥加密的哈希值,称为数字签名。
【比特币】与区块链一同诞生的现金记账系统,区块链的第一个应用。它的区块中的内容, 简单但不准确地说, 就是一些这样的记录: “ 我是公钥为 X 的账户, 我把我拥有的 Y 个比特币, 转给公钥为 Z 的账户” , 以及用 X 对应的私钥为这条记录加上的数字签名。中本聪于 2008 年发明比特币, 2009 年完成比特币的开源代码,2010 年后逐渐销声匿迹。很多人怀疑中本聪是某个匿名团体的笔名。
【钱包】数字货币让人真正拥有了财富,只要你保存好私钥,任何暴力机关都无法剥夺你拥有的币。但是,一旦丢失了私钥,你就丢失了这个私钥所对应的所有币,而且无法找回。钱包就是帮助你保存私钥的工具,它可以是软件 app,也可以是专门的硬件设备。当你需要给其它人支付数字货币时,钱包帮助你生成支付的记录、对应的数字签名,它还帮你把这些信息广播给负责维护区块链的节点们, 请他们把这笔交易记录在区块中。
【挖矿】挖矿是一种发行数字货币的机制,也是对维护区块链的节点们的奖励机 制。节点们需要接受用户发送来的交易记录,验证其数字签名,验证用户是否真
的有他所声称的币,然后把很多的交易记录打包成一个区块,最后还得进行哈希 碰撞以获得工作量证明。它们为系统付出了很多劳动,应该得到奖励。以比特币 为例,它开始运作时,每当节点为系统追加一个新的区块( 或者说“ 挖”出了一个新的块) , 节点就会“ 凭空” 获得 50 个比特币的奖励, 这些币是新发行的或者说新“ 印刷” 出来的。之后, 每过大约三年半, 奖励就会减半, 最终在 100 多年后会减到 0。整个过程中, 总共将发行 2100 个比特币。挖出新块、得到奖励的过程, 被形象地称为挖矿。
【矿池和矿工】挖到新区块的关键在于能不能以很高的并行度来进行哈希碰撞, 于是有些服务器节点把哈希碰撞的工作“ 外包”给专门的矿工,自己只负责“ 接受交易、验证交易、打包交易”这三项任务,这样的服务器就是矿池。矿工专门负责哈希碰撞,一旦矿池挖到了新块,不论这个块究竟是哪个矿工找到工作量证明的, 一律和所有的合作矿工按算力大小成比例地分享新块的收益。
【矿场】个人矿工用电脑、手机等设备来进行哈希碰撞,效率很差。为了利用规模效益提升效率,在一些电力廉价的地区,有人投资兴建起了专门的矿场,利用专门定制的硬件设备来进行哈希碰撞,并且聘请专门的工程师来管理众多的设备。
Part 3: 区块链 2.0 相关概念
比特币以及和它类似的数字货币被称为区块链 1.0 ,以太坊等支持智能合约的数字货币则是区块链 2.0 , 最后介绍一下和区块链 2.0 相关的概念。【智能合约】智能合约类似于数据库中的 trigger( 触发器) , 即特定事件出现的时候,自动执行的代码块。通俗地讲,它使得“ 钱自己会动”。
【Token】这个词很难翻译, 有人把它翻译成“ 代币”, 感觉不是很全面, 所以还是保留英文原文。它是某种资源、资产、股份在区块链上的表示。笼统地讲一 下它的具体实现方法:资源、资产、股份的拥有者,使用自己的密钥为一些数据 片段加上签名, 这些数据片段就变成了 Token, 借助智能合约, Token 可以被拆分成很多份, 分配给很多个账户, 以及在账户之间流动。
【ICO( Initial Coin Offering) 】一家公司准备新创一种区块链来改变世界, 但它没有钱,于是就号召大家给它捐助数字货币如比特币,以太币。同时承诺说, 这些捐助的币,将会按比例折换成这个新创链上的数字代币送给大家,等有朝一日这个新链真的改变世界了, 新创链上的币将暴涨, 大家一起发财。
【IFO( Initial Fork Offering) 】和 ICO 很类似, 但不是新创一个链, 而是说: 我们是某个数字货币社区里的用户,我们觉得它不好,现在要分叉这个币、分裂它的社区了!我们分叉很辛苦,因此分叉后的链上,会凭空给我们记录一大笔数字货币的收益。请大家支持我们,支持的方式就是拿比特币,以太币这些硬通货来交换我们手头凭空多出来的收益。
【IMO( Initial Miner Offering) 】和 ICO 很类似, 但不是号召大家来换这个新链上的代币, 而是号召大家来买这个新链上专用的矿机。大家用矿机挖代币, 等代币暴涨, 大家就发财了。
【去中心化自治组织】简称 DAO( Decentralized Autonomous Organization )。试想,如果在一个组织中,货币、资源、资产、股份都变成了区块链上的 Token, 被链上的智能合约所管理,那么这个组织就可以不依赖于任何中心化的管理机构来运转。这个区块链的底层源代码即为这个组织的法律,冰冷的机器严格无误地执行法律和合约, 实现彻底的法制。交流请加笔者!