2017-2018-2 《密码与安全新技术》第二周作业
课程:《密码与安全新技术》
班级:2017级92班
学号:20179225
上课教师:谢四江
上课日期:2018年3月15日
必修/选修: 必修
主要内容:
本节课主要从三个方面讲述:
1 区块链
+ 比特币的背景
+ 区块链与比特币的关系
+ 比特币特点
+ 存在的问题:政策、安全、价格、山寨币等
+ 交易过程
2 区块链技术
+ 点对点对等网络
+ 共识机制
+ 数据可验证
+ 奖励合作制度设计
3 区块链的发展与未来
+ 区块链技术发展的三个阶段:货币、合约、治理
区块链
区块链定义
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。
区块链是比特币的底层技术,像一个数据库账本,记载所有的交易记录。这项技术也因其安全、便捷的特性逐渐得到了银行与金融业的关注。
**从区块链的本质理解**
区块链的本质是一个特殊的分布式数据库。首先区块链的主要作用是存储信息,任何信息都可以写入,从里面读取;其次 任何人都可以架设服务器,加入区块链网络,成为一个节点,在区块链中每个节点都是平等的,没有中心节点,都保存整个数据库
**最大特点**
无中心:没有管理员。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止出现居于中心地位的管理当局。
去信任
那什么是区块呢?区块的组成是什么?
区块就是创建一个块,而这个区块里包括两部分:
1 区块头(摘要:当前区块的主要特征值)
2 区块体(数据)
具体结构如下:
type Block struct {
Timestamp int64
Data []byte
PrevBlockHash []byte
Hash []byte
}
- Timestamp 当前时间戳,也就是区块创建的时间
- PrevBlockHash 前一个块的哈希,即父哈希
- Hash 当前块的哈希
- Data 区块存储的实际有效信息,也就是交易
区块为什么可以防止篡改
区块与Hash是一一对应的,每个区块的哈希都是根据区块头进行计算的。把区块头的各项特征值,按照顺序连接在一起,组成一个很长的字符串,再对这个字符串计算哈希。
而区块头包括当前区块体的Hash以及上一个区块的Hash,也就是说无论是此区块体发生改变还是上一个区块发生改变都会引起Hash值的变化。若想更改则必须对前面的每个区块进行修改,而计算Hash值是很耗费时间的,除非有人掌握了全网51%以上的计算能力。
正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变
注:"哈希"就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的 哈希长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的哈希一定是不同的。
区块链分类
区块链目前分为三类,其中混合区块链和私有区块链可以认为是广义的私链:
公有区块链((PublicBlockChains))是指:世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。公有区块链是最早的区块链,也是目前应用最广泛的区块链,各大bitcoins系列的虚拟数字货币均基于公有区块链,世界上有且仅有一条该币种对应的区块链。
行业区块链((ConsortiumBlockChains)):由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定(预选节点参与共识过程),其他接入节点可以参与交易,但不过问记账过程(本质上还是托管记账,只是变成分布式记账,预选节点的多少,如何决定每个块的记账者成为该区块链的主要风险点),其他任何人可以通过该区块链开放的API进行限定查询。
私有区块链((privateBlockChains)):仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。目前(Dec2015)保守的巨头(传统金融)都是想实验尝试私有区块链,而公链的应用例如bitcoin已经工业化,私链的应用产品还在摸索当中。
ICO众筹
ICO是Initial Coin Offering的简称。ICO是国际上数字货币/区块链社区的产物。指金融创起允许潜在用户,非传统的投资资本家购入小额股份。
ICO众筹与比特币的关系
可查的首个ICO来自于Mastercoin项目(现已更名为Omni),其在13年7月时在Bitcointalk(最大的比特币和数字货币社区论坛)上宣布通过比特币进行ICO众筹,并生成对应的Mastercoin代币并分发给到众筹参与者。本质上来说这次ICO是一种以物换物的行为,即参与者用比特币换得Mastercoin项目里的代币。一开始ICO只是数字货币爱好者的一种社区行为,随着数字货币以及区块链的不断发展开始被越来越多人接受并参与。绝大部分ICO都是通过比特币或其他数字货币进行的。
链接:https://www.zhihu.com/question/48695395/answer/112186624
来源:知乎
比特币
区块链为比特币而生,但比特币仅仅是区块链众多应用中的其中一个。比特币是数字货币,比特币本质就是一个基于互联网的去中心化账本,而区块链就是这个账本的名字。这里我们可以做一个形象的类比,假如区块链是一个实物账本,一个区块就相当于账本中的一页,区块中承载的信息,就是这一页上记载的交易内容。
比特币的作用
比特币可以用来兑现,可兑换成大多数国家的货币。使用者可以用比特币购买一些虚拟物品,比如网络游戏当中的衣服、帽子、装备等,只要有人接受,也可以使用比特币购买现实生活当中的物品。向地球另一端转账比特币,无任何限制,低成本,可用于跨境交易、支付、汇款等领域。
比特币生产原理
比特币的本质其实就是一堆复杂算法所生成的特解。特解是指方程组所能得到无限个(其实比特币是有限个)解中的一组。而每一个特解都能解开方程并且是唯一的。打个比方,比特币就是人民币的序列号,如果知道了某张钞票上的序列号,就拥有了这张钞票。而挖矿的过程就是通过庞大的计算量不断的去寻求这个方程组的特解,这个方程组被设计成了只有 2100 万个特解,所以比特币的上限就是 2100 万。
要挖掘比特币,可以在电脑上安装比特币客户端,用自己的电脑生产比特币,当一个“矿工”。完成比特币客户端安装后,可以直接获得一个比特币地址,交易的时候,只需要自己把地址贴给别人,就能通过同样的客户端进行付款。在安装好比特币客户端后,它将会分配一个私有密钥和一个公开密钥。需要备份包含私有密钥的钱包数据,才能保证财产不丢失
http://cj.sina.com.cn/article/detail/2768311855/374876?column=china&ch=9
比特币的挖矿
由于必须保证节点之间的同步,所以新区块的添加速度不能太快。试想一下,你刚刚同步了一个区块,准备基于它生成下一个区块,但这时别的节点又有新区块生成,你不得不放弃做了一半的计算,再次去同步。因为每个区块的后面,只能跟着一个区块,你永远只能在最新区块的后面,生成下一个区块。所以,你别无选择,一听到信号,就必须立刻同步。
所以,区块链的发明者中本聪(这是假名,真实身份至今未知)故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全网才能生成一个新区块,一小时也就六个。
这种产出速度不是通过命令达成的,而是故意设置了海量的计算。也就是说,只有通过极其大量的计算,才能得到当前区块的有效哈希,从而把新区块添加到区块链。由于计算量太大,所以快不起来。
这个过程就叫做采矿(mining),因为计算有效哈希的难度,好比在全世界的沙子里面,找到一粒符合条件的沙子。计算哈希的机器就叫做矿机,操作矿机的人就叫做矿工。
只有满足条件的哈希才会被区块链接受。这个条件特别苛刻,使得绝大部分哈希都不满足要求,必须重算。哈希的有效性跟目标值密切相关,只有小于目标值的哈希才是有效的,否则哈希无效,必须重算。由于目标值非常小,哈希小于该值的机会极其渺茫,可能计算10亿次。当前区块的哈希由区块头唯一决定。如果要对同一个区块反复计算哈希,就意味着,区块头必须不停地变化,否则不可能算出不一样的哈希。区块头里面所有的特征值都是固定的,为了让区块头产生变化,中本聪故意增加了一个随机项,叫做 Nonce。
区块链的分支
如果两个人同时向区块链写入数据,也就是说,同时有两个区块加入,因为它们都连着前一个区块,就形成了分叉。规则是,新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为"六次确认")。按照10分钟一个区块计算,一小时就可以确认。由于新区块的生成速度由计算能力决定,所以这条规则就是说,拥有大多数计算能力的那条分支,就是正宗的区块链。
http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html
区块链技术
点对点对等网络
对等式网络(peer-to-peer, 简称P2P),又称点对点技术,是无中心服务器、依靠用户群(peers)交换信息的互联网体系,它的作用在于,减低以往网路传输中的节点,以降低资料遗失的风险。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。
P2P节点能遍布整个互联网,也给包括开发者在内的任何人、组织、或政府带来监控难题。P2P在网络隐私要求高和文件共享领域中,得到了广泛的应用。
共识机制
1.pow( Proof of Work)工作量证明
一句话介绍:干的越多,收的越多。
优点:
1)算法简单,容易实现;
2)节点间无需交换额外的信息即可达成共识;
3)破坏系统需要投入极大的成本;
缺点:
1)浪费能源;
2)区块的确认时间难以缩短;
3)新的区块链必须找到一种不同的散列算法,否则就会面临比特币的算力攻击;
4)容易产生分叉,需要等待多个确认;
5)永远没有最终性,需要检查点机制来弥补最终性;
链接:https://www.jianshu.com/p/aafb53ca3318
2.POS (Proof of Stake)权益证明
一句话介绍:持有越多,获得越多。
优点:在一定程度上缩短了共识达成的时间;不再需要大量消耗能源挖矿。
缺点:还是需要挖矿,本质上没有解决商业应用的痛点;所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响。例如,以太坊的DAO攻击事件造成以太坊硬分叉,而ETC由此事件出现,事实上证明了此次硬分叉的失败。
3.BFT (Byzantine Fault Tolerance)拜占庭容错
介绍:在保证活性和安全性(liveness & safety)的前提下提供了(n-1)/3的容错性。
拜占庭是当时古代攻打如何统一行动问题,思考这与区块链的共识机制有什么联系?
首先先看拜占庭的原理:
曾经有科学家做过一个最小化的沙盘推演,说只要叛徒的数量大于等于三分之一,拜占庭问题就不可解。我们假设拜占庭一共就三个将军ABC:
1 如果发出信息的A是叛徒,那不用说,另外接到信息的两个将军,直接就废了。
2 如果A发出信息,另外两个人有一个是叛徒,这个叛徒就可以告诉另外一个人,A是叛徒,别听他的。另外一个人也很有可能废了,至少迷茫了。
所以,三个人中,只要有一个是叛徒,就会导致三分之二以上的问题,这场仗必输!
那为什么比特币会存在51%算力攻击的风险呢?为什么我们只要51%就能保障系统正常?
利用非对称加密技术:这个技术会给所有的将军分配一对公钥和私钥,公钥是公开给所有友军情报机构的,所有人都可以通过这个公钥确认信到底是谁发来的,而私钥只有自己知道,这两个钥匙的具体值肯定是不一样的,这就是算法难度所在了:两个配对的、不同的密钥,然后混合任何加密内容,经过同一段公共加密算法,最终出来的结果又要一样,而且绝对不能发生第三种情况发生。
通过非对称加密技术,我们又完美解决了两个问题:
1. 因为每个人都是自己的密钥,进一步加强了安全性。
2. 自己的密钥是公钥和私钥配对的,这样你发送了那些信息,转发了那些信息,在加密和解密的过程中,天然就会被记录。
数据可验证
区块链的特点是各个节点独立验证的,每个节点就会根据自己的本地数据验证新数据的合法性。如果一个节点执意要在本地的记录里面写入非法数据,其它节点虽然没办法阻止,但是这个节点的数据就会和其它诚实节点的不同,因此不会被其它诚实节点认可。如果想在共识过程中试图掺如非法数据,其它诚实节点不会认可这个数据
区块链的发展与未来
区块链是由比特币应运而生,而未来区块链和金融、娱乐等方面都有会有应用。
其原因是:
- 区块链技术能使得交易数据完全公开透明,并可以提供完整的信息流。
- 区块链的数据具有无法篡改的特性
区块链发展的三个阶段为:货币、合约、治理
三个阶段交叉发展
学习中的问题和解决过程
1 区块的组成
上课过程中了解了区块的组成,此次进一步了解区块分为两部分,区块头和区块体
2 虽然了解了区块链和比特币但是还不能很好的明确两者的界限。
现在目前的认为是比特币虚拟货币是用来进行交易的,而区块链是为了能够保证这个交易能够很好的进行,不发生欺骗等行为。
3 仍有一些点不明白:怎么来判断此节点为不诚实节点?
猜想:是与之前信息不一致?是否与不可篡改有关系?
4 挖矿
挖矿是什么,是利用计算机进行进行计算,得到符合条件的Hash,当你计算出符合条件的Hash后,会得到奖励,奖励比特币。
5 目前对区块链中的ICO众筹不能很好的了解
单纯的知道定义,ICO是国际上数字货币/区块链社区的产物,但其具体在区块链与比特币中的作用是什么?担任什么角色?本质上来说这次ICO是一种以物换物的行为,即参与者用比特币换得Mastercoin项目里的代币。为什么要换取代币?又与以太坊有什么联系?
学习感想
之前只是听过区块链和比特币,感觉是个很神奇的东西,现在通过询问同学,老师以及查阅的资料可以大致理解它们的概念,以及如何应用,但是在许多方面还存在着问题,不能好好理解,上面的学习问题中有些是自我的理解,不知道是否理解完全正确。以后将继续进行对区块链更加详细的学习,慢慢了解目前的区块链了解。