1.简述一下区块链的分叉技术

分叉技术:主要用于区块链系统的更新,又分为软分叉和硬分叉

软分叉:就是小更新,新的代码逻辑依旧可以兼容之前版本。用户可以自行选择是否更新系统版本,

硬分叉:大更新,新的代码逻辑不能兼容之前的版本,并且要求用户强制更新,不更新的话就不能保证用户的正常使用。

2.说明默克尔树的作用和生成过程

默克尔树的作用用于快速校验交易的正确性,并且推算出交易信息。

生成过程图:(两两相加,单个复制)

3.说明所知道的共识算法

分布式共识算法:raft算法,

基于图结构的共识算法:tangle、 hashgraph、

竞争式的共识算法:pow工作量证明算法、 pos股权类证明、 po*凭证类共识算法、

协作式的共识算法:BFT拜占庭容错算法、 PBFT实用拜占庭容错算法、

结合硬件的共识算法:结合可信执行环境的共识算法。

4.区块链中哈希算法的作用

hash主要是将不定长的字符串转换成固定长度的字符串,并且他不可还原,安全

1、用于构建默克尔树,实现内容的快速检测。想要验证交易信息,只要判断默克尔树根值即可。

2、构建区块链的链式结构,防止篡改

5.区块链智能合约的流程

智能合约流程: 先制定一套电子合约标准,然后基于特定的事件,只要满足事件的规则,合约自动执行。

主要组成部分: 智能合约 + 预置触发条件 + 获取结果途径 + 预置响应事件

注意:虽然合约是写死的,但并不是不好的,因为他严格执行。

区块链中利用智能合约:

保证了所有参与节点都严格遵循合约里的规定,

如果有恶意节点想篡改内容,就需要篡改所有节点的内容。

6.币圈和链圈的区别

币圈:主要注重加密数字货币的价值,并期望从中能获得利益,币圈人员分类:盈利,投资

链圈:更多注重的是底层的技术,他们研究算法,或者研究区块链的性能问题及应用场景,以求更快的落地。

7.数字签名流程

数字签名流程:私钥签名,公钥验签 (签名)

1、私钥持有者对原文数据进行hash计算,得到数字摘要

2、然后使用私钥对数字摘要进行签名,得到数字签名

3、数字签名 + 原文使用密钥进行加密,得到加密信息(对称加密)

4、A使用B的公钥对上一步的密钥进行加密,得到一个信封,(非对称加密)

5、A把信封和加密信息(数字签名数据+原文)一起发送给B, (验签)

6、B使用公钥解封信封,得到密钥。

7、B使用密钥解密加密信息,得到数字签名+ 原文

8、B使用A的公钥对数字签名进行验签,得到数字摘要1(验证消息来源的合法性)

9、B对原文进行hash计算,得到数字摘要2

10、对比数字摘要1和数字摘要2是否相同,(验证消息的正确性)

注意:比对两个数字摘要是否一致,一致的话就合法,不一致说明数据在中途被篡改,不安全

数字签名的作用:

1、保证消息来源的合法性(身份验证)

2、保证数据的正确性(不被篡改)

区块链中使用数字签名识别交易发起者的身份,防止恶意节点冒充。

8.区块链的特性和解释

特征和解释:

去中心化:

就是‘去信任’,不需要依赖第三方中心节点,私钥作为唯一标识

透明可信:

就是区块链上的每一笔交易都是透明公开的,

人人记账,从而保证数据的完整性,实现了信息的(透明),

节点之间的决策都是共同参与的,通过达成共识从而达到(可信)

防篡改可溯源:

因为区块链的本质是一个数据库,是一个链式的分布式账本技术,如果改动了其中一个,一整个链式系统就会有变化,

每一笔交易在经过确认后都会完整的上链,所以(可溯源)

而且上链后就很难被篡改,因为一改一个就需要改动其他全部的,(防篡改)

系统可靠安全:

系统中每一个节点都高度自治,少了一个节点并不会影响系统正常运行,

支持拜占庭容错 3 f +1 <= n

9.脚本分类及里面的操作符

脚本分类:锁定脚本、解锁脚本

操作符及解释: Dup(复制栈顶元素) Hahs160(栈顶元素进行hash160计算) EqualVERIFY(取出栈顶两个元素判读是否相等,相等移除) CHERSIG (取出公钥和签名进行验签,为true代表验证通过,反之不通过)

