区块链技术如今是非常火热,不仅让金融家和创投家趋之若鹜,如今已经在多个领域遍地播种。作为拥有锐利触角的创业家们,是否也想将区块链集成到你们现有的应用中去,而作为IT技术工程师的你,是否也是跃跃欲试,想基于区块链来练一下手,以免日后被新技术淘汰?不过,区块链涉及如密码学和P2P等多种技术,区块链的技术门派众多,新鲜概念层出不穷;而另一方面,区块链技术的发展在全球范围内还都尚处在早期阶段,各种技术方案和应用场景等还需要进一步地探索和完善,导致很多人想运用区块链,都找不到突破口,应该学习哪些知识和技术呢,应该用什么样的区块链呢?
就区块链技术而言,中国E盟技术小编只能算是新司机,但我仍然尝试从开发工程师的角度,給区块链有兴趣的工程师分享一下区块链应用开发入门的经验。
我们大多数人的使用和开发区块链的目标来说,并不是要真的自己重新创建一套区块链,只是希望基于现有的区块链底层或技术框架去开发自己的应用。因此,对于类似加密算法、 P2P技术、共识算法等我们只需要有个基本了解就可以了,暂时不需要深入研究。而我们入门区块链应用开发的首要目标,是寻找一个相对成熟的区块链底层去做我们的应用开发的基础,其次,这个区块链底层需要配套强大易用的开发接口或开发框架,此外,这个区块链底层如果要考虑以后真正商用,还需要符合一些区块链的技术指标,如扩展性、燃料费用、交易频率等等。
就这两点目标,Elwin走遍天涯海角,最终挑选出认为符合要求的几个区块链底层平台給大家参考:
一、比特币
最早的区块链开发便是基于比特币的区块链网络进行开发了,由于比特币是全球最广泛使用和真正意义的去中心化,就区块链应用来说,比特币就是世上最强大的锚,拥有最大的权威性。因此,围绕比特币的各种区块链技术非常多,这里不一一描述,只针对入门级别开发的介绍。
基于比特币的区块链网络开发介绍两种方式,一种相对比较简单,基于Blockchain.info的API进行开发。Blockchain.info是比特币的最流行的比特币钱包和区块查询网站,同时也提供的比特币及其区块相关API。 Blockchain.info 提供了多种主流语言的API库,包括了比特币的钱包、支付、区块、交易数据、市场数据等多方面的API。
安装和使用Blockchain.info的API比较简单,首先你的机器需要有Node环境,在Blockchain.info的申请接口授权码,安装Blockchain Wallet API服务程序,就可以开始配置和测试Blockchain Wallet API服务程序了,要进一步开发,可以根据你的开发语言选择安装API的客户端支持库。
进一步的探索,可以采用Docker容器来快速安装和配置私有节点的比特币测试网络(bitcoin-testnet)作为开发试验环境,这样可以更深入了解、调试和使用比特币区块链网络。在Bitcoin的wiki网页上面,提供很多种语言都可以调用Bitcoin的RPC,大家选择适合自己的语言具体去试验,当然,Elwin仍然推荐你使用NodeJS。
具体流程是下载比特币测试网络的Docker镜像,运行Docker镜像并启动比特币测试网络,初始化和测试区块链数据,当然为了测试少不了要先挖矿储备一下。然后安装相关开发语言的RPC支持库后,就可以调试你的区块链程序了。
二、以太坊
可以说除了比特币外,以太坊目前在区块链平台是最吸引眼球的。 以太坊是一个图灵完备的区块链一站式开发平台,采用多种编程语言实现协议,采用Go语言写的客户端作为默认客户端(即与以太坊网络交互的方法, 支持其他多种语言的客户端)。
基于以太坊平台之上的应用是智能合约,这是以太坊的核心。每个智能合约有一个唯一的以太币地址,当用户向合约的地址里发送一笔交易后(这个时候就要消耗燃料费用,也就是手续费用),该合约就被激活,然后根据交易中的额外信息,合约会运行自身的代码,最后返回一个结果。以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App),相对于冷冰冰的智能合约代码,DApp拥有一个友好的界面和外加一些额外的东西,配合上图灵完备的语言,可以让用户基于合约搭建各种千变万化的DApp应用,实际上,在以太坊APP展区,已经有大大小小280个的DApp应用在展示(虽然只有一部分应用在真正运行)。
要写以太坊的智能合约有好几种语言可选,有类Javascript的Solidity,Python接近的Serpent,还有类Lisp的LLL,目前比较主流的是Solidity,推荐大家使用。当Solidity合约编译好并且发送到网络上之后,你可以通过以太坊的Mist客户端对智能合约进行测试和使用,也可以使用以太坊的web3.js JavaScript API来调用它,构建能与之交互的web应用。
由于以太坊的知名度,所以很多社区大牛创造更加便捷的DApp开发框架和工具,包括Truffle、Embark、Meteor、BlockApps.net APIs,使得你可以快速开发你的Dapp。我的另外一篇文章《微软的那些区块链云服务》有提及,Embark和BlockApps.net两个区块链工具已经給整合到微软Azure BAAS服务中了。这几个框架和工具中,Elwin更推荐Embark,使用起来非常简单。
通过以太坊,你既可以搭建基于属于自己私链,也可以和合作伙伴一起搭建联盟链,又或者直接将应用部署在以太坊的公共网络中,Elwin要吐槽的是,使用以太坊Gas费用越来越高了,对于互联网的应用,是自己搭建以太区块链,还是使用以太公共网络,真是两难境地(以太坊宣称,以太币Ether价格上升时,那以太坊燃料的价格应该按比例下降,但好像并不是这样阿)。
几个主要入门步骤給大家简单介绍一下,首先你可以安装以太坊钱包客户端Ethereum Wallet,体验一下以太坊的钱包和智能合约,当中可以选择公共网络或测试网络(如果你没有或不想花费以太币)。如果你已经很熟悉这些了,那好,直接进入正题,准备好Geth和Node的环境,同时安装以太坊Mist客户端(这个是为测试你的智能合约和Dapp准备),配置和启动Geth(Geth和eth相关参数文章,请参考官网文档),通常我会先用Geth搭建自己的私链来测试,Geth启动后,你可以先在Mist客户端中熟悉智能合约和Solidity语言(记得在Geth console先挖矿,否则没有以太币来测试),然后根据官网的几个例子来试炼你的第一个Dapp。上手后,可以尝试使用web3.js来调用,或直接安装Truffle或Embark来开发自己真正的Dapp应用。
三、IBM HyperLedger
IBM HyperLedger 又叫 fabric,他的目标是打造成一个由全社会来共同维护的一个超级账本,fabric源于IBM,初衷为了服务于工业生产,IBM将44,000行代码开源,是了不起的贡献,让我们可以有机会如此近的去探究区别于比特币的区块链的原理。目前就Elwin所知,fabric还未进入真正的商用阶段,更多是试验和探索,不过相对于很多其他区块链,从技术底蘊他又是比较可信和靠谱的。
要基于HyperLedger进行区块链开发比想像中简单,有两种途径,一种是基于超能云(IBM中国研究院开发的超能云平台提供了各种云服务),他给区块链爱好者、开发者的区块链开发测试环境,通过超能云平台,用户能够免费、超快速创建基于Hyperledger Fabric的多节点区块链、并在自己的链上调试智能合约。Hyperledger Fabric的合约是基于Go语言的,上手比较简单。
根据Elwin尝试,似乎超能云的区块链只适用于科研测试,要真正运营,还是建议自己搭建Fabric的区块链网络。安装和运行Hyperledge fabric的运行有几种方式,比较推荐是下载Fabric区块链网络的Docker镜像,运行Docker镜像并启动Fabric区块链网络,但相对于比特币和以太坊,Fabric网络的架构和安装相对复杂,除了区块链服务外,还需要另外安装运行validating peer和Certificate Authority (CA) 服务。搞定后要真正使用,还需要先用户注册和登记授权,然后才可以通过CLI 或REST API进行调试和使用。其中里面智能合约的编写,跟在超能云的区块链云服务的是一样的。此外,除了CLI或REST API,IBM还提供了gRPC API和 SDK的方式进行应用的开发。
四、Lisk
LISK是新一代的区块链平台,允许JavaScript(又是Javascript技术,工程师们注意了)的开发和基于分布的分散的应用程序使用一个易于使用的,功能齐全的生态区块链系统。
Elwin觉得LISK相对于前面说的几个区块链底层,他的应用优势不仅仅在于他是第一个完全写在Javascript里的去中心化的应用解决方案,还在于他把每个应用加到LISK的单独侧链上。用过比特币和以太坊的朋友都知道,由于比特币和以太坊只有一条主链,所有功能和数据都加入这条主链导致区块快速膨胀,超大的区块体积,超长的同步时间,这个一个很痛苦的经历。Lisk的侧链模式给在处理高交易量下如何解决网络拥堵的问题提供了一种方法,用户只有用到相关的应用时才需要下载对应的侧链,大大减小了无效的同步数据,保持了整个Lisk网络的高效运行,而且,Lisk网络的速度随着时间的推移会继续加快,越显示他的特别优势。
其次,相对以太坊和Hyperledge fabric以智能合约为核心的区块链不同, Lisk区块链建立的目的并不是为了创建智能合约,而是使用Lisk APP SDK框架来开发不同的应用程序和功能。
Lisk APP的主要开发语言是NodeJS,Web开发者既能够开发应用程序的后端,也可以开发前端。通过使用Lisk APP SDK包,Web开发者可以轻松创建区块链应用。Lisk APP的开发也比较简单,跟你之前其他的NodeJS应用的开发是类似的。然而,跟比特币和以太坊的一样,Lisk的使用也是要消耗燃料费用的,还好,跟其他区块链底层网络一样,Lisk 也是有testnet模式的。
五、布比网络
布比,是国内区块链技术特别是底层技术领先者之一,已拥有多项核心技术,并已经成熟的应用在了商业积分、游戏币、游戏道具、预付卡、电子券、保险卡单、证券化资产、互助保险等行业和领域。
布比区块链平台分为基础框架层(BubiChain)和应用适配层(Bubi Application Adaptors)。底层基础框架层提供区块链的基础服务,应用适配层提供上层应用所需的功能组件,为具体的应用系统开发提供接口和SDK,降低由于区块链自身复杂的逻辑所带来的应用开发的难度。
对于一般开发的应用适配层,布比提供布萌区块链应用开发平台,该平台基于布比区块链技术,将上层应用所需要的功能组件进行封装,开发者想实现对应的功能,只需要注册成为布萌开发者即可获得接口使用权限。同时,平台提供开发者运维所需要的可视化管理工具。
就Elwin体验来说,布萌区块链的接入应该是几大区块链底层中最容易的,因为他不仅提供标准REST API,并提供JAVA等主流语言的SDK接入,同时,基于布萌区块链平台专注数字资产应用场景,跟其他大部分区块链接口纯技术和面向广泛应用的方式而言,布萌提供的接口更贴近业务场景的,更便于相关数字资产的应用接入到区块链。相对以太坊着重区块技术和智能合约的区块链不同,布比区块链的接入更务实和落地,你只需要关注你实际的业务,而不需要过多考虑区块链的技术细节。