区块链是什么?
在给大家分享从零基础进入web前端开发行业?五年开发大牛告诉你要注意这些?的时候,小编推荐大家加一下这个前端裙:二一零七一二八六一!如果有对前端感兴趣前端程序员,可以加入我们的web前端技术学习裙哦。
什么是区块链?区块链有很多的定义,大家的说法都不一样,业界都还没有统一。每个人心中都有自己的哈姆雷特,那么我们今天首先用大家都爱谈的恋爱,举个简单的例子。
建立一个简单的区块链模型,那么在这个区块链模型里面谈恋爱将会出现一下情况:
(上图源自网络,侵删)
所有男女恋爱,结婚的承诺全过程都被其他所有适龄男女共识,两个人在一起发生的所有故事就会形成区块。
(上图源自网络,侵删)
其他所有男女就是链,如果有第三者来插足或自身违背另一半,其他人都能看到,以后就再也找不到对象了。
看了这个图文解说,我想大家对区块链有一定的了解了,那么,到底什么是区块链呢?区块链由什么构成呢?
1,区块链是一个放在非安全环境中的分布式数据库(系统)。
2,区块链采用密码学的方法来保证已有数据不可能被篡改。
3,区块链采用共识算法来对于新增数据达成共识。
具有以上三个性质的系统,就是区块链。
区块链技术
好了,回归主题,那么开发者如何学习区块链技术呢?
一、基础阶段
01.《区块链开发指南》-作者申屠青春:作者多余比特币底层的研究可谓是非常深入,讲解的也非常通俗易懂。
02.《区块链技术指南》-作者邹均:作为国内第一本从技术角度讲解区块链的书籍,值得一读,2016年出版以来一致评价不错。
03.《区块链 原理、设计与应用》-作者杨保华陈昌:陈昌前辈作为纸贵的CTO、记得之前的墨链就是基于Hyperledger Fabric的,所以这本书对于Hyperledger 相关开源产品的讲解很透彻。
二、技术语音
01. Serpent (受Python启发)
02. Solidity (受JavaScript 启发)
03. Mutan(受Go 启发)
04. LLL (受Lisp 启发)
这些语音都是面向合约编程而从底层开始设计的语言。Solidity是以太坊的首选语言,正处于紧张开发中,它内置了Serpent的所有特性,但是语法类似于JavaScript,这样一来降低了学习门槛,易于被掌握和使用,因为JavaScript是我们Web开发者的常用语言。如果想入门开发智能合约的,就只需要注重学习Solidity,可以看看以太坊的开发入门。
总结
简单的总结一下,区块链技术本身并不复杂,相反的可以说还是很好理解的,就共识(就是确定交易顺序),加密,p2p和存储四个方面。
再剖析一下,p2p就是传统bt下载的点对点通信协议;存储就是nosql数据库比如leveldb;加密就涉及哈希和椭圆曲线非对称加密;共识算法倒是很多,但是公有链的pos和pow都还挺容易理解的,一种是“谁有钱谁说了算”另一种是“谁计算机牛逼谁说了算”,联盟链上现在比较火热的pbft是很多年前就用的分布式数据库副本。代码实现的技术细节我自己都没有抠过,但只要能明白原理其实就看得懂代码。
如果想进阶,可以了解以太坊,fabric和corda三个方向。这是区块链代表性的三个方向,我觉得也是发展的三条思路。
转载自兴趣部落【前端】一世老师
领取专属 10元无门槛券
私享最新 技术干货