区块链基础知识栈

Posted Jayo_o_0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链基础知识栈相关的知识,希望对你有一定的参考价值。


想要了解区块链技术,会有种老虎吃刺猬–无从下嘴的感觉,毕竟它是一个技术的集大成者,所以这里抛砖引玉参考了多方资料和自己的学习经历,由浅入深写了些技术栈的title供有兴趣的人按图索骥的去学习。

HASH(哈希算法)、签名、证书

区块链是一门解决信任问题的技术。由此可见,签名证书等现行互联网上保证安全性的方法是最基础的需要去了解的方面了。SHA3/SHA256/RIPEMD160等摘要算法,基于公私钥的数字签名和验证方法,数字证书的概念和格式,比如X.509证书,以及保存证书/公私钥的文件格式,如PEM文件、keystore文件,这些东西之间的区别,应用场景,学会使用即可,有兴趣的可以去仔细查阅不同的算法是怎么实现加密细节的。

基础应用密码学

上一层是偏应用的话,这一层偏理论些,基础的应用密码学离不开对称和非对称加密的常见算法,如AES对称加密,RSA、ECDSA椭圆曲线等非对称加密算法,了解以及这些算法在签名验签、数据加密、通信协商和保护方面的作用,如何实现的,数学模型是什么,结合一些例题去亲自完成一次ECDSA的私钥公钥生成过程和加解密过程,我觉得是对理解非对称加密本质很有裨益的。国密的话参考SM2~SM9一系列算法的概念和使用。

分布式网络结构

区块链出生自带分布式网络结构,尤其是公链。节点和节点通过网络的P2P端口互连,客户端、SDK通过RPC/Channel端口互连,首先要保证网络之间是互通的,监听的地址和端口是对的,端口是开放的,防火墙和网络策略是正确的,用于安全连接的证书已经到位,才能保证区块链的通信安全。
所以基本的网络知识、网络工具,了解区块链特有的节点类型(共识节点、观察节点、轻节点等)、互连方式(点对点双向连接、JSON RPC的HTTP短连接、Channel长连接等)是有必要的。

智能合约

智能合约是因区块链而诞生的,流行的语言是solidity,一开始是用在ETH以太坊上的。Solidity语言更新活跃、文档完备,具有良好的一致性和事务性,功能足够实现中型的商业应用。
它在实时调试、第三库支持、运行速度等方面还比不上成熟的语言,如果想要用C++等语言编写智能合约,那就要对区块链上的计算范式进行深入了解,避免写出无法共识的智能合约来,一般是建议有深入的了解后再采用Solidity之外的其他语言编写合约。

ABI接口原理

在采用EVM作为虚拟机的区块链上,EVM执行的是Solidity语言的合约。合约编译会生成后缀名为ABI的文件,其实里面就是该合约接口定义的JSON文本,可以用文本查看器查阅,了解你写的合约如何翻译成ABI里的接口,接口返回类型,参数列表,参数类型等,只要有合约的ABI文件,就可以调用区块链SDK的接口,解析这个合约相关的交易、返回值、回执等。

区块数据结构

区块(Block)有区块头和区块体。区块体有交易列表,交易列表里的每个交易(Transaction或Tx)有发起方、目标地址、调用方法和参数,以及发送者签名。交易的结果会生成一个“回执(Receipt)”,回执里包含被调用方法的返回值、运行过程生成的EventLog等……

了解这些,基本上就掌握了区块链数据的脉络,还可以继续深究数据结构里的merkle root以及对应的merkle tree是如何生成的,有什么作用(如用于SPV:Simplified PaymentVerification)。

RPC接口

这里把区块链节点暴露的功能接口统称为“RPC接口”。查看链上数据,包括区块、交易、回执、系统信息、配置信息,向链上发起交易,以调用智能合约、修改系统配置等,或者通过AMOP协议发送消息、监听事件,都是通过RPC接口。

几十个RPC接口建议一一走读了解下,以发现自己想要的接口。

接口通信采用的协议可能是JSON RPC,也可以在深入理解ABI和RLP等编码模式前提下自行开发接口客户端。

数据存储模型

区块链节点会采用文件数据库(LevelDB或RocksDB),或者关系型数据库如mysql保存数据,所以,链上是真的有“数据库”的。

写入数据库的数据包括区块、交易、回执、合约产生的状态数据等,是否写入“调用合约产生的历史数据”根据不同的平台而定

共识机制原理

共识机制是区块链技术的点睛之笔,灵魂所在,不可不仔细学习。不同的需求创造了不同的共识机制,比如在公链上流行的PoW,PoS,DPoS等,而在联盟链中因为有权限限制和权限管理,且对效率要求更高,于是更流行RAFT,PBFT等拜占庭类算法。
对共识机制进行深入学习,才可以深入理解区块链通过多方协作、达成高度一致性、支持交易事务性、防篡改防作恶的功效

结语

区块链的知识包罗万象,更深层次的知识还有分布式系统理论、博弈论、前沿密码学、经济学、社会学等,掌握以上的基础知识,再深入学习,举一反三,用场景去验证和探索创新式应用,方可发挥技术的潜力,感受分布式商业的魅力。

以上是关于区块链基础知识栈的主要内容,如果未能解决你的问题,请参考以下文章

区块链基础知识

区块链开发之Solidity编程基础合约数据存储

区块链基础原理学习平台

区块链基础入门

微众银行区块链开源项目已达11项:这些全栈技术体系内的宝贝,等你来开箱

深入区块链技术之技术基础