邵子尧, 姜 怡, 南林娜, 范宇晗, 彭 力
(江南大学 物联网工程学院, 江苏 无锡 214122)
随着国内城市化进程不断加快,租房市场已成为刚性需求市场。 根据《2021年中国房屋租赁市场分析报告》,近年来受国家支持力度的加大、利好政策的出台等影响,国内房屋租赁行业得到较快的发展。 2017年7 月,住建部等九部门联合印发《关于在人口净流入的大中城市加快发展住房租赁市场的通知》[1],鼓励2020年,租房市场规模将达到2.71万亿元,到2023年国内房屋租赁总面积将会达到83.82亿平方米,租赁人口达到2.48 亿人[2]。
因此,中国租赁市场发展迅速。 但是研究可知,大部分租赁市场不规范,市场供需不平衡,导致许多的社会资源被浪费。 国内房屋租赁体系主要可分为4 类[3]:全国性租房类门户网站、全国性房地产中介的专用系统、全国性共享式短租平台、由政府主导和筹备的房屋租赁平台以及公租房。 但由于租房信息登记不全、房源安全监管不到位、虚拟且隐蔽的网络环境等风险的存在,导致国内现有的租房系统存在一定问题。 其主要问题可表述为[4]:缺乏沟通,造成信任不足。 在房屋租赁场景中有着多种信任需求,对于不同主体需求可得探讨阐释如下:
(1) 交易信息的完整性与防伪。
(2) 房源信息在房主与用户之间传递的完整性与真实性。
然而,房主与租客之间有着天然的信息壁垒,而两者的交易又只通过第三方平台实现,相互间的信息交流是否真实可靠只依赖于第三方平台的可信度,因此交易存在未知风险,可信度评估上还需不断完善。 同时,租赁双方用户的信息真实性与隐私安全性也得不到保障[5-7]。
区块链第一次出现是在2008年,那时“中本聪”在密码学论坛上公开了了《比特币: 一种点对点的电子现金系统》一文[8]。
区块链作为一种典型的分布式账本技术,通过共识等多边形自治技术手段支持数据验证、共享、计算、存储等功能[9]。 区块链以区块作为存储单位,依据时间戳从早到晚组成了一个单项链式结构。 可利用共识机制实现网络中各节点之间的信息共享;使用非对称式加密技术保证信息的完整性、不可篡改性与安全性;通过对挖出区块的矿工进行奖励,激励矿工去生成区块;利用在链上部署智能合约实现区块链的自治性。 总体来说,区块链构成了一种全新的、自治的分布式基础架构与计算范式[10]。
1.2.1 去中心化
与其他的分布式一致性协议相比,区块链最显著的优势就是去中心化。 区块链利用POW 算法等共识机制解决拜占庭将军问题,其开放性网络允许任意节点接入并下载账本,同时,当小部分节点被恶意入侵时,区块链网络仍然能够实现一致性。
1.2.2 不可篡改性
区块链中的区块都是用哈希作为本区块的信息摘要,哪怕一个字节的变化都会导致区块哈希发生极大改变。 攻击者对区块进行更改会造成链分叉等现象,但若攻击者没有控制系统中超过51%的节点,错误也将很快得到改正。
1.2.3 可溯源性
由于所有的交易都按时间顺序存储在区块上,同时具有不可篡改性,因而用户可以查询到所有交易最原始的信息。
1.2.4 可编程性
以太坊(Ethereum) 平台上支持的智能合约为区块链增添了可编程属性[11], 将区块链构建成一个可编程的数据共享平台[12]。 因而区块链的交易可以摆脱第三方的束缚,同时也减少了人力人本。
区块链的底层网络技术采用的是peer-to-peer网络,简称P2P 网络。 这是一种分布式网络通信技术,又称对等网络。 网络结构如图1 所示。 图1 中,实线表示物理连接,虚线表示逻辑连接。 与传统的客户端/服务器端(client/server, C/S)结构不同的是,在P2P 网络中各个节点之间没有主从之分,地位都是对等的,每一个节点既可以是服务器端、也可以是客户端。
图1 P2P 网络Fig. 1 P2P network
基于区块链的租房平台的系统架构如图2 所示。 由图2 可知,顶部是用户操作模块,其中包括信息展示与软件交互界面,用户可以通过本模块进行登录注册;房源提交、搜索与核查;预定房源、订单查看和核查;心愿单管理操作。 左边是功能模块,是通过服务器来实现,根据客户端传递来的操作请求进行对应处理并返回对应数据,相关数据存储在本地数据库中。 右边是区块链模块,需要将房主签名后的房源信息HASH 和利用智能合约、多重签名生成的订单摘要信息生成区块后上链、并广播至网络中其他节点。 区块信息通过节点的本地数据库进行存储。
图2 系统架构图Fig. 2 System architecture diagram
2.2.1 数字签名
为了保证信息的完整性与保密性,对于上链信息要进行数字签名处理,数字签名算法如下:
首先,在用户注册的时候通过本地ECDSA 椭圆曲线加密算法生成随机公私钥对(PK 与SK),SK 保存在用户本地,将注册信息与PK 通过可信链路上传至服务器,服务器将其存储到个人信息数据库中。
在房源发布模块中,房主在提交房源时,要在本地利用SK 对已填写的房源信息进行数字签名,并将签名后的信息与原信息一起上传至服务器,服务器正确接收后需要通过房主PK 对信息进行验证,验证无误再进行此后的操作。
在交易模块中,当智能合约达成交易时,需要将交易信息以及租金暂存期间的银行流水信息在征得房主与用户同意的情况下,在本地利用其SK 进行多重签名,签名后的信息返回至服务器后,服务器将其上链。
2.2.2 CPow 算法与弱中心化网络
CPow(Center-Pow)算法是本系统根据租房平台现实需求对于Pow 算法的改进。
对于租房系统应用的区块链来说,块的生成是必要的,同时也是非奖励性质的,因此各节点之间不存在生成区块的竞争关系,而Pow 是通过挖矿奖励驱动矿工,与本系统需求不符。 基于此,本区块链将Pow 算法改进为CPow 算法。 改进后的算法区块生成只由一个中心计算节点负责,并由平台保证节点生成区块的积极性,其他节点只负责存储以及验证区块。
CPow 算法在区块链实现过程为:
(1)选取一个Hash 算法,例如SHA-256。
(2)确定一个难度系数以确定目标HASH。
(3)选取一个随机nounce与区块中所有信息(data,time,prehash,hash等) 拼接后由指定的中心计算节点计算HASH。
(4)如果计算出的HASH小于目标HASH,则说明找到了难题的解,将结果广播至其他所有主节点。
(5)如果计算出的HASH大于目标HASH,则将nounce加1 后继续计算,直到计算出难题的解。
同时,考虑到用户对于房源信息检查低延迟的需求,本系统应用的区块链网络为弱中心化网络,其具体结构如图3 所示。
图3 网络结构图Fig. 3 Network structure diagram
整体区块链网络是由一个中心计算节点和n(n≥2) 个普通节点构成。 其中,中心计算节点相较于普通节点有生成区块的能力,并且拥有最高的安全等级。 网络不允许未得到授权的节点加入。
同时,n个节点中m个节点(m <n/2) 各为一组,组成一个副网络,各个副网络中的节点只与本副网络中的节点核对账本,同时副网络随机挑选出一个节点作为主节点,各个主节点组成一个主网络进行账本核对。 系统根据当前账本核对最小时长T,设置核对间隔Ts,所有主副网络每隔Ts进行一次账本核对。 因此,节点内的账本最长不可信时间为Ts。
账本核对时,只核对每个节点所有区块信息整体Hash,增强核对效率。 并只认为被超过二分之一节点认同的Hash为正确Hash,其余错误节点开始进行区块链的同步工作。
用户核查信息时,只需随机链接至某一主节点进行验证。
2.2.3 区块生成与共识
考虑到存储空间限制和空间的充分利用,区块只存储数字签名后的信息。 区块由以下信息组成:FreHash(前 区 块 哈 希)、Hash(本 区 块 哈 希)、Data(上链信息)、Nounce(随机数)、TimeStamp(时间戳)。
当智能合约需要达成交易时,服务器先获取到需要上链的Data, 由中心计算节点生成区块,将其发送到所有节点进行共识,各个普通节点收到区块信息后对区块信息进行验证,信息验证无误将其上链,并对其上属节点进行回应。 主节点接收到所有副节点应答后回应服务器,服务器接收到所有主节点的应答后,上链结束。
2.2.4 信息核查
当用户需要对房源信息或者订单信息进行核查时,客户端会向服务器发送信息核查请求,其中包括Code(操作码)、House_id(房源编号)/Order_id(订单编号)、User_id(操作用户编号)。 服务器接收到消息后,从房源/交易数据库中取出对应区块的Hash,查找对应区块,将房源信息/订单信息、Data、PK进行验证,验证通过,向客户端返回验证通过信息;验证失败,向客户端返回错误信息,同时服务器报System Error(系统错误),等待系统管理员进行错误核查与解决。 信息核查算法如下:
2.2.5 智能合约
本系统使用数字签名作为授权的手段。 房源信息经过房主签名方可认定其有效;订单信息需经过房主、用户分别签名字后方可认定其有效。
本系统交易过程使用的智能合约流程如下:
(1)用户作为交易的发起方,先对交易进行数字签名,并预支付租金。
(2)系统将交易信息按照交易时间从早到晚的顺序存入交易信息数据库。
(3)系统对交易信息数据库内的信息条目从前至后进行读取。 若交易时间未达48 h,系统等待;若交易信息已达48 h,系统提示房主进行签名,让事务能够顺利提交。
(4)系统将生成的区块广播至所有节点进行共识。
此外,如果在48 h 内用户认为房源信息不真实或改变租房计划等,可以申请取消交易,系统就会将对应订单的Validity(有效性) 位置False(错误)。这样一来,当48 h 后系统读取此订单时,会自动将此订单抛弃,用户租金返还。 就可以有效保护用户的权益,给予用户核查房源真实性的机会与取消交易的权利。 合约流程如图4 所示。 交易自动检索与区块生成过程如图5 所示。
图4 智能合约时序图Fig. 4 Sequence diagram of smart contract
图5 交易自动检索与区块生成示意图Fig. 5 Schematic diagram of automatic transaction retrieval and block generation
2.2.6 网络核对与同步
网络核对方法如下(主网络核对完成后、再进行副网络核对):
(1)系统根据上一次整体网络同步结束时间与开始时间的差值T与系统设置的额外同步时间EXT确定2 次核对开始之间的时间间隔Ts。 数学计算公式具体如下:
(2)每个节点都将各自所有节点摘要信息额外存入一个JSON 文件之中,每当收到新区块,都将信息存入此文件之中。 数学计算公式具体如下:
(3)当Ts倒计时结束,通过SHA-256 算法计算文件HASH,数学计算公式具体如下:
(4)将自己的Abstract 发送给所在网络中所有节点并接收其他所有节点发送来的摘要,同时进行区块信息有效性判别。 其中,为被超过二分之一节点认同的Hash 为正确Hash,本节点信息正确,则返回正确;本节点信息错误,则会根据被网络认定为正确的信息进行信息同步,并返回错误。 研发给出的代码如下:
这样子可以使得网络核查速度加快同时不会浪费过多的带宽资源。
本系统根据实际需求,分为以下4 个模块:用户管理模块、房源管理与核查模块、订单管理与核查模块、心愿单管理模块。
打开软件后,点击个人中心,可以进行用户登录,或者点击注册,正确输入真实个人信息后点击提交,注册成功,注册成功后可进行登录,如图6 ~图8所示。
图6 个人中心Fig. 6 Personal center
图7 登录Fig. 7 Login
图8 注册Fig. 8 Registered
在登录成功后,进入个人中心点击查看密钥,便可查看自己的PK 与SK,如图9 所示。
图9 查看密钥Fig. 9 Viewing the key
在个人中心界面点击“提交房源”,点击“房源地址”,完善相关信息;点击“房源概况”,完成相关信息;点击“房源介绍”,完善相关信息;勾选“用户须知:提交需授权SK 对上传信息进行签名,点击“提交”,完成房源信息提交,如图10 所示。
图10 房源提交Fig. 10 Housing submission
搜索到自己感兴趣的房子后,进入房源详细信息界面就可以对房源信息进行核查,若房源信息无误,如图11(a)所示;若房源信息错误,见图11(b)。
图11 房源核查Fig. 11 Verification of housing supply
在房源详细信息界面可以进行预定,在交易详情中可以查看已有订单。 点击对应订单条目,可以进行订单信息的核查,如图12、图13 所示。
图12 房源预定Fig. 12 Room reservation
图13 订单详情Fig. 13 Order details
搜索到符合条件的房源,点击对应房源信息条目的心形按钮、即可收藏,再次点击、取消收藏;或者进入感兴趣的房源详细信息界面,点击“收藏”,收藏成功,再次点击取消收藏。 回退至主页面;点击“心愿单”,点击刷新按钮,即可查看所有收藏房源,如图14 所示。
图14 心愿单管理Fig. 14 Wish list management
假设每一天生成区块的个数为Num,每一区块平均计算成本为Cost,节点总数为N(N≥3),区块总长度为L,区块的平均信息量为Info,由于验证成本相较于区块生成极小,因此忽略区块验证的成本。
两者核对账本的运行成本计算公式为:
对于Pow 算法来说,运行成本计算公式为:
对于CPow 算法来说,运行成本计算公式为:
假设Num、Info与Cost保持不变,因此可以得到2 种算法运行成本与节点总数关系如图15 所示。
图15Allcost与n关系Fig. 15 Relation betweenAllcostandn
由图15 中可以发现,随着节点个数的增加,Pow 算法的运行成本线性上升,而CPow 算法运行成本增加缓慢。 因此,CPow 算法在运行成本方面与Pow 算法相比有着显著优势。
在本系统中,更改未来的区块需要攻破中心计算节点;更改已生成的区块,需要在Ts时间内攻破网络中二分之一的节点。
这里假设中心计算节点由于具有很高的安全级别难以被攻破,同时假设区块总长度为L,区块的平均信息量为Info,系统设置同步额外时间为ExT,网络延迟为WiT。Ts的计算公式如下:
由于现代计算机哈希计算速度极快,因此可以忽略SHA256time(L∗Info) 项,得到Ts如下:
由于系统安全性和Ts负相关,可以得到关系图如图16 所示。
图16Security与Ts关系Fig. 16 Relation betweenSecurityandTs
由图16 可知,随着ExT增大,节点之间互相锚定的时间变长,Ts的增加带来了区块链安全性的下降。 此外,长度越长,链的可恢复程度也就越低。
同时,随着ExT减小,节点之间互相锚定的时间越来越短,Ts减小,系统安全性越来越高,却使用了过多的系统资源。
因此,ExT是本系统运行效率与安全性的重要参数,应当慎重考虑。
由于国内长租房领域未臻成熟,各类租房平台也有待规范,不仅难以保障租客、房主的利益,也在一定程度上关系到社会的安定与和谐。 本文从租客与房主本身的利益出发,设计出一套基于区块链的长租房可靠租赁交易系统,可以保障租客、房主的利益,改善了用户的使用体验。 本系统也对当下租房平台的设计产生了一定的指导作用。