今天,我们就来把区块链拆分开,详细聊聊到底什么是区块链。我们知道,区块链背后的技术其实主要就是加密算法,其中主要包含两块,一个是哈希,另一个就是电子签名。
哈希和电子签名是什么?
哈希的意思就是引入随机数量的输入数据,将其加密,然后得出一个固定输出数据,就叫做哈希。输入可以是任何数据,只要能代表单个字节,一个MP3文件,整本小说,你的银行账单,甚至是整个互联网。关键在于输入可以无限大。哈希算法可以根据你的需求来进行选择,现在公开的也有很多种算法。关键点在于,这些算法会将无限的输入,转换成固定数量的字节。例如,256字节。
那么这个哈希有什么用呢?现在哈希通常的用处就在于指纹识别,同时也被称为检测区域。这意味着一个哈希被用来验证一个文件没有被任何人更改。假设WikiLeaks发布了使用MD5哈希的文件,任何人下载这些文件,都可以通过MD5哈希验证文件的来源。如果哈希和WikiLeaks发布的不符合,那么你就知道这个文件肯定是被改过的。
那么区块链是如何使用哈希的呢?区块链使用哈希,来表现整个区块链网络现在的状态。输入则是区块链的整个状态,也就是说近期完成的所有转账,输出就是哈希代表的区块链现在的状态。哈希就被用来在区块链网络中让各方相信,整个状态都是相同的。但是这些哈希是怎么算出来的呢?
首个哈希是为第一个区块或者是创世区块所计算的,通过区块内部的转账数据得出。初始转账的顺序被用来计算创世区块的区块哈希。后来每挖出的新区块,之前的区块哈希也会被使用,同时还有这个区块的转账信息,作为输入值,来确定区块的哈希。这就是区块链的形成方式,每个新区块哈希指向地是之前区块的哈希。 这种哈希系统保证了任何转账记录都不会被改变,因为如果任何部分的转账记录改变,那么归属于这个区块的哈希值也会改变,那么任何接下来的区块哈希也会被改变。那么你可以简单地将哈希对比,就很容易去分辨出哪儿发生了改变。这就非常棒了,因为区块链上的每个人只需要对这256个字节达成共识,就可以代表区块链的状态。以太坊区块链现在是10MB,但是区块链状态只有256字节代表的哈希。
那么电子签名又是什么呢?电子签名,和真实签名一样,为了证明某人的身份,但是使用加密算法,会使得签名更加安全,不像手写的那种,可以很容易地修改。数字签名可以证明这个信息是从某个特定的人那儿来的,而且不是任何其他人,比如黑客。
电子签名在现今互联网中也有所应用。不论何时你通过ACTPS访问网站,你都是在使用SSL,这就是通过电子签名来保证你和服务器之间的安全性。这意味着当你访问Facebook.com时,你的浏览器可以检查跟随页面的数字签名,来验证者确实是从Facebook网页传来的,而不是从黑客。
在非对称的加密系统中,用户可以获得秘钥对,这是由使用某种算法的公钥和私钥组成的。公钥和私钥是通过数学关系相互连接的。公钥的意思是公开发布的,作为从其他用户处接受信息的地址,就类似IP地址或者是家庭住址。私钥意味着隐秘的信息,用来将签署电子信息,并发送给别人。签名包含在信息中,以至于接受者可以验证发送者的公钥。这样地话,接收者就可以保证只有发送者可以发送这条消息。在区块链上创造账号,就可以获得秘钥对,但是并不需要在任何地方进行注册。而且区块链上的任何交易都是由发送者使用私钥进行电子签名后才行。这个签名保证了只有账户拥有者可以转移其中的资产。
总结来看,区块链不能没有哈希和电子签名。哈希使得区块链上的人对现在的整体状态达成共识,电子签名却保证了所有交易都只由正确的人发出。我们依赖于这两个特性,来保证区块链不会存在任何欺诈和贪污现象。