课程:《密码与安全新技术专题》算法
班级: 1892数据库
姓名: 王子榛编程
学号:20189206安全
上课教师:张健毅服务器
上课日期:2019年4月23日网络
比特币(Bitcoin)的概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生。根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的虚拟的加密数字货币。点对点的传输意味着一个去中心化的支付系统。数据结构
与全部的货币不一样,比特币不依靠特订货币机构发行,它依据特定算法,经过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录全部的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。P2P的去中心化特性与算法自己能够确保没法经过大量制造比特币来人为操控币值。基于密码学的设计可使比特币只能被真实的拥有者转移或支付。这一样确保了货币全部权与流通交易的匿名性。比特币与其余虚拟货币最大的不一样,是其总数量很是有限,具备极强的稀缺性。该货币系统曾在4年内只有不超过1050万个,以后的总数量将被永久限制在约2100万个。oracle
每一位全部者(A)利用他的私钥对前一次交易T1和下一位全部者(B)的公钥(俗称:地址)签署一个随机散列的数字签名, A将此数据签名制做为交易单T2并将其(交易单T2)广播全网,电子货币就发送给了下一位全部者。
【注意】前一次交易是指 这里比特币是如何到达如今这位用户手中的,前一份表单。框架
特色:dom
验证交易:
上面的交易单即展现了比特币交易的方式,每一个交易单记录一笔交易的具体信息,好比付款人(交易发起方的公钥)、收款人(交易接收方的公钥)、付款金额(上一笔交易信息)、付款人签名(加密后的Hash值)等。
比特币网络中,数据以文件的形式被永久记录,被称之为区块(Block)。
get:一直觉得比特币这种电子货币也会拥有特定的数据结构来表示货币,可是,本质上比特币的存在体如今交易单。交易单相似于银行的帐单,经过记录货币的去留来证实你有多少货币,而不是提供给你具体的货币单元。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时做为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
比特币白皮书英文原版 其实并未出现blockchain一词,而是使用的chain of blocks。最先的比特币白皮书中文翻译版中,将chain of block翻译成了区块链。这是“区块链”这一中文词最先的出现时间。
许多的区块构成了区块链,Block之间以双向链表的方式连接起来,而且每一个Block都会保存其上一个Block的Hash值,只有一个Block没有上一个节点,即创世Block。Block有不少份, 每一个Block只记录比特币全网10分钟内的交易信息,每约10分钟产生一个新的Block。产生Block的过程,也被称为“挖矿”。
get:能够看到,不是每一份帐单就构成一个区块,一个区块包含了多笔交易,许多区块连成双向链表。
跟传统的分布式存储有所不一样,区块链的分布式存储的独特性主要体如今两个方面:一是区块链每一个节点都按照块链式结构存储完整的数据,传统分布式存储通常是将数据按照必定的规则分红多份进行存储。二是区块链每一个节点存储都是独立的、地位等同的,依靠共识机制保证存储的一致性,而传统分布式存储通常是经过中心节点往其余备份节点同步数据。
每一笔交易发生后,并不算完成,交易数据必须写入数据库,才算成立,对方才能真正收到钱。首先,全部的交易数据都会传送到矿工那里。矿工负责把这些交易写入区块链。计算哈希的过程叫挖矿,计算哈希的机器就叫作矿机,操做矿机的人就叫作矿工。根据比特币协议,一个区块的大小最大是 1MB,而一笔交易大概是500字节左右,所以一个区块最多能够包含2000多笔交易。矿工负责把这2000多笔交易打包在一块儿,组成一个区块,而后计算这个区块的哈希(Hash)。
中本聪故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全网才能生成一个新区块,一小时也就六个。因为人为设置了大量的计算及难度系数,须要大量算力才能获得当前区块的有效哈希,进而新区块添加到区块链。矿工之间也在竞争,谁先算出来了,谁就能第一个添加新区块进入区块链,从而享受这个区块的所有收益。其它矿工只能过来把那一页抄写一份,贴在本身帐本的最后面,而后又开始新的记帐过程。周而复始,生生不息,帐本一页一页的增长,帐本愈来愈厚。
全网每十分钟(算法动态调节至约十分钟产生一个)产生一个新的Block,每一个新的Block含有的必定数额的比特币归建立者全部,此规则称为“激励”。
比特币体系的设计要求:
Block应由那些最诚实最勤劳的节点产生,于是引入工做量证实(Proof Of Work,POW)机制。比特币体系倾向于认为:一个节点在提供信息以前付出了巨大的工做量,那么他多是诚实的几率比较高(他提供的Block中数据最有可能没有问题,固然不管如何其余节点也是会对其进行检查的)。
挖矿过程实际上就是反复去尝试寻找一个随机数(又称“幸运数”),使得将最后一个Block的hash值、当前世界中还没有被加入到任何Block的交易单、随机数三部分组织起来送入SHA256算法计算出散列值X(256位),若是X知足必定条件(好比前20位均为0),那么该节点初步得到建立Block的权利。
工做量证实系统主要特征是客户端须要作必定难度的工做得出一个结果,验证方却很容易经过结果来检查出客户端是否是作了相应的工做。这种方案的一个核心特征是不对称性:工做对于请求方是适中的,对于验证方则是易于验证的。它与验证码不一样,验证码的设计出发点是易于被人类解决而不易被计算机解决。
下图表示的是工做量证实的流程:
某一节点若收到多个针对同一前续Block的后续临时Block,则该节点会在本地Block链上创建分支,多个临时Block对应多个分支。从block hash算法咱们知道,合理的block并非惟一的,同一高度存在多个block的可能性。那么,当同一个高度出现多个时,主链即出现分叉(Fork)。遇到分叉时,网络会根据下列原则选举出Best Chain。
不一样高度的分支,老是接受最高(即最长)的那条分支相同高度的,接受难度最大的高度相同且难度一致的,接受时间最先的若全部均相同,则按照从网络接受的顺序等待Block Chain高度增一,则从新选择Best Chain。
去中心化(英语:decentralization)是互联网发展过程当中造成的社会关系形态和内容产生形态,是相对于“中心化”而言的新型网络内容生产过程。
相对于早期的互联网(Web 1.0)时代,Web 2.0内容再也不是由专业网站或特定人群所产生,而是由权级平等的全体网民共同参与、共同创造的结果。任何人均可以在网络上表达本身的观点或创造原创的内容,共同生产信息。
随着网络服务形态的多元化,去中心化网络模型愈来愈清晰,也愈来愈成为可能。Web 2.0兴起后,Wikipedia、Flickr、Blogger等网络服务商所提供的服务都是去中心化的,任何参与者都可提交内容,网民共同进行内容协同创做或贡献。
【注意】去中心化,不是不要中心,而是由节点来自由选择中心、自由决定中心。简单地说,中心化的意思,是中心决定节点。节点必须依赖中心,节点离开了中心就没法生存。在去中心化系统中,任何人都是一个节点,任何人也均可以成为一个中心。任何中心都不是永久的,而是阶段性的,任何中心对节点都不具备强制性。
上图为一个“区块”,其包含了区块信息和交易信息
交易信息
问题3:什么是ICO众筹?
ICO (inital Coin Offering)的缩写,译为首次币发行,院子股票市场的首次公开发行IPO概念,是区块链首次发行代币,募集比特币、以太坊等通用数字货币的行为。
ICO是一种区块链行业术语,是一种为加密数字货币/区块链项目筹措资金的经常使用方式,早期参与者能够从中得到初始产生的加密数字货币做为回报。因为代币具备市场价值,能够兑换成法币,从而支持项目的开发成本。ICO所发行的代币,能够基于不一样的区块链。常见的是基于以太坊(ETH)和比特股(BTS)区块链发行,由区块链提供记帐服务和价值共识,实现全球发行和流通。
发展历史:
个人理解来看,ICO众筹就是发行一种新的加密货币,能够利用以太坊的网络进行转帐,钱包地址可以使用以太坊的地址,钱包秘钥也能够是以太坊的钱包秘钥,区块链使用以太坊的区块链。我看了一篇介绍如何发布一个所谓“加密货币”进行ICO众筹的文章,见最后参考资料的第一篇。
区块链是伴随着比特币而产生的新概念,可是区块链的概念范围十分宽广,不会仅仅局限于比特币的交易。下面是我找到的区块链能够应用的场景
还有许多行业,好比保险行业、金融行业、房地产行业、开发行业等等。
张老师上课生动有趣地为咱们从比特币的运做方式介绍了区块链的相关技术,也为咱们打开了另外一道财富之门,然而,我可能并不会利用比特币发财,感受比特币挣钱是一个须要谋划与策略,还须要很好的电脑配置(不止一台很好的电脑配置。。。)因此,我最感兴趣的仍是区块链技术,利用全新的分布式计算方法,区块链的去中心化、共识机制等都是我历来没有了解过的全新领域,以为很神奇,可以摆脱控制,由你们共同操做,就像比特币不受任何组织或国家的控制,经过其自身机制,吸引了成千上万的“旷工”,共同维护这个系统。区块链也不只仅局限于比特币或是以太坊,区块链所能发挥做用的领域远远不止这些,咱们在学习理解区块链技术后,可以将区块链技术应用于更多领域。
本文介绍了一种新型的基于可信任硬件的区块链挖掘框架:节约型挖掘(REM)
大多数区块链中所使用的工做量证实(proof-of-work, PoW)很容易就会被认为是能源浪费证实。除了选择链中的下一个区块以外,全部的散列并无任何用处。综合的能源浪费实际上至关惊人:
你们一致认为,PoW毫无用处,只会产生巨大的金钱和环境成本。今天,比特币网络使用的电力比核反应堆生产的还要多,预计到2020年,它的电力消耗将遇上整个丹麦所消耗的。
所以,专家们研究了其余的共识方案,包括基于BFT的和权益证实( Proof of Stake),但这些“要么限制了共识分享,要么有明显的安全限制”。在这篇文章中,做者提供了另一种方法。咱们将再也不使用“工做量证实”,而使用“有用工做量证实”(PoUW)。
在PoUW系统中,CPU在承担原来的工做以外,还能够同时承担区块链的工做。在PoUW方案下工做的CPU开销是原来运行开销的5-15%左右。
REM(Resource-Efficient Mining,节约型挖掘)的核心依赖于英特尔的SGX(Software Guard Extensions,软件防御扩展指令)技术,但正如咱们将看到的,须要多个组件协做工做才能使总体方案发挥做用。
图中有区块链代理(Agent)、REM矿工(Miner),以及一个或多个有用的工做客户端(Useful Work client)。代理用于收集事务并生成区块模板,该模板是在缺乏PoUW的状况下的候选区块。矿工以PoUW任务的形式获取区块模板,并从一个有用的工做客户端中获取有用的工做负载。
PoUW包括两个部分:挖掘成功时候的有用工做程序认证,以及合法检查员的认证。
实验显示对示例基准测试的性能影响最小(5-15%)。
这篇论文中,做者介绍了一个全新的算法叫作「Thunderella」。与通常状态机的共识原理不一样(状态机至关于一个共识机制的抽象,对分布式网络中大量节点的请求进行确认),Thunderella使得状态机能够在实现快速异步处理的同时,在异常时还能够启动回滚机制。如此一来,状态机的相应速度与同步协议无异,在不出现「拜占庭将军问题」(及大多数人都是诚实的)的状况下,能够作到对交易的瞬间响应。
在分布式系统中有一种叫作状态机复制的技术,在这项技术中,每一组服务器同步一个增加而且线性的日志,而这必须知足两点属性:
基于区块链中存在的大量不可信节点,对于大规模设置的两大协议
Thunderella:
从DC-nets开始,提出了几种对等匿名通讯协议,尽管这些协议具备强大的匿名保证,但几乎没有进行过实践的检验。所以大多数协议没法同时解决时隙冲突和恶意对等方中断的关键问题,而其他协议没法处理带有的恶意对等方通信轮次。做者将P2P匿名通讯协议概念化为P2P混合,提出一种新颖的P2P混合协议DiceMix,在最佳状况下仅须要四次通讯轮次,在最坏状况下须要4 + 2f轮次与恶意对等。因为每一个单独的恶意对等体均可以经过简单地省略他的消息来强制重启P2P混合协议,咱们发现DiceMix具备O(f)轮的最坏状况复杂度,是最佳的P2P混合解决方案。
在应用程序方面,使用DiceMix来提升比特币等加密货币的匿名性。经过公开可用的分布式帐本(或区块链)进行的假名交易的公开可验证性使得这些系统极易受到各类可连接性和去匿名攻击的攻击。同时使用DiceMix来定义CoinShuffle++,这是一种硬币混合协议,容许假名对等方执行不可连接的交易。方式与当前的比特币系统彻底兼容。下图是DiceMix执行的示例。
最后对P2P混合协议进行了去匿名攻击,以保证在存在破坏性对等体的状况下终止。DiceMix经过要求新的输入消息(例如以前从未使用过的加密密钥)来抵抗这种攻击。
上图是P2P混合协议遭到去匿名攻击,而DiceMix躲避攻击的方式是:
为了不消息集的交集,DiceMix在每次运行中绘制新的消息。 此外,每当某个诚实的对等体p排除没法访问的诚实对等体p0(并牺牲p0的匿名性)时,正确的确认属性将确保当前运行不会成功终止对等体p0,由于p0和p将具备不一样的视图。 当前未设置的同伴的P组。 所以,当前运行不须要匿名,而且能够平等地处理恶意和脱机对等。
试图经过「空间证实」(Proof of Space)来保证比特币及其余加密货币的安全。「空间证实」是Bram Cohen以前提出的一种取代PoW的工做证实方式。
工做量证实(Proof Of Work,简称POW)
简单理解就是一份证实,用来确认你作过必定量的工做。工做量证实系统主要特征是客户端须要作必定难度的工做得出一个结果,验证方却很容易经过结果来检查出客户端是否是作了相应的工做。这种方案的一个核心特征是不对称性:工做对于请求方是适中的,对于验证方则是易于验证的。
“空间证实(proof-of-space)”
依赖于磁盘空间而不是计算力做为挖矿的主要资源,建立了一种声称可以比PoW更加生态友好且经济的替代选择。这份标题为《以空间证实的应用超越赫尔曼的时间记忆折中》概述了经过使用空间证实(proof-of-space)创建一种对能源需求更少的挖矿流程——比特币的能源集约型挖矿模式一直遭受不少人的批评,被不少人认为是一种资源浪费。因为能源要求的下降,以及对现有硬件的依赖,这种方式旨在是任何拥有一台计算机的人都可以进行挖矿。在空间证实体系下,矿工能够将未使用的磁盘空间分配到网络中,而成功挖到区块的几率将与矿工分配的磁盘空间与网络的总能力成比例。
Publicly verifiable proofs of sequential work---公开可验证的公做证实
随机预言机(random oracle,简称RO)。在密码学里面,随机预言是一个预言(简单说像是理论的黑箱),对任何输入都回传一个真正均匀随机的输出(请参考离散型均匀分布),不过对相同的输入,该预言每次都会回传如出一辙的输出。由于预言机实际上起到的是一个黑匣子的做用,中间是存在一个固定的算法的,这个算法至关复杂且是保密的,所以相同的输入值在通过了这个算法的运算以后输出的是相同的输出值,就像数学上一个肯定的函数,相同的数值代入运算几回都会获得一样的结果同样。预言机存在的目的是为了让你没法知道本身的输入能获得什么样的结果,若是你给出两个输入,预言机同时给定两个输出的话,你不会知道这两个输出分别对应的是哪一个输入。
一个Merkle DAG,一个无回路有向图,对象之间的links都是hash加密嵌入在源目标中。这是Git数据结构的一种推广。
本论文讲述了一种SMARTPOOL,一个分散的挖掘池的新协议设计。该协议展现了如何利用智能合同,自治的区块链程序,来分散加密货币的挖掘。SMARTPOOL将交易选择控制权返还给矿商,同时提供低价格的收购。SMARTPOOL的规模比集中的矿池要低,并被设计成规模扩大到危言耸听的矿工。而且在Ethereum和Ethereum的经典网络上实现了一个健壮的SMARTPOOL实现。
文章提出了POW所面临的的困难,在本文中,将重点放在有关采矿池的属性列表中。 像比特币和以太坊这样的加密货币奖励网络参与者(或矿工)新的加密硬币,用于解决计算难度大的难题(或工做证实谜题)。
解决方案:
文章针对分散式集中采矿的解决方案利用以太坊智能合约,这些合同是在区块链上运行的分散式自主代理。非合约账户在以太网中具备地址和余额,以太币是以太坊的本地货币。此外,智能合约还具备代码和私有持久存储(即变量和值之间的映射)。智能合约代码相似于能够操纵存储变量的普通程序。为了在地址addr处调用合同(即执行其代码),用户向addr发送具备适当有效载荷的事务,即支付执行(在Ether中)和/或用于调用的输入数据。只要大多数以太坊矿工忠实地遵循以太坊协议,合同代码就会在区块链上正确执行。
在较高的层面上,SMARTPOOL用智能合约取代了采矿池运营商。智能合约经过存储矿工提交的全部股票,充当游泳池的无信任簿记员。提交新股份时,合同将验证共享的有效性,并检查否
之前的共享记录存在,而后更新相应的矿工记录。咱们容许矿工在本地生成池的块模板(在3.3节中详细讨论)。若是矿工找到一个有效块的共享,它会将该块广播到加密货币网络,奖励将当即记入SMARTPOOL。而后,SMARTPOOL公平地向池中的全部矿工发放区块奖励。
区块链这几年逐渐走入研究人员的视野,区块链这几年逐渐被应用到多种不一样的领域,人们的研究方向仍是集中在解决区块链的工做量证实以及相关算法的改进中,但愿可以获得更加高效地算法解决区块链现存的安全等问题。