论文部分内容阅读
区块链技术是近十年来的新兴技术,具有去中心化、不可篡改、数据公开透明等优点,是分布式数据存储、P2P网络和公钥密码学等技术的新型应用模式。区块链技术的发展带动了互联网、金融、电信等各个领域的产业技术革新,一种新型产物——Dapp(Decentralizedapplication,去中心化应用)也应运而生,其广义定义为:运行于分布式网络,所有参与者信息受到安全保护,基于分布式网络进行去中心化操作的应用,在以太坊区块链上则被定义为基于智能合约的应用,也满足Dapp的广义定义。后来又出现的一些诸如EOS(Enterprise Operation System)、超级账本等区块链平台,也支持Dapp的运行。
尽管这些平台都能支持Dapp的运行,但是基于这些平台开发Dapp的过程却很复杂,对开发人员的技术要求较高,工作量较大。就开发基于以太坊运行的Dapp而言,开发前需要初始化以太坊区块链环境、安装操作以太坊区块链的编程库以实现对区块链服务的访问,类似于Java语言中用于访问关系数据库的JDBC(Java Database Connectivity)组件。开发时编程语言需要和实现编程库的语言兼容。当然,也可直接发送JSON-RPC请求,但是脚本的书写难度和代码量较大,易出错,难以维护,因此一般不推荐直接写这样的脚本,况且高级编程语言也并不一定支持发送这样的脚本。以上不便会造成开发人员不必要的时间和精力浪费,还会导致开发完成的Dapp可维护性较差,当Dapp服务出现故障时难以判断是应用开发的不鲁棒,还是区块链环境问题,或者是区块链的编程库的问题等。因此只有对开发所基于的区块链平台有深入研究,熟悉其运行原理和编程接口、熟练掌握多种编程语言的资深开发人员才可胜任开发,增加了开发成本和开发周期,降低了开发效率,使Dapp升级维护也不方便,在对其功能架构升级时还需要考虑其所依赖区块链环境或编程库是否需要调整。
基于这种现状,本文研究实现了一个可管理控制、开发效率高、对开发人员技能要求低的Dapp仿真开发平台,将平台底层区块链系统的功能封装为面向GET、POST等网络请求的服务供开发人员使用,其请求与返回的数据格式可供大多数编程语言使用,具有编程语言无关性,使得Dapp的开发就像前端开发一样简便高效。本文首先对支持Dapp运行的以太坊区块链平台进行了研究,熟悉其支持Dapp运行的原理,分析其优势和不足以便于进行改进优化,理解基于以太坊平台开发Dapp的过程,作为设计实现该仿真开发平台的理论依据和设计启发,列举了一个能够支持以太坊Dapp开发的集成开发环境的设计需求,阐明为方便开发人员使用应做怎样的改进、优化和功能扩充以尽可能提高Dapp的开发效率,简化开发过程。然后,确定该仿真开发平台的具体实现方式并实现该仿真开发平台,构建一个可管理控制、简化开发的Dapp集成开发环境,将对底层区块链的操作封装为统一、规范的网络编程接口服务并运行起来,使得开发人员只需通过GET、POST等网络请求即可使用这些服务接口以完成Dapp的开发,使Dapp的开发只需要面向UI界面和具体业务,开发人员即使不懂区块链技术也完全可以胜任开发并保证开发质量。Dapp开发完成后,只需将其和本人封装的接口服务代码打包移植即可在以太坊公链上运行。最后,为验证开发人员使用该平台的确可以简便高效地完成Dapp的开发并保证质量,本文亲自基于该仿真开发平台一步步地完成一个经典应用——电子投票系统的去中心化版本的开发,证明了使用该仿真开发平台的确能够简化Dapp的开发、提高开发效率、降低对开发人员技术要求的同时也完全可以保证开发质量,兑现本课题对该平台的承诺。在该Dapp开发完成后,阐述了如何将其部署到以太坊公有链上以体现其应用价值。
尽管这些平台都能支持Dapp的运行,但是基于这些平台开发Dapp的过程却很复杂,对开发人员的技术要求较高,工作量较大。就开发基于以太坊运行的Dapp而言,开发前需要初始化以太坊区块链环境、安装操作以太坊区块链的编程库以实现对区块链服务的访问,类似于Java语言中用于访问关系数据库的JDBC(Java Database Connectivity)组件。开发时编程语言需要和实现编程库的语言兼容。当然,也可直接发送JSON-RPC请求,但是脚本的书写难度和代码量较大,易出错,难以维护,因此一般不推荐直接写这样的脚本,况且高级编程语言也并不一定支持发送这样的脚本。以上不便会造成开发人员不必要的时间和精力浪费,还会导致开发完成的Dapp可维护性较差,当Dapp服务出现故障时难以判断是应用开发的不鲁棒,还是区块链环境问题,或者是区块链的编程库的问题等。因此只有对开发所基于的区块链平台有深入研究,熟悉其运行原理和编程接口、熟练掌握多种编程语言的资深开发人员才可胜任开发,增加了开发成本和开发周期,降低了开发效率,使Dapp升级维护也不方便,在对其功能架构升级时还需要考虑其所依赖区块链环境或编程库是否需要调整。
基于这种现状,本文研究实现了一个可管理控制、开发效率高、对开发人员技能要求低的Dapp仿真开发平台,将平台底层区块链系统的功能封装为面向GET、POST等网络请求的服务供开发人员使用,其请求与返回的数据格式可供大多数编程语言使用,具有编程语言无关性,使得Dapp的开发就像前端开发一样简便高效。本文首先对支持Dapp运行的以太坊区块链平台进行了研究,熟悉其支持Dapp运行的原理,分析其优势和不足以便于进行改进优化,理解基于以太坊平台开发Dapp的过程,作为设计实现该仿真开发平台的理论依据和设计启发,列举了一个能够支持以太坊Dapp开发的集成开发环境的设计需求,阐明为方便开发人员使用应做怎样的改进、优化和功能扩充以尽可能提高Dapp的开发效率,简化开发过程。然后,确定该仿真开发平台的具体实现方式并实现该仿真开发平台,构建一个可管理控制、简化开发的Dapp集成开发环境,将对底层区块链的操作封装为统一、规范的网络编程接口服务并运行起来,使得开发人员只需通过GET、POST等网络请求即可使用这些服务接口以完成Dapp的开发,使Dapp的开发只需要面向UI界面和具体业务,开发人员即使不懂区块链技术也完全可以胜任开发并保证开发质量。Dapp开发完成后,只需将其和本人封装的接口服务代码打包移植即可在以太坊公链上运行。最后,为验证开发人员使用该平台的确可以简便高效地完成Dapp的开发并保证质量,本文亲自基于该仿真开发平台一步步地完成一个经典应用——电子投票系统的去中心化版本的开发,证明了使用该仿真开发平台的确能够简化Dapp的开发、提高开发效率、降低对开发人员技术要求的同时也完全可以保证开发质量,兑现本课题对该平台的承诺。在该Dapp开发完成后,阐述了如何将其部署到以太坊公有链上以体现其应用价值。