区块链概述

1.什么是区块链

区块链是一个信息技术领域的术语。从本质上讲,它是一个共享
数据库,存储于其中的数据或信息,具有“不可伪造”“全程留
痕”“可以追溯”“公开透明”“集体维护”等特征。
区块链是借由密码学串接并保护内容的链式数据记录(又称区块)。

2.区块链和普通链表的区别

3.区块链有哪些应用

金融:比特币
医疗
政务
供应链管理
游戏
版权
慈善

4.区块链技术的三个发展阶段

技术起源阶段:p2p网络技术,非对称交易算法,分布式数据库,数字货币
区块链1.0:数字货币,以比特币为代表的去中心化机密数字技术
区块链2.0:智能合约,以以太坊为代表的支持用户自己写智能合约,构建去中心化的应用DAPP

5.区块链有哪些类型

公有链:公有链可称为公共区块链, 指所有人都可以参与的区块链。所有人可自由访问,发
送、接收、认证交易。另外公有链亦被认为是“完全去中心化”的区块链。公有链
的代表有比特币(BTC),以太坊(ETH)、EOS等。
私有链:一般用在企业内部,系统的运作规则根据企业要求进行设定,修改甚至是读取权限
仅限于少数节点,同时仍保留着区块链的真实性和部分去中心化的特性。
联盟链:联盟链是一种多中心化或者部分去中心化的区块链,共识机制受某些节点控制,一
般是由若干机构联合发起,比如行业内部,它是介于公有链和私有链之间,兼具部
分去中心化的特性。联盟链的代表有超级账本(Hyperledger)。

6.区块链有哪些特征

去中心化:区块链应用不依赖于中心化的机构,实现了数据的分布式记录、存储与更新
透明性:区块链系统的数据记录对全网节点是透明的,数据记录的更新操作对全网也是透明的,这是区块链系统值得信任的基础。
开放性:任何参与节点都可以通过公开的接口查询区块链的数据记录或者开发相应应用,因此整个系统是开放的。
自治性:区块链采用协商一致的规范和协议,使整个系统中的所有节点能够在去信任的环境下自由安全地交换、记录以及更新数据,把对个人或机构的信任改成对体系的信任
不宜篡改性:
第一套加密机制:采用默克尔树的方式加密交易记录,当底层数据被改
动时,默克尔树的根哈希值也会发生变化。
第二套加密机制:在创建新区块时放入前一个区块的哈希值,因此区块
之间形成链接关系。若想改动某个区块的交易数据,必须修改该区块之
前所有区块的交易记录和哈希值,这个过程极为困难。
匿名性:交易者的私有信息是通过哈希加密处理的,即数据交换和交易都
是在匿名的情况下进行的。

7.区块链关键技术有哪些

密码学:哈希算法,非对称加密算法
共识算法:工作量证明POW,权益证明POS,委托权益证明DPOS,实用拜占庭容错算法PBFT
智能合约:以太坊智能合约,超级账本智能合约
p2p网络:P2P网络概念,P2P网络特点

8.什么是哈希函数?有哪些性质?

数据摘要或散列算法,原理是将一 段信息映射成一个固定长度的二进制——哈希值
特点:
某两段信息相同,哈希值也相同
某两段信息不同,即使仅差一个字符,哈希值不同,且毫无关联
正向快速:给定明文,哈希函数在有限的时间和有限的资源内能计算出哈希值。
逆向困难:给定哈希值,在有限的时间很难(基本不可能)逆推出明文
输入敏感:对原始输入的信息进行任何修改,产生的哈希值一般有很大不同
冲突避免/抗碰撞性:很难找到两段内容不同的消息,使得它们的哈希值一样
谜题友好性:哈希值的计算是不可预测的,而如果想要知道H(x)落在某个范围之内,
没有什么好办法,只能逐个尝试。

9.哈希函数在区块链中的应用

数据加密:检测区块是否被篡改,保护收款方公钥
挖矿:矿工激励机制,货币发行机制

10.什么是对称加密算法

对称加密算法,又称为共享密钥加密,在加密和解密时使用相同的密钥,是使用两
个可以简单地相互推算的密钥
优点:简单易理解,加密解密速度快
缺点:密钥分发不方便,需要提前有安全的方式分发密钥。被破解后不易更改。

11.什么是非对称加密算法

一种基于密钥的信息加解密方法:用公钥对信息加密,只有用对应的私钥方能解密。
常见的加密算法:RSA,ECC

12.比特币中的公钥,私钥和地址分别什么

