此文已由作者苏州授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验
智能合约作为区块链2.0的关键技术存正,17年至18年初,火遍全球的ICO和CryptoKittes吹响了智能合约的应用的号角,在此期间以太坊的智能合约数量也呈现指数型的增长。然而,大量的合约安全漏洞、不友好的使用体验、市场的不规范散乱等现状严重制约了智能合约的快速发展。智能合约的开放平台的建设,能够解决智能合约的现有问题并且友好支撑上层应用,可以作为我们的后期发展思路的一个参考。
目前,以太坊主链上已经发布了10000+智能合约,但是存在漏洞的合约却占比很多,也给部分组织造成了很大的经济损失。个人根据历史发生的一些合约攻击,并针对合约的漏洞进行了一个简单的统计分析。如下图所示:
图1-1 以太坊智能合约漏洞分析
根据,统计结果得知,智能合约的安全漏洞主要原因可以归结为合约代码编写上的bug所导致的(而不是以太坊体系的错误),然而这类错误其实可以通过事前的代码审核、规范化的合约设计、强制性的安全性编码约束,以及事后的合约执行监控避免智能合约安全漏洞的发生。
在区块链商业应用的场景下,公司若想构建基于以太坊智能合约的应用时,就会涉及到智能合约的开发、测试、部署、运行检测、停止、废弃删除等各个生命周期的管理。然而现有的以太坊的智能合约的在编写使用方面还没有一种很好对上层应用的支撑方式,从而造成了在公司内部,非区块链技术部门在使用服务时的准入门槛高的情况。从而提供一套上层应用使用友好的智能合约开发平台是非常有必要的。
我们知道智能合约的运行被调用都是通过交易的方式进行的,然而在以太坊系统中并未提供一个针对智能合约的运行监控的方式,无法知道当前合约运行的情况,从而不能很好的给上层应用提供一些辅助决策信息。
主要是为了提供一个安全性高、规范化、开放、用户友好的智能合约开放平台。
根据智能合约开放的设计目标,该平台的核心功能主要分为三大管理模块“合约开发、测试、部署一体化平台”、“合约运营监测管理平台”和“合约服务化接入平台”,功能详见后续章节。三大管理模块底层由代币经济管理为支撑。上层通过账户权限和实名认证管理作为平台的准入管理。
图2-1 智能合约平台架构设计图
智能合约开放平台,集成Remix平台,方便平台用户进行智能合约的开发与测试。可以针对Remix进行汉化、并提供一些内置的合约调用库,例如安全数字运算的库等等。
图3-1 Remix智能合约开发平台
提供用户一键部署测试环境合约。针对线上环境的合约,则需要走审核,合约由我方小组审核通过后,方可进行智能合约的发布。
图3-2 智能合约正式环境提交审核模板
1)规范Token合约协议
合约的标准及限制主要是为了考虑增加合约安全性、规范性的角度出发,约束平台开发者,目前以太坊的主要协议有ERC20、ERC721、ERC223、ERC621和ERC827 5种协议。协议主要划分为同质化Token协议和非同质化Token协议。智能合约开放平台将对ERC20和ERC721的协议进行定制的改造,提供智能合约开放平台的同质化和非同质化协议。
2)统一的暂停及销毁
所有提交正式线上的合约必须实现约定的方法暂停、和销毁函数。一方面可以规避合约漏洞带来的风险,另外方便做统一的运营管理。
3)统一的数值计算方法
合约内涉及数值计算的方法都需要按开放平台提供的数字计算代码库进行计算,避免出现数值溢出问题。
4)必要的合约分层设计审核
针对逻辑较为复杂的合约平台会建议开发者采用分层设计,方便合约在必要的时机能够进行升级。
5)必要的权限设计审核
针对合约的一些重要方法,需要强制增加合约的访问控制逻辑,避免合约的方法被其他人乱调用。
合约开放市场主要定位发展成为区块链界的“微信小程序”,在开放平台上发布的合约,都会统一纳入到合约开放市场,在发布合约的时候附带合约的一些基本信息、合约类别、图片展示信息,便于丰富合约在市场中的展示。
图3-3 智能合约市场
合约开放市场,能给用户快速寻找到满足用户需求的智能合约;同时,也提供了智能合约开发者能够快速参考的合约代码模板。
1)合约的Balance监控
提供合约账户资金监控,主要适用于一些需要接收代币的合约。
2)合约的调用情况监控
统计某个合约被调用的情况,针对调用的地址进行分类统计,并可以针对调用的合约进行参数的解析。区分归类合约调用失败的交易。
3)合约的当前状态监控
针对关键合约,需要了解合约的当前详细状态,需要自己实现供监测调用的获取合约状态信息的方法,注意监控方法最好是通过直接call实现的而非走交易的形式。
根据合约的运行情况,提供合约的暂停和销毁功能,便于在运营阶段发现合约出现异常或者漏洞的情况,能够很好的对合约进行止损。一般建议,合约在使用出现漏洞的情况下,优先使用暂停功能。
合约服务化,主要是基于一些常用的上层业务需求,并且在现有区块链无法满足或者无法单靠区块链实现的需求场景,开放平台能够提供这些常用合约的服务化接口,方便上层应用能够快速的使用。
图5-1 智能合约服务接入主界面
针对后期应用的发展,可以提供加密资产游戏、竞彩游戏、数字身份。以及根据存证系统的发展提供资产数字化、合同存证、资产拍卖等服务。一个合约是否需要服务化,主要取决与上层应用需求,建议按需去做。
免费领取验证码、内容安全、短信发送、直播点播体验包及云服务器等套餐
更多网易技术、产品、运营经验分享请点击。