区块链基础知识点整理
区块链工程基础知识单选题100道及答案解析

区块链工程基础知识单选题100道及答案解析1. 区块链的核心特点不包括()A. 去中心化B. 不可篡改C. 高扩展性D. 安全可靠答案:C解析:区块链的核心特点包括去中心化、不可篡改、安全可靠等,高扩展性不是其核心特点。
2. 区块链中每个区块都包含了()A. 上一个区块的哈希值B. 下一个区块的哈希值C. 随机数D. 所有交易的详细信息答案:A解析:每个区块都包含了上一个区块的哈希值,以此形成链式结构。
3. 以下哪种共识机制耗能较低()A. PoWB. PoSC. DPoSD. PBFT答案:B解析:PoW 耗能较高,PoS 相对耗能较低,DPoS 和PBFT 耗能也低于PoW。
4. 区块链中的智能合约是()A. 一段自动执行的代码B. 一种法律合同C. 人工审核的合约D. 纸质合同的数字化版本答案:A解析:智能合约是一段部署在区块链上能自动执行的代码。
5. 区块链1.0 时代的主要应用是()A. 数字货币B. 智能合约C. 去中心化应用D. 跨链技术答案:A解析:区块链1.0 时代主要以数字货币为代表应用。
6. 以下哪个不是区块链的分类()A. 公有链B. 私有链C. 联盟链D. 混合链答案:D解析:常见的区块链分类为公有链、私有链和联盟链。
7. 区块链中用于确保交易合法性的是()A. 加密算法B. 共识机制C. 哈希函数D. 数字签名答案:D解析:数字签名用于确保交易的合法性和不可否认性。
8. 比特币使用的区块链技术属于()A. 公有链B. 私有链C. 联盟链D. 以上都不是答案:A解析:比特币的区块链是典型的公有链。
9. 区块链中的分叉分为()A. 硬分叉和软分叉B. 前向分叉和后向分叉C. 左分叉和右分叉D. 以上都不是答案:A解析:区块链中的分叉主要分为硬分叉和软分叉。
10. 区块链中的哈希函数具有()A. 单向性B. 双向性C. 随机性D. 可预测性答案:A解析:哈希函数具有单向性,即从输入计算输出容易,但从输出反推输入几乎不可能。
区块链知识点

区块链知识点前言:什么是区块连对区块链最好的描述是将其描述为一个公共数据库,它由网络中的许多计算机更新和共享1.只有在数字签名以不少于连续10 个零开头的情况下,对应的区块才能上链。
2.区块包含:1)交易数据;2)上一个区块的签名;3)nonce3.目前为止,遭受过51% 攻击的著名区块链有bitGold、Verge、Ethereum Class4.代币其实是一种新型互联网货币,可能会影响到一部分行业,其中一个典型的例子就是股票市场。
6.区块链的另一个重要特性:去中心化。
7.两个人同时上传,虽然这个概率很小,但是若发生,我们就看最后的区块链哪条更长,短的那条就失效。
这就是区块链中的“双花问题”(同一笔钱花两次)。
一:为什么要去中心化1.为了安全和信任2.比特币是一个完全分布式系统,系统由许多节点组成。
3.每个节点都有记账能力。
4.每一个记录都需要公证,全网节点共识,共识方式就是以上说的“挖矿”,又叫做工作量共识方式(共识的方式除了“挖矿”,还有很多种,后面再介绍。
)5.随着交易不断进行,区块不断生产,每个节点上的区块按时间顺序串在一起就形成了区块链条。
二:区块头版本号(version):版本号哈希值(Hash):当前区块hash值前驱区块哈希值(Previous Block):前驱区块hash值后续区块哈希值(Next Block(s)):后续区块hash值交易总数(Number Of Transactions):交易数量时间戳(Timestamp):时间戳随机数(Nonce):随机数,在比特币系统中,“挖矿”就是找这个随机数。
默克尔树根哈希值(Merkle Root):交易记录的默克尔根区块体装的是记录列表。
三:区块链工作流程1.发生交易记录时发送节点全网广播记录。
2.节点监听到新的交易记录。
3.节点对交易记录进行验证并放入节点缓存区。
4.节点开始"算题",争取到记账权,打包记录生成区块,并向全网广播进行共识。
区块链知识点总结