私钥:比特币中采用256-bit数
公钥:公钥由私钥经非对称加密算法产生
地址:
将生成的公钥进行SHA256运算;
将生成的256位哈希值进行RIPEMD160运算得到公钥哈希;
将版本号和公钥哈希值进行双SHA256运算得到校验码;
将版本号、公钥哈希和校验码连接并进行Base58转换得到地址

13.什么是数字签名

数字签名是一种功能类似写在纸上的普通签名、但是使用了公钥加密领域的技术,以用于鉴别数字信息的方法

14.数字签名如何使用

创建数字签名:将私钥和交易数据一起输入某个数字签名算法(如ECDSA)产生一个数字签名。
验证数字签名:对数字签名、交易数据和公钥做一些数学运算,运算的结果可以确认上述的数字签名是否是从一个合法的私钥产生。

15.某一个交易的数字签名能否用于其他交易

不能,一位数字签名除了私钥还有交易本身

16.什么是哈希指针,与普通指针的区别在于?

普通指针:存储结构体在内存中的起始位置,无法检测内容是否被篡改。

哈希指针:存储结构体的哈希值,从而可以检测结构体内容是否被篡改。

17.哈希指针这种数据结构有什么好处

可以实现篡改证明记录(tamper-evident log),只需要保存最后一个区块的哈希值,就可以检测前面任意区块是否被修改

18.什么是默克尔树

也称哈希树,在密码学及计算机科学中是一种树形数据结构,每个叶节点均以数据块的哈希作为标签,而除了叶节点以外的节点则以其子节点标签的加密哈希作为标签。

19.什么是默克尔证明

通过默克尔证明(Merkle Proof)可以证明某个交易已经被写入区块链
第一步,向证明方或其他全节点查询默克尔树的部分哈希值。
第二步,利用交易数据逐层计算哈希值并验证对比。

20.什么是双花问题

双花问题(又称一币多付、双花攻击)是一种数字货币失败模式的构想,即同一笔数字货币可以被花用两次以上

21.什么是UTXO(未花费交易输出)

比特币交易中只有未被花费的输出才能被用于新的交易。所有未被花费的交易输出的集合称为UTXO

22.为什么要用到UTXO

比特币中没有明确的账户概念,因此无法直接知道某个地址的余额。要想知道某个地址的余额,需要将该地址所有未花费的交易输出相加从而得到余额。
有利于防范双花攻击

23.比特币区块头有多少个域,含义是什么

版本号:该区块所遵循的协议版本
上一个区块的哈希值:上一个区块头的哈希值
默克尔树根哈希:默克尔树根哈希记录该区块内所有交易数据构成的默克尔树的根哈希值。通过记录该值,可快速检测交易数据是否被篡改。
时间戳:区块被创建时的时间
目标值的缩写bits:该区块被挖出时比特币系统挖矿的目标值信息的缩略形式
随机数:通过调整Nonce的数值使得区块头的哈希值小于预定目标值target

24.区块链的共识协议是什么

共识协议,即区块链中各个节点达成共识的协议

25.什么是工作量证明

通过对工作结果的认证证明完成了相应的工作量

26比特币里的工作量证明

𝐻 (𝑏𝑙𝑜𝑐𝑘 ℎ𝑒𝑎𝑑𝑒𝑟) ≤ 𝑡𝑎𝑟𝑔𝑒?

27.最长合法链准则是指

将分叉中最长的一条链认证为合法链,比特币协议规定,接受的区块应该是在最长合法链上。

28.比特币为什么要采用最长合法链

最长合法链有助于比特币系统达成共识,并防范分叉攻击

29.为什么说比特币的总数为2100万

因为比特网币每出21万个区块,一个区块所得到的比特币就减少一半,一开始一个区块是50个
所以50210000(1+1/2+1/4…)=21000000

30.比特币挖矿过程

准备阶段:组装区块
挖矿过程:尝试nouce指
发布区块阶段:通过网络传输新增区块
验证区块:其他节点验证该区块是否合法

31.比特币如何调整出块难度

target=target*(actual time/expected time)

32.为什么要调整挖矿难度

因为整体算力会越来越大,如果不调整难度,出块时间会越来越快,危害比特币安全性

33.矿池产生的原因

单个矿工挖矿困难
收益不稳定,风险高
要承担作为全节点的责任

34.什么是硬分叉和软分叉

协议分叉中的两类

硬分叉:如果区块链软件的共识规则被改变,并且这种规则改变无法向前兼容(即执行原本协议的区块无法在该新区块后拓展,比如原本协议大小规定1M,新协议规定8M,出现这样的新区块后,旧协议区块会认定该区块不合法,不会在这个区块后拓展)

软分叉:如果区块链的共识规则改变后,这种改变是向前兼容

35.什么是以太坊

以太坊是一个开源的具有智能合约的公共区块链

