大家好!我是卡卡,感谢您的关注。
一.导言
在当今互联网时代,网购是不可或缺的技能,我们最关心的是网上支付的安全性和个人隐私的保密性。在交易中,买卖双方的信任是建立在第三方支付机构(如支付宝)的基础上的,而在我们的印象中,第三方支付机构的信用大部分时间是有保障的。
图1传统电子商务
然而,这种方法并没有我们想象的那么完美。一方面,用户需要在交易之外支付中介费,并给予个人信息作为担保;另一方面,作为一个中心化的公司,他们可能会有一系列令人不舒服的问题,比如人为风险导致系统故障,黑客攻击导致用户数据隐私泄露,或者不可抗拒的事故导致机器损坏。
所以,我们需要思考,能否实现一个直接解决交易双方信任问题,保护用户隐私的系统,让陌生人交易无后顾之忧,消灭可恶的中介。
2.什么是区块链?
2008年,在论文《比特币:一种点对点的电子现金系统》中,作者中本聪提出了一个创新的解决方案,巧妙地整合了密码学、网络科学、计算机科学、社会学等学科的现有产品和技术,构建了比特币的底层技术——区块链。
图2交易方式的变化
区块链,这个原本“冰冷”的技术词汇,近年来频频进入人们的视野,引发一波又一波最热的争议。投资者为之疯狂,技术极客也为之痴迷。区块链到底是什么?大多数人都知道区块链是比特币的关键底层技术,因为比特币。
根据百度百科的定义,区块链技术是一种全新的分布式基础设施和计算方法,它使用区块链数据结构来验证和存储数据,使用分布式节点共识算法来生成和更新数据,使用密码学来保证数据传输和访问的安全性,使用自动化脚本代码组成的智能契约来编程和操纵数据。
通俗地说,它就像一个分布式的数据库账本,加密后放在网络上。每个人都可以有备份,每个人都可以一起维护,所以所有的交易信息都可以安全记录。
3.为什么要分布式记账?
人类社会的交易方式一直在随着时代的变化,从古代的物物交换,到黄金、纸币,再到支票、移动支付。我们的交易方式变得越来越方便快捷,但同时也伴随着银行等中心化机构向用户索要昂贵的记账费用和不必要的用户隐私信息的成本。
我们日常使用的互联网很好的解决了信息传递的问题,但是不太擅长价值传递,所以电子交易系统采用的是基于第三方信托机构的传统货币交易的方式。但是,经历过金融危机的人都知道,政府和银行并不总是可靠的,他们可能会倒闭或者破产。财富只有掌握在自己手里才是最真实的。
区块链的创新之处在于创建了一个基于密码学而非信任模型的公共账本,交易数据记录在区块链。这样的分布式账本具有任何人都可以查阅、不能篡改的特点,提高了电子交易系统的分散性和安全性。在一定条件下,系统的安全性是可证明的。
在区块链的分布式对等网络中,用户拥有一个账户,用户之间可以直接进行交易。在这样的交易体系中,做假账做坏事是非常困难的,作恶的成本是非常高的。
举个例子:小青蛙和爸爸妈妈各有一本账本,每本账本都记载着相同的交易事项。每个人想买东西的时候,都要先告诉另外两个人,大家同意后,才能在各自的账本上添加一条完全相同的交易记录,以便交易成功支付。
有一天,小青蛙看中了一个心爱的玩具,但是很贵,爸爸妈妈绝对不可能同意买。小青蛙经不住诱惑,偷偷把这笔交易写在自己的账本上,然后让店家给小青蛙取货。但是店家上网查了小青蛙家的三个账本,发现爸爸妈妈不同意交易,于是店家中断了和小青蛙的交易,小青蛙的小心思也没能得逞。
4.区块链看起来像什么?
顾名思义,区块链是由块组成的链结构。除了genesis块(第一个块),每个块都记录了前一个块的地址,根据地址可以追溯到前一个块。
图5区块链的主链和侧链
具体到每个块的结构,块由块头和块体组成。块头封装了当前版本号(version)、前一个块地址(Prev-block)、时间戳(nonce)、当前块的目标哈希值(目标位)、Merkle-root和其他信息。该块主要包含事务计数和事务细节,所有事务都构建在一个Merkle树中。
这里的交易信息不会包含用户的个人隐私,因为交易只需要提供个人钱包地址、钱包密码、对方钱包地址和转账金额即可。
目标哈希值:用于调整挖掘的难度(稍后在“挖掘”中解释)。
Nonce:在加密通信中只能使用一次的数字。在认证协议中,它通常是一个随机或伪随机数,以避免攻击。
Merkle树:在密码学和计算机科学中,Merkle树也称为哈希树,是一种类似树的数据结构。每个叶子节点以数据块的哈希作为索引,而除了叶子节点以外的所有节点都以其子节点标签的加密哈希作为索引。从对等网络下载哈希树后,可以根据可信顶哈希值进行检查,验证数据是否完整,是否损坏。简单来说,Merkle树的作用就是生成一系列可以轻松验证交易信息完整性的数字。
图6块结构
5.如何使用密码学来保证交易数据的完整性和安全性?
记录交易信息的块在错综复杂的网络上自由传输。这时,我们的财富实际上是区块链中的一串二进制位符号。更不用说可能被黑客修改我们的交易信息,网络通道的噪音等传输方面也存在大量问题。在这个过程中,我们需要想办法保证块信息的完整性和安全性。这里我们使用密码学工具来解决这个问题。
我们需要了解的第一个密码学基础知识是哈希函数,哈希函数是一个数学函数,具有以下三个特征:1。它的输入可以是任意长度的字符串;2.产生固定长度的输出。在区块链技术中,输出长度是256位;3.计算难度不高,计算时间与输入长度成正比;
为什么哈希函数是安全的?攻击hash的过程很难,但是验证很简单。因为哈希函数是单向的,一个输入只对应一个输出,而输出并不能帮助找到输入值,所以你只能通过把一个数代入哈希函数来猜测。这就像做一道很难的数学计算题。解题的过程很漫长,但你只需要检查答案就能判断结果的对错。
在现实中,我们如何确保文档的有效性?我们会在文件上签上自己的名字,因为笔迹对每个人来说都是独一无二的,只有你才能签出自己的风格;或者我们可以盖个章,因为只有一个章,别人无法伪造,独一无二。同理,密码学中的数字签名技术解决了数字世界中的签名问题。该签名使用哈希函数和加密算法,具有安全、有效、易于验证的优点。
图7椭圆曲线数字签名算法
爱丽丝想给鲍勃发送一份重要文件。为了防止文档被修改,她决定在文档上附加一个数字签名供Bob验证。
步骤1,Alice计算文件内容的哈希值,一个唯一的文件只能计算一个唯一的哈希值(即签名);第二步,用私有密钥和公开加密算法将签名加密成一串已经失去原形的数字;步骤3,将加密的签名和记录组一起发送给Bob;步骤4,Bob收到信息后取出加密的签名,可以用公钥解密签名后的明文;第五步,Bob使用哈希函数计算传输文件的哈希值,然后与解密后的签名进行比较,验证文件是否被修改过。