申玉民,王金龙*,胡殿凯,刘星宇
(1.青岛理工大学信息与控制工程学院,山东青岛 266525;2.铭数科技(青岛)有限公司,山东青岛 266041)
建筑信息模型(Building Information Modeling,BIM)是一种管理整个建筑生命周期中的基本建筑设计和项目数据的方法[1]。在建筑物整个生命周期中,BIM提供统一的表示、数据框架和组织,可以与各种数据库集成,简化文档管理,可视化分析过程和结果以及提供可持续性分析和仿真[2]。当前,BIM在大型建筑设计、施工、运维的应用越来越广泛[3-5]。一些大型项目的BIM图纸由于其复杂性,工作量巨大,往往涉及建筑、结构、设备等多个专业,为了提高效率,这些BIM图纸的设计往往需要多人协同创作[6]。但是多人协同创作BIM图纸通常会带来BIM图纸版本混乱、版权划分无准确依据的问题[6-8]。
传统BIM图纸的多人协同创作大多是依靠BIM设计软件Revit中自带的工作共享或模型链接模式实现的[9-10],但是该方法存在对计算机性能要求高、单向更新的缺点[9],并且无法记录和追溯每次创作后的BIM图纸信息。之后出现了基于Wiki[11]和云服务的多人协同创作系统,但是由于Wiki仅适用于像知识共享[12]或协作学习[13-14]等场景下的文本信息多人协同创作过程,所以无法应用到BIM图纸的多人协同创作过程中来。云服务应用范围更加广泛,可以缓解本地计算机性能对BIM图纸多人协同创作过程效率的约束,因此研究者提出将云服务与BIM技术结合起来,开发了基于云服务的BIM协同系统[15],使用云服务器代替本地计算机完成BIM图纸的计算和协作,同时将每次创作后的BIM图纸信息存储到服务器中,解决了传统BIM图纸多人协同创作方法存在的计算机性能要求高等问题,但是由于所有数据都存储在云服务器中,如果被黑客侵入恶意删除或修改数据会造成严重的数据安全问题[16],虽然可以通过加密、授权等方式避免一些相关问题,但是仍然存在一些安全漏洞未被解决,数据安全无法保证。针对基于云服务的BIM协同系统存在的问题,一些研究者开始尝试利用区块链解决建筑信息化应用问题[17-20],区块链具有的去中心化、可追溯以及防篡改等特性可以较好地解决上述BIM图纸信息记录、数据安全等问题。Zheng等[21]提出使用区块链记录单人创作过程中每次创作后的BIM图纸信息,利用区块链防篡改和可追溯的性质,完整记录BIM图纸整个创作过程并且保证了数据的安全性,实现了单人创作BIM图纸信息的记录,但是并未考虑多人协同创作BIM图纸的信息记录问题。因此,在多人协同创作BIM图纸的情况下,如何准确、安全地记录BIM图纸的创作过程就成为一个亟待解决的问题,这也是保障设计者们的责权利问题的关键。
基于上述研究背景和出现的问题,本文对基于区块链的BIM图纸多人协同创作系统进行了研究,使用区块链技术记录BIM图纸整个创作过程,解决了多人协同创作BIM图纸版本混乱、不易溯源以及存在数据安全风险的问题。实验结果表明,系统具有良好的性能,能够满足和解决BIM图纸多人协同创作实际应用中的需求和问题。
建筑信息模型(BIM)图纸通常需要多名设计者同时在一张图纸上创作,由于对数据泄露、利益冲突、信息滥用的担忧,当前往往需要严格的许可管理[17]。因此,使用联盟链构建基于区块链的BIM图纸多人协同创作系统。
如图1所示,本文提出的BIM图纸多人协同创作系统采用联盟链技术实现,构建的系统模型主要由BIM图纸设计者和BIM图纸负责人构成的创作信息记录链,以及BIM图纸数据库组成。BIM图纸设计者加入创作信息记录链需要获得BIM图纸负责人的许可,入链后BIM图纸设计者可以通过远程过程调用(Remote Procedure Call,RPC)协议由已部署的智能合约向创作信息记录链中发送通过解析BIM图纸构造的BIM图纸信息并保存,然后将完整BIM图纸保存到BIM图纸数据库中。同时,其他BIM图纸设计者如果需要创作BIM图纸,可以从创作信息记录链中获取图纸最后一次创作后的唯一BIM图纸信息并根据该信息在BIM图纸数据库中搜索获取对应的BIM图纸进行创作。
图1 本文系统模型Fig.1 The proposed systemmodel
模型中主要包含如下实体。
1)BIM图纸设计者:各个BIM图纸设计者各自独立,和BIM图纸负责人共同组成创作信息记录链,共同维护链上数据,实现数据的分中心化维护。BIM图纸设计者加入到创作信息记录链中需要获取BIM图纸负责人的许可。
2)BIM图纸负责人:BIM图纸负责人是BIM图纸的发起者和所有者,主要负责授权BIM图纸设计者加入创作信息记录链。
3)BIM图纸数据库:用于存储初始以及每次创作后的BIM图纸,存储格式={BIM图纸实体实例信息hash,创作后完整BIM图纸}。
本文系统使用联盟链作为BIM图纸信息的存储媒介,利用区块链技术保证各设计者用户上传的BIM图纸信息的不可篡改和公开透明,为以后设计者用户间可能发生的版权纠纷问题提供存证。同时使用设计者用户私钥对BIM图纸信息签名,进一步降低了多人协同创作BIM图纸潜在的安全风险。
基于区块链的BIM图纸多人创作系统架构如图2所示,包括以下六层结构。
图2 本文系统架构Fig.2 The proposed system architecture
1)用户层。包括BIM图纸设计者和BIM图纸负责人两类用户,BIM图纸设计者用户主要完成对BIM图纸的创作,BIM图纸负责人用户是BIM图纸的所有者和管理者,主要负责为BIM图纸设计者用户授权。
2)应用服务层。主要包括针对系统应用场景设计的服务功能。针对用户操作场景,设计了用户注册和初始BIM图纸上传功能;针对数字签名提取验证场景,设计了BIM图纸修改权设定和用户数字签名提取验证功能;针对BIM图纸修改提交场景,设计了修改后BIM图纸提交以及最新BIM图纸获取功能。
3)节点层。包括BIM图纸设计者用户节点和BIM图纸负责人用户节点两种类型,一个BIM图纸设计者用户节点对应一个BIM图纸设计者用户,用户的各种操作都由节点完成。
4)合约层。主要包括为区块链节点提供相应功能的智能合约。具体来说,用户注册合约对应用户注册功能;BIM图纸修改权设定合约对应BIM图纸修改权设定功能;BIM图纸最新修改信息获取合约对应最新BIM图纸获取功能;BIM图纸修改信息上传合约对应修改后BIM图纸提交功能;数字签名验证合约对应用户数字签名提取验证功能。
5)共识层。采用Kafka共识机制,保证区块链交易能够快速地在所有区块链节点之间达成一致性共识并上链存储。
6)数据层。主要包括创作信息记录链。创作信息记录链由所有节点共同维护,保证了BIM图纸信息记录的公开和透明。
为了方便系统调用,使用fabric-go-sdk封装合约链码并向系统和用户暴露接口,具体接口名称和属性见表1。
表1 接口名称和属性Tab.1 Interfacenamesand attributes
下面将分别介绍系统各个模块的功能和流程。
1.2.1 用户操作模块
本模块主要实现用户注册和初始BIM图纸上传两种功能,具体流程如图3所示。
图3 用户操作模块流程Fig.3 Flowchart of user operation module
1)用户注册。
如图3虚线所示,BIM图纸预设设计者用户User2发起用户注册请求,将用户注册信息user发送到系统为之分配的用户节点Pu,调用UserRegister()接口触发用户注册合约使用椭圆曲线加密算法为用户生成唯一的公私钥对,并将用户注册信息与公私钥对绑定,即私钥=Map[用户名,用户密码]。最后,用户节点Pu将公私钥对返回给用户。
其中,用户注册信息user定义如下:
user={name,pwd,id_encryption}
其中name、pwd、id_encryption分别代表用户名、用户密码以及经过SHA1()函数加密过的用户身份证号。将身份证号加密是为了防止用户节点被不法黑客入侵带来的用户真实身份信息泄露问题。
2)初始BIM图纸上传。
设定BIM图纸的预设设计者用户User2已经在系统中进行了用户注册。如图3序号①所示,预设设计者用户User2发起BIM图纸初始信息上传请求,将初始BIM图纸上传到对应的用户节点Pu。随后用户节点Pu使用ifcOpenShell解析BIM图纸,获取BIM图纸实体实例信息BIM_main,然后调用PutChangeRecord()接口触发BIM图纸修改信息上传合约生成BIM图纸初始信息记录BIM_init,同时将BIM图纸初始信息记录BIM_init打包成交易后共识上链,如图3序号②和③所示。最后用户节点Pu将初始BIM图纸上传到BIM图纸数据库中,如图3序号④所示。
其中,BIM图纸实体实例信息BIM_main定义如下:
BIM_main={GUID,app_name,per,org,action,T,mod_date,mod_user,mod_app}
其内容依次为BIM图纸全局唯一标识符(Globally Unique Identifier,GUID)、BIM图纸创建应用名称、创建人信息、创建人所属组织信息、修改状态、BIM图纸创建时间戳、修改日期、修改用户、修改应用。由于某些项目在BIM图纸创建时未设置等原因,上述某些内容可能为空。
BIM图纸初始信息记录BIM_init定义如下:
BIM_init={GUID,uploader_name,version,main_hash,uploader_sign,root_hash,T,MRS_hash,uploader_pub}
具体包括BIM图纸全局唯一标识符GUID、上传者用户名uploader_name、BIM图纸版本version、BIM图纸实体实例信息哈希值main_hash、上传者私钥签名uploader_sign、溯源哈希值root_hash、时间戳T、BIM图纸修改权设定交易哈希值MRS_hash、上传者公钥uploader_pub。其中:由于是初始BIM图纸,所以初始BIM图纸版本设为1,之后每次上传BIM图纸版本默认加1;BIM图纸修改权设定交易哈希值由下文数字签名提取验证模块调用PutRightRecord()接口完成BIM图纸修改权设定合约生成;root_hash表示当前图纸的上一次修改交易哈希值,该值可以通过交易自带的GetTxID()函数获取,由于这是BIM图纸的初始信息,所以设定为BIM图纸修改权设定交易哈希值。
具体实例如图4所示。原始BIM为一个房屋模型,包括家具、门、窗、墙等组件。用户User2首先解析初始BIM图纸得到BIM图纸实体实例信息BIM_main,然后将其和用户名一同输入初始BIM图纸上传界面,点击界面中的上传按钮后调用PutChangeRecord()接口生成BIM图纸初始信息记录BIM_init,然后将BIM_init打包成交易后共识上链,同时将初始BIM图纸上传到BIM图纸数据库中。由于是初始图纸,BIM图纸实体实例信息中修改状态action默认为“NOCHANGE”,BIM图纸初始信息记录中将溯源哈希root_hash设置为和图5中BIM图纸修改权设定交易哈希值MRS_hash相同。
图4 初始BIM图纸上传示意图Fig.4 Schematic diagram of initial BIM drawing uploading
在本文系统中,修改后BIM图纸信息被分别存储在若干个区块中,区块包括区块头和区块体两个部分,区块头中包括头哈希Hash_h、父哈希Hash_pre、时间戳T以及默克尔树根MT_Root。其中,头哈希由父哈希和本区块头中的其他信息进行哈希运算得到。区块体中主要存储BIM图纸修改记录BIM_change。
其中,BIM图纸修改记录BIM_change定义如下:
BIM_change={GUID,modifier_name,version,main_hash,modifier_sign,root_hash,T,MRS_hash,modifier_pub}
其内容依次为BIM图纸全局唯一标识符、修改者用户名、BIM图纸版本、实体实例信息哈希值、修改者私钥签名、溯源哈希值、时间戳、BIM图纸修改权设定交易哈希值以及修改者公钥。其中,root_hash表示当前图纸的上一次修改记录哈希值,如果这是当前BIM图纸的第一次修改,则该值设定为BIM图纸初始信息上传交易哈希值,该值可以通过交易自带的GetTxID()函数获取。
1.2.2 数字签名提取验证模块
本模块主要实现用户数字签名提取验证以及BIM图纸修改权设定两个功能。系统中的所有用户操作都需要进行用户数字签名验证,验证用户是不是BIM图纸的预设设计者用户,从而保证系统的安全性和鲁棒性,因此本模块在系统中非常重要。
1)用户数字签名提取验证。
用户数字签名提取验证功能在系统中是通过触发数字签名验证合约实现的,主要有如下步骤:首先获取用户签名的原数据、用户私钥签名以及用户公钥,然后将其传入数字签名验证合约中的verify()验证函数使用用户公钥解密用户私钥签名得到解密后的明文,和用户签名的原数据做对比,如果相同则说明用户有权利进行操作或者原数据没有被篡改。
用户数字签名提取验证功能步骤虽然比较简单,但是对于整个系统很重要,它进一步保证了系统中用户各类操作的合法性和安全性。
2)BIM图纸修改权设定。
BIM图纸预设设计者用户对应的用户节点解析完初始BIM图纸后,调用PutRightRecord()接口触发BIM图纸修改权设定合约根据预先设定的设计者列表,使用列表中设计者的私钥对BIM图纸初始信息记录BIM_init中的全局唯一标识符签名,从而得到设计者数字签名列表,然后继续生成BIM图纸修改权设定记录MRS,最后将BIM图纸修改权设定记录MRS打包成交易后共识上链。
其中,BIM图纸修改权设定记录MRS定义如下:
MRS={BIM_desc,sign_list,GUID,main_hash,co_desc,T,MRS_hash}
其 中BIM_desc、sign_list、GUID、main_hash、co_desc、T、MRS_hash分别代表BIM图纸描述、设计者私钥签名列表、BIM图纸全局唯一标识符、实体实例信息哈希值、设计者公司简介、时间戳以及此次BIM图纸修改权设定交易哈希值。
图5说明了BIM图纸修改权设定的整个过程,设定图4中初始BIM图纸的预设设计者用户为User1和User2。当用户User2对应的用户节点解析完初始BIM图纸后,将解析得到的初始BIM图纸实体实例信息和预设用户名列表输入BIM图纸修改权设定界面,点击界面中的设定按钮后调用PutRightRecord()接口使用预设设计者用户User1和User2的私钥对BIM图纸全局唯一标识符签名并生成设计者私钥签名列表sign_list,然后继续生成BIM图纸修改权设定记录MRS,最后将记录打包成交易共识上链存储。图4中BIM图纸初始信息记录的MRS_hash即为此次BIM图纸修改权设定记录中的MRS_hash。
图5 BIM图纸修改权设定示意图Fig.5 Schematic diagram of setting BIM drawingmodification right
1.2.3 BIM图纸修改提交模块
为了满足BIM图纸频繁修改的需求,避免BIM图纸频繁修改导致的BIM图纸版本混乱和版权划分无准确依据等问题,本模块使用智能合约技术自动检验用户操作合法性,自动记录合法用户的修改操作,利用智能合约规范链上交易者的行为,有效防止了上述问题的产生。
本模块主要实现修改后BIM图纸提交以及最新BIM图纸获取两个功能。模块完整流程如图6所示。
图6 BIM图纸修改提交模块流程Fig.6 Flowchart of BIM drawing modification and submission module
1)最新BIM图纸获取。
如图6序号①和②所示,BIM图纸预设设计者用户User2发起最新BIM图纸获取请求,触发数字签名验证合约验证当前用户是否是BIM图纸的预设修改用户,如果验证通过,则继续进行后面操作,否则拒绝请求并退出。然后,调用QueryChangeRecord()接口触发BIM图纸最新修改信息获取合约从创作信息记录链上查询最新BIM图纸信息hash,即区块链中BIM图纸最后一次修改记录中的实体实例信息哈希值,见图6序号③。随后,用户节点Pu将查询到的最新BIM图纸信息hash返回给用户,用户根据该hash去BIM图纸数据库中查找最新BIM图纸进行创作,如图6序号④~⑥所示。
2)修改后BIM图纸提交。
BIM图纸预设设计者用户User2在修改完BIM图纸后,发起BIM图纸修改信息提交请求。随后触发数字签名验证合约验证当前用户是否是图纸预设修改用户,如果验证通过,则继续进行后面操作,否则拒绝请求并退出,如图6下半部分序号(1)和(2)所示。之后,调用PutChangeRecord()接口触发BIM图纸最新修改信息获取合约查询当前链上最新BIM图纸修改信息记录中的BIM图纸版本并和本地修改前BIM图纸版本比较,根据比较结果和接口预设规则返回最新BIM图纸修改信息记录或NULL,见图6序号(3)和(4)。如图6序号(5)~(7)所示,如果返回最新BIM图纸修改信息记录则根据记录从BIM图纸数据库中获取完整BIM图纸并与本地修改后BIM图纸使用脚本通过Revit等建模软件实现BIM图纸融合,然后使用ifcOpenShell解析融合后BIM图纸获得BIM图纸实体实例信息BIM_main,继而生成BIM图纸修改信息记录BIM_change,之后将BIM_change打包成交易后共识上链。最后,用户节点Pu将融合后的完整BIM图纸上传到BIM图纸数据库中存储。
上述流程提到的PutChangeRecord()接口预设规则如下:
a)如果当前链上BIM图纸版本等于本地修改前BIM图纸图纸版本加1,说明本地修改前BIM图纸图纸被多位设计者修改,则返回当前链上最新BIM图纸修改信息记录并获取完整BIM图纸与本地修改后BIM图纸融合,融合后BIM图纸版本设为本地修改前BIM图纸版本加1;
b)如果当前链上BIM图纸版本为NULL或小于本地修改前BIM图纸图纸版本加1,说明本地修改后BIM图纸为最新版,则返回NULL,本地修改后BIM图纸版本设为本地修改前BIM图纸版本加1;
c)如果当前链上BIM图纸版本大于本地修改前BIM图纸版本加1,说明本地修改后BIM图纸前已有多个版本,则返回当前链上最新BIM图纸修改信息记录并获取完整BIM图纸与本地修改后BIM图纸融合,融合后BIM图纸版本设为当前链上最新BIM图纸版本加1。
当上传初始BIM图纸时,经查询链上最新BIM图纸版本为NULL,应用接口规则b返回NULL后直接将接口生成的BIM图纸初始信息记录和初始BIM图纸上传到区块链和BIM图纸数据库中,初始BIM图纸版本号为1。图7以各版本BIM图纸链上次序为例说明多位BIM图纸设计者在同一初始版本BIM图纸的基础上进行协作修改提交的流程,图中数字代表BIM图纸版本号,大写字母代表BIM图纸设计者。
图7 多人协作修改提交示意图Fig.7 Schematic diagram of multi-person collaborativemodification and submission
下面将对图7中的多人协作修改提交流程做详细解释。
1)A、B、C、D四位设计者同时获取版本1的初始BIM图纸进行修改。
2)设计者A首先创作完,首先查看当前链中最新BIM图纸版本号,结果是1,比本地修改前BIM图纸版本加1要小,根据PutChangeRecord()接口规则b,将本地修改后BIM图纸版本设为本地修改前BIM图纸版本加1后直接上传到区块链和BIM图纸数据库中,记为版本A2。
3)设计者B随后创作完毕,首先查看当前链中最新BIM图纸版本号,结果是2,和本地修改前BIM图纸版本加1相同,根据PutChangeRecord()接口规则a,返回当前链上最新BIM图纸修改信息记录并获取完整BIM图纸与本地修改后BIM图纸融合,将融合后的BIM图纸版本设为本地修改前BIM图纸版本加1后上传到区块链和BIM图纸数据库中,记为版本AB2,此时设计者E获取版本AB2的BIM图纸进行创作。
4)设计者E创作完毕,首先查看当前链中最新BIM图纸版本号,结果是2,比本地修改前BIM图纸版本加1要小,根据PutChangeRecord()接口规则b,将本地修改后BIM图纸版本设为本地修改前BIM图纸版本加1后直接上传到区块链和BIM图纸数据库中,记为版本E3。
5)此时设计者C创作完毕,首先查看当前链中最新BIM图纸版本号,结果是3,比本地修改前BIM图纸版本加1要大,根据PutChangeRecord()接口规则c,返回当前链上最新BIM图纸修改信息记录并获取完整BIM图纸与本地修改后BIM图纸融合,将融合后的BIM图纸版本设为当前链上最新BIM图纸版本加1后上传到区块链和BIM图纸数据库中,记为版本C4。以上就是图7中多人协作修改提交流程的详细解释,未说明设计者D的修改提交操作和设计者C同理,在此不再赘述,按照此方法上传修改后BIM图纸可以较好地解决多人协同创作同一BIM图纸上传时带来的融合或版本控制问题。
BIM图纸修改提交具体实例如图8所示,图中仅展示主要步骤。设定这是图4中初始BIM图纸的第一次修改,修改操作为删除图纸中的一个家具组件。用户User2发起BIM图纸最新信息获取请求,通过最新BIM图纸获取界面调用QueryChangeRecord()接口从本地区块链中搜索BIM图纸最新实体实例信息hash,然后根据该hash从BIM图纸数据库获取最新BIM图纸进行修改,如图8中序号①和②所示。用户User2修改完BIM图纸之后,将修改状态action设置为“DELETED”,然后发起BIM图纸修改提交请求,将用户名和修改后BIM图纸实体实例信息输入修改后BIM图纸提交界面,点击提交按钮后调用PutChangeRecord()接口查询链上最新BIM图纸版本并和本地修改前BIM图纸版本加1比较,发现链上最新BIM图纸版本比本地修改前BIM图纸版本加1要小,根据PutChangeRecord()接口规则b,将本地修改后的BIM图纸版本设为本地修改前的BIM图纸版本加1,然后解析修改后的BIM图纸获取BIM图纸实体实例信息,生成BIM图纸修改信息记录BIM_change并打包成交易共识上链,如图8中序号③~⑤所示,最后将修改后的BIM图纸上传到BIM图纸数据库中。
图8 BIM图纸修改提交示意图Fig.8 Schematic diagram of BIM drawing modification and submission
本文系统基于Hyperledger Fabric1.4框架结合智能合约技术开发实现。本文系统安全机制依靠Fabric成熟的安全机制,选用的共识机制Kafka也是Fabric自带的共识机制,因此系统安全性得到保障。
实验用设备为两台笔记本,两台笔记本均为8 GB内存且都使用4核lntel Core i5处理器,每台笔记本都运行4核2 GB内存的虚拟机两台。虚拟机中均搭载Ubuntu18.04系统。Kafka实验环境共有3个ZooKeeper服务、4个Kafka服务、3个排序节点服务、2个组织。每个组织一个证书颁发机构(Certificate Authority,CA)服务、3个节点,组织1两个节点,组织2一个节点,每个节点对应一个CouchDB。背书策略设定为每个组织中至少一个背书节点参与背书。
图9为实验BIM,包括家具、门、窗以及墙组件。预设修改用户为User1、User2以及User3,每位用户对应一个节点,User1和User2属于组织1,User3属于组织2。
图9 实验BIMFig.9 Experimental BIM
系统性能测试相关指标主要包括:节点提交交易到系统出块的时间Btime、最长出块等待时间Btimeout、区块最大交易数MMCount。其中,Btimeout与MMCount为系统的出块条件,满足其中之一的条件即可出块。
2.2.1 出块时间测试
针对同时间段内多用户节点并发交易的场景,进行系统出块时间测试,测试系统在处理多节点并发交易时,出块时间是否能够满足用户日常应用。测试环境设定如下:每个组织中的用户节点都不停地发送1 000条BIM图纸修改提交交易,测试系统的平均出块时间是否满足要求,即小于设定的最大出块时间。本文按照Fabric联盟链出块常规设定Btimeout为2 s,本文系统共3个用户节点,故设定MMCount为3。
一共进行20次测试,每次测试后计算平均出块时间,结果如图10所示。由图10可知,出块时间一开始呈现上升趋势,到第9次测试左右到达最大出块时间,之后围绕平均出块时间上下波动,这种结果的原因是随着测试次数的增加,大量的测试数据占用了较多的系统内存,所以会对系统的性能产生一定影响。经过20次测试,本文系统处理BIM图纸修改提交交易的平均出块时间为0.467 85 s,最大时间为0.55 s,远远小于设定的最大出块时间2 s,故实验的出块条件为达到区块最大交易数。实验结果表明,本文系统能够完善处理3个节点并发提交的3 000条交易请求,能够满足正常系统的应用需求。
图10 出块时间Fig.10 Block generation time
2.2.2 系统处理速率测试
针对多用户并发大量交易请求的场景,进行系统处理速率测试,测试系统在处理多节点并发交易时,系统在保证最大出块时间内稳定出块的条件下的处理速率。测试环境设定如下:每个组织中的节点同时发出400、800、1 200、1 600、2000、2400条交易请求,测试系统在保证最大出块时间内稳定出块的条件下的处理速率。
测试结果如图11所示。由图11可以看出,随着用户请求频率的增加,系统处理速率最初是线性增加的,直到用户请求频率达到每秒1 600次交易时,系统处理速率逐渐达到饱和,约为每秒1 568次交易。随后系统处理速率由于数据量过大占用内存等原因而开始下降。实验结果表明,系统在保证最大出块时间内稳定出块的条件下的最大处理速率为每秒1 568次交易,完全可以满足用户日常的正常使用需求以及系统的使用标准。
图11 系统处理速率Fig.11 System processing rate
区块链是一种通过去中心化和去信任化,依靠集体共同维护的数据库技术,作为近几年的新兴技术已经在各行各业引起了广泛的关注和研究热潮。BIM通过数字化手段,将建筑的各种信息整合于一个三维模型信息数据库中,与区块链技术有很好的契合点。本文结合区块链技术,提出了基于区块链的BIM图纸多人协同创作系统,将BIM图纸整个创作过程中的所有创作后BIM图纸信息上链存储,依靠区块链可追溯、防篡改等特性,解决了BIM图纸版本混乱、不易溯源以及存在数据安全风险等问题。最后,设计了相关实验对系统性能进行了测试,测试结果表明系统具有良好的性能,能够满足用户日常需求。本文提出的BIM图纸多人创作系统可以为后续的版权划分工作提供依据,后续可以对此展开研究。