36.比特币和以太坊异同点

相似点:
都是公有链
都有内置加密货币
都用工作量证明

不同点:
以太坊出块速度更快
以太坊区块更小
以太坊总量更多
以太坊有智能合约和EVM虚拟机
以太坊有预挖矿机制
以太坊叔父区块有奖励

37.以太坊账本模式的优缺点

优点:
显示记录账户余额
交易更方便,不需要一次性花出去,没花完的就在账户里
对双花攻击有天然的抵抗
缺点:
容易遭受重放攻击

38.MPT树是什么,有几种类型的节点

MPT树结合了字典树(Trie)和默克尔树(Merkle Tree)的优点
节点分为:
叶子节点(leaf):表示为[key,value]的一个键值对,没有子节点
扩展节点(extension):也是[key,value]的一个键值对,但是这里的
value是其他节点的hash值,通过hash链接到其他节点。只有一个子节点。
分支节点(branch):因为MPT树中的key被编码成一种特殊的16进制的表
示,再加上最后的value,所以分支节点是一个长度为17的list。分支节点
的父节点必然扩展节点。可以有多个子节点。
空节点(null):空字符串,代码中用null表示

39.以太坊的平均出块时间?出块时间上看,以太坊相较于比特币有什么优缺点

15秒一个区块
好处:
交易更快捷,更快被写进区块链
系统响应时间更快
坏处:
分叉情况更频繁,不利于区块链的安全
加剧对个体矿工的不公平,造成挖矿集中化现象

40.ghost协议

最重合法链
叔父区块

41.叔父区块的相关规定

每个叔父区块可以得到一部分出块奖励,称为Uncle Reward。但不能得到汽油费(Gas fee)
主链上的区块每包含一个叔父区块,可以得到1/32的出块奖励,即1/32*3以太币, 最多包含两个叔父区块
以太坊系统规定,叔父区块最多限定在2-7代之内
Uncle Reward的量根据与记录该叔父区块的的区块距离决定,2到7代叔父区块分别得到7/8到2/8区块奖励

42.叔父区块限定在7带以内的好处

不限定代数:
于叔父区块的合法性验证的计算复杂度过高,每个全节点需要维护的状态过多。
不利于矿工专注于主链
限定后的好处:
鼓励分叉的节点尽早回归主链

43.GHOST协议优点

相比于比特币中的最长链原则,提高了系统安全性
解决孤块奖励问题,提高了挖矿的公平性,鼓励矿工参与出块

44.以太坊相较于比特币对共识算法的改进目的

抗ASIC性:为算法创建专用硬件的优势应尽可能小,理想情况是即使开发出专有的集成电路,加速能力也足够小。以便普通计算机上的用户仍然可以与ASIC矿机相抗衡
轻节点可验证性: 一个区块应能被轻客户端快速有效校验

45.以太坊挖矿算法

Ethash,该算法依赖一个预先生成的大型数据集(1GB),在计算的过程中需要反复、分片地读取该数据集,这部分数据集体积远超过ASIC矿机的内部寄存器体积, 较慢的内存读写 I/O 操作时间抵消了ASIC 矿机厂商的专用芯片集
成化带来的计算时间优势。

46.挖矿难度调整

ppt以太坊part3,不好复制懒得搞

47.难度炸弹

𝜖(难度调整中每次调整都会增加的难度)每十万个区块增大一倍,是2的指数函数,到了后期增长速度非常快,这就是难度炸弹名称的由来
设置难度炸弹的原因:是要降低迁移至POS协议时发生fork的风险:到时挖矿难度非常大,所以矿工有意愿迁移至POS协议

48.工作量证明缺点

资源浪费
挖矿中心化
容易被外部51%攻击

49.权益证明(pos)

权益证明使用伪随机数的方式指定持有货币的人作为交易的验证者,并创造新的区块

50.权益证明如何克服工作量证明的缺点

资源浪费:权益证明不需要计算哈希值,不会用到那么多电能
挖矿中心化:每次被选做验证者后币龄会被清空,缓解挖矿中心化
51%攻击:外部攻击者需要购入大量货币才能发起51%攻击,代价更大

51.权益证明的优缺点

优点:
不浪费算力
缓解挖矿中心化
51%攻击代价更高
缺点:
易遭受无成本利益攻击

52.权益股份证明DPOS

新的保障加密货币网络安全带的算法
引入了受托人这个概念

53.智能合约

智能合约是一种通过计算机程序描述的承诺

54.去中心化合约的好处

代码一旦被写进区块链,由于区块链的不可篡改性,谁都不能修改这个代码,这样就能保证大家只能按照这个代码中规定的规则执行