那么这就难为了广大的技术开发人员,如何在完全不了解区块链的情况下,迅速为公司开发出区块链产品呢?
一般说来,区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。 其中,数据层封装了底层数据区块以及相关的数据加密和时间戳等技术;网络层则包括分布式组网机制、数据传播机制和数据验证机制等;共识层主要封装网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础;应用层则封装了区块链的各种应用场景和案例。该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。
看起来很复杂的样子,其实它就是很复杂。不是模型复杂,而是具体到每一个组件都去自己实现很复杂。
主要解决的问题有数据存储和查询,节点间的通信和验证,可自定义的智能合约等。
从上面的模型来看,要搭建好一个能用的区块链平台,难度是不小的。但是注意看,数据层和网络层这两层其实是不会发生大的变化的,无论是比特币还是以太币或者是你自己的任何币,或者就是普通的数据要往区块链放。这两层适用于任何区块链产品。
轮子早已有人造好,作为普通的开发人员更重要的是如何使用轮子。
主要介绍几个平台及特点:
1 以太坊
这个是除比特币外,世界第二大虚拟货币,拥有世界第二大的算力。以太坊提供了完善的数据层、网络层,和通过简单配置就能使用的共识层和激励层,需要开发的主要是合约层,通过自定义合约来完成自己需要的应用层。既可以将自己的合约发布到以太坊公网(需要以太币),也可以搭建私链、联盟链来让特定的人使用。背后有强大的公司支撑,是目前大部分区块链学习者会首先碰到的平台。但是编写合约用的是以太坊自己的语言,对于大部分开发者来说,该语言很诡异。会存在语言障碍。
2 腾讯区块链
https://trustsql.qq.com/
腾讯区块链解决了底层的一切,对外暴露一些API,通过提供的Java和C++的SDK,可以很方便的进行区块链上的操作。我们可以就把它当成一个数据库就好了,只不过数据库是建立在区块链上的。这样我们就可以忽略区块链这个概念了,就像操作远程数据库一样,可以在里面存放任何你想存的数据。适用于大部分公司所需的场景,就是交易记录、信息保存等。条件限制目前是每个节点只能在腾讯云主机上。
3 百度区块链
https://chain.baidu.com/
注册了,但是审核没下来,估计是他们放假了。看样子和腾讯的差不多。
4 布比区块链
http://www.bubi.cn/
这个具备可视化操作,看起来也比较简单。没看到SDK和文档,应该是收费的。注意,就这一个可能是收费的,其他的都是免费的。
5 ChainSQL
http://www.chainsql.net/index.html
这个原理和腾讯区块链类似,是直接对外提供类似于数据库操作那样的SDK来操作区块链。
以太坊先不提,我对它那个开发语言很没兴趣,对于不提供java sdk的不做讨论。
腾讯和ChainSQL都是提供了客户端,需要安装到自己主机上,启动后就相当于拥有了一个区块链数据库了,很是方便。
这些公司都是封装了底层的文件存储、查询、通信等等那些复杂的操作,对外公布简单的数据操作接口,形成一个SaaS系统。这样很多公司就可以基于此,完成联盟链的创建,让自己的一些客户联盟共同维护这个链,形成数据共享。
需要准备好服务器,安装他们提供的客户端,然后就可以开心的使用区块链了。
如果你觉得不想使用这些第三方平台,想要自己来完成实现一个区块链平台,或者自己也要做一个他们那样的平台。那么也有一些开源的项目可供参考
Java的:https://github.com/tronprotocol/java-tron/tree/master
这篇文章里也介绍了一些:https://yq.aliyun.com/articles/60443