脚本操作符:

DUP :复制栈顶元素,

HASH160:对栈顶元素进行hash计算,(ripemd160)

Equalverify:取出栈顶两个元素,判断是否相等,相等移除

CHECKSIG:校验,验签,判断签名是不是由公钥对应的私钥产生的,true代表相等,能使用这笔钱,false不相等,不能使用。

注意:里面的东西都是数据,都是要入栈的。

10.同态加密和零知识证明技术

同态加密:就是在数据是加密的状态下对数据进行处理,解密后的结果是修改后的信息,并且与对明文进行处理后再加密的结果是一致的。

零知识证明技术:就是对验证者不提供任何有用的信息(就是关于被证明消息的信息)的情况下,让别人相信这个结论是正确的。

零知识证明:就是任何技术都能证明

11.提高区块链性能的解决方法

区块链性能问题:交易确认时间久、吞吐量低,

交易确认时间久:

1.增大区块的大小、 2.提高出块的频率

吞吐量低:(在于共识的过程)

解决方法:异步共识、随机共识、分区方案,子链和侧链,隐形中心化,可信执行环境。

12.提高区块链隐私安全的方法

有服务提供着情况下:服务提供者保护用户隐私安全

没有提供者:

1、同态加密:就是在加密的状态下对加密数据进行处理,整个交易过程中的数据都是处于加密状态的,只有持有私钥者才解密个人相关信息,别的节点无法查看。

2、零知识证明技术:结合同态加密,完成加密后的数据的有效验证。

3、其他隐私保护:群签名、环签名、可信执行环境

4、区块链系统提供隐私保护提示,从而提高用户的安全意识。

13.跨链技术的作用和解决方法

跨链技术:就是不同的链中实现协同操作,互联互通,可以理解一种兑换技术。

跨链技术作用: 实现区块链的价值流通, 不同的链中实现协同操作

面临问题:

1、交易验证问题:如何保障不同的链之间的信任问题,并实现之间的交易验证,一个区块链如何验证另一个区块链上的交易,

2、事务管理问题:如何保证这些交易最终的确认,不会被回滚,以及保证交易的原子性

解决方法:

1、侧链:实现区块链代币(比特币、token币)可以在不同的区块链之间转移。

2、公证人机制:就是交易的过程中有一个托管者,帮忙管理交易,(例如淘宝购物)。

14.图结构区块链和传统区块链的对比

图结构区块链:有向无环图DAG,拓扑结构,由交易单元组成,节点之间的共识可以是异步共识,好比多线程,

传统区块链:链式结构,由区块组成的单链,所有的节点共识都是基于一个区块链上的,而且只能按照时间顺序写入,相当于单线程

15.解释区块链的三元悖论

三元悖论:是用来衡量区块链性能好坏的一个理论

三元:高效性,安全性,去中心性

注意:这三元不能同时达到最好的效果,提高一个必定会损害其他两个,不能同时达到最佳。

但是安全性肯定是要优先考虑的,所以只能在其他两个中进行衡量。

16.区块链的概念

区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的链式数据结构,并以密码学的方式保证了不可篡改和不可为伪造的分布式账本技术。

17、交易输入交易输出:

交易输入:对应付款方,代表花钱

交易输出:对应收款方,代表挣钱

注意:先有交易输出,再有交易输入,先挣钱再花钱。

总结: 1、每一笔交易都会有交易输入和交易输出。 2、在一笔交易中,可能包含一笔或多笔交易输入,也可能包含一笔或多笔交易输出。 3、任何一个交易的交易输入,都是前序的某一笔交易的交易输出。 5、所有的交易最开始的都是来自coinbase,挖矿奖励。 4、每一笔交易都有交易输入和交易输出,一般来说,每一笔交易都要花费一笔输入,产生一笔输出,这里面产生的这个输出就叫做UTXO。

UTXO:未花费的交易输出。

18.标志码:

0x00 比特币地址

ox01 压缩私钥

0x02 y<0的压缩私钥

0x03 y>0的压缩私钥

0x04 非压缩私钥

19.脚本支付类型

P2PKH:向公钥哈希支付(Pay To Public Key Hash)

P2PK:向公钥支付(Pay To Public Key )

P2SH:向脚本Hash支付(Pay To Script Hash)

多重签名