【笔记草稿,很混乱】
1.区块链的发端与源起
1.1.1记账技术的更迭
单式记账:流水式记账
缺点:不方便统计支出。
例如,想知道在“饮食上”消费多少,需要一条条记录查找,再汇总。可以单独加一列“食品”解决问题,但是指出的种类太多,不切实际。
复式记账:凡事皆账户,钱从一个账户转移到另一个账户,有增必有减,且增减金额相等。
钱总是在账户之间跑来跑去。比如买巧克力就是有 30 元钱从超市卡跑到了食品,买香皂就是 5 元钱从现金跑到了生活用品。
优点:一笔交易可以涉及多个账户的变动,只要增加和减少的总额为零即可,可以解决合并支付的问题。
区块链技术也称为分布式记账技术。——新一代的记账技术
区块链系统可以被视为带密钥的分布式和自动式记账账本,其核心是系统中每个节点都有一份一模一样的账本,这些账本记录了系统所有发生的交易,并且能自动将新的交易数据添加到每个节点的账本中。
和复式记账方式相比,区块链账本是多点同时记账,依靠共识机制确认,单个节点难以篡改账本记录。
分布式记账优势:
(1)通过多方记账的方式,增强数据安全性,防止单点故障
(2)减少不同数据库之间的对账工作,提高效率和透明度
1.1.2密码学的发展
密码学最初是研究如何在敌方存在的情况下进行安全通信的一门科学。
目的是分析和构建协议,使得通信双方在按照协议进行通信的过程中,能够防止第三方窃取通信内容。
塞塔式密码(滚筒密码)
把长条纸螺旋形地斜绕在一个多棱棒上,将文字沿棒的水平方向从左到右书写,写一个字旋转一下,写完一行再另起一行从左到右写,直到写完。解下来后,纸条上的文字消息杂乱无章,这就是密文,但将它绕在另一个同等尺寸的棒子上后,就能看到原始的消息。
圆盘密码:(单表置换的原理)
一个装置,由两个同心的圆盘相叠组成,较小的盘子可在较大的盘子上转动。
一次性密码本加密技术:用一次就扔,随机,不可破。
“恩尼格玛”(Enigma ):过渡到了机械密码。
Enigma上一般装有至少3个转轮。当按动键盘上的单键时,最右边的转轮就会转动一次,每转动26次就会发生进位,带动下一个轮转动,这犹如钟表上的指针。每当转轮转动暂停下来,转轮的触头就会和下一个转轮的触点重新接触,构成通路,按动单键产生的电信号就会经过三个转轮。从最后一个转轮出来的电信号会经过反射板,反射板会对信号再次进行置换,接着反射回去,让其再次通过三个转轮,随后输出。
机械系统这样运行的原因是要产生不同的电流通路,字母的加密由机器自动完成。
由于其巨大的密钥空间(共有158962555217826360000种字母替换方式),所以你几乎不用担心它被穷举攻击攻破。
它的安全性仅仅依赖于巨大的密钥空间,它本质上只是一个较为复杂的替换密码,与凯撒密码等替换密码并没有本质上的差异。
数据加密标准(DES):对称密码
原理:先将明文分成64bit的分组,首先进行初始置换,然后在64bit主密钥产生的16个子密钥控制下进行16 轮乘积变换,再进行逆置换,得到64位已加密的密文。流程如下:
DES一共16轮,每一轮进行替换与变换,主要步骤:
(1)首先将64位明文块送入初始置换函数,对明文进行初始置换。
(2)初始置换产生转换块的两半,设为左明文(LPT)和右明文(RPT)。
(3)每个左明文与右明文经过16轮加密过程,各有各的密钥。
(4)最后,将左明文和右明文重新连接起来,对组成的块进行最终置换。
(5)这个过程的结果得到64位密文。
DES是个块加密法,按64位块长加密数据。
输入初始种子密钥为64bit,第8、16、24、32、40、48、56、64为奇偶校验位(保证密钥中不包含任何错误),实际的密钥长为56bit。
初始置换:
只发生一次,是在第一轮之前进行的,把明文块的进行移位。将64位二进制数按照初始置换表上的顺序重新排序组成一个新的二进制数字。
第一个格子中是58,意味着将64位二进制码中第58位的值,放到第 一个格子的位置中。
得到的64位置换文本块分成两半,各32位,称为左明文(LPT)、右明文(RPT)。
DES的每一轮包括如下图所示的所有步骤:
(Key)密钥交换:最初的64位密钥通过放弃每个第8位而得到的56位密钥。56位密钥分成两半,各为28位,循环左移(第1、2、9、16轮循环移动一位,其他的移动两位)。相应移位后,选择56位中的48位。
(这里提醒:密钥每次循环最后的结果都是要用的,而明文每次循环的结果只是下一次循环的输入。而且明文每一轮循环的用到的密文都不相同,对应着密文每一次循环输出的结果。)
扩展置换:扩展置换将左、右明文的32位扩展到48位。同时,也进行置换。
XOR 异或运算:将输入的两个二进制数字进行按位对比,若两数字相同则输出0,否则输出1;每一轮用到两次异或运算。
①将扩展置换后的48位结果与第i轮第密钥ki进行XOR(异或)操作。
②将P盒置换后的32位与左明文进行XOR(异或)操作。
S盒替换:48位输入块分成8个字块(各有6位),每个子块制定一个S盒(每个对应一张4行16列的表格)。S盒将6为输入变成4位输出。
每个s-box压缩的本质是什么?取原始数据的第一位和最后一位二进制数组成一个新的二进制数,并且将其转化为10进制数,这个数即为加密数所在的行数;中间四位二进制组成的十进制数,即为加密数所在的列数,根据行数和列数在压缩表中找到对应的压缩数,再把该压缩数转为二进制输出,完成了6位到4位的压缩。
P盒置换:按P表指定把一位换成另一位。
最终置换:经过很多轮之后,将 L16 与 R16 交换左右之后,再进行一个 逆初始置换
初始置换和终止置换的表排列是互逆的,也就是说对一个64位二进制数经过一次初始置换和终止置换,这个数就还原了。
5.DES解密
DES加密算法也适用于解密,各个表的值和操作及其顺序是经过精心选择的,使得这个算法可逆。加密与解密过程的唯一差别是密钥部分倒过来了。
为什么淘汰DES呢?
1、优点:简单,容易实现,运行效率高。
2、缺点:容易被暴力破解,密钥难管理,不好分配(密钥交换问题–如何安全的将密钥传输给解密方),无签名认证功能。
公钥密码学概念:
运行条件
1、用同一个算法进行加密和解密,而密钥有一对,其中一个用于加密,另一个用于解密
2、发送方和接收方各自拥有一对相互匹配的密钥中的一个
安全条件
1、两个密钥中的一个必须保密
2、如果不掌握其他信息,要想解密密文是不可能或者至少是计算上不可行的
3、知道所用算法、公钥以及密文不足以确定对应的私钥
运算速度慢,适合加密少量数据。如:用公钥密码加密传送分组密码的密钥
非对称的公钥加密技术RSA
对称加密的优势是:加密速度快。
对称加密的缺陷是:需提前共享密钥,容易造成密钥的泄露,或被第三方暴力破解。被他人盗取密钥,可以冒充发送密文或者对密文解密。
非对称:加、解密使用不同的密钥。
加密:公钥加密,私钥解密。任何公钥持有者都可以将想要发送给私钥持有者的信息进行加密后发送,而这个信息只有私钥持有者才能解密。
签名:私钥加密,公钥解密。所以任何持有公钥的人都能解密私钥加密过的密文,保证消息来源的准确性和不可否认性。证明这段密文一定是由私钥持有者发布的。
RSA算法是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名,只要使用足够长的密钥长度,经过RSA算法加密后的信息基本上被认为是无法被破解的。
对极大整数做因数分解的难度决定了RSA算法的可靠性。今天只有短的RSA钥匙才可能被强力方式解破。到目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。
思想:
比如A写下的是123 (需加密内容),计算出123 * 91 (B的公钥加密)等于11193,并把结果的末三位193(加密结果)告诉B ;
B把193再乘以11 (B的私钥)等于2123,末三位123(解密结果)就是A写下的数字。
因为91乘以11等于1001,而任何一个三位数乘以1001后,末三位显然都不变。
同理扩大定义域和值域:任意一个数乘以400000001后,末8位都不变,而400000001 = 19801 * 20201。
RSA算法使用的是指数和取模运算,本质上就是上面这套思想。
RSA公钥私钥的产生和加解密:
1、随意选择两个大的质数 p和 q,p≠q,N=pq
2、根据欧拉函数 φ(n)是小于或等于n的正整数中与n互质的数的数目。
求得 r = φ(N) = φ(p)φ(q) = (p-1)(q-1)
3、选择一个小于r并与r互质的整数e,求得e关于r的模反元素d,ed ≡ 1(mod r) ;
4、销毁p和q,此时 (N , e)是公钥,(N, d)为私钥;
5、加密:c ≡ n^e (mod N),即(c^-1 * n^e)%N = 1
6、解密:n ≡ c^d (mod N),即(n^-1 * c^d)%N = 1
密码朋克(cypherpunk)
20 世纪 90 年代发展出“密码朋克”(“Cypherpunk’”)的概念。
密码朋克从狭义上来说就是一套加密的电子邮件系统。
密码朋克们预见性地意识到,随着网速的提升,全球将会逐步进入网络时代。然而,对不精通网络技术的普通人来说,进入网络时代也将导致他们遭遇隐私泄漏以及其并发的风险。 这些朋克们经过思考,认为必须利用密码学技术来保证个人在网络上的匿名。通过掌握强加密技术并提供给普通网络用户的方式,建立网络匿名交易系统。
1980年,拜占庭将军问题:(描述分布式系统一致性问题)
派出10支军队去包围敌人。敌人能抵御5支军队的同时袭击。这10支军队在分开的包围状态下同时攻击。除非有至少6支军队(一半以上)同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵骑马相互通信来协商进攻意向及进攻时间。在这种状态下,怎么保证有多于6支军队在同一时间一起发起进攻,从而赢取战斗?
拜占庭将军问题中并不考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问题。Lamport已经证明了在消息可能丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。
问题:
①因为时间差异,多个将军发出不同提议,难以实现一个提议收到半数以上的同意。
②有叛徒发送前后不一致的进攻提议,被称为“拜占庭错误”。
解决办法:
中本聪在比特币中创造性的引入了“工作量证明(POW : Proof of Work)”。
通过工作量证明就增加了发送信息的成本,降低节点发送消息速率,保证在一个时间只有一个节点(或很少)在进行广播,同时在广播时会附上自己的签名。
以上就是比特币网络中是单个区块(账本)达成共识的方法(取得一致性)。
我们稍微把将军问题改一下:假设攻下一个城堡需要多次的进攻,每次进攻的提议必须基于之前最多次数的胜利进攻下提出的(只有这样敌方已有损失最大,我方进攻胜利的可能性就更大),这样约定之后,将军A在收到进攻提议时,就会检查一下这个提议是不是基于最多的胜利提出的,如果是的,将军A就会把这次提议记下来。
这就是比特币网络最长链选择。
拜占庭将军问题(Byzantine Generals Problem),把军中各地军队彼此取得共识、决定是否出兵的过程,延伸至运算领域,设法建立具容错性的分散式系统,即使部分节点失效仍可确保系统正常运行,可让多个基于零信任基础的节点达成共识,并确保资讯传递的一致性,而2008年出现的比特币区块链便解决了此问题。
盲签名技术(基于RSA算法):签名者对发送者的消息进行签名,却不能知道签名者消息的具体内容。
电子现金像真实现金一样,用户不希望别人知道自己购买过什么样的商品。为了保护用户购买商品、服务时的隐私,接收方不应获得支付方的任何身份信息。
盲签名可以实现银行向合法用户发放有效的电子现金,使用户可以使用有效的电子现金进行交易,银行本身也无法通过电子现金追踪到该电子现金是属于哪个用户的。
一个盲签名方案一般包括四个过程:
系统初始化:产生盲签名方案中的所有系统参数;
密钥对生成:产生用户的私钥和公钥;
签名:用户利用签名算法对消息签名,签名过程可以公开也可以不公开,但一定包含仅签名者才拥有的私钥:
盲化:用户将盲化因子注入待签名的消息
盲签名:签名者对盲化过的消息进行签名
去盲:用户从盲化签名(对盲化过的消息)去除盲化因子,获得去盲后的签名(待签名消息)
验证:验证者利用公开的系统参数、验证方法和签名者的公钥对给定消息的签名进行验证。
盲签是一种特殊类型的数字签名。一般数字签名中,签名者知道所签署的消息内容。而在盲签中,签名者是他人(接收者)发来的信息进行签名,接收者首先对原始信息进行盲化,然后发送给签名者;签名者对盲化后的信息进行签名;接收者可以对这个签名后的数据去盲化,最终得到签名者关于原始信息的正确签名。
1985年,椭圆曲线算法ECC??
RSA的解决分解整数问题需要亚指数时间复杂度的算法,而目前已知计算椭圆曲线离散对数问题(ECDLP)的最好方法都需要全指数时间复杂度。这意味着在椭圆曲线系统中我们只需要使用相对于RSA 短得多的密钥就可以达到与其相同的安全强度。
Ecash(电子现金)
电子现金(Ecash)是一种以电子形式存在的现金货币,又称为数字现金。它把现金数值转换成为一系列的加密序列数,通过这些序列数来表示现实中各种金额的币值。
优点:
①匿名性。除了商家以外,没有人知道客户的身份或交易细节。如果客户使用了一个很复杂的假名系统,甚至连商家也不知道客户的身份。
②不可跟踪性。电子现金是以打包和加密的方法为基础。除了双方的个人记录之外,没有任何关于交易已经发生的记录。
③节省交易费用和传输费用。电子现金是利用已有的Internet和用户的计算机,所以消耗比较小,尤其是小额交易更加合算。而普通银行为了流通货币,就需要许多分支机构。通常,现金的传输费用比较高。
④持有风险小。安全和防伪造。电子现金由于采用安全的加密技术,不容易被复制和篡改。
问题:
①税收和洗钱。跨国交易,如何税收?因不可跟踪性,很可能被不法分子用以逃税。
②外汇汇率的不稳定性。电子现金也是总货币供应量的一个组成部分,可以随时兑换成普通现金,电子现金也有外汇兑换问题,其涉及的外汇兑换也要有汇率,这就需要在Internet上设立一个外汇交易市场。
③货币供应的干扰。因为电子现金可以随时与普通货币兑换,故电子现金量的变化也会影响真实世界的货币供应量。
⑤恶意破坏与盗用。电子现金存储在计算机里,其最大的特点之一就是易复制。
⑥成本、安全与风险。电子现金对于硬件和软件的技术要求都较高,需要一个庞大的中心数据库,用来记录使用过的电子现金序列号,以解决其发行、管理。消费者硬盘一旦损坏,电子现金丢失,钱就无法恢复,电子伪钞一旦获得成功,那么,发行人及其一些客户所要付出的代价则可能是毁灭性的。
电子现金支付特点如下:
1)商家和银行之间应该有协议和授权关系。
2)电子现金对软件具有依赖性。客户、商家和电子现金的发行银行都需要电子现金软件。
3)用于小额交易。
4)身份验证是由电子现金本身完成的。电子现金的发行银行在发放电子现金时使用电子签名;商家在每次交易中,将电子现金传送给银行,由银行验证电子现金的有效性(伪造或使用过等)。
5)电子现金的发行者负责用户和商家之间实际资金的转移。
6)电子现金具有普通现金特点,可以存、取、转让,一样会丢失。
发表论文《如何为电子文件添加时间戳》
时间戳服务器与权威的国家授时中心对接,通过与数字签名的有效结合,可为互联网活动任何电子文件或网上交易所产生的电子数据提供保密性、完整性、防抵赖等功能,通过数字签名保证内容和签发人的不可抵赖性,通过时间戳提供准确的、权威的、不可篡改的时间证明和内容完整性证明。时间戳已成为网络数据安全不可或缺的一部分。
时间戳在比特币网络里被用来标记比特币每个区块的诞生时间。
时间戳是指从格林威治时间(北京时间1970年01月01日08时0分0秒)起至现在的总秒数。
时间戳不能改动,这就使得文件被篡改的可能性为零。
这些数据通常以一致的格式呈现,以便于比较两种不同的记录和跟踪一段时间的进展情况。
通过哈希算法对区块中的交易信息进行加密,生成一个哈希值;
发出时间戳请求,时间戳服务器从项目区块中提取哈希值;
时间戳服务器对提取到的哈希值和时间记录进行签名,生成时间戳;
生成的时间戳数据和交易信息绑定之后再返回系统,加入到区块中。
“优良保密协议”PGP,Pretty Good Privacy
PGP-Pretty Good Privacy,是一个基于RSA公钥和对称加密相结合的邮件加密软件。
PGP是个混合加密算法,它由一个对称加密算法(IDEA)、一个非对称加密算法(RSA)、与单向散列算法(MD5)以及一个随机数产生器(从用户击键频率产生伪随机数序列的种子)组成的。
它提供数据加密和数字签名两种服务,采用RSA公钥证书进行身份认证,使用IDEA(128位密钥)进行数据加密,使用MD5进行数据完整性验证。
特点:高度结合RSA和传统对称加密算法;在数字签名和密钥管理方面有独特的设计,用于数字签名的邮件散列算法;源码开源。
PGP的密钥管理:???
密钥生成:用户输入口令,使用MD5算法生成口令摘录,作为IDEA的密钥加密隐蔽密钥的秘密信息,并把加密结果放在隐蔽密钥报文中。
密钥使用:用户输入口令,重新生成IDEA密钥,解出秘密信息,得到具体的隐蔽密钥。
PGP通过对密钥签名来表示该密钥的担保;
PGP使用了秘密密钥环(私钥环)和公钥环的数据结构。
秘密密钥环(私钥环)——用于存储自己的密钥对;
公钥环——用于存储该用户所知道的其他用户公开密钥。
给每个公钥都指定一个唯一的标识符,称为密钥ID。密钥ID与每个公钥相关联,并由公钥的最低64比特组成。发送方用接收方的哪个公钥就将这个公钥的ID发给接收方。
PGP使用了4种类型的密钥:
PGP加解密的步骤:
1、发送方(加密过程):公钥K1使用RSA算法加密会话密钥K,会话密钥K使用IDEA算法加密信息;
①生成消息并为该消息生成一个随机数作为会话密钥(K);
②用公钥K1 加密 会话密钥(K);
③压缩消息;
④用会话密钥(K)加密消息;
⑤将加密的会话密钥、经过压缩和加密的消息结合,转换为文本数据-报文数据。
公钥K1(RSA)→ 会话密钥K(IDEA)→ 信息
2、接收方(解密过程):口令 → 密钥K2 → 私钥K3 → 密钥K → 信息
①输入解密的口令;
②求口令的散列值,生成用于解密私钥的密钥K2;
③将钥匙串中经过加密的私钥进行解密,得到接收者的私钥K3;
这里钥匙串是接收者自己的密钥环
④将报文数据(文本数据)转换成二进制数据;
⑤将二进制数据分解成两部分:加密的会话密钥、经过压缩和加密的消息;
⑥接收者的私钥解密会话密钥K;
⑦对经过压缩和加密的消息用会话密钥进行解密;
⑧对经过压缩的的消息进行解压,得到原始消息。
PGP在多处需要使用口令,它主要起保护私钥的作用。由于私钥太长且无规律,难以记忆。PGP把它用口令加密后存入密钥环,这样用户可以用易记的口令间接使用私钥。
PGP主要在以下3处需要用户输入:
需要解开收到的加密信息时,需要输入口令,取出私钥解密信息;
当用户需要为文件或信息进行传统加密时,输入口令,取出私钥加密;
对磁盘上的文件进行传统加密时,需要输入口令。
PGP实际上用来加密的是传统加密算法IDEA,IDEA加解密的速度比RSA快很多。
PGP随机生成一个密钥,用IDEA算法对明文加密,然后用RSA算法对密钥加密。
收件人同样是用RSA解出随机密钥,再用IDEA解出原文。
这样的链式加密既有RSA算法的保密性和认证性,又保持了IDEA算法速度快的优势。
这里回顾一下DES,RSA算法:
(美国数据加密标准)DES算法为对称密码体制。明文按64位进行分组, 密钥长64位,事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。
RSA加密算法是最常用的非对称加密算法,
RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名。
RSA的安全基于大数分解的难度。其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题)。
1997年,哈希现金HashCash算法
哈希现金是一种工作量证明机制,用于抵抗邮件的拒绝服务攻击及垃圾邮件网关滥用。
HashCash的主要思路是,通过要求在邮件发送之前,必须进行计算。
譬如每发送一封邮件,计算机需要花费几秒钟来得到一个满足条件的散列值。
发送方准备标题头并附加上初始化为随机数的计数器值(counter)。**然后它计算头的160位SHA-1哈希值。如果散列的前20位(即5个最高有效十六进制数字)都是零,那么这是可接受的标题头。**如果不是,则发送方递增计数器并再次尝试散列。
普通用户不会因生成Hashcash字符串所需的处理时间而感到明显的问题。但是,垃圾邮件发送者因为发送大量垃圾邮件,会大大减慢速度。
戴伟的B-money、尼克·萨博的比特金(Bit-Gold)这些比特币的先行者,都是在哈希现金的框架下进行挖矿的。
接收者的操作:
①检查前20位,不全为0,则散列无效。
②检查标题中的日期,不在当前日期的两天内,则无效。(两天的窗口可以补偿不同系统之间的时钟偏差和网络路由时间。)
③检查哈希字符串的电子邮件地址是否与收件人注册的任何有效电子邮件地址匹配,或者与收件人订阅的任何邮件列表匹配。如果未找到匹配项,则哈希字符串无效。
④收件人的计算机将哈希字符串插入数据库。如果字符串已经在数据库中(表示发送方正在尝试重新使用哈希字符串),则该字符串无效。
1998年,比特金BitGold
Bit Gold 是独立密码学货币的第一个模型,它包含了工作量证明机制,让参与者能够(用成本的方式)证明自己创造出来、纯粹用作数字形式的货币的东西,是有价值的。而且,它也需要工作量证明来形成一种分布式的时间戳,并使用节点网络来维护一套账户和 Bit Gold 余额的账本;两者的结合形成了一套产权系统 ,让用户能持有、跟踪和转移他们的货币。
Bit Gold的弱点:如果没有一个负责管理的第三方,Bit Gold market就非常难实现;另外,点对点网络无法应对 33%的串谋攻击。
1998年,加密货币系统B-money
B-money 的设计目标是一个匿名,分布式电子现金系统。
这一方案不仅有密码学货币,还加入了一些基本形式的智能合约。
B-Money (相对BitGold)加入了托管代理人,让网络参与者想缔结智能合约的时候,交易能得到保障。
缺点:缺乏方案不同部分的实现细节;维护分布式账本的节点网络无法容忍超过 33% 的拜占庭错误。
2004年,RPOW可重用的工作量证明机制
参与者各自创建工作量证明(同Bit Gold),但他们会通过一个消息系统来直接向另一个用户转移这些证明,而不会使用一个点对点的节点网络来维护一个账本。
其核心是一个验证服务器,因为参与者会向其他人转移 PROW,新的交易就需要新的工作量证明,而中心服务器只需要验证这些证明是真实的。
但它的弱点就在那个中心化的验证服务器上,即使可以用一组相互独立的验证器来管理,仍然有中心化的风险,因为用户必须信任这些验证器。
划时代的比特币:
2009年,比特币出世,中本聪引入了一个充满智慧的创新,使之成为了革命性的技术。
在中本聪共识中,点对点网络中的所有节点都将新的事务(transaction)转发给所有其他节点;然后,所有节点都以这些事务,加上前一个区块的信息以及一个时间戳,作为下一个工作量证明的谜题;谜题的解有最低的难度门槛;任何一个节点只要找到了符合这个门槛的结果,他就把结果广播给所有其他节点;节点收到工作量证明之后,基于系统的算法和他们已经掌握的工作量证明链条,各自验证所收到的工作量证明的有效性;通过验证之后,所有的节点就为那个最先解决难题的家伙的账户增加余额;增加的数额,也是根据比特币的货币政策预先约定好的。
工作量也是解决上述点对点网络 33% 拜占庭难题的关键。比特币算法要求的最低难度门槛,暗示着所有节点必须(平均)花费 10 分钟来解决一个难题,当某个节点发现并发出结果之时,由它所花费的时间(长于或短于 10 分钟),就向网络中的其他人保证了所有其他参与者也都在共同解决这个难题 。(如果某些人不再参与解决这条链的难题,而去解决另一条链的难题,那这条链的难题就没法在 10 分钟内解决了。工作量证明就是认同的证明。)
中本聪共识的提升是,它将共识的安全性门槛从 33% 提高到了50%。
比特币:
2008年11月1日,中本聪发表了《比特币:一种点对点的电子现金系统》,阐述了一个以点对点网络、分布式记账、工作量证明(PoW)共识机制、加密技术等为基础构建的电子现金支付系统。
2009年1月3日,中本聪通过运行这个版本产生了比特币的第一个区块(创世区块)。
比特币系统的发明是为了解决传统的银行转账过程中碰到的一些问题:
账户和账户之间的转账交易成本高昂;
存在利用信用卡撤销交易进行欺诈的行为;
银行系统为了处理可能发生的纠纷会过度索取交易双方的个人隐私信息等。
区块链:
区块链技术本质上是一个分布式共享交易账本,由区块链网络中的所有节点在共识协议约束下共同维护。
区块链系统可以被视为带密钥的分布式和自动式记账账本,其核心是系统中每个节点都有一份一模一样的账本,这些账本记录了系统所有发生的交易,并且能自动将新的交易数据添加到每个节点的账本中。
分布式记账优势:
(1)通过多方记账的方式,增强数据安全性,防止单点故障(篡改)
(2)减少不同数据库之间的对账工作,提高效率和透明度
区块链的技术特点:
①公开透明:所有区块包含的交易信息都是公开、透明的。
②难以篡改:每个区块通过父区块哈希值“链接”起来,某个数据被篡改,哈希值会变化,导致前一个区块的哈希值与该区块的哈希指针不匹配。
③可以追溯:源于链式结构的特殊性。
④集体维护:每一个区块链都会有一套“共识机制”,使众多互不相识的节点达成一致。
⑤去中介化/弱中介化:系统中每个全节点既是服务器也是客户端,在系统中的权利和义务都是对等的。任意一个节点宕机或者失效都不会影响整个系统的运作。
区块链浏览器是一种区块链搜索工具。区块链浏览器的运营方本身已经下载好了完整的账本数据。用户在区块链浏览器中输入相关字段,可以查到区块或交易的详细信息。典型的区块链公链系统,比如比特币和以太坊等都有许多区块链浏览器,这些浏览器通常是由开源软件团队自发开发的。
分布式系统的概念
分布式系统是由若干独立的计算机节点组成的系统,通过网络进行连接并在一定范围内有效共享资源,节点之间通过传递消息进行协调工作,共同完成系统内的工作任务。独立机器的故障不会影响整个系统的正常运行。
分布式系统的特征(优点)
①分布性:分布式系统内计算机节点可以分布在不同的位置。
分布式系统的低延迟是通过在不同的物理位置部署不同的机器,通过就近获取的原则降低访问的延迟时间。
②可扩展性:分布式系统内节点数量可以动态増减,服务器也可以动态部署。
分布式系统最大的好处就是能够横向扩展。
横向扩展是指通过增加更多的机器来提升整个系统的性能,而不是靠升级单台计算机的硬件。
横向扩展没有上限,理论上可达到无限大的工作负载支持。
③对等性:组成分布式系统的所有计算机节点都是对等的;当某一个节点上存储的数据丢失时,可以从副本上读取该数据。使得系统容错性好。
④并发性:分布式系统中的多个计算机节点通过网络进行连接并在一定范围内有效共享资源,某一时刻这些计算机节点可能会并发地操作一些共享的资源。
缺点:
1. 在分布式系统中很难提供足够的安全,因为节点以及连接都需要安全。
2. 一些消息和数据在从一个节点转移到另一个节点时,可能会在网络中丢失。
3. 与单用户系统相比,连接到分布式系统的数据库是相当复杂和难以处理的。
4. 如果分布式系统的所有节点都试图同时发送数据,网络中可能会出现过载现象。
FLP和CAP定理
FLP原理:
在异步通信场景,不存在可以实现分布式系统的一致性的算法。
在实际异步通信的分布式系统环境下,可能存在通信故障、延迟或者节点本身出现失效的情况,异步系统无法确保在有限时间内完成一致性。
CAP原理:
CAP 原理定义了分布式计算系统的三大特性:
(1)一致性(Consistency):共享数据副本之间呈现出统一且实时的数据内容;
(2) 可用性(Availability):所有的数据操作总会在一定时间内得到响应;
(3)分区容错性(Partition):通常由于网络间连接中断而导致网络中的节点相互隔离无法访问时,被隔离的节点仍可正常运行。
CAP原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
分区容忍是一个给定的条件,如果没有这一点,就不可能做到一致性和可用性。
实践表明大多数应用程序更看重可用性。主要原因是在不得不同步机器里实现强于一致性是时,网络延迟会成为一个问题。
区块链的分类
公有链
公有链对所有人开放,任何人都可以自由访问公有链的数据,参与公有链的共识,并在公有链上创建应用。
公有链的应用非常广泛,例如资产证券化、数字资产的跨链流通等等,现在市场上的主流区块链项目比特币、以太坊、EOS等都是公有链项目。
优点:
1)所有交易数据公开、透明。
2)无法篡改。公有链是高度去中心化的分布式账本,篡改交易数据几乎不可能实现,除非篡改者控制了全网51%的算力。
缺点:
1)低吞吐量(TPS)。比特币每秒只能处理约7笔交易,高峰期能处理的交易笔数就更低了。
2)交易速度缓慢。低吞吐量的必然带来缓慢的交易速度。比特币网络极度拥堵,有时一笔交易需要几天才能处理完毕,还需要缴纳几百块转账费。
公有链是真正意义上的完全去中心化的区块链,它通过密码学保证交易不可篡改,同时也利用密码学验证以及经济上的激励,在互为陌生的网络环境中建立共识,从而形成去中心化的信用机制。
比特币就是公有链的典型:
比特币的节点遍布于世界各地,所有人共同参与记账、维护区块链上的所有交易数据。比特币能够稳定运行,是依赖工作量证明(PoW),其中Token(代币)能够激励所有参与节点“愿意主动合作”,共同维护链上数据的安全性。因此,公有链的运行离不开代币。
公有链由于其具有!!不可篡改的特性,在某些场景的应用时,会出现一些问题,比如人为失误后造成了不良影响却不可挽回。
私有链
私有链是指其写入权限由某个组织和机构控制的区块链,参与节点的资格会被严格限制,这些软件被中心化机构控制。私有链是由该企业、组织或个人进行管理的区块链。
与联盟链不同的是,私有链节点均属于同一企业或组织,节点之间信任程度更高,并且私有链共识范围更加狭窄,甚至可以仅由单高性能节点进行记账。
优点:
1、交易效率高
其速度可超过任何其他的区块链,甚至接近了常规数据库(非区块链数据库)。因为即使是少量的节点,其也具有高信任度,所以交易的进程不需要每一个节点都来验证。
2、保障隐私
3、成本低
私有链上完成的交易通常十分廉价或免费。这是因为私有链上的交易速度十分之快,各个节点间不需要完全的协议,以至于它们不会为任意一个交易而工作,如此一来大大降低了交易成本。
4、保护目前产品不被破坏
私有链可以保护机构目前的产品不被破坏,正是这一点使得银行等金融机构能在目前的环境中欣然接受私有链,银行和政府在看管他们的产品上拥有既得利益。
而公有链的直接应用是保护像比特币这样新型的非国家性质的货币,对核心利润流或组织构成了破坏性的威胁,这些实体机构应该会不惜一切代价去避免损害。?????
5、部分去中心化
私有链是机构或者组织为各种应用开发分布式分类账和其他区块链启发的软件,这些软件被中心化机构控制,所以不具有区块链完全去中心化的属性。
相比中心化数据库,私有链能够防止机构内单节点故意隐瞒或篡改数据。即使发生错误,也能够很快就发现来源,因此许多大型金融企业更倾向于使用私有链技术。
私有链可以在不颠覆传统金融模式的前提下,日积月累的来改善存在于传统金融模式里的一些诟病,例如金融机构的工作效率问题、金融敲诈问题等。而公有链是通过软件来颠覆传统金融模式大部分功能的一种方法,这与私有链形成鲜明对比。
联盟链
联盟链是指有若干个组织或者机构共同参与管理的区块链,每个机构都运行着一个或多个节点,其中的数据只允许系统内不同的机构进行读写和发送交易,并且共同来记录交易数据。
特点:
1.交易速度非常快
联盟链本质上还是私有链,由于其节点不多,就算少量的节点也都具有很高的信任度,并不需要每个节点来验证一个交易,达成共识容易,交易速度自然也就快很多。
2.部分去中心化
与公有链不一样,联盟链在某种程度上只属于联盟内部的成员所有,且很容易达成共识,因为毕竟联盟链的节点数是非常有限的,所以只是部分去中心化。
3.可控性较强
联盟链,只要所有机构中的大部分达成共识,即可将区块数据进行更改;
4.数据不会默认公开
5、交易成本很低
与私有链一样,可以进行完全免费或者至少说是非常廉价的交易。如果一个实体机构控制和处理所有的交易,就省掉了区块链网络中常见的“矿工费”,这就不需要花费额外的费用。
Token:????
它在区块链中代表的是一种权益证明。token本质上代表任何权益都可以自由流通的一个经济系统。token能让大家把各种权益证明,比如门票、积分、合同、证书、点卡、资质、房产等等全部拿出来数字化、通证化(tokenization),放到区块链上流转,放到市场上交易,让市场发掘其价格,同时在现实经济生活中可以消费、可以验证。
区块链中的token有三个要素:
一是数字权益证明,通证必须是以数字形式存在的权益凭证,代表一种权利、一种固有和内在的价值。
二是加密,通证的真实性、防篡改性、保护隐私等能力由密码学予以保障。
三是能够在一个网络中流动,从而随时随地可以验证。