以太坊智能合约开放平台的设计与思考

叁叁肆2018-12-07 15:41

此文已由作者苏州授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验


智能合约作为区块链2.0的关键技术存正,17年至18年初,火遍全球的ICOCryptoKittes吹响了智能合约的应用的号角,在此期间以太坊的智能合约数量也呈现指数型的增长。然而,大量的合约安全漏洞、不友好的使用体验、市场的不规范散乱等现状严重制约了智能合约的快速发展。智能合约的开放平台的建设,能够解决智能合约的现有问题并且友好支撑上层应用,可以作为我们的后期发展思路的一个参考。

1. 智能合约应用当前存正的问题

1.1智能合约安全漏洞频出

目前,以太坊主链上已经发布了10000+智能合约,但是存在漏洞的合约却占比很多,也给部分组织造成了很大的经济损失。个人根据历史发生的一些合约攻击,并针对合约的漏洞进行了一个简单的统计分析。如下图所示:

  

1-1 以太坊智能合约漏洞分析

根据,统计结果得知,智能合约的安全漏洞主要原因可以归结为合约代码编写上的bug所导致的(而不是以太坊体系的错误),然而这类错误其实可以通过事前的代码审核、规范化的合约设计、强制性的安全性编码约束,以及事后的合约执行监控避免智能合约安全漏洞的发生。

1.2 智能合约难以被上层应用直接使用

在区块链商业应用的场景下,公司若想构建基于以太坊智能合约的应用时,就会涉及到智能合约的开发、测试、部署、运行检测、停止、废弃删除等各个生命周期的管理。然而现有的以太坊的智能合约的在编写使用方面还没有一种很好对上层应用的支撑方式,从而造成了在公司内部,非区块链技术部门在使用服务时的准入门槛高的情况。从而提供一套上层应用使用友好智能合约开发平台是非常有必要的。

1.3 上层应用无法直接监控合约的运行情况

我们知道智能合约的运行被调用都是通过交易的方式进行的,然而在以太坊系统中并未提供一个针对智能合约的运行监控的方式,无法知道当前合约运行的情况,从而不能很好的给上层应用提供一些辅助决策信息。


2. 智能合约开放平台方案

2.1平台设计目标

主要是为了提供一个安全性高、规范化、开放、用户友好的智能合约开放平台。

  • 对平台用户而言,能够很方便参与使用智能合约;
  • 对合约开发人员而言,能够方便快速构建自己一种安全性高的智能合约;
  • 对合约测试人员而言,能够快速方便测试发布的合约的功能;
  • 对合约运营人员而言,能够实时检测合约运行情况,提供一些必要的合约暂停或者销毁功能;
  • 对外部应用而言,将合约服务化,能够快速方便使用智能合约服务,快速接入应用。

2.2智能合约开放平台设计架构

根据智能合约开放的设计目标,该平台的核心功能主要分为三大管理模块合约开发、测试、部署一体化平台合约运营监测管理平台合约服务化接入平台功能详见后续章节。三大管理模块底层由代币经济管理为支撑。上层通过账户权限和实名认证管理作为平台的准入管理。

   

2-1 智能合约平台架构设计图

 

3.合约开发测试部署一体化平台

3.1集成Remix开发、测试平台

智能合约开放平台,集成Remix平台,方便平台用户进行智能合约的开发与测试。可以针对Remix进行汉化、并提供一些内置的合约调用库,例如安全数字运算的库等等。

  

3-1 Remix智能合约开发平台

3.2 一键部署测试、线上合约

提供用户一键部署测试环境合约。针对线上环境的合约,则需要走审核,合约由我方小组审核通过后,方可进行智能合约的发布。

         

3-2 智能合约正式环境提交审核模板

3.3合约标准设计约束

1)规范Token合约协议

合约的标准及限制主要是为了考虑增加合约安全性、规范性的角度出发,约束平台开发者,目前以太坊的主要协议有ERC20ERC721ERC223ERC621ERC827 5种协议。协议主要划分为同质化Token协议非同质化Token协议。智能合约开放平台将对ERC20ERC721的协议进行定制的改造,提供智能合约开放平台的同质化和非同质化协议。

2)统一的暂停及销毁

所有提交正式线上的合约必须实现约定的方法暂停、和销毁函数。一方面可以规避合约漏洞带来的风险,另外方便做统一的运营管理。

3)统一的数值计算方法

合约内涉及数值计算的方法都需要按开放平台提供的数字计算代码库进行计算,避免出现数值溢出问题。

4)必要的合约分层设计审核

针对逻辑较为复杂的合约平台会建议开发者采用分层设计,方便合约在必要的时机能够进行升级。

5)必要的权限设计审核

针对合约的一些重要方法,需要强制增加合约的访问控制逻辑,避免合约的方法被其他人乱调用。

3.4合约开放市场

合约开放市场主要定位发展成为区块链界的微信小程序,在开放平台上发布的合约,都会统一纳入到合约开放市场,在发布合约的时候附带合约的一些基本信息、合约类别、图片展示信息,便于丰富合约在市场中的展示。

            

3-3 智能合约市场

 

合约开放市场,能给用户快速寻找到满足用户需求的智能合约;同时,也提供了智能合约开发者能够快速参考的合约代码模板。


4.智能合约运营监测管理平台

4.1合约运行状态监控

1)合约的Balance监控

提供合约账户资金监控,主要适用于一些需要接收代币的合约。

2)合约的调用情况监控

统计某个合约被调用的情况,针对调用的地址进行分类统计,并可以针对调用的合约进行参数的解析。区分归类合约调用失败的交易。

3)合约的当前状态监控

针对关键合约,需要了解合约的当前详细状态,需要自己实现供监测调用的获取合约状态信息的方法,注意监控方法最好是通过直接call实现的而非走交易的形式。

4.2合约暂停和销毁

根据合约的运行情况,提供合约的暂停和销毁功能,便于在运营阶段发现合约出现异常或者漏洞的情况,能够很好的对合约进行止损。一般建议,合约在使用出现漏洞的情况下,优先使用暂停功能。


5.智能合约服务化接入平台

5.1常用合约服务化

合约服务化,主要是基于一些常用的上层业务需求,并且在现有区块链无法满足或者无法单靠区块链实现的需求场景,开放平台能够提供这些常用合约的服务化接口,方便上层应用能够快速的使用。

   

5-1 智能合约服务接入主界面

针对后期应用的发展,可以提供加密资产游戏、竞彩游戏、数字身份。以及根据存证系统的发展提供资产数字化、合同存证、资产拍卖等服务。一个合约是否需要服务化,主要取决与上层应用需求,建议按需去做。


免费领取验证码、内容安全、短信发送、直播点播体验包及云服务器等套餐

更多网易技术、产品、运营经验分享请点击