区块链知识点总结区块链是一种分布式数据库技术,通过将数据以块的形式链接在一起,实现去中心化、不可篡改的共享账本。
以下是一些区块链的关键知识点:1. 分布式和去中心化:-区块链是一种分布式数据库,数据存储在多个节点上,而不是集中在单个中心服务器上。
-去中心化意味着没有中央权威,参与者共同维护和控制网络。
2. 区块和链:-区块是包含一定数量的交易信息的数据块,每个区块都包含前一个区块的哈希值,形成了一个链。
-区块链的设计使得修改任何一个区块都会影响到后续所有的区块,从而确保数据的安全性和不可篡改性。
3. 加密技术:-区块链使用密码学技术确保数据的机密性和完整性。
-哈希函数用于生成唯一的区块标识符,确保区块的唯一性。
-公钥加密和私钥解密用于确保只有拥有私钥的人能够访问数据。
4. 共识算法:-为了达成一致,区块链网络中的节点需要采用共识算法,例如工作量证明(Proof of Work)或权益证明(Proof of Stake)。
-共识算法确保在网络中达成关于事务和区块顺序的共同认可。
5. 智能合约:-智能合约是在区块链上执行的自动化合同。
它们是由代码编写的,根据预定义的规则执行。
-以太坊是一个支持智能合约的区块链平台。
6. 代币和加密货币:-区块链网络通常与加密货币相关,其中代币(Token)是在区块链上的数字资产,例如比特币(Bitcoin)或以太币(Ether)。
-加密货币是区块链网络中的数字货币,可用于价值交换。
7. 链下和链上解决方案:-链下解决方案是在区块链之外实现的技术,例如隐私保护、扩展性解决方案等。
-链上解决方案是直接构建在区块链上的技术,如智能合约和去中心化应用程序(DApps)。
8. 区块链应用场景:-区块链在金融、供应链管理、医疗保健、投票系统等领域都有潜在的应用。
-去中心化的特性使得区块链可以提供透明、可追溯和安全的解决方案。
这些是区块链的一些关键知识点,这一领域正在不断发展,新的技术和应用场景不断涌现。
区块链金融基础知识

区块链金融基础知识区块链金融基础知识随着数字经济的发展,区块链技术在金融领域的应用越来越广泛。
区块链金融作为一种新兴的金融模式,正在逐渐改变着传统金融的格局。
那么,什么是区块链金融?它有哪些基础知识呢?一、什么是区块链金融?区块链金融是指利用区块链技术来实现金融业务的一种新型金融模式。
它通过去中心化、不可篡改、安全可靠等特点,实现了金融交易的高效、透明和安全。
区块链金融可以应用于多个领域,如数字货币、智能合约、供应链金融等。
二、区块链金融的基础知识1. 区块链技术区块链技术是区块链金融的基础。
它是一种去中心化的分布式数据库技术,通过多个节点的共同验证和维护,实现了数据的安全可靠和不可篡改。
区块链技术的核心是区块,每个区块包含了多个交易记录和上一个区块的哈希值,形成了一个不可篡改的链式结构。
2. 数字货币数字货币是区块链金融的重要应用之一。
它是一种基于区块链技术的加密货币,具有去中心化、匿名性、不可篡改等特点。
比特币是最早的数字货币,目前已经成为了全球范围内的数字货币标准。
3. 智能合约智能合约是区块链金融的另一个重要应用。
它是一种基于区块链技术的自动化合约,可以自动执行合约条款,实现交易的自动化和去中心化。
智能合约可以应用于多个领域,如金融、物流、医疗等。
4. 供应链金融供应链金融是区块链金融的另一个应用领域。
它是一种基于区块链技术的金融服务,可以为供应链上的各个环节提供融资、结算、风险管理等服务。
供应链金融可以提高供应链的效率和透明度,降低融资成本和风险。
三、总结区块链金融是一种新型的金融模式,它利用区块链技术实现了金融交易的高效、透明和安全。
区块链金融的基础知识包括区块链技术、数字货币、智能合约和供应链金融等。
随着数字经济的发展,区块链金融将会在更多的领域得到应用,成为数字经济发展的重要推动力量。
区块链的知识点总结

