前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是区块链技术?

什么是区块链技术?

原创
作者头像
用户2357564
发布2018-08-01 18:04:54
2.7K0
发布2018-08-01 18:04:54
举报
文章被收录于专栏:区块链中本聪区块链中本聪

我们先来给区块链技术下个定义:

区块链是一种分类帐,它使用加密技术和激励措施并以防篡改的方式记录交易。这使匿名双方进行信任最小化(trust-minimized)交易,而不需要可信中介。

现在,让我们整合这些零散的知识,以便你在文章的最后对区块链技术有一个完整认识。

基元

在我们深入研究区块链之前,需要建立一些基元。基元类似于建筑材料。如果你想建造一间房子,你需要木料、螺丝、电钻和锯子。在你开始建造之前,最好对每个工具都足够了解。区块链也类似。

区块链的基本构成要素就是加密基元。

而密码学是研究在第三方(即敌人)的存在下安全通信的技术。

现代密码学被应用于网址、信用卡芯片和计算机密码之中。它用来阻止第三方(黑客,小偷等)窃取敏感数据,如信用卡信息。

第一个基本构成要素是哈希函数。

哈希函数

哈希函数是一种允许你对数据进行加密的数学函数。

哈希函数有三个属性:

它的输入可以是任意大小。

例如,我可以使用“我喜欢冰淇淋”这个短语作为输入,或者我也可以使用《战争与和平》的全部文本,两者都行。

不论使用任何大小的输入,哈希函数的特定散列算法决定了其固定大小的输出。为了让算法过于简单,我们将使用256位输出(它是比特币所使用的)。

不论我使用“我喜欢冰淇淋”这一短语作为输入,还是使用《战争与和平》的全文作为输入,两者都会产生相同大小的输出。

使用SHA 256算法,短语“我喜欢冰淇淋”(没有引号)创建输出:

138F4504A873C01D0864343FAD3027F03CA9BEA2F0109005FA4FC8C7DCC12634

从古腾堡计划(project Gutenberg)复制的整本《战争与和平》(全587,287词)创建输出:

57027F5B3877ABBE43ACB101D59E963BC2CC0E86A6EBCCC34DFD035BBF83B096

即使输入的文本长度相差146,821倍,你也可以获得相同大小的输出。这一点很酷也很有用。

函数是可高效计算的,对于任何给定的输入字符串,你可以在合理的时间内获得输出。

即使我使用《战争与和平》的整个文本作为输入,它仍然可以在较短时间内将其转换为输出。

以上是一般哈希函数的属性。一般哈希函数允许你将大量数据映射到一个小空间,这有助于存储和处理不同类型的数据。

不过,我们应把重点放在加密哈希函数上,因为它是区块链中使用的函数。

加密哈希函数有三个附加属性:

抗碰撞性(Collision Resistance)

确定隐匿性(Deterministic Hiding)

难题友好性(Puzzle Friendliness)

加密哈希函数

抗碰撞性

这里的碰撞是指两个不同的输入产生相同的输出。虽然输出大小相同,但输出本身不会与其他输出相同。“我喜欢冰淇淋”与《战争与和平》的整个文本产生相同大小的输出,但字符不同。

如果它们产生完全相同的输出,你解密了我发送给你的加密文本之后,并不会知道我是想告诉你“我喜欢冰淇淋”还是你应该阅读《战争与和平》。

值得注意的是,两个“邻近”输入不会产生邻近的输出。《战争与和平》的哈希与改变了一个字符的《战争与和平》的哈希完全不同。

使用SHA 256,整本《战争与和平》生成哈希值:

57027F5B3877ABBE43ACB101D59E963BC2CC0E86A6EBCCC34DFD035BBF83B096

如果我删除最后一个句点,但保留其他所有内容,则会生成哈希值:

E2E2E4FFD582E20474F0310C2132EAE5F2D766C6A253C1BC4AF57861095B30FA

这非常类似于混沌系统中的两个“邻近”起点非常迅速地导致两个完全不同的未来轨迹。哈希函数的这种“混乱不规则性”会产生抗碰撞性。它的输出几乎随机(理论上并不随机),因此不太可能发生碰撞。我们还能压缩数据,因为它可以将「无穷大」映射到有限空间。

这一特性在汇款时尤其重要。钱包的公钥是使用加密哈希函数从私钥生成的。谁都不希望其他人能够通过逆向工程获取公钥来计算你的私钥(因为你的钱可能被偷)。

如果没有人能找到碰撞的情况,则可以认为哈希函数是抗碰撞的。从理论上讲,我们知道碰撞的存在是因为输入的数量是无限的,但输出的数量是有限的——只有有限种方法可以排列64个字符。

但在实践中,加密哈希函数SHA 256是抗碰撞的,因为没有人发现过碰撞,并且它发生的几率是天文数字。如果人类制造的每台计算机自宇宙开始以来一直试图发现碰撞,那么它发生的可能性低于地球在接下来的两秒钟内被巨大的流星摧毁的可能性。

所以,碰撞是可能发生的,但我们首先还有很多其他更重要的问题要解决。

确定隐匿性

哈希值看起来是随机的,但实际上是确定的。因此,它们的输出是可重现的,只要你使用相同的输入,就可以持续获得相同的输出。这意味着,知道输入的两方可以通过向第三方显示他们的哈希来验证对方是否知道输入。

加密哈希函数的第二个属性是隐匿性。隐匿性意味着即便给出输出,也没有可行的方法来计算输入。

也就是说,第三方观察者无法知道

138F4504A873C01D0864343FAD3027F03CA9BEA2F0109005FA4FC8C7DCC12634

的意思是“我喜欢冰淇淋。”

但是,如果我知道输入是“我喜欢冰淇淋”,那么通过检查你的哈希,我可以轻松验证你是否知道输入。

然而,如果其他人看到哈希,他们就无法使用它来计算输入。这允许知道输入的人使用散列后的输出在公共频道中安全地进行通信,而不必担心第三方观察者获取信息。

难题友好性

第三个属性是加密哈希函数的难题友好性。这意味着如果有人想要生成一个与“我喜欢冰淇淋”相同的输出的哈希,那么找到一个完全符合这一输出的另一个值是非常困难的。

生成哈希的算法是尝试每个可能的字符串,按长度排序,然后按字母顺序排序,直到得到哈希为相同值的字符串。这等于是大海捞针,所以我们得到的概率表明,小行星消灭地球上的所有生命是一个更紧迫的问题。

另一方面是加密哈希函数难以逆转(reverse)。相较于数据结构或压缩算法中使用的哈希,这是加密哈希的主要特点。

这也是区块链军备竞赛的一部分——黑客在逆向推演哈希函数方面做得越来越好,因此密码学家总是得想出更强大的哈希函数。

除此之外,难题友好属性使区块链难以篡改。如果我想替换像“我喜欢冰淇淋”这样的项,我不可能在没有其他参与者知道的情况下做到。



主链侧链开发数字货币交易所白皮书区块链浏览器跨境支付场内场外宠物挖矿游戏基金会牌照  181-4069-6008 微信电话同号
主链侧链开发数字货币交易所白皮书区块链浏览器跨境支付场内场外宠物挖矿游戏基金会牌照 181-4069-6008 微信电话同号

被加密哈希函数散列后,输入的微小变化也会导致输出的显著不同,从而达到防篡改的目的。

加密哈希函数看起来是随机的(因此没有碰撞),无法逆转,并隐匿输入,但同时它们又是完全确定的。这就是它们有用的原因!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档