内容摘要
这一部关于区块链开发及运维的电子书。
为什么会写区块链电子书?因为2018年是区块链年。
这本电子书是否会出版(纸质图书)? 不会,因为互联网技术更迭太快,纸质书籍的内容无法实时更新,一本书动辄百元,很快就成为垃圾,你会发现目前市面的上区块链书籍至少是一年前写的,内容已经过时,很多例子无法正确运行。所以我不会出版,电子书的内容会追逐技术发展,及时跟进软件版本的升级,做到内容最新,至少是主流。
这本电子书与其他区块链书籍有什么不同?市面上大部分区块链书籍都是用2/3去讲区块链原理,只要不到 1/3 的干货,干货不够理论来凑,通篇将理论或是大谈特谈区块链行业,这些内容更多是头脑风暴,展望区块链,均无法落地实施。本书与那些书籍完全不同,不讲理论和原理,面向应用落地,注重例子,均是干货。
电子书更新频率?每天都会有新内容加入,更新频率最迟不会超过一周,更新内容请关注 https://github.com/netkiller/netkiller.github.io/commits/master
本文采用碎片化写作,原文会不定期更新,请尽量阅读原文。
http://www.netkiller.cn/blockchain/index.html
您的打赏是我的写作动力:http://www.netkiller.cn/blockchain/donations.html
==============================
第 1 章 区块链
目录
- 1.1. 什么是区块链?
- 1.2. 什么是智能合约?
- 1.3. 我们应该怎么做?
- 1.4. 如何学习区块链
- 1.5. 区块链能做什么
- 1.6. 区块链不能解决的问题
- 1.7. 理解去中心化
- 1.8. 理解不可撰改
- 1.9. 区块链不能替代传统数据
区块链可以说是2018年最火的技术,相信很多开发者已经跃跃欲试投入到区块链开发队伍当中来,可是又感觉无从下手,你会发现世面上的书籍大多是将理论纸上谈兵,都是一些无法落地的异想天开的想法,本书将用大量实例讲解如何让技术落地。
目前区块链技术无论是 Ethereum 还 Hyperledger 都处在高速发展阶段,每次版本迭代更新变化巨大,至少还需要一到三年才能变成成熟的技术。
1.1. 什么是区块链?
很多书籍谈到区块链都从比特币开始,媒体也经常把比特币拉出来说事,首先要高清一个问题:比特币是区块链,但区块链并不是比特币。
区块链是什么?一句话,它是一种特殊的(非关系型)分布式数据库,这种数据库只能做插入和查找操作,并且没有管理员。
首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。
其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。
1.2. 什么是智能合约?
你可以理解为存储过程+数据库结构,这样应该很好理解了把?
访问只能合约就如同访问存储过程。在合约中定义的变量是不能直接访问的,只能通过函数操作他。
所以非常类似数据库定义了表结构,但是不能直接 select, insert, delete, update 数据,只能通过存储过程操作数据库一样。
1.3. 我们应该怎么做?
很简单,通过IP地址与端口号连接到区块链系统,通过API(通常是 json-rpc)调用合约方法完成一笔交易,产生一笔区块记录。
理论上区块链比数据库简单。
1.4. 如何学习区块链
我学习区块链技术是没有看过任何书籍的,我采用的是碎片化学习方法,主要是通过搜索引擎和官方文档。我比较擅长自学,也很少和人交流。
也曾试图购买书籍,但是我发现这些书籍没有多大价值,几乎三分之二的内容在谈原理,理论的东西,剩下三分之一的内容,无非就是安装、配置、Helloword 实例。另外书籍的出版周期通常是半年至一年,等书籍出版出来,内容早已经过时,软件版本的差异导致书中的例子运行不了,所以我放弃了购买书籍的想法,同时萌生了自己要写一本以干货内容为主的电子书,尽量在书中回避理论的东西,软件版本我选择当前的主流版本,直接上例子,只要你对照步骤 Step by Step 实验就能成功,这种成就感会驱使你继续学习下去。
学习中遇到碰壁无法解决的问题可以借助搜索引擎解决,这是最好的学习工具。
我主张学习区块链不要看太多的原理,快速过一遍即可,很多书中从比特币开始讲起,我觉的是没有必要的。学习区块链有两个方向,一个是代币开发,另一个才是区块链开发,现在媒体将两个方向混为一谈,这是两个独立的方向。
如果你想从事代币开发那么目标很明确以太坊是最佳选择,你的学习内容是代币合约开发,合约部署,web3合约操作,代币上交易所等等......
业界所指区块链并非代币开发,而是解决去中心化,期望区块链技术帮助企业解决实际问题。通常Ethereum和Hyperledger两种方案都能满足企业需求,你需要自己判断选择哪个方案。
区块链是一种工具,就如同手机是通讯工具,你不需要学习通信原理和计算机原理,一样可以使用手机。区块链的发展一定是趋向傻瓜化,越来越容易使用和开发。
1.5. 区块链能做什么
区块链具有去中心化安全性、可追溯、不可篡改等特性。
区块链目前的底层只适合做,低频高价值的业务。例如区块链+征信,区块链+资产,区块链+支付,区块链+供应链,房地产+区块链(登记,转账)
1.6. 区块链不能解决的问题
你能保证上链的数据绝对不会被篡改;但你不能保证,上传的数据是真的。
区块链不能解决的问题:
- 用户上传假数据
- 物品被调包
- 高频交易
我们举一个现实中的例子“身份证”,例如身份证是可能证明你是你,但是别人可以拿着你的身份证冒充你。另外你不能保证户籍人员在录入身份信息的时候不出错。现实中我们常有身份证重号或信息有误的情况。
并不是实施了区块链技术就安全无忧了,安全分为很多层,区块链只能做到存储层的安全。例如安全分为用户层,应用层,逻辑层,存储层等等。区块链无法解决用户层,应用层,逻辑层等安全问题,他只能保证存储在硬盘上的区块不被修改。
1.7. 理解去中心化
传统数据库是中心化的,它通过一个IP地址和一个端口号为应用程序提供服务,后来出现了“主从”和“主主”结构,去中心化就是一种“多主”结构。
与数据库相比区块链的去中心化更为复杂,他们的数据同步不是简单的二进制日志同步,而是通过加密传输,节点共识后才做数据存储。
1.8. 理解不可撰改
很多人被这句话误导,认为区块链的数据一旦创建是永久不能修改的,所以它安全。其实不然,区块链的数据可以修改,但不能撰改。
首先你要搞明白什么是撰改和修改,撰改是指非法修改区块链数据,而修改则是合法变更数据。
区块链上的数据是可以修改的,无论存储多久的数据,随时可以修改里面内容。
通常撰改区块链数据多指数据存储层面的修改。而修改则是通过chaincode 提供的修改函数变更区块链里面的数据。
举例一个场景例子,在征信系统中,用户有时被拉入黑名单,但用户缴纳欠费后应该立即将其移到白名单中,这个过程就需要修改区块链上的数据。
另外我还告诉你,多数区块链平台没有用户认证权限管理模块。所以无法控制区块中的那些数据可能修改,那些不能修改,那些数据XXX用户可以修改等等。即使有些区块链平台具备权限控制,颗粒度也无法想目前的数据库那些细。
1.9. 区块链不能替代传统数据
回归技术本质,我认为区块链技术本身是一种追求分布一致性的数据库。
我们学过数据库的,都知道CAP理论。CAP理论是指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。大多数区块链,放弃了一些可用性,偏向了一致性和分区容错。
区块链并非能解决所有问题,虽然他也算是一种数据库,它能解决问题十分有限,它的数据管理和查询能力还打不到 NoSQL 的水平,更别提 SQL 的复杂应用。所以在实际的应用中,区块链不能替代数据,只能互补。
所以在项目实施前,仔细想想自己需求,真的需要区块链吗?还是需要区块链上的一些特性?例如数据不可撰改。如果仅仅是需要区块链的某一个特性。我们可以针对这个需求,思考一下能否使用传统数据库解决。
原文发布时间为:2018-03-11
本文作者:netkiller
本文来源:腾讯云 云+社区,如需转载请联系原作者。