区块链是中本聪发明的创新技术,区块链技术是加密货币的核心和灵魂。它将加密货币与数字货币或虚拟货币区分开来。除此之外,它还实现了比特币的不可伪造性,来保护加密货币,这不是一件容易的事情。这种创新可以说是比特币在其他虚拟货币失败的情况下取得成功的主要原因。传统的货币是依赖于官方比如银行或财政部的认证和可追踪性而制作出来的,这使货币被伪造的可能性越来越低,因此人们相信货币的价值。但是数字货币就没有那么简单了。
任何数字货币的创建都会面临一个问题,那就是任何数字文件都可以被轻松地复制。如果任何人都可以复制代表数字货币的文件,那么它也就很容易被伪造,这样的话数字货币将毫无价值。这不仅是数字货币才具有的问题,唱片公司、出版社、电影制片厂甚至21世纪的时尚品牌都面临类似的问题。
这些行业的人知道,如果有人能复制它们的电影、图书或面料压花,那么将很少会有人花钱去购买正版产品了。为了应对这种情况,很多公司开始使用数字版权管理(DRM)软件。该软件可以帮助公司通过中央服务器查看使用该文件的人是否已经付费,并且阻止没有付费的人使用他人共享的该公司数字文件。打个比方,如果你要在计算机上看电影,那么DRM软件将咨询中央服务器,来查看你是否已经购买了该电影的数字版权。如果你已经购买了,那么视频文件将自动解锁,否则,你的计算机是播放不了这个电影的。
但是这种解决方案并不是很完美,因为服务器有可能会随时崩溃或者关闭,这对于那些已经为电影数字版权付过费的用户不公平。当登录到一个数字货币的银行账户时,我们通过互联网来访问经过银行认证的数字货币的银行账户消息,但是如果银行系统停机了,我们将无法获知我们数字货币银行账户的资金情况。在比特币出现之前,数字货币和虚拟货币都是依靠发行公司来保存和验证它们的账户记录的,如果这些公司倒闭了,你的货币也就消失了。区块链技术改变了这一切。用最简单的术语来说,区块链就是一个分类账簿,它列出了加密货币存在的数量以及谁拥有它们。当加密货币换手时,这次交易将写人分类账簿以用来进行记录。通过这种方式,无论货币物理存在于什么地方就不重要了,我们只要知道货币的数量以及谁拥有它们就够了。如果你试图复制数字货币,那么当你违规复制时,你会发现你复制的数字货币并没有写入区块链的分类账簿中。
区块链技术意味着比特币永远不需要物理实体的存在,实际上并没有人在任何地方使用物理的货币,他们只是通过区块链的记录和更新来反映谁拥有多少货币。它基本上是一份庞大的记录清单,任何企图篡改这份清单的人都会被区块链轻易地发现,许多人认为不能解决的问题,区块链技术都巧妙而优雅地解决了。
公钥加密
区块链技术是通过加密算法运行的,因此使用区块链技术的货币被称为“加密货币”。现在的加密算法使用的所谓不对称或者说“公钥”加密,就像PGP一样。公钥加密与其他算法的一个主要的区别是,公钥加密的解密过程并非简单的反加密过程,所以它是不对称的加密算法。公钥加密的原理是基于数学原理的,数学有一个特点就是正向计算比反向计算容易得多。例如,将两个六位数的素数(比如、和、)相乘是一种相对容易的计算。用一分钟、一支铅笔和一张纸,你会计算出结果是、、、。但是如果给你一组数字、、、,然后要求你找出相乘等于它的两个质数,那么你将需要更多的时间来测试所有不同的可能性。
在公钥加密算法中,要计算的数字要大得多,所以就需要计算机执行这样的任务。一个用户有两个密钥:用于加密消息的公钥和用于解密消息的私钥。私钥可能包含很多非常大的质数(这些数字都是几百或几千位数长的质数),而公钥则是将它们相乘的结果。私钥用于生成公钥,这一生成过程可以被验证,这意味着这两个密钥将永远连接在一起。用户可以确信,他们可以与任何人共享公钥,而不会让任何人发现他们的私钥,因为要逆向生成私钥的过程非常困难。任何人都可以使用公钥加密消息,但是需要使用私钥来解密。假设你要向朋友发送一个加密的消息,过程是这样的:
1)你的朋友使用他的私钥生成一个公钥,他可以与任何人共享他所生成的公钥,他发送给你一份他的公钥的副本。
2)你用你朋友的公钥加密一条消息,然后将消息发送给他。任何截取该条消息的人都无法读取消息的内容,因为他们没有私钥,当然也包括你,因为加密过程只能是正向的。
3)你的朋友收到消息并使用他们的私钥解密来读取这条消息。
在这个过程中,只有你的朋友有私钥,其他人都没有,所以用公钥加密的消息只有你的朋友可以读取,其他人都读取不了。公钥加密算法如此强大,以至于大多数人试图破解公钥加密的唯一方法就是被称为“暴力破解”的方法。这意味着没有什么好的办法,你只能尝试所有可能的密钥,直到遇到正确的那一个。确切地说,这就是在考验计算机的计算速度了。研究人员目前正在使用一种叫作“因式分解”的更快的方法,以简化数学运算,但破解速度仍然是很慢的。
目前我们常用的一种公钥加密方式是RSA,这是以发明者的名字Rivest、Shamir和Adleman命名的。年,研究人员使用了一系列的超级计算机,用因式分解方法破解了一个位的密钥,但是他们花费了两年的时间。这批研究人员下一步在尝试破解长度是位的密钥,这估计要花费他们倍的时间进行破解。据我们所知,还没有人这样做过。RSA目前使用的最长的密钥是位。研究人员估计,用当今最先进的技术破解一个位的密钥所需要的时间应该是无限的。
区块链如何存储交易
区块链就像一个数字分类账簿,一个很长的清单,用来追踪每个比特币所有权的变化。区块链使用类似于公钥加密和数字签名的方法(参见上面的“公钥加密”和“加密的签名”)验证它的所有交易。但是,因为它是用于金融交易的,所以术语有些不同。你的“钱包”的功能就像一把私钥。它是私密的,只有你自己知道,是你所有比特币之间的连接。你的“地址”的功能就像是公钥,它是由你的钱包生成的,你可以共享这个“地址”给任何人,他们可以通过这个“地址”转账比特币给你。你的钱包也可以对你的交易进行数字签名并发送到区块链上进行交易。
下面是对一笔比特币交易逐步细分的步骤。它非常类似于使用加密算法发送消息。
1)你得到了一个朋友的数字地址,你想转给他一些比特币。
2)你将交易发送到区块链,交易信息包括你的地址、你想转账多少比特币、你朋友的数字地址,以及你的数字签名。
3)收到消息后,区块链将验证与你的地址关联的账户是否有足够的比特币余额来进行转账,以及验证你的数字签名是否有效。
如果一切正常,区块链将更新这笔交易,然后显示出你和你的朋友之间的交易信息。此交易由区块链本身签署,并将这笔交易注册为正式的和有效的。钱包可以创建的公钥数量是没有限制的。因此,与一个钱包相关的比特币数量可能被记录到区块链中的任意数量的公钥中。这有点像一个人有几个不同的银行账户,或者一个大楼有很多不同的邮政信箱。钱包始终是私人的,但任何人都可以在区块链中看到公钥。在区块链中,这是每一枚比特币所处位置的完整记录,因为它从一个地址发送到另一个地址,被分割成碎片、转移、合并、然后再分割。尽管这是一长串复杂的转移过程,但可以对其进行分析,并在账簿上进行追踪。
钱包,即私钥,是从一个地址到另一个地址进行交易平台所需的唯一标识。只要钱包是安全的,并且只在你的控制之下,你就是唯一可以管理你的比特币的人。在区块链中记录的每一个交易信息都有一个与地址相关的数字签名,这意味着任何人都可以检查交易的有效性。每一次发生的搜索都包含在区块链中,每台计算机都可以通过历史记录来检查所有的签名,以证明其连续性。
区块链是对所有交易进行认证的地方,但交易在区块链中是需要被验证其真实性和一致性的。人们担心的不是攻击者发送虚假交易来转移他人的比特币—钱包的签名可以防止这种情况发生。问题更多的是搜索被删除或取消。如果有人有权单方面编辑分类账簿,把时间倒转,取消以前的交易,那么他们也有能力捏造交易记录,这样比特币就是凭空产生的了,因为之前的比特币所有者已经交换过比特币了。这种问题的解决方案是,通过确保每个单独的个人都不能控制区块链,以此来确保区块链的安全。
存放分类账簿的地方
区块链无处不在,每个运行加密货币的计算机都从网络中的其他计算机上下载相同的分类账簿。当每台计算机向区块链添加交易时,它通过向其他计算机同步信息来更新网络。其思想是,如果任何人试图修改区块链的交易记录,它将不再匹配所有其他副本。但是新的交易可能会引发一个问题。如果有人创建了两个新的、矛盾的交易,区块链如何知道该信任哪一个呢?显而易见,这将改变区块链的整个交易记录,但是提交给区块链的小错误的添加和删除可能很快会累加起来。如果我告诉网络中的一台计算机,我会给一个朋友一个比特币;而我告诉网络中的另一台计算机,我会给另一个朋友一个同样的比特币,哪个交易是正确的呢?所有数字资产都可能存在这种重复交易的问题。在加密货币中,这个问题被称为双重支付。
在全球网络范围内,不同版本的分类账簿可能会存在矛盾,或者有试图欺骗网络的行为,使网络认为加密货币同时被分配到两个不同的地方去了。如何解决这个问题呢?如果顾客带着产品离开,但30分钟后,商家发现他们收到的货币实际上已经被转账给了其他人,或者可能被退回给了顾客本人,你怎么能把这个加密货币系统的货币当作货币来使用呢?区块链采用了一种巧妙的解决方案。
工作量证明
比特币和所有直接从它的模型中开发出来的加密货币都使用一种叫作“工作量证明”(Proof-of-Work)的机制来确保加密货币只有一个,而且有规范的分类账簿,没有任何矛盾。这允许区块链存储在网络中的每台计算机上,同时也确保区块链的每个副本都是一致的。只要保证区块链存储在所有版本中的记录一致,比特币就可以作为货币被信任和使用,即使它们是完全虚拟的。所有重复和错误的交易都会被清除掉,每个比特币只能同时由一个所有者持有这解决了双重支付的问题。工作量证明机制与公钥加密算法有着相同的数学方法—一尽管它的执行过程与交易时使用的加密算法是不同的。这个想法是由程序员亚当·巴克在年提出的,他将其用于一个叫作hashcash的系统。亚当·巴克的想法是通过计算机来完成一项艰巨的任务。例如,计算机每发送电子邮件之前需要10分钟。对于一个每天发送50封电子邮件的人来说,其前提条件很简单,就是每10分钟只能发送一封邮件。但是对于一个想要每天发送成千上万封电子邮件的垃圾邮件发送者来说,这是不可能的。
计时器可能会被改动,但是对于计算机来说,这个任务是更严格的限制。计算机被设计用来快速地执行一系列的任务。然而,一系列难度不同的任务,如数据加密,可以很容易地扩展,以便其在功能更强大的机器上执行长加密算法位数的加密任务。一项可变难度的任务可以动态伸缩,以确保不管计算机在做什么,从手机到超级计算机,这项任务所花费的时间大致相同。这就像移动比赛的终点线,一辆车无论它开得多快或多慢都能使它在特定的时间到达终点。
没有捷径
如果计算机的任务涉及加密学,则没有捷径可走。工作量证明任务只能靠“暴力”来完成。在本例中,计算机的任务是尝试生成正确的哈希值,就像生成签名一样,但是不使用私钥,而是尝试许多不同的可能的哈希值进行猜测,直到找到正确的哈希值。中实际上,工作量证明的过程就像暴力破解低级别加密甚至根本没有密钥的签名。密码学在很大程度上缩小了通常使用的密码术,因此计算机网络实际上可以在10分钟内解决这个问题。一台计算机每秒能做上千次猜测,这个网络每秒可以进行千万亿次的猜测。随着越来越多的计算机连接到网络中,它们各自开始处理相同的工作量证明问题,这通常会缩短时间,直到找到解决方案。但是,工作量证明的“困难”是自动调整的,因此每个解决方案总是需要10分钟,而不管有多少计算机生成哈希值进行猜测。
一旦一台计算机认为它对密码数学问题有正确的哈希值,网络中的另一台计算机就可以快速地验证这一点。与一遍又一遍地猜测相比,验证是一件容易的事情。但是因为没有密钥存在,猜测和验证是得到这个正确哈希值的唯一方法。这就是为什么它被称为“工作量证明”。除了证明你做了暴力的工作外,没有别的解决办法。依赖于工作量证明的加密货币使用这种时间限制来确定块在写入区块链之前为交易“打开”的时间长度。当工作量证明完成时,块被关闭。比特币的设计目的是让每个比特币块需要大约10分钟的时间来解析,但时间与其他加密货币不同。
工作量证明听起来好像是一个非常迂回的方法,每10分钟关闭一个区块,但是有一个重要的原因,在比特币块交易持续时间的10分钟内,比特币网络将其所有计算机中
添加到区块链的所有交易收集起来。网络有机会比较所有新的交易,并删除重复的交易或相矛盾的交易。这是任何双重支付交易的第一个障碍。由于工作量证明的暴力破解方法,找到工作量证明问题解决方案的计算机,将会被随机选择。这台计算机说已经解决了这个问题,只包括计算机接收到的处理块的交易,任何没有进行截止的交易都必须等待下一个块。这种随机化处理也有助于防止双重支付的交易。如果无法预测块将在哪里被解决,那么就更难尝试与系统博弈。块的实际数据不仅包含这些交易和工作量证明解决方案,而且还包含在它之前的块的哈希值。新块通过使用前一个块进行“签名”,一直继续,直到最初的块。这还带来了一个额外的好处,即每当形成一个新的块时,都要对历史交易进行重构。如果前一个块中的信息即使是一个字符被修改,那么它将更改签名,继而更改下一个锁,以及下下一个锁,依此类推。因此,如果有人想要更改区块链上的任意的一个块,他需要把这次交易之前所有发生的块都进行更改。因为这些块是固定连接在一起的,这意味着当前块始终是它之前的所有块的唯一产物,任何东西都不能插入中间。
交没有错误信息要添加错误信息或从前一个块中删除交易,你必须从要更改的变更点向前重新创建所有块,包括当前正在解决的新块,以便在整个链中重新执行签名。就像一个赛跑运动员,跑到一半停下来,然后回到起跑线上用足够快的速度去追赶那些从未停下来过的人。一台计算机要想赢得这场比赛的唯一途径是,它猜测哈希值的速度是不是比其他所有计算机加起来的速度都快。这同样可以防止双重支付,因为只要将以前的交易从区块链中删除,就不可能修改以前的交易了。
除了使用这种复杂的签名和哈希运算将每个块锁到链中的下一个块上之外,工作量证明的累积效果还可以帮助网络保持相同的区块链。比特币软件总是选择最长的区块链作为标准。越多的块(具有最多的交易)和来自更困难的工作量证明任务的更长的哈希值,将创建最长的区块链。通过这种方式,网络将始终选择使用大多数计算机的区块链,而忽略任何试图插入少数攻击机器准备的错误区块链的尝试。永远只有一个,并且是一个单一的区块链,它将永远是大多数网络所使用的。一旦一个商人看到他们的交易是在这个最长的、最规范的区块链中,他们就知道比特币真的被交易了。交易不会被冲突的交易取消,并且区块链将始终只记录这一次准确的交易。现在,双重支付几乎是不可能的了。
工作量证明似乎是完全可信的。如果部分网络之间的通信中断怎么办?相信工作量证明在理论上行得通,但是没有任何权威说区块链一直绝对会是正确的,难道区块链不会出问题吗?有时,一种罕见的情况会出现,即一个块是由网络两端的两台不同的计算机来形成的,因此这两台计算机都认为自己是第一个,因为它们还没有收到对方块的通知。这些计算机在网络上被分开,它们将把不同的交易记录到自己的块中。在这个罕见的事件中,网络将会有两个不同的总账,这一情况被称为“分叉”当网络接收到两个不同的更新的区块链时,将会有片刻的混乱。一旦形成了不同的块,网络中的每台计算机都将接收到一个新的块,或者另一个。网络将在两个不同的分类账簿之间分割。
然而,在某个时候,一个块由一半的网络或更多的计算机形成,因此更多的资源去进行工作量证明的运算。当第二个块添加到两个相互冲突的总账簿的一个时,一个分类账簿会突然变得更长。由于网络总是选择最长的区块链,短的那个分类账簿将被放弃,以支持已经被大多数人选择的块。实质上,在此基础上,网络投票决定区块链的使用,然后否决所有其他的。不久之后,整个网络现在是在最长的区块链上,而且只有一个规范分类账簿。无论生成块的时间有多接近、交易记录有多不同,当添加第二个块时,网络将开始选择区块链的一个版本并坚持使用它。所有的计算机都会再次同意。这种情况很少见,但谨慎的加密货币用户经常等待两个或两个以上的周期以确认块的准确性,因为这样他们就可以确定任何潜在的分叉是否存在了,他们所看到的区块链以及它所包含的所有交易,都是每一枚加密货币的真实记录和存储地址。
转载请注明:http://www.0431gb208.com/sjszlfa/3905.html