区块链的知识点总结区块链知识点总结。
一、区块链的概念。
1. 定义。
- 区块链是一种分布式账本技术。
它将数据以区块的形式按时间顺序依次连接起来,每个区块包含了一定时间内的交易数据等信息。
这种账本由多个节点共同维护,不存在单一的中心控制机构。
- 例如比特币网络,它的交易记录都被存储在区块链上,全球众多的比特币节点共同维护这个账本,确保交易的真实性和不可篡改性。
2. 特点。
- 去中心化。
- 没有一个中心节点来控制整个系统。
在传统的金融系统中,银行是中心机构,负责处理交易、保存账户信息等。
而在区块链系统中,各个节点地位平等,都参与数据的验证和存储。
- 以以太坊为例,众多的节点分布在全球各地,共同参与以太坊区块链的运行,没有一个类似银行总部这样的中心来指挥。
- 不可篡改。
- 一旦数据被记录到区块链上,就很难被修改。
这是因为每个区块都包含了前一个区块的哈希值(一种加密算法生成的数字指纹),如果要修改某个区块的数据,就需要同时修改后续所有区块的哈希值,这在计算上几乎是不可能的。
- 比如在区块链上记录的房产交易记录,一旦记录成功,就无法被恶意篡改,保证了交易信息的真实性和稳定性。
- 透明性。
- 区块链上的数据是公开透明的(在公有链中),虽然交易双方的身份可能是匿名的(通过加密技术实现),但是交易的内容和过程是可以被查看的。
- 像比特币的区块链浏览器,可以查看每一笔比特币的交易流向,包括交易的金额、时间等信息。
二、区块链的结构。
1. 区块的组成。
- 区块头。
- 包含了版本号、前一区块的哈希值、默克尔根(一种对区块内交易数据进行哈希计算得到的根值)、时间戳和难度目标等信息。
- 例如在比特币的区块头中,前一区块的哈希值就像链条中的一环,将本区块与前一个区块连接起来,确保区块链的顺序性。
- 区块体。
- 主要包含了交易数据。
这些交易数据可以是数字货币的转账交易,也可以是智能合约相关的操作等。
- 在以太坊中,除了普通的以太币转账交易外,还有大量与智能合约交互的交易数据被记录在区块体中。
区块链基础知识点整理

