精华内容
下载资源
问答
  • 区块链技术原理详解
  • 区块链技术原理详解
  • 区块链技术原理详解

    2019-02-19 18:11:33
    区块链简介 区块链的特征及分类 区块链网络 区块链的数据结构 区块链的核心问题 区块链的前景展望
  • 区块链技术原理详解: 区块链简介 区块链的特征及分类 区块链网络 区块链的数据结构 核心问题 前景展望
  • 最新区块链技术原理详解 - 最新权威介绍区块链技术及原理文档... 最新区块链技术原理详解_互联网_IT/计算机_专业资料。最新权威介绍区块链技术及原理文档。
  • 最新区块链技术原理详解.pptx
  • 区块链简介 槪正及分类 ...区块链技术是构建比特币区块链网络与交易信息加 密传输的基础技术它基于密码学原理而不基于信 用使得任可达成一致的双方直接支付从而不需 要第三方中介的参与 定义 区块链是一个分布式账本一
  • 区块链技术完整PPT,独立制作,可直接用于区块链基础知识的相关教学,同时也非常适合初学者学习区块链技术
  • 区块链技术原理知识详解
  • 区块链原理详解_B|LLNG 北京联合信息技术股份有限公司 2017.01 区块链简介 特征及分类 区块链网络 目录 数据结构 核心问题 前景展望 1.区块链简介 背景 传统支付系统 互联网上的贸易,几乎都需要借助可资信赖的第三 ...
  • 区块链原理详解

    2018-04-21 19:38:53
    区块链技术是构建比特币区块链网络与交易信息加密传输的基础技术。它基于密码学原理,使得任何达成一致的双方直接支付
  • 区块链原理详解.pptx

    2019-05-21 14:33:12
    区块链技术是构建比特币区块链网络与交易信息加密传输的基础技术。它基于密码学原理而不基于信用,使得任何达成一致的双方直接支付,从而不需要第三方中介的参与。区块链原理详解
  • 一、 以太坊和区块链的关系 从区块链历史上来说,先诞生了比特币,当时并没有区块链这个技术和名词,然后业界从比特币中提取了技术架构和体系,称之为区块链技术。从比特币提取的区块链技术称之为区块链1.0时代,...

    很多人迷惑于区块链和以太坊,不知如何学习,本文简单说了一下学习的一些方法和资源。

    一、    以太坊和区块链的关系

         从区块链历史上来说,先诞生了比特币,当时并没有区块链这个技术和名词,然后业界从比特币中提取了技术架构和体系,称之为区块链技术。从比特币提取的区块链技术称之为区块链1.0时代,那个时候的应用主要以电子货币和去中心化交易为主,比如各种山寨币。而以太坊将区块链带入了2.0的时代,区块链2.0不是推翻了1.0,而是在1.0的基础上实现了区块知晓、价值知晓、图灵完备,并进行了细节优化,从而形成了以智能合约为特色的区块链2.0。比特币定位于一个应用,而以太坊定位于平台,你可以在这个平台上利用智能合约做各种应用。

        所以,学习区块链,直接学习以太坊就好了

    以太坊知识库http://www.aibbt.com/a/ethereum/

    二、    以太坊入门的方法

            对于没有接触过区块链的人,建议先参会以太坊的日常应用。

    1、         使用客户端

        这里的教程很多,推荐一个以太坊钱包教程

    2、         挖矿

        挖矿的教程很多,一般分布在各个矿池,这里推荐一个国内矿池的教程,并且可以加入各个矿池的群去交流一下。国内的矿池有www.f2pool.com,www.bw.com 等几大矿池。

    3、         浏览公有链的区块信息

        在经历以上事情后,可以通过区块链浏览器去查看自己的账户和交易,更直观感受。

        通过以上的操作,基本可以算对区块链有了一个初步的了解和感知。

    三、    以太坊各个项目说明

        以太坊发布以后,有 多个客户端,同时也支持多个平台,初学者往往被各种各样的客户端弄迷糊,本文进行了详细的总结。

        以太坊客户端以语言进行分类,在github上分成了不同项目,源代码地址:https://github.com/ethereum/,虽然以太坊客户端众多,但是有两个共同特点:

        1、同一语言的客户端在不同平台上的使用是完全相同的

        2、不同语言的客户端(mist、geth、eth等等)之间在同一个平台(linux、windows或OSX)上共用一样的应用配置,同时其命令行可使用的参数也是一致。

        下面就以github上的项目为分类说明各个客户端的用途和特点:

    (一)go-ethereum项目

        开发语言:go语言

        客户端文件:Geth

        界面:命令行

        适用平台:windows、linux和OSX

        功能和特点:该项目是使用最广泛的以太坊客户端,大部分节点都是运行的该客户端,教程和例子也最多,推荐使用,可用于挖矿,组建私有链,管理账号,部署智能合约等常用功能,不可以编译智能合约。

    (二)webthree-umbrella项目

        此项目包含3个客户端

        开发语言:c++

        客户端文件:AlethZero、Mix和Eth

        使用平台:windows、linux和OSX

        界面:图形化界面

        功能和特点:该项目严格来说是cpp-ethereum 项目的一个shell,是以太坊基金会的前CTO,Gavin Wood主持编写的,所以人气也很高,易用性也很好。AlethZero是图形化的钱包客户端,对应的是Geth的功能,不过是全图形化的。但是随着后续以太坊基金会主推的图形化钱包Mist的推出,渐渐没落。Mix 是智能合约(以太坊称为DAPP)的开发IDE,可以支持智能合约(DAPP)的编写、调试,部署,全图形化界面,但是目前已经停止开发了,开发组转向了Remix。Eth是C++编写的命令行客户端功能和Geth一样。

    (三)Mist项目

        开发语言:JavaScript

        客户端文件:Mist(目前使用Ethereum-Wallet的名称)

        使用平台:windows、linux和OSX

        界面:图形化界面

        功能和特点:该项目是以太坊基金会主推的项目,Mist定位不只是一个钱包,而是将来DAPP(智能合约的应用APP)市场,类似于苹果市场,在这里可以有你的账号,可以浏览、发布和买卖以太坊的DAPP应用。目前因为开发还不够全面,名称暂时显示为Ethereum-Wallet,作用也很简单,就是一个钱包的功能。强烈推荐,未来的主流客户端。

    (四)solidity项目

        开发语言:C++

        客户端文件:solc

        使用平台:windows、linux和OSX

        界面:命令行界面

        功能和特点:该项目是以太坊智能合约(DAPP)的编程语言,使用solc作为编译程序,该项目主要用于编译,严格来说是一个基本的编译平台,一般开发可用MIX替代。

    (五)browser-solidity项目

        开发语言:C++

        客户端文件:浏览器中显示

        使用平台:windows、linux和OSX

        界面:浏览器界面

        功能和特点:该项目是智能合约浏览器版本的开发环境,可以支持在浏览器中直接开发、调试和编译,对于初学者来说,可以快速上手,不需要安装,非常方便,直接访问地址使用:https://ethereum.github.io/browser-solidity/

    (六)pyethereum项目和ethereumj项目

        pyethereum项目是用python语言编写的以太坊客户端,ethereumj项目是用JAVA语言编写的以太坊客户端,只是语言不同,和前面GO语言编写的客户端Geth的功能完全相同。

    (七)etheminer项目

        开发语言:C++

        客户端文件:ethminer

        使用平台:windows、linux和OSX

        界面:命令行

        功能和特点:该项目是cpp-ethereum项目的一部分,用于和Geth配合进行GPU挖矿,比CPU挖矿效率高100多倍,也可以用于矿池挖矿

    四、    以太坊常用网址(含智能合约)

        以太坊有很多有用的网站都分布在国外,找起来很费劲,这里总结一下

    1、以太坊官方网站:https://ethereum.org/

    该网站为以太坊的官方网站,有详细的以太坊介绍和各种连接地址,推荐详细看一看

    2、以太坊所有源码地址(官方):https://github.com/ethereum/

    该github为以太坊所有项目的源码地址,以及更新和发布。

    3、以太坊Homestead文档地址(官方):http://www.ethdocs.org/en/latest/index.html

    该网站为以太坊的详细介绍文档,基本包括了以太坊的方方面面,如果有什么不清楚的原理和应用,基本都可以在这里找到答案和线索。

    4、以太坊网络状态地址(官方):https://ethstats.net/

    该网站能全面的显示网络状态,包括节点、难度、算力等等,非常直观

    5、以太坊资源网站(官方):http://ether.fund/

    该网站提供了以太坊很多应用资源,比如市场情况、合约辅助工具、已发布的智能合约、以太坊网络、DAAP等,方便开发和发布。

    6、Solidity编程文档(官方):http://solidity.readthedocs.io/en/latest/

    该网站提供了以太坊Solidity语言的全面参考手册,学习Solidity语言必备。

    7、以太坊网络扫描(官方):http://etherscan.io/

    该网站提供了以太坊网络的各种状态,比如帐号的详情、TOKEN详情,难度详情、区块详情,非常方便和直观。

    8、以太坊官方博客:https://blog.ethereum.org/

    9、以太坊wiki百科地址:https://github.com/ethereum/wiki/wiki

    在这里有白皮书、黄皮书以及开发指南,比较全面。

    10、以太坊中文爱好者网站:http://www.aibbt.com/a/ethereum/

    该网站为国内以太坊爱好者自发建立的网站,内容比较全,信息更新很快。

    11、以太坊的gitter的实时交流网站:https://gitter.im/orgs/ethereum/rooms

    该网站是以太坊的gitter chart的网站,根据项目分了很多房间,只要你提问题,大部分有人回答,很不错,不过只能英语交流。

    12、以太坊的官方论坛:https://forum.ethereum.org/

    官方论坛,没什么好说的,我遇到的几个问题,都是在这里找到的答案

    13、以太坊第三方强大的IDE:https://live.ether.camp/

    这个是第三方发布的Solidity IDE,我看了一下,很强大,强大到还不太会用,他的目标是企业级IDE,老外用的较多。

    14、以太坊开发框架Truffle说明书:http://truffle.readthedocs.io/en/latest/

    以太坊目前很流行的开发框架Truffle的说明书,这个框架比较流行。

    15、以太坊开发框架dapple说明书:http://dapple.readthedocs.io/en/master/

    这个开发框架是在gitter chart上看到的,感觉用的人不多,先观察

    16、以太坊官方推荐开发框架Meteor说明书:https://github.com/ethereum/wiki/wiki/Dapp-using-Meteor

    这个开发框架是以太坊官方推荐的,写进了以太坊的官方wiki,值得学习,当然,以太坊官方经常转换方向,以后换别的也没准


    展开全文
  • 第二章 区块链技术原理 整个区块链与密码学大体内容介绍安排如下【这篇博客中可以找到所有章节的链接内容】: https://blog.csdn.net/qq_43479839/article/details/114630163 第二章的目录如下: 目录第二章 区块链...

    第二章 区块链技术原理

    整个区块链与密码学大体内容介绍安排如下【这篇博客中可以找到所有章节的链接内容】:
    https://blog.csdn.net/qq_43479839/article/details/114630163

    参考资料和教材:
    1>区块链技术及应用;清华大学出版社出版;华为区块链技术开发团队 著
    2>区块链技术进阶与实战;人民邮电出版社;蔡亮,李启雷,梁秀波 著
    3>可证明安全算法与协议;科学出版社;张华,温巧燕,金正平 著
    4>密码学引论(第二版);武汉大学出版社;张焕国,王张宜 著
    5>武汉大学国家网络安全学院:何德彪老师

    第二章的目录如下:

    第二章 区块链技术原理

    2.0 引言

    区块链到如今已经已经吸引了越来越多的进行深入研究;现在各地政府对区块链积极扶持,国内外科技以及金融巨头都纷纷涉足到区块链行业。

    在中国进行来区块链技术的发展现状:
    1、工信部发布《中国区块链技术和应用发展白皮书2016》,【可查】
    2、2016年12月,“区块链”首次被作为战略性前沿技术写入《国务院关于印发"十三五"国家信息化规划的通知》
    3、工信部发布《2018中国区块链产业白皮书》,

    2.1 区块链的概念

    区块链(blockchain)是一种数据以区块(block)为单位产生和存储,并按照时间顺序首尾相连形成链式(chain)结构,同时通过密码学保证不可篡改、不可伪造以及数据传输访问安全的去中心化分布式账本。区块链中所谓的账本,其作用和现实生活中的账本基本是一致的,按照一定格式记录流水等交易信息。

    2.1.1 交易单、数据块、区块链概念

    其中:具体关系如下
    区块链中,数据是以交易单的形式存在的。

    • 交易单记录一笔交易的具体信息,例如付款人 比特币地址、收款人比 特币地址、付款金额、 付款人签名等
    • 数据块许多交易单组成了数据块,每个数据块只记录区块链全世界对应时间内的交易信息
    • 数据链将数据块有序联起来的链表.例如比特币全世界只 有唯一一条公共数据链 Blockchain

    在这里插入图片描述

    2.1.2 数据块中的一些参数

    在区块链中所包含的一些参数:
    1》数据块中的一些参数
    在这里插入图片描述
    在这里插入图片描述
    值得注意的是:
    1、系统中的每个节点都要验证交易是否合法,如果合法将认同此次交易,并将交易固化成个交易链,即数据块.
    而数据块又包括区块头和区块体.
    2、所有的交易:包括交易金额,交易金额的来源,交易金额去向等细节都以交易单的形式被记录在世界上唯一的数据块上。
    给出一个经常会被提及到的一些概念:【参考链接:https://baijiahao.baidu.com/s?id=1602885179196188138
    3、 UTXO:Unspent Transaction Output,未花费交易的输出,除了创世区块挖矿奖励,任何一笔交易输入必须是另一笔交易未花费的交易输出。绕晕了?好吧,简单粗暴一点,就是你给我的比特币必须是你没给过别人的,要不然我不要(当然在正常情况下也给不了,除非拥有全网51%以上的算力)。类比现实世界,一张钱币不可能花费两次,但在虚拟货币中,可能出现多次交易即"双花"。

    2.1.3 简要介绍区块成链的过程

    在知道上面的一些概念之后,给出区块结构,以及其在区块链中大概的结构:
    在这里插入图片描述

    在概念大致介绍清楚之后,要先简要说一下区块形成链的具体过程,以比特币系统为例【此处参考链接:https://baijiahao.baidu.com/s?id=1602885179196188138
    好了,概念大概介绍清楚了,我们来说一下区块形成链的具体过程:【以比特币系统为例】
    我们假设Alice要转给Bob 5个比特币,
    第一步,Alice创建交易单,写上"我要转给Bob 5个比特币",并输入自己的私钥将账户中的5个比特币解锁;
    第二步,技术后台将"我要转给Bob 5个比特币"进行哈希运算,并将Alice的私钥使用密码学技术进行加密,得到Alice的数字签名;
    第三步,技术后台将Alice的数字签名、公钥发送给智能合约;
    第四步,技术后台将这个交易单发送到智能合约;
    第五步,技术后台使用Alice的公钥对数字签名进行解密,得到哈希值a;
    第六步,技术后台对交易单信息进行哈希运算得到哈希值b,
    第七步,后台验证哈希值a、b是否一致,若一致对该交易使用P2P网络进行全网广播,若不一致,则交易驳回;
    第八步,后台根据当前挖矿难度系数设置下一区块的目标哈希值,矿工进行挖矿,争夺记账权;
    第九步,当一名矿工挖到合法区块后,对区块头上信息进行完善,包括时间戳,版本号、上一区块的哈希值、Merkel树根等,并通过P2P网络进行全网广播,其他矿工便不再进行该区块的挖矿动作,而转向验证该区块的合法性;
    第十步,通过验证区块合法后(UTXO和数字签名),挖到该区块链的矿工获得代币奖励,其余矿工将该区块纳入自己的区块链顶端,形成更长的主链,接着竞争下一区块的记账权。
    以此往复,保证了比特币系统的运行,而这也是比特币能够维持至今的原因。

    2.1.4 区块产生方式、POW、POS、DPOS

    1、区块产生方式:区块产生的过程其实就是挖矿的过程,在区块的结构中可以知道,前一个区块的哈希值确定,目标哈希值也确定,,现在只需要去计算出合适的随机值nonce,即可算“挖矿”成功,获取记账权,也就产生了新的区块。(但是由于交易数只要有一点改变都会造成merkle根值巨大的变化,所以这个随机数nonce是很难确认的。)

    2、POW:Proof of Work,工作证明。比特币在Block的生成过程中使用了POW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block Hash。

    3、POS:Proof of Stake,也称股权证明,类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。简单来说,就是一个根据你持有货币的量和时间,给你发利息的一个制度,在股权证明POS模式下,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息。
    POS不同于POW之处在于,在POS系统 上“挖矿”是以货币的持有数量为基础的. 换句话说,在POS的情况下,一个人拥有虚 拟货币的5%和在比特币系统上拥有系统5% 的算力的效果是一样的.

    3、DPOS:Delegated Proof of Stake,委任权益证明。关于此协议的详细内容,可以参考最新的博文《[区块链]DPoS官方共识机制(BTS/EOS)详解》比特股的DPoS机制,中文名叫做股份授权证明机制(又称受托人机制),它的原理是让每一个持有比特股的人进行投票,由此产生101位代表 , 我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心比特币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。

    POW、POS、DPOS参考链接:https://blog.csdn.net/lsttoy/article/details/61624287

    2.1.5 区块链中的交易过程

    • 第1步:所有者A利用他的私钥对前一次交易(比特货来源)和下一位所有者B签署一个数字签名,并 将这个签名附加在这枚货币的末尾,制作成交易单.

    要点:B以公钥作为接收方地址

    • 第2步:A将交易单广播至全网,比特币就发送给了B,每个节点都将收到的交易信息纳入一个区块中.

    要点:对B而言,该枚比特币会即时显示在比特币钱包中,但直到区块确认成功后才可用.目前一笔比 特币从支付到最终确认成功,得到6个区块确认之后才能真正确认到帐.

    • 第3步:每个节点通过解一道数学难题,从而去获得创建新区块权利,并争取得到比特币的奖励(新 比特币会在此过程中产生)

    要点:节点反复尝试寻找一个数值,使得将该数值、区块链中最后一个区块的Hash值以及交易单三部 分送入SHA256算法后能计算出散列值X(256位)满足一定条件(比如前20位均为0),即找到数学难题的解.由此可见,答案并不唯一

    • 第4步:当一个节点找到解时,它就向全网广播该区块记录的所有盖时间戳交易,并由全网其 他节点核对.

    要点:时间戳用来证实特定区块必然于某特定时间是的确存在的.比特币网络采取从5个以上 节点获取时间,然后取中间值的方式作为时间戳.

    • 第5步:全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下 一个区块,这样就形成了一个合法记账的区块链.

    要点:每个区块的创建时间大约在10分钟.随着全网算力的不断变化,每个区块的产生时间会 随算力增强而缩短、随算力减弱而延长.其原理是根据最近产生的2016个区块的时间差(约两 周时间),自动调整每个区块的生成难度(比如减少或增加目标值中0的个数),使得每个区 块的生成时间是10分钟. 10*2016 = 14 * 24 *60

    2.2 区块链的特点

    1、 区块链的特点是什么?
    开发性:免费、开源的交易系统。
    去中心化:不依赖信任机构。
    不可篡改时间戳保证交易的不可逆和可追溯性。
    永久性:合法交易永远记录在区块链。

    2、又区块链的特点是什么?
    Autonomous自治的—透明:系统节点对等,自由加 入和离开;去中心化,无管理机构或第 三方仲裁
    Distribute分布式的—共享:只需要连接到最近的节 点就可以获取所需要的所有信息
    Trackable可追溯的—公开:系统的每个节点都有所 有附带时间戳的完整拷贝,数据不可篡改
    Contractual按合约执行的—公平:所有的节点都按照 一个规则或合约行事并达到共识(智能合 约)
    互联网的四大特点 是“公平、分享、 公开、透明”

    2.3 区块链的分类

    2.3.1 区块链分类的具体内容

    1、区块链包括:公有链、私有链、联盟链。

    公有链:

    • 任何节点都是向任何人开放
    • 任何人均可自由参与和退出

    私有链:

    • 单机构享有使用权和控制权
    • 权力完全控制在一个组织中

    联盟链:

    • 介于公有链和私有链之间
    • 加入和退出需经过联盟授权

    在这里插入图片描述

    2.3.2 公链vs私链

    2、公链与私链对比的优缺点?
    公链优点:
    优点1:保护用户免受开发者的影响
    优点2:公开区块链是开放的,可以应用于 多个领域以及产生一定的网络影响.
    公链缺点:
    1.在某些特定环境下,如需要保护数据隐私等完成公开则失去隐私.
    2.公共区块交易费用较高,确认速度较慢等.
    3.公有链的不可更改性降低了一定的灵活性.

    私链优点:
    优点1:较强的灵活性
    优点2:私有链节点均已知,不存在51%攻击风 险.
    优点3:交易成本更便宜.
    优点4:节点之间可以很好地连接,故障可以 迅速通过人工干预来修复,并允许使用共识算 法减少区块时间,从而更快地完成交易
    优点5:读取权限受到限制,这样私有区块链 还可提供更好的隐私保护
    **私链缺点:**丧失了一定的去中心化的特性。

    在这里插入图片描述

    2.4 区块链的基础技术

    2.4.1 哈希函数

    不够多赘述,在密码学中是很基础的概念。
    1、哈希函数的概念:
    在这里插入图片描述

    2、哈希运算的特性:一个优秀的哈希算法要具备正向快速、输入敏感、逆向困难、强抗碰撞等特性。
    其中解释一下输入敏感,就是说输入信息发生任何微小变化,哪怕仅仅是一个字符的更改,重新生成的哈希值和原哈希值也有天壤之别。
    3、通过哈希构建区块链的链式结构,实现防篡改。
    在这里插入图片描述
    4、通过哈希函数构建默克尔树,实现内容改变的快速检测。
    在这里插入图片描述

    2.4.2 数字签名

    1、数字签名是手写签名数字化的产物,但又有着显著的区别

    • 不同消息的签名不同,甚至相同消息也有不同的签名,否则签名就会被获取并复制到 另外的文件中;
    • 数字签名的基础是公钥密码学;

    2、数字签名的目的:保证信息的完整性和真实性,即消息没有被篡改,而且签名也没有被篡改,消息只能始发于所声称的一方。

    3、一个完善的签名方案应满足以下三个条件:
    不可伪造性:其他任何人均不能伪造签名,也不能对接收或发送的信息进行篡改、伪 造和冒充
    不可否认性:签名者事后不能否认或抵赖自己的签名
    公正的仲裁:若当事双方对签名真伪发生争执时,能通过公正的仲裁者验证签名来确 定其真伪

    4、数字签名方案一般包括三个过程:
    ① 系统初始化过程:产生数字签名方案中的所有系统和用户参数(公开的+秘密的)
    ② 签名过程:用户利用给定的签名算法对消息签名,签名过程可以公开也可以不公 开,但一定包含仅签名者才拥有的秘密信息(签名密钥)
    ③ 验证过程:验证者利用公开的验证方法对给定消息的签名进行验证

    5、数字签名工作流程示意图
    在这里插入图片描述
    6、经典的数字签名算法和其他的数字签名算法:
    经典:
    ① RSA数字签名
    ② DSA数字签名
    ③ ECDSA数字签名
    ④ SM2数字签名
    ⑤ …

    其他:
    ① 盲签名
    ② 群签名
    ③ 环签名
    ④ …

    2.4.3 共识算法

    1、为什么要共识?
    在这里插入图片描述
    2、有哪些共识算法?
    在这里插入图片描述
    共识算法-PoW

    • 比特币系统设计了以每个节点的计算能力即“算力”来竞争记账权的机制.在比特币系统
      中,大约每10分钟进行一轮算力竞赛,竞赛的胜利者,就获得一次记账的权力,并向其 他节点同步新增账本信息.

    • 在一个去中心化的系统中,谁有权判定竞争的结果呢?比特币系统是通过一个称为“工作 量证明”( Proof of Work,
      PoW)的机制完成的.

    • 简单地说,PoW就是一份确认工作端做过一定量 工作的证明.PoW系统的主要特征是计算
      的不对称性.工作端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检 查工作端是不是做了相应的工作.

    • 举个例子,给定字符串“bockchain”,我们给出的工作量要求是,可以在这个字符串后面 连接一个称为nonce的整数值串,对连接后的字符串进行SHA256哈希运算,如果得到的哈 希结果(以十六进制的形式表示)是以若干个0开头的,则验证通过,为了达到这个工作量 证明的目标,我们需要不停地递增nonce值,对得到的新字符串进行SHA256哈希运算.

    • PoW背后的基本概念很简单:工程端提交已知难于计算但易于验证的计算结果,而其他任 何人都能通过验证这个答案就确信工作端为了求的结果已经完成了量相当大的计算工作. 但PoW机制存在明显的弊端.

    • 一方面,PoW的前提是节点和算力是均匀分布的,但随着人们将CPU挖矿逐渐升级到 GPU,FPGA,ASIC矿机挖矿,算力越来越集中.

    • 另一方面, PoW太浪费资源了.比特币网络每秒可完成数百万亿次SHA256计算,但这些
      计算除了使恶意攻击者不能轻易地伪装成几百万个节点和打垮比特币网络,并没有任何 实际或科学价值.

    共识算法-BFT类算法(Byzantine Fault Tolerance):
    这个不赘述,只需有一个结论,节点总数n,不诚实节点m的关系:n>3*m.

    共识算法-结合可信执行环境的共识算法

    • 可信计算是在计算和通信系统中广泛使用基于硬件安全模块支持下的可信计算平台,以 提高系统整体的安全性.

    • 早期可信计算的研究主要以国际可信计算工作组TCG (Trusted Computing Group)为主.可信计算最核心的就是TPM硬件芯片,其TPM (Trusted Platform Module) 1.2规范是比较经典的, 大多数厂家的芯片都以TPM 1.2为标准,该规范已经升级到TPM 2.0.

    • 国内对应的是TCM(Trusted Computing Module)芯片,可以参考“可信计算密码支撑平台功能与接口规范”,而且已经成为国家标准,即GB/T 29829-2013.

    • 随着可信计算的发展,可信平台模块不一定再是硬件芯片的形式,特别是在资源比较受限的 移动和嵌入式环境中,可信执行环境(TEE,Trusted Execution Environment)的研究比较 热,如基于ARM TrustZone、智能卡等可以实现可信计算环境;

    • 2013年, Intel推出SGX(Software Guard Extensions)指令集扩展,旨在以硬件安全为强制性保障, 不依赖于固件和软件的安全状态,提供用户空间的可信执行环境,通过一组新的指令集扩展与访问控制机制,实现不同程序间的隔离运行,保障用户关键代码和数据的机密性与完整 性不受恶意软件的破坏.

    在这里插入图片描述

    参考链接:https://blog.csdn.net/kouryoushine/article/details/89966837

    2.4.4 智能合约

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.5 区块链与密码货币的关系

    区块链和加密数字货币并不能等同。不赘述。

    展开全文
  • 区块链 PPT 科普 学习 扫盲 原理 详解 比特币 最全 合集 打包 区块链技术概述 区块链扫盲、起源、应用及技术 区块链原理详解_(2018整理) 最新区块链技术原理详解
  • 区块链技术详解

    万人学习 2016-11-21 13:30:59
    区块链技术入门教程,该课程对目前区块链知识进行一次体系化的讲解,使得初学者能迅速抓住区块链技术的核心思想,对区块链应用和智能合约有一个的、由浅入深的了解。
  • 比特币和区块链介绍 区块链 区块链技术概述 区块链扫盲、起源、应用及技术 比特币和区块链介绍 区块链 区块链技术概述 区块链扫盲、起源、应用及技术
  • 区块链技术汇总

    2018-11-07 09:15:58
    memcached权威指南 精通比特币 区块链技术原理详解 区块链技术指南 中国区块链技术应用发展白皮书-2016
  • 区块链原理详解 _BILLING 北京联合信息技术股份有限公司 2017.01 1 3/16/2020 目录 区块链简介 1 特征及分类 2 区块链网络 3 数据结构 4 核心问题 5 前景展望 6 2 3/16/2020 1. 区块链简介 区块链技术是构建比特币...
  • 区块篝原理详解=B9 北京联合信息技术股份有限公司 201701 区块链简介 特征及分类 区块链网络 目录 数据结构 核心问题 6>前景展望 1区块链简介 背景 传统支付系统 互联网上的贸易,几乎都需要借助可资信赖的第三 方...
  • 背景 专统支付系统 互联网上的贸易,几乎都需要借助可资信赖的第三 方信用机构来处理电子支付信息这类系统仍然内 数字签名 生性地受制于基于信用的模式 第三方机构 记录账本 数字签名 区块链支付系统 区块链技术是...
  • 深入理解区块链技术原理和应用

    千次阅读 2019-10-30 00:47:53
    区块链是什么? 通俗来说,区块链(Blockchain)就是一种记账的方式,账本(block)通过一条一条的记录连起来(chain),并且这个账本是每个人都有一份。 区块链有什么特点? 这个账本比较特别,最特别的一点...

    区块链是什么?

    通俗来说,区块链(Blockchain)就是一种记账的方式,账本(block)通过一条一条的记录连起来(chain),并且这个账本是每个人都有一份。

     

    区块链有什么特点?

    这个账本比较特别,最特别的一点是每个人都有一份。这是区块链去中心化特点的来源,普通的账本只有一份,在保管人手中(中心节点,比如银行),但区块链每个人都有这个账本。

    每个人都有账本的另一个好处是不可篡改。因为这个账本每个人都有,除非你把超过一半人的账本都改了,不然大家一对账,少数服从多数就能恢复正确的账本了。持有账本的人越多,篡改难度越大,到一定基数后基本是不可能篡改成功的。

     

    匿名是区块链的特征吗?很多文章都在讲区块链的匿名特性,很遗憾,不是的,只能说是目前比特币的特征。虽然区块链中的账本使用了大量的加密技术,但不是为匿名服务的,主要是为了不可篡改,为了安全和信任。当然,区块链的去中心化也为匿名提供了方便,但本质上,区块链不具有完全的匿名属性,区块链未来的发展方向也不会是匿名

    消除区块链的匿名非常简单,只需要在注册时提供真实资料审核后才能开通就行,和手机号要求实名制、各种APP要求手机号注册一样。目前的比特币是匿名的,因此也成为了犯罪的重灾区,之前很多网络勒索病毒都是要求支付比特币,也不是支付宝、微信或者是PayPal,因为后面的支付方式都要求实名注册

     

    区块链有哪些问题?

    。每人都有完整的账本,这效率得有多低。试想一下,如果支付宝的交易记录每个人都有一份,手机上能存的下吗?另外,每一笔交易都要无误地传送,每秒的交易量也不能太多,否则手机也处理不过来。据说当前比特币每秒只支持6笔交易,所以比特币只能炒一炒,不具备实用的可能性。

     

    去中心化。这是优势同时也是劣势,中心化系统容易监管,容易控制,去中心化的系统相对来说比较游离,一旦发展壮大,可能控制的难度就会越来越大,这是监管层不愿意看到的。

     

    技术未来是什么?

    “要抓住区块链技术融合、功能拓展、产业细分的契机,发挥区块链在促进数据共享优化业务流程降低运营成本提升协同效率建设可信体系等方面的作用。要推动区块链和实体经济深度融合,解决中小企业贷款融资难、银行风控难、部门监管难等问题。要利用区块链技术探索数字经济模式创新,为打造便捷高效、公平竞争、稳定透明的营商环境提供动力,为推进供给侧结构性改革、实现各行业供需有效对接提供服务,为 加快新旧动能接续转换、推动经济高质量发展提供支撑。”

     

    目标很好,都是当前非常需要进步的方向,但是推动起来的难度可想而知,原因大家也心知肚明。如果能借助区块链的春风,一定程度解决这些问题,何乐而不为呢?至于具体技术,是区块链还是街区链,又有什么关系呢?

     

    相关文章

    人工智能技术分析

    人工智能 机器学习 深度学习

    第六届世界互联网大会乌镇峰会简评

    华为人工智能战略分析:2019华为全连接大会

    阿里含光 VS 华为昇腾:AI芯片路在何方

    AI人工智能三要素:数据、算力和算法

    计算机视觉(CV)任务介绍:分类、检测、分割、超分、关键点识别、图像生成、度量学习

    理解深度学习中的分类网络:LeNet

     

    PyTorch 1.3

    tf.GradientTape详解:梯度求解利器

    TensorFlow高阶API和低阶API

    TensorFlow静态图和eager机制

    TensorFlow 2.0

    TensorFlow高阶API和低阶API

    TensorFlow调试技巧

    TensorFlow与PyTorch对比

    PyCharm调试技巧

    解读谷歌的AI杀手级专利:Dropout

     

    AutoML算法分析(一):基于强化学习的算法

    SENet详解

     

    关于我

    缘起:新的开始

     

    公众号持续更新,欢迎订阅。

     

    AI人工智能与大数据

    展开全文
  • * * * * * * * * * * * * 区块链Blockchain是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案 1-区块链的定义和来源 概念首次出现比特币一种点对点的电子现金系统 ----Satoshi Nakamoto 1-区块链的...
  • * * * * * * * * * * * * 区块链Blockchain是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案 1-区块链的定义和来源 概念首次出现比特币一种点对点的电子现金系统 ----Satoshi Nakamoto 1-区块链的...
  • 比特币区块链核心技术详解

    千次阅读 2019-12-27 14:32:19
    并且从技术角度,具体分析了如数字加密、P2P 网络等区块链的核心技术区块链的出现主要解决的是传统中心化网络部署方式所带来的众多问题,包括 : 1) 交易非公开化,中心节点掌握分布节点信息,分节点不掌握...

    导语:本文比较详细的描述区块链利用分布式部署 P2P 网络和同步更新方式,以解决传统中心化网络部署方式所带来的众多问题。并且从技术角度,具体分析了如数字加密、P2P 网络等区块链的核心技术。

     

    区块链的出现主要解决的是传统中心化网络部署方式所带来的众多问题,包括 :

    1) 交易非公开化,中心节点掌握分布节点信息,分节点不掌握其他节点信息 ;

    2) 系统安全性取决于中心节点安全性,中心节点存在道德风险,可利用大数据进行数据变现,存在隐私泄露风险 ;

    3) 系统风险性随着网络规模扩大而上升 ;

    4) 中心节点维护系统运行涉及较高成本等。

    源于比特币,区块链利用分布式部署 P2P 网络和同步更新完成了对于以上问题的解决 :

    1) 分布式方面:

    区块链每个节点掌握各个节点信息,信息可以采用匿名化原则,但交易公开,且系统内交易批准取决于所有节点共识性原则,规则对于所有节点公平且强制,因此,随着网络规模扩大,系统风险性反而下降 ;

    2) 同步更新方面:

    由于每个节点都存有过去所去所有交易的历史记录,且每 10 分钟交易所组成的比邻区块之间存在逻辑嵌套关系,故随着时间推移,交易增多,每个节点内同步更新的链条愈发变长,愈发难以被篡改。

    比特币完成了区块链「从 0 到 1」的诞生,比特币区块链交易简易流程:

    1) 交易定义

    公共钥匙加密 (PublicKeyCryptography)。比特币区块链 PKC 目前为每位网络参与者提供两把钥匙,一个为其他用户所知的公匙 (相当于用户用户名),一个只为用户自己所知的私匙 (相当于用户密码),任何有你公匙的参与者可以给你发送一条加密信息,该信息只有你可以读到。

    使用私匙,发信人可以在加密信息中进行数字签名,向收信人证明发信人是你自己。KPC 采用椭圆不对称加密技术,安全性较强。

    如何发送比特币 ? 例 : A 向比特币区块链网络中发送一条或多条信息, A 在信息中指名发送人和收件人的地址。对于每个收件人地址,A 指名发送的比特币数量。

    A 在信息中利用私匙对信息进行数字签名,向收件人证明身份。信息发送后,A 等待比特币区块链网络对于信息进行验证和确认。

    2) 单节点交易核查

    A 的交易信息发送后,当比特币区块链网络内任一节点上的机器收到了信息,其开始做以下处理 :

    检查该机器自身是否已经处理过此次交易 (确定交易唯一性); 检查交易涉及地址是否合法有效 ; 检查数字签名,以确保原发信者是 Input 地址合法有效的拥有者 ; 检查发件人这笔比特币有没有在别的地方被花费提取过 ; 检查发件人比特币数量至少是和收件人预收的比特币数量相同 (Input>Output,任何不同差额为手续费用)。

    如果以上检查没有问题,节点将交易标注成有效,将其列入「未确认交易」名单。

    然后将信息广播至网络内其它节点,网络内众节点开始对交易进行节点共识验证,并在网络中进行广播。进行单点验证的矿工可以获得一小部分比特币获得奖励。

    3) 加入区块,区块创造

    该笔交易被一个挖矿节点验证,验证成功后会被添加到区块中。每个节点要正确无误的给这十分钟的每一笔交易盖上时间戳并记入最新的区块中,所以每个区块包含过去十分钟的所有交易。

    4) 节点共识验证

    每个矿工节点需通过解 SHA256 的算法来竞争过去十分钟区块的合法记账权,并争取得到 12.5 个比特币的奖励 (该数量基本是每四年递减一半,目前已挖出 1600 万以上比特币)。

    若一个矿工节点解开了这十分钟的 SHA256 难题,其将向全网公布其这十分钟区块记录的所有盖时间戳交易,并由全网其他矿工节点核对。

    5) 区块成链

    全网其他矿工节点核对该区块记账的正确性 (因为他们同时也在盖时间戳记账,只是没有竞争到合法区块记账权,因此无奖励),没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块单链,也就是比特币支付系统的总账—区块链。

    一般来说,每一笔交易,必须经过六次区块确认,也就是六个十分钟共计 60 分钟,才能最终在区块链上被承认合法交易。

    比特币区块链本身是一种全球分布式数据库,最大的特点是没有中央管理员,因此无法被单一方所控制,但同时可以做到交易传输数据的可信性。

    网络节点 (nodes) 为矿工,负责承载网络运输任务,同时其负责交易的验证以及信息记录储存。

    个人用户,商家等可以通过钱包和交易所形式介入比特币区块链网络,但其不涉及区块链的交易验证和记录储存。

    区块链核心技术之一:数字加密

    比特币的所有权通过数字密钥、比特币地址和数字签名予以确认,比特币钱包中只有密钥,不包含比特币。

    由于每笔交易需一个有效签名才能被处理存储,因此拥有密钥相当于拥有了帐户中比特币的所有和控制权。

    公私钥为 1 对 1 成对出现,公钥相当于用户名,私钥相当于密码,私钥为随机生成的数字,通过不可逆椭圆曲线运算加密函数运算出公钥,公钥经过哈希函数运算得出一个比特币地址,可公开且分享。

    区块链核心技术之二:P2P 网络

    拥有去中心化、抗攻击、协助传输、韧性强的特点。

    区块链核心技术之三:区块和链

    挖矿流程 (1/2)

    挖矿由矿工型节点共同参与,由于需要保证节点之间的同步,所以新区块的添加速度不能太快。

    因为每个区块的后面,只能跟着一个区块,矿工永远只能在最新区块的后面,生成下一个区块。

    因此若区块添加速度过快,就会出现刚刚同步了一个区块并准备基于其生成下一个区块,别的节点又有新区块生成的情况。因此比特币区块链白皮书协议中设置故意让添加新区块变得较困难—平均每 10 分钟,全网才能生成一个新区块。

    需注意,这种产出速度并非由白皮书硬性命令规定,而是通过使海量计算成为得出有效 Hash 的先决条件,从而控制区块产生时间约为 10 分钟。

    目标值 (TheTarget):

    解密的过程为各个矿工在区块头所包含的叠加内容 (参见「区块头」部分) 基础上放置随机数字链 (工作量,ProofofWork),经过 SHA256 反复计算后达成目标值。

    矿工解密运算 Hash 的有效性跟目标值密切相关,只有小于目标值的 Hash 才有效,不然则无效,必须重算。

    每个区块头包含一个难度系数,此值决定了计算 Hash 难度。区块链协议规定,使用一个常量除以难度系数 (Target=TargetMax/Difficulty),可得到目标值。难度系数越大,目标值就越小。

    随着全网算力提升,难度系数快速上升。例,第 10000 个区块难度系数为 14,484.16,而第 504,000 个区块难度系数已上升为 2,227,847,638,503.63。

    为了将产出速率恒定在十分钟,比特币区块链白皮书内设计了难度系数的动态调节机制。难度系数每两周 ( 2016 个区块) 调整一次。

    若 2 周内,区块平均生成速度是 8 分钟,就意味着比法定速度快了 20%,因此难度系数就要调高 20%; 若平均生成速度是 12 分钟,就意味着比法定速度慢了 20%,难度系数就要调低 20%。

    随机数 (TheNonce):

    随机数为只能使用一次的密码数字,若矿工通过哈希运算产生了一个大于目标数的哈希值,则其需选择随机值重新进行计算,直到找到小于或等于目标数的哈希值。

    更具体和直接解释整个流程 (3) 挖矿流程 (2/2)

    MerkleRoot 是区块头部分内的 Hash 值,代表了区块体部分内的所有交易。在比特币区块链中,每笔交易产生后,都已经被 Hash 成一段代码并广播给各节点。

    在各节点的区块中,可能包含数百笔到数千笔的交易,因此,为节省储存空间并减少资源耗费,比特币区块链的设计原理採用 MerkleTree 机制,让这些数百到数千笔的交易 Hash 值经由两两一组形成一个新 Hash 值的方式,不断重複进行,直到最后产生一组最终的 Hash 值,也就是 MerkleTreeRoot,这个最终的 Hash 值便会被记录到 BlockHeader 中,只有 32 Bytes 的大小。

    MerkleTree 机制可大幅减少资料传输量与运算资源消耗,验证时,只需验证这个 MerkleTree 的 Root 值即可。

    分叉和六度认证

    分叉 :

    区块链中,每个子区块只有一个父区块,但当不同的矿工发现不同的区块时 (两个矿工同时解出了 SHA256 算法,并进行全网广播),会出现一个父区块暂时拥有很多子区块的情况,这种情况被称为分叉。

    在任何区块里,第一条都没有转出地址,就是所谓的 CoinBase (挖矿交易),没有任何人付给矿工这笔钱,矿工只是理所应当的写上自己获得了 12.5 比特币。

    若所有节点皆认可矿工这样写,则矿工得到该笔挖矿收入。不同的矿工在填写区块的时候,数据一定是不一样的,因为每个矿工的第一条肯定不一样,矿工只会把挖矿收入转入自己的地址。

    所以比如说矿工 A 的 CoinBase 是「 A 获得了 12.5 比特币」,矿工 B 的 CoinBase 是 「 B 获得了 12.5 比特币」。

    由于每个矿工的区块数据皆不同,所以他们解题得出的结果也是不一样的,都是正确答案,只是区块不同。

    由于距离远近,不同的矿工看到这两个区块是有先后顺序的。通常情况下,矿工们会把自己先看到的区块复制过来,然后接着在这个区块后开始新挖矿工作。

    从分叉的区块起,由于不同的矿工跟从了不同的区块,在分叉出来的两条不同链上,算力存在差别,形象地说,就是跟从两个链矿工的数量是不同的。

    由于解题能力和矿工的数量成正比,因此两条链的增长速度也会不一样。一段时间后,总有一条链的长度要超过另一条。

    当矿工发现全网有一条更长的链时,其就会抛弃他当前的链,把新的更长的链全部予以复制,在这条链的基础上继续挖矿。所有矿工都这样操作,这条链就成为了主链,分叉出来被抛弃掉的链就消失。

     

     

    最终网络内只有一条链会被保留,成为真正账本,其他分链皆为无效。交易区块所引伸的区块「长度」越长 (包含算力越强),越不容易被网络内其他节点所改变或否认,一般来说一笔交易要经过 6 次确认才会被最终记录下来,「六级」是比特币用户所认可的最终确认等级。

    展开全文
  • 你能找得到的一篇最完整的原理简介
  • 与其他区块链平台例如以太坊或者EOS相比,tendermint最大的特点是其差异化的定位: 尽管包含了区块链的完整实现,但它却是以SDK的形式将这些核心功能提供出来,供开发者 方便地定制自己的专有区块链: 汇智网 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,753
精华内容 701
关键字:

区块链技术原理详解