您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 投融资/租赁 > 一文看懂区块链:区块链入门指南
一文看懂区块链:区块链入门指南什么是加密经济学?以太坊社区开发者VladZamfir解释道:“这是一门独立的学科,旨在研究去中心化数字经济学中的协议,这些协议被用于管理商品及服务的生产、分配和消费。它也是一门实用科学,重点研究对这些协议的设计和界定方法。”区块链技术是运行在加密经济学理论基础之上的。我们不妨将此概念分解一下。加密经济学来源于两个词汇:密码学和经济学。人们常常会忽略其中“经济学”的成份,而恰恰正是这一成份赋予了区块链以独特性。区块链并非是首个使用“去中心化的点对点系统”的技术,洪流网站(torrentsites)在文件共享上对此技术的使用由来已久。然而,从某种意义上来说,这是一次失败的应用。为什么点对点的文件共享是个失败的应用?在一个洪流系统(torrentsystem)中,任何人都能通过一个去中心化的网络来共享文件。这个想法旨在让每个下载者在下载的同时也保持着向网络里的其他下载者提供种子(上传已下载的数据)。问题是,这一系统的运作逻辑是建立在荣誉系统制度上的。如果你下载了一个文件,系统预期你也会提供种子。但是在没有经济激励的情况下,人们认为持续上传种子是件毫无意义的事情,尤其是当这一行为还将占据电脑里更多的存储空间时。中本聪和区块链技术2008年10月,中本聪(一位匿名男士、女士,或组织)发布了一篇论文,此文为比特币(Bitcoin)后续的发展奠定了基础。这篇论文将会动摇网络社区的根基,因为这是我们有史以来第一次拥有了一个以加密经济学为理论依据的工作模型。与之前的点对点去中心化系统不同的是,人们现在有了经济激励去“遵守规则”。不仅如此,区块链技术的真正天才之处在于其克服了拜占庭将军问题,并创造了一个完美的共识系统(详见下文)。比特币的加密经济学属性那么,像比特币这样的,基于加密经济学理论的加密货币,究竟有哪些属性呢?让我们一一阐述:它是基于区块链技术而产生的货币。其中,每个区块都包含前一个区块的哈希值,从而形成一条连续链。每个区块都包含多笔交易。新产生的交易会使所有区块的特定状态得以更新。例如,如果A有50个比特币,且想把其中的20个比特币发送给B,那么在新的状态下就会显示:A只剩下30个比特币,而B拥有20个新的比特币。区块链必须是不可变的。只可能新增区块,而不可篡改旧的区块。仅允许有效交易。区块链应当是可下载的,任何人在任何地点都可以轻松接入并查询某笔特定的交易。如果支付了足够高的交易费用,则交易可以被快速添加至区块链上。正如其名,加密经济学有两大支柱:密码学经济学区块链技术的运行中使用了多项密码学函数。让我们看一下其中一些主要的函数:密码学区块链技术的运行中使用了多项密码学函数。让我们看一下其中一些主要的函数:哈希算法签名工作量证明零知识证明哈希算法简言之,哈希算法是将任意长度的字符串映射为较短的固定长度的字符串。比特币则是使用SHA-256摘要算法对任意长度的输入给出的是256bit的输出。那么,加密货币中哈希算法的应用有哪些?加密哈希函数数据结构挖矿加密哈希函数:一个加密哈希函数有如下特性:确定性:无论在同一个哈希函数中解析多少次,输入同一个A总是能得到相同的输出h(A)。高效运算:计算哈希值的过程是高效的。抗原像攻击(隐匿性):对一个给定的输出结果h(A),想要逆推出输入A,在计算上是不可行的。抗碰撞性(抗弱碰撞性):对任何给定的A和B,找到满足B≠A且h(A)=h(B)的B,在计算上是不可行的。细微变化影响:任何输入端的细微变化都会对哈希函数的输出结果产生剧烈影响。谜题友好性:对任意给定的Hash码Y和输入值x而言,找到一个满足h(k|x)=Y的k值在计算上是不可行的。加密哈希函数对区块链的安全性和挖矿有巨大的帮助。数据结构:有两种数据结构对于理解区块链非常重要:链表和哈希指针。链表:链表是依次按顺序连接而成的数据区块,如下图所示:在链表中的每个区块都通过一个指针指向另一个区块。指针:指针是包含其他变量地址的变量。因此,正如其名,指针就是指向其他变量的变量。哈希指针:哈希指针不仅有其他变量的地址,还有该变量中数据的哈希值。那么,这对区块链而言有何帮助呢?区块链的构成如下图所示:区块链本质上是一个链表,其中的每个新区块都包含一个哈希指针。指针指向前一区块及其含有的所有数据的哈希值。借此特性,区块链拥有了不可更改性(immutability)的伟大特质。区块链如何实现其不可更改性?假设在上面的图表中,有人尝试篡改1号区块中的数据。请记住加密哈希函数的一个重要特质是任何输入端的细微变化都会对哈希函数的输出结果产生剧烈影响。那么,即便有人尝试对1号区块里的数据进行细微的改写,也会使得存储在2号区块里的1号区块的哈希值产生巨大的变化。接下来,这将导致2号区块的哈希值发生变化,进而影响存储在3号区块的哈希值。以此类推,最终整条区块链上的数据都会发生变化。这种通过冻结整条链条来修改数据的方式几乎是不可能做到的。正因如此,区块链被认定为是不可篡改的。每个区块都有自己的梅克尔根(MerkleRoot)。现在,正如你已知道的,每个区块里都包含多笔交易。如果将这些交易按线性存储,那么在所有交易中寻找一笔特定交易的过程会变得无比冗长。而这就是我们使用梅克尔树的原因。在梅克尔树中,所有个体交易通过哈希算法都能向上追溯至同一个根。这就使得搜索变得非常容易。因此,如果想要在区块里获取某一特定的数据,我们可以直接通过梅克尔树里的哈希值来进行搜索,而不用进行线性访问。挖矿加密谜题被用来挖掘新的区块,因此哈希算法仍然至关重要。其工作原理是调整难度值的设定。随后,一个被命名为“nonce”的随机字符串被添加到新区块的哈希值上,然后被再次哈希。接着,再来检验其是否低于已设定的难度值水平。如果低于,那么产生的新区块会被添加至链上,而负责挖矿的矿工就会获得奖励。如果没有低于,则矿工继续修改随即字符串“nouce”,直至低于难度值水平的值出现。正如你所见,哈希算法是区块链和加密经济学中一个至关重要的部分。签名在加密货币中,签名是其中一个最为重要的密码学工具。在现实生活中,签名的概念是什么?又有哪些特性?想象一下,你在一张纸上签名后,如何鉴定这是一个好的签名?可被验证的。这个签名要可以证明确实是你在纸上签名了。不可伪造的。没有其他人能够伪造及复制你的签名。不可抵赖的。如果你使用自己的签名进行签署,你就无法将其收回或声称他人代替你签名。但是,在现实生活中,无论签名有多复杂,都有被伪造的可能性。你无法通过简单的视觉辅助工具来真正地验证签名的有效性,这样做既无效率也不可靠。密码学给了我们一种通过公钥和私钥来解决问题的方案。让我们来看看这两种秘钥的工作原理和其对加密货币系统的促进作用。假设有两个人,Alan和Tyrone。Alan想要发送一些非常重要的数据,而Tyrone想要鉴别这一数据确实来自Alan,他们可以通过使用Alan的公钥和私钥来实现这一目标。有一点必须指出,通过某人的私钥来确定其公钥是不可行的。公钥正如其名,指公开的密钥,可以被任何人获取。而私钥是仅个人拥有的密钥,你不可以将其与他人分享。那么,让我们再回到Alan和Tyrone的话题,如果他们要使用密钥来交换信息,具体该如何操作呢?假设Alan想把信息“m”发送出去,Alan有一把私钥Ka-和一把公钥Ka+。那么,当他把信息发送给Tyrone时,他会用私钥将该条信息加密,于是信息变成了Ka-(m)。当Tyrone收到这条信息时,他可以使用Alan的公钥来取回信息,Ka+(Ka-(m)),于是便得到了原始信息“m”。总结一下:Alan有一条信息“m”,当他用私钥Ka-对其进行加密之后,得到加密信息Ka-(m)。Tyrone随后使用Alan的公钥Ka+来解密这条加密信息Ka+(Ka-(m)),从而得到原始信息“m”。通过下图可以得到上述过程的直观表示:可验证性:如果加密信息能够用Alan的公钥进行解密,那就可以100%确定是Alan发送了该条信息。不可伪造性:如果说有其他人,例如Bob,拦截了该条信息,并用自己的私钥发送了一条自己的信息,那么Alan的公钥将无法对其解密。Alan的公钥只能用来解密Alan用自己的私钥加密过的信息。不可抵赖性:同样的,如果Alan宣称,“我没有发送信息,是Bob发的”,但Tyrone却能够用Alan的公钥来解密信息,那就证明Alan在撒谎。如此,Alan就无法收回他之前发出的信息,并将其归咎于他人。加密货币的应用:现在,假设Alan正在发送一笔交易“m”给Tyrone。首先,他要用哈希函数对该交易进行哈希,然后使用私钥对其加密。Tyrone知道他正在收到一笔交易“m”,因此他能用Alan的公钥对其解密,并将解密后得到的哈希结果与他已有的交易“m”的哈希结果进行比对。由于哈希函数具有确定性,并且对于同样的输入总是给出相同的输出,那Tyrone可以直接确定,Alan确实发送了同一笔交易,且其中没有任何作恶。更简单地来说:Alan有一笔交易“m”,并且Tyrone知道他正在接收该笔交易。Alan对m进行哈希运算,得到h(m)。Alan用自己的私钥对哈希结果进行加密,得到Ka-(h(m))。Alan将加密数据发送给Tyrone。Tyrone使用Alan的公钥来解密,Ka+(Ka-(h(m))),并得到原来的哈希结果h(m)。Tyrone用已知的“m”进行哈希运算,可以得到h(m)。哈希函数的确定性特征决定了如果h(m)=h(m),就意味着这笔交易是真实有效的。工作量证明当矿工们通过“挖矿”来产生新区块并添加至区块链上时,其中验证及添加区块涉及到的共识系统被称为“工作量证明”。矿工们使用庞大的计算机算力来解决这道密码学谜题,而难度值决定了这道题的所需要的计算量。这是区块链技术中最具开拓意义的机制之一。早期的去中心化点对点数字货币系统之所以会失败,是由于“拜占庭将军问题”导致的,而工作量证明的共识系统为该问题提供了一种解决方案。什么是拜占庭将军问题?ImageCourtesy:Medium好了,让我们想象一下,有一群拜占庭将军想要攻打一座城市,他们将面临两个不同的问题:每个将军及其军队在地理上相距甚远,因此通过中央集权来指挥是不可行的,这使得协同作战变得异常困难。被攻打的城市拥有一只庞大的军队,他们能获得胜利的唯一方式是所有人在同一时刻一同发起进攻。为了让合作成功,位于城堡左边的军队派遣一位信使,向城堡右边的军队发送了一则内容为“周三攻击”的信息。然而,假设右边的军队没有做好攻击准备,并让信使携带一则内容为“不,周五攻击”的信息返回。而信使需要通过穿越被攻打的城市返回到左边的军队,那么,问题就来了。在这位可怜的信使身上,很多事情都有可能会发生。例如,他有可能被抓获、泄露信息、或被攻打的城市杀害后将其替换了。这将导致军队获得被篡改过的信息,从而使作战计划无法达成一致而失败。上述例子对区块链有明显借鉴意义。区块链是一个巨型网络,你要如何信任他们呢?如果你想从钱包里发送4个以太币给某人,你如何确认网络中的某人不会篡改信息,将4个以太币改成40个?中本聪发明了工作量证明机制来绕过拜占庭将军问题。其运行原理是:假设左边的军队想要发送内容为“周一进攻”的信息给右边的军队,他们需要执行如下步骤:首先,他们会给初始文本添加一个“nonce”,这个nonce可以是任何一个随机十六进制值。其次,他们将添加了“nonce”的文本进行哈希,得到一个结果。假设说他们决定仅当哈希结果前5位是零的时候,才进行信息共享。如果哈希结果满足条件,他们就会让信使带着有哈希结果的信息出发。否则,他们会持续随机改变nonce的值,直到得到想要的结果。这一过程不仅冗长耗时,且占用大量的算力。如果敌人抓到了信使,并企图篡改信息,那么根据哈希函数的特性,哈希结果将会剧烈变化。如果城市右边的将军看到信息没有以规定数量的0作为开头,那么他们就会叫停攻击。然而,这里有可能有个漏洞。哈希函数并不是100%免碰撞的。那么,如果城市中的敌人拿到信息之后将之篡改,并通过不断改变nonce值,获得了以规定数量的0作为
本文标题:一文看懂区块链:区块链入门指南
链接地址:https://www.777doc.com/doc-3098562 .html