区块链基础知识点整理一、区块链技术1.什么是区块链?去中心化的、分布式的、区块化存储的数据库存储全部账户余额及交易流水的总账本每个节点有完整的账本数据账本数据记录了全部的历史交易数据交易数据存储在区块上每个区块包含前一区块ID及HASH,形成链2.区块链基本原理如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。
交易(Transaction):一次操作,导致账本状态的一次改变,如添加一条记录区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。
3.区块链要解决的问题如何去中心化地共享数据?如何确保账户不被冒用?如何确保账户余额足够?如何确保交易记录不被篡改?谁负责记账?怎么保障记账者的可信?怎么保障记账者的积极性?4.区块链特性去中心化开放性(没有限制,开源,数据公开)去信任(仅信任机器)自治性,集体维护可靠的数据库(不可更改,永远可访问)匿名性,隐私保护5.核心技术P2P网络、数字签名、区块化数据库,竞争记账权、共识算法、交易回溯。
二、P2P网络及通讯技术(分布式技术网络)1.自动发现通过种子文件,获取初始节点(地址及端口)连接初始节点,获取初始节点知道的Peer把自己的地址及端口广播给各个Peer接收各个Peer广播的地址信息,构建出网络的全貌或片段2.技术领域分布式存储、分布式计算、分布式协同组播流媒体搜索引擎3.通信协议napster、Gnutella、eDonkey、Bittorrent(文件分发协议)XMPP、Jabber(即时通信协议)Paxos、Gossip(分布式系统状态同步协议)JXTA4.使用HASH算法及非对称加密及签名技术每个节点、每个人有唯一的一对公钥及私钥公钥同时也是每个节点、个人的地址和账号私钥是证明”我就是我“的唯一手段HASH算法对数据进行规整5.算法RSA、Elgamal、D-H、ECCSHA256、RIMPED1606.通常使用椭圆曲线算法生成密钥对比特币密钥长度:256位公钥哈希值=RIMPED160(SHA256(公钥))比特币地址=1+Base58(0+公钥哈希值+校验码)校验码=前四字节(SHA256(SHA256(0+公钥哈希值)))7.加密发送方使用接收方的公钥加密数据接收方使用本方的私钥解密数据通常使用本方面交换对称加密的Key8.签名发送方使用HASH算法计算数据的HASH值发送方使用本方的私钥加密HASH值,得到签名接收方使用HASH算法计算数据的HASH值接收方使用发送方的公钥解密签名得到发送的HASH值比较两个HASH值的一致性9.参考ElGamal算法,是一种较为常见的加密算法,它是基于1984年提出的公钥密码体制和椭圆曲线加密体系。
区块链基本知识

区块链基本知识1. 区块链概述区块链技术是一种革命性的分布式数据库技术,它通过去中心化、加密安全、不可篡改和可追溯性等特性,为众多领域带来了前所未有的信任和透明度。
其核心概念是将数据打包成一个个区块,并按照一定顺序连接起来形成链式结构,每一个区块中都包含了一定数量的交易记录或其他数据信息。
在区块链系统中,数据的存储、维护和更新是由网络中的多个参与者共同完成的。
这种去中心化的特点使得区块链具有较高的抗篡改性,因为攻击者很难同时篡改多个区块中的数据。
由于每个区块都包含了前一个区块的哈希值,因此一旦某个区块的数据被篡改,其后的所有区块的哈希值都将发生变化,这使得篡改行为很容易被发现。
区块链技术最初是为比特币这种加密货币而设计的,用于确保交易的安全和透明。
它的潜力远远超出了金融领域,已经被应用于供应链管理、物联网、版权保护、医疗保健等多个行业。
通过智能合约等功能,区块链还可以实现复杂的业务流程自动化和优化。
区块链技术以其独特的优势和广泛的应用前景,正在改变着我们的生活和社会。
1.1 什么是区块链区块链是一种分布式数据库技术,它通过将数据以区块的形式链接在一起,形成一个不断增长的链式结构。
每个区块都包含一定数量的交易记录,并通过加密算法和共识机制确保数据的安全性和不可篡改性。
区块链技术最初是为比特币而设计的,但现在已经发展成为一种广泛应用于各种领域的通用技术。
去中心化:区块链网络中的节点不需要中央机构进行协调和管理,而是通过分布式共识机制来达成一致。
这使得区块链具有高度的去中心化特性,降低了单点故障的风险。
数据不可篡改:区块链中的每个区块都包含了前一个区块的哈希值,这使得一旦有区块被篡改,其后的区块将无法通过验证。
区块链的数据具有很高的抗篡改性。
智能合约:区块链上的交易可以通过智能合约自动执行,无需第三方介入。
智能合约是一段可编程的代码,当满足特定条件时,会自动执行相应的操作。
加密货币:区块链技术最初是为了支持比特币等加密货币的发展而诞生的。
区块链入门必备108知识点

