学习区块链的先进大困惑是:“学这个我不懂编程怎么办?”,确实,作为一个程序员设计的融合了多种技术理念的东西,懂点编程总是好的。不过,对于大部分人来讲,了解其基本原理,知道如何应用,或许也就足够了。
那么,对于很多想参与区块链编程的人怎么办呢?更何况,还有非常多的一部分人,希望通过区块链技术找到一份高薪的工作,这可能吗?
只要肯做,当然可能!
如果你是一个小白,但已经有兴趣想要了解一下区块链,那么首先需要做的是理清一下头绪。否则一头扎进与区块链有关的各种书籍、论坛、网站、APP、交易所、知乎……会在很长的时间内无所适从,一脸懵逼。
(1). 在区块链的世界,“日新月异”四个字是一个写实的描述,而不是形容词,每 天都有新的技术、信息涌过来;
(2). 由于“快、新”,信息难免碎片化,没有系统的学习材料;
(3). 有很多的技术贯穿其中,如果没有合理的学习顺序,难免会感到晦涩。
不论是有没有技术经验的,都可以从以下几个方面去了解区块链:
(1)、网络通信方面,目前的区块链主要涉及无结构化的点对点通信(P2P);未来不排除会在联盟链中衍生为结构化的P2P通信。点对点通信其实是建立起一条虚拟链路,底层对应的物理链路可能随着网络时延抖动的变化(与网络状况、区块大小、区块中交易数量等因素有关)而改变相应的路径。因此,建议夯实网络通信的基础知识。
(2)、数据存储方面,以前的数据存储方式很多都是基于面向高吞吐量的键值数据库(例如levelDB、rocksDB),现在随着区块链技术的发展,传统的关系型数据库(例如Mysql、Oracle)也可以成为存储介质,甚至有的公司开始使用大数据平台(Hadoop+Habse)来构建底层的存储机制。下一代分布式版本文件系统(IPFS)也是一个需要跟踪的重要方向;
(3)、加密技术方面,主要需要了解哈希函数和非对称加密的基本原理和数字签名的运行机制,更重要的,目前金融系统中使用的都是国密算法,与区块链技术对应SM2、SM3和SM9国密算法需要重点了解;
(4)、共识机制方面,最开始流行的是可信任环境中分布式系统的共识机制(例如PaxOS和Raft),主要涉及CAP理论,在保留分区容错性(Partition tolerance)的基础上,数据最终一致性(Consistency)和系统可用性(Availability)之间会存在一个权衡。区块链技术主要强调的是,在一个“去信任”环境中的共识机制,包括比特币的工作量证明机制(PoW)、点点币的权益证明机制(PoS)、比特股的股份授权证明机制(DPoS),以及后期发展的实用拜占庭容错算法(PBFT)和相关共识算法的持续演进,需要一个长期的跟踪和实践。
(5)、隐私保护,区块链本身就是基于非对称加密的安全通信。但是,可以根据交易末尾的“特定数字”查询到相应的交易关系,通过核心路由器的路由表、网卡的物理地址(MAC地址)和手机的国际移动设备识别码(IMEI号)等信息追踪交易者的身份信息,破解基于洋葱路由(Tor)的暗网对信息的隐藏。后来,逐步出现基于环签名的门罗币(Monero)、基于零知识证明的ZCash和同态加密技术。不论是环签名、零知识证明,还是同态加密技术,都有些艰深晦涩,属于一个较大的门类。一般来说,掌握了隐私保护技术,也算是一个区块链专家了。
(6)、安全技术,主要涉及私钥安全,如何产生私钥的保密算法或者基于身份的新私钥生成算法,后期还要跟踪研究智能合约的安全性,以太坊区块链会遭受的脆弱性攻击。智能合约的安全性可能还需要熟悉相应的编译原理和虚拟化等技术。
(7)、跨链技术,是指不同结构、不同类型的区块链互联互通的一种技术。业界中比较出名的是波卡链(Polkadot链)和宇宙链(COSMOS),属于面向异构区块链的跨链技术代表。跨链技术可以分为以区块链自身作为消息传递媒介的波卡链(Polkadot链),通过账本间连接者传递通信消息的瑞波Interledger协议和通过状态通道及路由来支持跨链通信的Aeternity等多个子类。
(8)、链下技术方面,如果区块链的每笔交易都在链上完成,性能可能是区块链系统的一大瓶颈。那么如何提升区块链系统的性能呢?以不采用数字签名验签的方式,在链下完成大批量的小额支付,是一个不错的发展方向,这种技术称之为链下技术(如果不好理解的话,就理解成离线批处理技术)。学习区块链的链下技术,可以重点关注比特币对应的闪电网络和以太坊对应的雷电网络。
(9)、关注一些衍生技术,例如单链和多链的结合,参考英国数字货币RSCoin;埃森哲推出的可编辑的区块链技术,颠覆无法篡改的本质(银行回滚需要);IOTA推出的基于有向非循环图(DAG)的区块链技术(其实已经没有链的概念了),开始摆脱区块链的传统定义,逐步向“分布式账本”技术靠拢。
(10)、最最最重要的,区块链只是一门技术,真正的要完成区块链的学习,离不开专业垂直领域的深度学习,懂区块链只是懂个皮毛,懂行业+懂区块链才是真正的区块链专家。