文章摘要:区块链入门知识
学习区块链技术必须掌握网络通信、数据存储、加密技术、共识机制等核心知识。如果想具体了解学习区块链需要掌握什么知 […]
学习区块链技术必须掌握网络通信、数据存储、加密技术、共识机制等核心知识。如果想具体了解学习区块链需要掌握什么知识,那不妨接着往下看吧!
学习区块链需掌握的核心知识
1、网络通信。区块链主要涉及无结构化的点对点通信(P2P);未来有可能会在联盟链中衍生为结构化的P2P通信。
点对点通信其实就是建立起一条虚拟链路,底层物理链路可能随着网络抖动的变化(与网络状况、区块大小、区块中交易数量等因素有关)而改变相应的路径。因此,建议夯实了解网络通信的基础知识。
2、数据存储。之前的数据存储方式大多都是基于面向高吞吐量的键值数据库,而现在随着区块链技术的发展,传统关系型数据库(例如Mysql、Oracle)也可以成为存储介质,甚至有的公司开始使用大数据平台(Hadoop+Habse)来构建底层的存储机制。
3、加密技术。主要需要了解哈希函数和非对称加密的基本原理和数字签名的运行机制,这也是区块链核心的加密技术,更重要的。
目前金融系统中使用的都是国密算法,与区块链技术对应SM2、SM3和SM9国密算法需要重点了解。
4、共识机制。最开始流行的是可信任环境中分布式系统的共识机制(例如PaxOS和Raft),主要涉及CAP理论,在保留分区容错性(Partitiontolerance)的基础上,数据最终一致性(Consistency)和系统可用性(Availability)之间会存在一个权衡。
区块链技术主要强调的是,在一个“去信任”环境中的共识机制,包括比特币的工作量证明机制(PoW)、点点币的权益证明机制(PoS)、比特股的股份授权证明机制(DPoS),以及后期发展的实用拜占庭容错算法(PBFT)和相关共识算法的持续演进,需要一个长期的跟踪和实践。
5、关注隐私保护。区块链本身就是基于非对称加密的安全通信。但是,可以根据交易末尾的“特定数字”查询到相应的交易关系,通过核心路由器的路由表、网卡的物理地址(MAC地址)和手机的国际移动设备识别码(IMEI号)等信息追踪交易者的身份信息,破解基于洋葱路由(Tor)的暗网对信息的隐藏。
后来,逐步出现基于环签名的门罗币(Monero)、基于零知识证明的ZCash和同态加密技术。
不论是环签名、零知识证明,还是同态加密技术,都有些艰深晦涩,属于一个较大的门类。一般来说,掌握了隐私保护技术,也算是一个区块链老师了。
6、安全技术。主要涉及私钥安全,如何产生私钥的保密算法或者基于身份的新私钥生成算法,后期还要跟踪研究智能合约的安全性,以太坊区块链会遭受的脆弱性攻击。
智能合约的安全性可能还需要熟悉相应的编译原理和虚拟化等技术。
7、跨链技术。跨链技术是指不同结构、不同类型的区块链互联互通的一种技术。
业界中比较出名的是波卡链(Polkadot链)和宇宙链(COSMOS),属于面向异构区块链的跨链技术代表。
跨链技术可以分为以区块链自身作为消息传递媒介的波卡链(Polkadot链),通过账本间连接者传递通信消息的瑞波Interledger协议和通过状态通道及路由来支持跨链通信的Aeternity等多个子类。
8、链下技术。如果区块链的每笔交易都在链上完成,性能可能是区块链系统的一大瓶颈。那么如何提升区块链系统的性能呢?以
不采用数字签名验签的方式,在链下完成大批量的小额支付,是一个不错的发展方向,这种技术称之为链下技术。
学习区块链的链下技术,可以重点关注比特币对应的闪电网络和以太坊对应的雷电网络。
9、衍生技术。例如单链和多链的结合,参考英国数字货币RSCoin;埃森哲推出的可编辑的区块链技术,颠覆无法篡改的本质(银行回滚需要)。
IOTA推出的基于有向非循环图(DAG)的区块链技术(其实已经没有链的概念了),开始摆脱区块链的传统定义,逐步向“分布式账本”技术靠拢。
如何学习区块链
1、确定方向。从事区块链开发也有很多方向,如:区块链应用开发人员、区块链架构师、底层核心开发、共识算法研究等等。
方向不同,需要学习的内容就不一样,如果做基于区块链应用开发,需要要了解一门编程语言(nodejs, Go, Python, C++ 等),大概了解区块链的原理,不一定要深入,当能理解越深入开发应用就越顺。 如果做区块链基础开发,就需要了解加密算法,P2P通信,共识算法等等。
2、投入时间学习——动手实践。由于区块链涉及的技术很多,可以相对各个技术有一个概念了解,再逐步深入原理。
当你在学习了解概念的时候,必定会产生很多疑问,例如我们经常可以看到一句:比特币的共识机制是通过工作量证明(POW)来实现的。就有了新疑问:什么是工作量证明。
可以进一步了解,它是通过验证的一个特定结果,就能确认参与者完成了相应的工作量(不理解没关系,可以简单为,张三考试考了100分,就确认张三肯定好好学习了)。这时又有了新的疑问,比特币在验证什么样的结果,这时你又需要了解密码学和Hash。
逐步深入的过程也是解答疑问的过程,需要我们善用Google搜索。
如果觉得已进理解一个概念或原理时,可以尝试动手实现它,如在理解挖矿后,可以写代码模拟挖矿过程。
学习是一个长期的过期,没有捷径,必须得多读书,读代码,写代码。
区块链课程需要学习多久
主要分为两个方向来分析:
1、了解层面。很多区块链从业者并非技术开发,但是在这个圈子里面,一定要了解最基本的区块链核心知识,也就是区块链的原理以及目前流行区块链的发展状况。一般情况下一个月以内就可以完全掌握。
2、技术从业方面。这个层面就需要学习这完全掌握区块链所有的技术知识点以及原理。一般情况下需要学习3-6个月的时间。主要看大家采用什么方式学习。
如果仅仅依靠自学,那预计时间是在6个月甚至6个月以上的时间;如果是参加线下培训,一般是4个月左右,主要看学习者目前的技术水平了。