区块链入门必备108知识点
1、什么是区块链
把多笔交易的信息以及表明该区块的信息打包放在一起,经验证后的这个包就是区块链。
每个区块里保存了上一个区块的hash值,使区块之间产生关系,也就是说的链了。
合起来就叫区块链。
2.什么是比特币
比特币概念是2009年中本聪提出的,总量是2100万个。
比特币链大约每10分钟产生一个区块,这个区块是矿工挖了10分钟挖出来的。
作为给矿工奖励,一定数量的比特币会发给矿工们,但是这个一定数量是每四年减半一次。
现在是12.5个。
照这样下去2040年全部的比特币问世。
3.什么是以太坊
以太坊与比特币最大的区别是有了智能合约。
使得开发者在上边可以开发,运行各种应用。
4.分布式账本
它是一种在网络成员之间共享,复制和同步的数据库。
直伯说,在区块链上的所有用户都有记账功能,而且内容一致,这样保证了数据不可篡改性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、区块链技术1.什么是区块链?去中心化的、分布式的、区块化存储的数据库存储全部账户余额及交易流水的总账本每个节点有完整的账本数据账本数据记录了全部的历史交易数据交易数据存储在区块上每个区块包含前一区块ID及HASH,形成链2.区块链基本原理如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。
交易(Transaction):一次操作,导致账本状态的一次改变,如添加一条记录区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。
3.区块链要解决的问题如何去中心化地共享数据?如何确保账户不被冒用?如何确保账户余额足够?如何确保交易记录不被篡改?谁负责记账?怎么保障记账者的可信?怎么保障记账者的积极性?4.区块链特性去中心化开放性(没有限制,开源,数据公开)去信任(仅信任机器)自治性,集体维护可靠的数据库(不可更改,永远可访问)匿名性,隐私保护5.核心技术P2P网络、数字签名、区块化数据库,竞争记账权、共识算法、交易回溯。
二、P2P网络及通讯技术(分布式技术网络)1.自动发现通过种子文件,获取初始节点(地址及端口)连接初始节点,获取初始节点知道的Peer把自己的地址及端口广播给各个Peer接收各个Peer广播的地址信息,构建出网络的全貌或片段2.技术领域分布式存储、分布式计算、分布式协同组播流媒体搜索引擎3.通信协议napster、Gnutella、eDonkey、Bittorrent(文件分发协议)XMPP、Jabber(即时通信协议)Paxos、Gossip(分布式系统状态同步协议)JXTA4.使用HASH算法及非对称加密及签名技术每个节点、每个人有唯一的一对公钥及私钥公钥同时也是每个节点、个人的地址和账号私钥是证明”我就是我“的唯一手段HASH算法对数据进行规整5.算法RSA、Elgamal、D-H、ECCSHA256、RIMPED1606.通常使用椭圆曲线算法生成密钥对比特币密钥长度:256位公钥哈希值=RIMPED160(SHA256(公钥))比特币地址=1+Base58(0+公钥哈希值+校验码)校验码=前四字节(SHA256(SHA256(0+公钥哈希值)))7.加密发送方使用接收方的公钥加密数据接收方使用本方的私钥解密数据通常使用本方面交换对称加密的Key8.签名发送方使用HASH算法计算数据的HASH值发送方使用本方的私钥加密HASH值,得到签名接收方使用HASH算法计算数据的HASH值接收方使用发送方的公钥解密签名得到发送的HASH值比较两个HASH值的一致性9.参考ElGamal算法,是一种较为常见的加密算法,它是基于1984年提出的公钥密码体制和椭圆曲线加密体系。
既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。
在加密过程中,生成的密文长度是明文的两倍,且每次加密后都会在密文中生成一个随机数K,在密码中主要应用离散对数问题的几个性质:求解离散对数(可能)是困难的,而其逆运算指数运算可以应用平方-乘的方法有效地计算。
也就是说,在适当的群G中,指数函数是单向函数。
椭圆曲线密码体制是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制。
解椭圆曲线上的离散对数问题的最好算法是Pollard rho方法,其时间复杂度为,是完全指数阶的。
其中n为等式(2)中m的二进制表示的位数。
当n=234,约为2117,需要1.6x1023 MIPS年的时间。
而我们熟知的RSA所利用的是大整数分解的困难问题,目前对于一般情况下的因数分解的最好算法的时间复杂度是子指数阶的,当n=2048时,需要2x1020MIPS年的时间。
也就是说当RSA的密钥使用2048位时,ECC的密钥使用234位所获得的安全强度还高出许多。
它们之间的密钥长度却相差达9倍,当ECC的密钥更大时它们之间差距将更大。
更ECC密钥短的优点是非常明显的,随加密强度的提高,密钥长度变化不大。
DH Diffie-Hellman算法(D-H算法),密钥一致协议,是由公开密钥密码体制的奠基人Diffie 和Hellman所提出的一种思想。
简单的说就是允许两名用户在公开媒体上交换信息以生成”一致”的、可以共享的密钥。
换句话说,就是由甲方产出一对密钥(公钥、私钥),乙方依照甲方公钥产生乙方密钥对(公钥、私钥)。
以此为基线,作为数据传输保密基础,同时双方使用同一种对称加密算法构建本地密钥(SecretKey)对数据加密。
这样,在互通了本地密钥(SecretKey)算法后,甲乙双方公开自己的公钥,使用对方的公钥和刚才产生的私钥加密数据,同时可以使用对方的公钥和自己的私钥对数据解密。
不单单是甲乙双方两方,可以扩展为多方共享数据通讯,这样就完成了网络交互数据的安全通讯!该算法源于中国的同余定理——中国馀数定理。
三、区块链化数据库1.典型特征去中心化的、分布式的、区块化存储的数据库区块(Header+Body)链随机数时间戳包含父区块创建之后、本区块创建之前的全部交易;满足某个条件的区块HASH;a)SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGETb)Target值由动态的难度系数确定,Target越小,难度越高;2.参考默克尔树是一种二叉树,由一组叶节点、一组中间节点和一个根节点构成。
最下面的大量的叶节点包含基础数据,每个中间节点是它的两个子节点的哈希,根节点也是由它的两个子节点的哈希,代表了默克尔树的顶部。
默克尔树的目的是允许区块的数据可以零散地传送:节点可以从一个源下载区块头,从另外的源下载与其有关的树的其它部分,而依然能够确认所有的数据都是正确的。
默克尔树协议对比特币的长期持续性可以说是至关重要的。
在2014年4月,比特币网络中的一个全节点-存储和处理所有区块的全部数据的节点-需要占用15GB的内存空间,而且还以每个月超过1GB的速度增长。
简化支付确认(SPV)协议允许另一种节点存在,这样的节点被成为“轻节点”,它下载区块头,使用区块头确认工作量证明,然后只下载与其交易相关的默克尔树“分支”。
这使得轻节点只要下载整个区块链的一小部分,就可以安全地确定任何一笔比特币交易的状态和账户的当前余额。
四、记账权竞争及奖励制度(挖矿)1.概述为防止可预期的记账节点被控制或攻击,导致错误记账行为,区块链技术采用竞争记账权的做法:任何一个节点均可以参与记账,因而记账节点无法预期,也就不容易被控竞争的过程就是看谁最先计算出满足条件的HASH值每次计算必须以最后1个有效的区块为起点,必须消耗大量的计算机CPU,增加伪造记账数据的成本计算的结果必须得到大部分节点的认可(共识算法),才会成为新的区块。
实际算法中,如果该区块位于最长的区块链上,则为正式被认可的区块,也即大部分节点认可计算结果,并愿意在该结果下继续计算这个过程被称为挖矿,或工作量证明(POW)。
参与挖矿的节点称为矿工,协同挖矿的矿工联合体称为矿池a)以前1区块为起点,计算满足条件的HASH值;b)将计算的结果广播给其他节点;c)其他节点验证计算结果无误时,认可该结果,并以该结果为起点重新进行计算;d)单位时间内达到共识认可要求时,该区块成为正式认可的区块。
这个过程被称系统为鼓励挖矿的积极性,给予竞争成功的记账节点奖励a)给予每个区块挖矿者直接的“现金”奖励。
例如,比特币网络给予25个比特币,以太坊给予5个以太币;b)以太坊:纳入该区块的交易的手续费,由发起节点和记账节点分成(发起75%,记账25%)。
2.参考比特币使用的SHA256算法,会有2^256种输出,如果我们进行2^256+1次输入,那么必然会产生一次碰撞;甚至从概率的角度看,进行2^130次输入就会有99%的可能发生一次碰撞。
不过我们可以计算一下,假设一台计算机以每秒10000次的速度进行哈希运算,要经过10^27年才能完成2^128次哈希!这时要考虑一种情况:如果同时有两个矿工各自得到一个正确答案,并各自生成了一个区块广播出去会发生什么呢?这时候在区块链上同一个位置就有了两个区块,所谓的“分叉”就出现了。
分叉是绝对不允许的,所以当矿工发现区块链分叉之后,会选择最长的一条继续计算,短的那条区块链会被丢弃。
这里的长短,不是简单意义上的长短,而是工作量证明合计值最大的那个链。
五、共识机制区块链是一种去中心化的分布式账本系统,由于点对点网络下存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致。
因此区块链系统需要设计一种机制对在差不多时间内发生的事务的先后顺序进行共识。
这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识机制”。
1.区块链和分布式系统容错的相同点(1)Append only。
(2)强调序列化(时间有序)。
(3)少数服从多数原则。
(4)分离覆盖的问题:即长链覆盖短链区块,多节点覆盖少数节点。
2.区块链和分布式容错的不同点(1)分布式系统容错,一般不考虑拜占庭问题,即假设所有节点只发生宕机、网络故障等非人为问题,并不考虑恶意节点篡改数据的问题;(2)分布式系统容错的一致性算法是面向日志(数据库)的,而区块链共识算法是面向交易的,前者可以作为后者的基础和技术保障;(3)区块链,更多地是解决拜占庭将军问题。
3.拜占庭问题解决算法(1)PBFT:投票机制,1个节点1票,少数服从多数,允许1/3的节点不可靠、但不能防止女巫攻击行为;(2)区块链引入奖励机制和惩罚机制(博弈)辅助解决问题,这是工作量证明算法的基础,使得作恶成本高于收益,以阻止作恶行为;(3)交易永远没有最终状态,但有最接近最终状态的状态。
通常经过6个区块的发展,交易被推翻的可能性极小。
4.参考拜占庭问题:指系统中的节点可能出现任何错误,包括有意的误导,故意破坏系统,伪造签名,也包括故障、超时,重复消息等。
共识原理:当多个主机通过异步通讯方式组成网络集群时,这种异步网络默认是不可靠的,那么在这些不可靠主机之间复制状态需要采取一种机制,以保证每个主机的状态最终达成相同一致性状态,取得共识。
根据FLP原理,Impossibility of Distributed Consensuswith One Faulty Process一文提出:在一个异步系统中我们不可能确切知道任何一台主机是否死机了,因为我们无法分清楚主机或网络的性能减慢与主机死机的区别,也就是说我们无法可靠地侦测到失败错误。
六、主流共识算法1.工作量证明(Proof of Work,POW)(1)工作量证明机制,使得区块的产生具有计算性难度,以增加攻击的成本;(2)从统计学角度,1笔交易在6个区块后被认为是明确确认且不可逆的。