13 平台在服务注册、服务发现、服务消费三阶段的权利与义务,经三方共同参与协商、完善并达成一致。智能法 律合约案例中将服务表达为一种资产类型,服务提供方拥有服务收益权,服务消费方拥有服务使用权。在合 约中使用三个条款进行描述三方准许或必须的动作等。条款1至3分别规定了服务提供方与服务平台、服务 消费方与服务平台、提供方与消费方之间的服务注册、发布、发现、消费交互过程。 以天气预报服务流程为例,本案例中的服务提供方和服务消费方在流程开始时已拥有平台的账户。服务 提供方通过其账户发起服务注册,注册请求中附带合同范本。消费方在签署合同之前,享有服务的需求选择 和试用权。消费方可在试用满意后选择服务,进入对应合约签署确认。当合同所有参与方都签署完毕后,最 终合同书生成,发布到区块链上存证,保证可随时查取。 根据文献20]中的方法,本案例采用代码翻译器将SPESC合同转化为可执行智能合约,由消费方预付定 金以激活合约实例化运行。合约引擎通过执行合约接口调用函数记录提供服务和消费服务的过程。服务过程 将由区块链系统记录并通过智能合约执行发起区块链交易实现自动计费。若合约账⊕余额用尽,则平台将 通过网关拦截服务接口调用,直到消费方用户继续充值续费后再恢复通过。消费方用户不再希望续订天气 预报服务,则平台将终止合约,由智能合约执行退订条款完成退款结算,结東合约化服务流程。 6.2实验方案 依据前述的方法和案例,采用ANTLR和Java ASM框架实现SPESC语言在JVM运行的字节码编译器: 基于Spring Cloud Eureka实现服务交易平台:使用Spring Boot微服务应用框架编写天气预报服务,提供 RESTful API调用接口:基于多链区块链系统实现合约交易通信 与存证。实验环境包含3台机器,其中1台为 本地主机(Arch Linux,8核Intel CPU@l.6OGHz,内存8G/用于编译SEPSC智能法律合约和发起消费方调 用:另2台为阿里云服务器(Ubuntu16.04,双核Intel CP@250GHz,内存1G),分别部署带有合约引擎依赖 的Eureka平台与天气预报服务。 表2给出了一轮完整的基于智能法律合约的服务注册、发现、消费流程的模拟执行结果。表2中每一行 记录了参与方的动作任务请求、触发的合约条款序列以及引发的响应动作。表2各列中,参与方动作请求列 自上而下顺序记录了参与方的动作请求调用列表。智能合约参与方发起的动作请求按照合约规定触发条款条 件检查后才能执行,通过执行合约伴随生成区块链转账交易进行链上资产转移操作。基于链上合约模板与数 据域分离的设计原则,对于多用户和单用户操作的性能影响没有显著不同。 表2参与方动作任务请求列表 Table.2 Request list of parties'action task Requested tasks Invoked terms Responsed actions rovider commit(Register) nol 1,nol 2 Platform Register(party,service) Customer request(Discover) no2_1,no22 Platform Discover() mer request(Forecast) no3 1,no3 2 Provider Forecast(time,location) 6.3 实验验证 本轮实验分析验证了SPESC语言编译器执行效率与合约程序在微服务系统中的运行耗时。 表3智能法律合约编译实验 Table.3 Compiling experiment of the smart legal contract Input Compilation Output Number of bytes Lines of code Number of tokens Average compiling time/ms Number of bytes 994 118 187 570 2754 本地主机运行编译器对图11案例进行编译,输入合约文本通过ANTL编写的规则解析生成语法树 (AST),编译实验结果如表3所示,统计输入合约文本字符数为994,行数为118:编译过程中的AST含有 标记数为187个:再通过Java ASM框架编写的字节码生成模块生成.class可执行文件,重复执行10次的平均 用时为570ms,编译输出的可执行合约文件字节大小为2754B。上述实验结果表明,合约编译速度快且所生成13 平台在服务注册、服务发现、服务消费三阶段的权利与义务,经三方共同参与协商、完善并达成一致。智能法 律合约案例中将服务表达为一种资产类型,服务提供方拥有服务收益权,服务消费方拥有服务使用权。在合 约中使用三个条款进行描述三方准许或必须的动作等。条款 1 至 3 分别规定了服务提供方与服务平台、服务 消费方与服务平台、提供方与消费方之间的服务注册、发布、发现、消费交互过程。 以天气预报服务流程为例,本案例中的服务提供方和服务消费方在流程开始时已拥有平台的账户。服务 提供方通过其账户发起服务注册,注册请求中附带合同范本。消费方在签署合同之前,享有服务的需求选择 和试用权。消费方可在试用满意后选择服务,进入对应合约签署确认。当合同所有参与方都签署完毕后,最 终合同书生成,发布到区块链上存证,保证可随时查取。 根据文献[20]中的方法,本案例采用代码翻译器将 SPESC 合同转化为可执行智能合约,由消费方预付定 金以激活合约实例化运行。合约引擎通过执行合约接口调用函数记录提供服务和消费服务的过程。服务过程 将由区块链系统记录并通过智能合约执行发起区块链交易实现自动计费。若合约账户中余额用尽,则平台将 通过网关拦截服务接口调用,直到消费方用户继续充值续费后再恢复通过。若消费方用户不再希望续订天气 预报服务,则平台将终止合约,由智能合约执行退订条款完成退款结算,结束合约化服务流程。 6.2 实验方案 依据前述的方法和案例,采用 ANTLR 和 Java ASM 框架实现 SPESC 语言在 JVM 运行的字节码编译器; 基于 Spring Cloud Eureka 实现服务交易平台;使用 Spring Boot 微服务应用框架编写天气预报服务,提供 RESTful API 调用接口;基于多链区块链系统实现合约交易通信与存证。实验环境包含 3 台机器,其中 1 台为 本地主机(Arch Linux, 8 核 Intel CPU@1.60GHz, 内存 8G),用于编译 SEPSC 智能法律合约和发起消费方调 用;另 2 台为阿里云服务器(Ubuntu 16.04, 双核 Intel CPU@2.50GHz, 内存 1G),分别部署带有合约引擎依赖 的 Eureka 平台与天气预报服务。 表 2 给出了一轮完整的基于智能法律合约的服务注册、发现、消费流程的模拟执行结果。表 2 中每一行 记录了参与方的动作任务请求、触发的合约条款序列以及引发的响应动作。表 2 各列中,参与方动作请求列 自上而下顺序记录了参与方的动作请求调用列表。智能合约参与方发起的动作请求按照合约规定触发条款条 件检查后才能执行,通过执行合约伴随生成区块链转账交易进行链上资产转移操作。基于链上合约模板与数 据域分离的设计原则,对于多用户和单用户操作的性能影响没有显著不同。 表 2 参与方动作任务请求列表 Table.2 Request list of parties’ action task Requested tasks Invoked terms Responsed actions Provider commit(Register) no1_1, no1_2 Platform Register(party, service) Customer request(Discover) no2_1, no2_2 Platform Discover() Customer request(Forecast) no3_1, no3_2 Provider Forecast(time, location) 6.3 实验验证 本轮实验分析验证了 SPESC 语言编译器执行效率与合约程序在微服务系统中的运行耗时。 表 3 智能法律合约编译实验 Table.3 Compiling experiment of the smart legal contract Input Compilation Output Number of bytes Lines of code Number of tokens Average compiling time ms Number of bytes 994 118 187 570 2754 本地主机运行编译器对图 11 案例进行编译,输入合约文本通过 ANTRL 编写的规则解析生成语法树 (AST),编译实验结果如表 3 所示,统计输入合约文本字符数为 994,行数为 118;编译过程中的 AST 含有 标记数为 187 个;再通过 JavaASM 框架编写的字节码生成模块生成.class 可执行文件,重复执行 10 次的平均 用时为 570ms,编译输出的可执行合约文件字节大小为 2754B。上述实验结果表明,合约编译速度快且所生成 录用稿件,非最终出版稿