区块链构架就是造房子,10分钟带你走遍构建全程

2018-07-31 17:21:38 区块链大本营  点击量: 评论 (0)
本文作者Taylor Pearson,是The End of Jobs专栏作家、企业家,过去三年曾与数百名企业家互动交流。他喜欢研究创新型技术,对区块链技术有较深入的研究。

本文作者Taylor Pearson,是The End of Jobs专栏作家、企业家,过去三年曾与数百名企业家互动交流。他喜欢研究创新型技术,对区块链技术有较深入的研究。

2008年,一个叫做中本聪(Satoshi Nakamoto)的人(或团体)定义了第一个区块链。

2009年1月,中本聪将区块链作为比特币的核心组成部分推出,它是网络上所有交易的公共分类帐。

由于使用了区块链技术,比特币成为了第一个解决双重支付问题的数字货币,它不再需要第三方信任机构,并且成为其他许多应用创新的技术基础。

我相信在一百年后,区块链将像今天的电力一样普遍。它会变得像经济体的基本组成部分一样,为每个人服务。也会像水一样平常,以至于我们往往会忽视它的存在。

可以预料的是,在接下来的几十年中,区块链应用和组织将呈爆炸式增长,就像几十年前的互联网或上世纪初的电气化一样。

如果上述一切成真,那么我们很有必要对区块链有一个基本了解,特别要知道它们的重要性以及它们的工作机制。

区块链为什么重要?

“许多名人发表演讲时都会提到一句名言,尽管这句话说的并不怎么正确:我们应该培养思考行为的习惯。但文明的进步却是由越来越多无需思索却得以运行的重要操作推动。”

——Alfred North Whitehead(艾尔弗雷德·诺思·怀特海,现代著名数学家、哲学家和教育理论家)

以区块链中一方将比特币发送给另一方的交易为例,该交易中诸如比特币来源、目的地和日期/时间戳等细节会被添加到区块中。

由于密码学的使用,区块链极大地提高了社会发展的可扩展性(social scalability),个体之间越来越多的合作,正成为文明的必要特征。

在过去的历史中,人类通常只以部落为单位,在小圈子里与有血缘关系的人交易,因为当时人类无法信任部落之外的个体。

在过去几千年中,各种各样的技术创新促使人类在更大的群体中进行合作,社交可扩展性被进一步提高。

现代法律制度的完善减少了暴力,盗窃和欺诈的发生几率,使没有预先存在关系(pre-existing relationship)的群体或个体以互动。

互联网则通过评级系统(rating system),促进了预先存在很少或根本没有社会关系的个体之间的交易。

区块链有潜力将社交可扩展性提高到以前技术所没有达到的水平。这是我们第一次拥有一种不需要依赖可信的第三方,却能让一个互联网用户安全地将数字资产转移到另一个互联网用户的方式。如此伟大的交易创举是如何夸大也不为过的。

除此之外,数字合约、数字密钥,以及实物资产的数字所有权,包括汽车、房屋、股票、债券,以及数字货币也值得深思。

什么是区块链技术

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

区块链是一种分类帐,它使用加密技术和激励措施并以防篡改的方式记录交易。这使匿名双方进行信任最小化(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)。相较于数据结构或压缩算法中使用的哈希,这是加密哈希的主要特点。

这也是区块链

大云网官方微信售电那点事儿

责任编辑:售电衡衡

免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
我要收藏
个赞