邵子堯, 姜 怡, 南林娜, 范宇晗, 彭 力
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院, 江蘇 無錫 214122)
隨著國內(nèi)城市化進程不斷加快,租房市場已成為剛性需求市場。 根據(jù)《2021年中國房屋租賃市場分析報告》,近年來受國家支持力度的加大、利好政策的出臺等影響,國內(nèi)房屋租賃行業(yè)得到較快的發(fā)展。 2017年7 月,住建部等九部門聯(lián)合印發(fā)《關(guān)于在人口凈流入的大中城市加快發(fā)展住房租賃市場的通知》[1],鼓勵2020年,租房市場規(guī)模將達到2.71萬億元,到2023年國內(nèi)房屋租賃總面積將會達到83.82億平方米,租賃人口達到2.48 億人[2]。
因此,中國租賃市場發(fā)展迅速。 但是研究可知,大部分租賃市場不規(guī)范,市場供需不平衡,導(dǎo)致許多的社會資源被浪費。 國內(nèi)房屋租賃體系主要可分為4 類[3]:全國性租房類門戶網(wǎng)站、全國性房地產(chǎn)中介的專用系統(tǒng)、全國性共享式短租平臺、由政府主導(dǎo)和籌備的房屋租賃平臺以及公租房。 但由于租房信息登記不全、房源安全監(jiān)管不到位、虛擬且隱蔽的網(wǎng)絡(luò)環(huán)境等風(fēng)險的存在,導(dǎo)致國內(nèi)現(xiàn)有的租房系統(tǒng)存在一定問題。 其主要問題可表述為[4]:缺乏溝通,造成信任不足。 在房屋租賃場景中有著多種信任需求,對于不同主體需求可得探討闡釋如下:
(1) 交易信息的完整性與防偽。
(2) 房源信息在房主與用戶之間傳遞的完整性與真實性。
然而,房主與租客之間有著天然的信息壁壘,而兩者的交易又只通過第三方平臺實現(xiàn),相互間的信息交流是否真實可靠只依賴于第三方平臺的可信度,因此交易存在未知風(fēng)險,可信度評估上還需不斷完善。 同時,租賃雙方用戶的信息真實性與隱私安全性也得不到保障[5-7]。
區(qū)塊鏈第一次出現(xiàn)是在2008年,那時“中本聰”在密碼學(xué)論壇上公開了了《比特幣: 一種點對點的電子現(xiàn)金系統(tǒng)》一文[8]。
區(qū)塊鏈作為一種典型的分布式賬本技術(shù),通過共識等多邊形自治技術(shù)手段支持?jǐn)?shù)據(jù)驗證、共享、計算、存儲等功能[9]。 區(qū)塊鏈以區(qū)塊作為存儲單位,依據(jù)時間戳從早到晚組成了一個單項鏈?zhǔn)浇Y(jié)構(gòu)。 可利用共識機制實現(xiàn)網(wǎng)絡(luò)中各節(jié)點之間的信息共享;使用非對稱式加密技術(shù)保證信息的完整性、不可篡改性與安全性;通過對挖出區(qū)塊的礦工進行獎勵,激勵礦工去生成區(qū)塊;利用在鏈上部署智能合約實現(xiàn)區(qū)塊鏈的自治性。 總體來說,區(qū)塊鏈構(gòu)成了一種全新的、自治的分布式基礎(chǔ)架構(gòu)與計算范式[10]。
1.2.1 去中心化
與其他的分布式一致性協(xié)議相比,區(qū)塊鏈最顯著的優(yōu)勢就是去中心化。 區(qū)塊鏈利用POW 算法等共識機制解決拜占庭將軍問題,其開放性網(wǎng)絡(luò)允許任意節(jié)點接入并下載賬本,同時,當(dāng)小部分節(jié)點被惡意入侵時,區(qū)塊鏈網(wǎng)絡(luò)仍然能夠?qū)崿F(xiàn)一致性。
1.2.2 不可篡改性
區(qū)塊鏈中的區(qū)塊都是用哈希作為本區(qū)塊的信息摘要,哪怕一個字節(jié)的變化都會導(dǎo)致區(qū)塊哈希發(fā)生極大改變。 攻擊者對區(qū)塊進行更改會造成鏈分叉等現(xiàn)象,但若攻擊者沒有控制系統(tǒng)中超過51%的節(jié)點,錯誤也將很快得到改正。
1.2.3 可溯源性
由于所有的交易都按時間順序存儲在區(qū)塊上,同時具有不可篡改性,因而用戶可以查詢到所有交易最原始的信息。
1.2.4 可編程性
以太坊(Ethereum) 平臺上支持的智能合約為區(qū)塊鏈增添了可編程屬性[11], 將區(qū)塊鏈構(gòu)建成一個可編程的數(shù)據(jù)共享平臺[12]。 因而區(qū)塊鏈的交易可以擺脫第三方的束縛,同時也減少了人力人本。
區(qū)塊鏈的底層網(wǎng)絡(luò)技術(shù)采用的是peer-to-peer網(wǎng)絡(luò),簡稱P2P 網(wǎng)絡(luò)。 這是一種分布式網(wǎng)絡(luò)通信技術(shù),又稱對等網(wǎng)絡(luò)。 網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。 圖1 中,實線表示物理連接,虛線表示邏輯連接。 與傳統(tǒng)的客戶端/服務(wù)器端(client/server, C/S)結(jié)構(gòu)不同的是,在P2P 網(wǎng)絡(luò)中各個節(jié)點之間沒有主從之分,地位都是對等的,每一個節(jié)點既可以是服務(wù)器端、也可以是客戶端。
圖1 P2P 網(wǎng)絡(luò)Fig. 1 P2P network
基于區(qū)塊鏈的租房平臺的系統(tǒng)架構(gòu)如圖2 所示。 由圖2 可知,頂部是用戶操作模塊,其中包括信息展示與軟件交互界面,用戶可以通過本模塊進行登錄注冊;房源提交、搜索與核查;預(yù)定房源、訂單查看和核查;心愿單管理操作。 左邊是功能模塊,是通過服務(wù)器來實現(xiàn),根據(jù)客戶端傳遞來的操作請求進行對應(yīng)處理并返回對應(yīng)數(shù)據(jù),相關(guān)數(shù)據(jù)存儲在本地數(shù)據(jù)庫中。 右邊是區(qū)塊鏈模塊,需要將房主簽名后的房源信息HASH 和利用智能合約、多重簽名生成的訂單摘要信息生成區(qū)塊后上鏈、并廣播至網(wǎng)絡(luò)中其他節(jié)點。 區(qū)塊信息通過節(jié)點的本地數(shù)據(jù)庫進行存儲。
圖2 系統(tǒng)架構(gòu)圖Fig. 2 System architecture diagram
2.2.1 數(shù)字簽名
為了保證信息的完整性與保密性,對于上鏈信息要進行數(shù)字簽名處理,數(shù)字簽名算法如下:
首先,在用戶注冊的時候通過本地ECDSA 橢圓曲線加密算法生成隨機公私鑰對(PK 與SK),SK 保存在用戶本地,將注冊信息與PK 通過可信鏈路上傳至服務(wù)器,服務(wù)器將其存儲到個人信息數(shù)據(jù)庫中。
在房源發(fā)布模塊中,房主在提交房源時,要在本地利用SK 對已填寫的房源信息進行數(shù)字簽名,并將簽名后的信息與原信息一起上傳至服務(wù)器,服務(wù)器正確接收后需要通過房主PK 對信息進行驗證,驗證無誤再進行此后的操作。
在交易模塊中,當(dāng)智能合約達成交易時,需要將交易信息以及租金暫存期間的銀行流水信息在征得房主與用戶同意的情況下,在本地利用其SK 進行多重簽名,簽名后的信息返回至服務(wù)器后,服務(wù)器將其上鏈。
2.2.2 CPow 算法與弱中心化網(wǎng)絡(luò)
CPow(Center-Pow)算法是本系統(tǒng)根據(jù)租房平臺現(xiàn)實需求對于Pow 算法的改進。
對于租房系統(tǒng)應(yīng)用的區(qū)塊鏈來說,塊的生成是必要的,同時也是非獎勵性質(zhì)的,因此各節(jié)點之間不存在生成區(qū)塊的競爭關(guān)系,而Pow 是通過挖礦獎勵驅(qū)動礦工,與本系統(tǒng)需求不符。 基于此,本區(qū)塊鏈將Pow 算法改進為CPow 算法。 改進后的算法區(qū)塊生成只由一個中心計算節(jié)點負(fù)責(zé),并由平臺保證節(jié)點生成區(qū)塊的積極性,其他節(jié)點只負(fù)責(zé)存儲以及驗證區(qū)塊。
CPow 算法在區(qū)塊鏈實現(xiàn)過程為:
(1)選取一個Hash 算法,例如SHA-256。
(2)確定一個難度系數(shù)以確定目標(biāo)HASH。
(3)選取一個隨機nounce與區(qū)塊中所有信息(data,time,prehash,hash等) 拼接后由指定的中心計算節(jié)點計算HASH。
(4)如果計算出的HASH小于目標(biāo)HASH,則說明找到了難題的解,將結(jié)果廣播至其他所有主節(jié)點。
(5)如果計算出的HASH大于目標(biāo)HASH,則將nounce加1 后繼續(xù)計算,直到計算出難題的解。
同時,考慮到用戶對于房源信息檢查低延遲的需求,本系統(tǒng)應(yīng)用的區(qū)塊鏈網(wǎng)絡(luò)為弱中心化網(wǎng)絡(luò),其具體結(jié)構(gòu)如圖3 所示。
圖3 網(wǎng)絡(luò)結(jié)構(gòu)圖Fig. 3 Network structure diagram
整體區(qū)塊鏈網(wǎng)絡(luò)是由一個中心計算節(jié)點和n(n≥2) 個普通節(jié)點構(gòu)成。 其中,中心計算節(jié)點相較于普通節(jié)點有生成區(qū)塊的能力,并且擁有最高的安全等級。 網(wǎng)絡(luò)不允許未得到授權(quán)的節(jié)點加入。
同時,n個節(jié)點中m個節(jié)點(m <n/2) 各為一組,組成一個副網(wǎng)絡(luò),各個副網(wǎng)絡(luò)中的節(jié)點只與本副網(wǎng)絡(luò)中的節(jié)點核對賬本,同時副網(wǎng)絡(luò)隨機挑選出一個節(jié)點作為主節(jié)點,各個主節(jié)點組成一個主網(wǎng)絡(luò)進行賬本核對。 系統(tǒng)根據(jù)當(dāng)前賬本核對最小時長T,設(shè)置核對間隔Ts,所有主副網(wǎng)絡(luò)每隔Ts進行一次賬本核對。 因此,節(jié)點內(nèi)的賬本最長不可信時間為Ts。
賬本核對時,只核對每個節(jié)點所有區(qū)塊信息整體Hash,增強核對效率。 并只認(rèn)為被超過二分之一節(jié)點認(rèn)同的Hash為正確Hash,其余錯誤節(jié)點開始進行區(qū)塊鏈的同步工作。
用戶核查信息時,只需隨機鏈接至某一主節(jié)點進行驗證。
2.2.3 區(qū)塊生成與共識
考慮到存儲空間限制和空間的充分利用,區(qū)塊只存儲數(shù)字簽名后的信息。 區(qū)塊由以下信息組成:FreHash(前 區(qū) 塊 哈 希)、Hash(本 區(qū) 塊 哈 希)、Data(上鏈信息)、Nounce(隨機數(shù))、TimeStamp(時間戳)。
當(dāng)智能合約需要達成交易時,服務(wù)器先獲取到需要上鏈的Data, 由中心計算節(jié)點生成區(qū)塊,將其發(fā)送到所有節(jié)點進行共識,各個普通節(jié)點收到區(qū)塊信息后對區(qū)塊信息進行驗證,信息驗證無誤將其上鏈,并對其上屬節(jié)點進行回應(yīng)。 主節(jié)點接收到所有副節(jié)點應(yīng)答后回應(yīng)服務(wù)器,服務(wù)器接收到所有主節(jié)點的應(yīng)答后,上鏈結(jié)束。
2.2.4 信息核查
當(dāng)用戶需要對房源信息或者訂單信息進行核查時,客戶端會向服務(wù)器發(fā)送信息核查請求,其中包括Code(操作碼)、House_id(房源編號)/Order_id(訂單編號)、User_id(操作用戶編號)。 服務(wù)器接收到消息后,從房源/交易數(shù)據(jù)庫中取出對應(yīng)區(qū)塊的Hash,查找對應(yīng)區(qū)塊,將房源信息/訂單信息、Data、PK進行驗證,驗證通過,向客戶端返回驗證通過信息;驗證失敗,向客戶端返回錯誤信息,同時服務(wù)器報System Error(系統(tǒng)錯誤),等待系統(tǒng)管理員進行錯誤核查與解決。 信息核查算法如下:
2.2.5 智能合約
本系統(tǒng)使用數(shù)字簽名作為授權(quán)的手段。 房源信息經(jīng)過房主簽名方可認(rèn)定其有效;訂單信息需經(jīng)過房主、用戶分別簽名字后方可認(rèn)定其有效。
本系統(tǒng)交易過程使用的智能合約流程如下:
(1)用戶作為交易的發(fā)起方,先對交易進行數(shù)字簽名,并預(yù)支付租金。
(2)系統(tǒng)將交易信息按照交易時間從早到晚的順序存入交易信息數(shù)據(jù)庫。
(3)系統(tǒng)對交易信息數(shù)據(jù)庫內(nèi)的信息條目從前至后進行讀取。 若交易時間未達48 h,系統(tǒng)等待;若交易信息已達48 h,系統(tǒng)提示房主進行簽名,讓事務(wù)能夠順利提交。
(4)系統(tǒng)將生成的區(qū)塊廣播至所有節(jié)點進行共識。
此外,如果在48 h 內(nèi)用戶認(rèn)為房源信息不真實或改變租房計劃等,可以申請取消交易,系統(tǒng)就會將對應(yīng)訂單的Validity(有效性) 位置False(錯誤)。這樣一來,當(dāng)48 h 后系統(tǒng)讀取此訂單時,會自動將此訂單拋棄,用戶租金返還。 就可以有效保護用戶的權(quán)益,給予用戶核查房源真實性的機會與取消交易的權(quán)利。 合約流程如圖4 所示。 交易自動檢索與區(qū)塊生成過程如圖5 所示。
圖4 智能合約時序圖Fig. 4 Sequence diagram of smart contract
圖5 交易自動檢索與區(qū)塊生成示意圖Fig. 5 Schematic diagram of automatic transaction retrieval and block generation
2.2.6 網(wǎng)絡(luò)核對與同步
網(wǎng)絡(luò)核對方法如下(主網(wǎng)絡(luò)核對完成后、再進行副網(wǎng)絡(luò)核對):
(1)系統(tǒng)根據(jù)上一次整體網(wǎng)絡(luò)同步結(jié)束時間與開始時間的差值T與系統(tǒng)設(shè)置的額外同步時間EXT確定2 次核對開始之間的時間間隔Ts。 數(shù)學(xué)計算公式具體如下:
(2)每個節(jié)點都將各自所有節(jié)點摘要信息額外存入一個JSON 文件之中,每當(dāng)收到新區(qū)塊,都將信息存入此文件之中。 數(shù)學(xué)計算公式具體如下:
(3)當(dāng)Ts倒計時結(jié)束,通過SHA-256 算法計算文件HASH,數(shù)學(xué)計算公式具體如下:
(4)將自己的Abstract 發(fā)送給所在網(wǎng)絡(luò)中所有節(jié)點并接收其他所有節(jié)點發(fā)送來的摘要,同時進行區(qū)塊信息有效性判別。 其中,為被超過二分之一節(jié)點認(rèn)同的Hash 為正確Hash,本節(jié)點信息正確,則返回正確;本節(jié)點信息錯誤,則會根據(jù)被網(wǎng)絡(luò)認(rèn)定為正確的信息進行信息同步,并返回錯誤。 研發(fā)給出的代碼如下:
這樣子可以使得網(wǎng)絡(luò)核查速度加快同時不會浪費過多的帶寬資源。
本系統(tǒng)根據(jù)實際需求,分為以下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
在個人中心界面點擊“提交房源”,點擊“房源地址”,完善相關(guān)信息;點擊“房源概況”,完成相關(guān)信息;點擊“房源介紹”,完善相關(guān)信息;勾選“用戶須知:提交需授權(quán)SK 對上傳信息進行簽名,點擊“提交”,完成房源信息提交,如圖10 所示。
圖10 房源提交Fig. 10 Housing submission
搜索到自己感興趣的房子后,進入房源詳細(xì)信息界面就可以對房源信息進行核查,若房源信息無誤,如圖11(a)所示;若房源信息錯誤,見圖11(b)。
圖11 房源核查Fig. 11 Verification of housing supply
在房源詳細(xì)信息界面可以進行預(yù)定,在交易詳情中可以查看已有訂單。 點擊對應(yīng)訂單條目,可以進行訂單信息的核查,如圖12、圖13 所示。
圖12 房源預(yù)定Fig. 12 Room reservation
圖13 訂單詳情Fig. 13 Order details
搜索到符合條件的房源,點擊對應(yīng)房源信息條目的心形按鈕、即可收藏,再次點擊、取消收藏;或者進入感興趣的房源詳細(xì)信息界面,點擊“收藏”,收藏成功,再次點擊取消收藏。 回退至主頁面;點擊“心愿單”,點擊刷新按鈕,即可查看所有收藏房源,如圖14 所示。
圖14 心愿單管理Fig. 14 Wish list management
假設(shè)每一天生成區(qū)塊的個數(shù)為Num,每一區(qū)塊平均計算成本為Cost,節(jié)點總數(shù)為N(N≥3),區(qū)塊總長度為L,區(qū)塊的平均信息量為Info,由于驗證成本相較于區(qū)塊生成極小,因此忽略區(qū)塊驗證的成本。
兩者核對賬本的運行成本計算公式為:
對于Pow 算法來說,運行成本計算公式為:
對于CPow 算法來說,運行成本計算公式為:
假設(shè)Num、Info與Cost保持不變,因此可以得到2 種算法運行成本與節(jié)點總數(shù)關(guān)系如圖15 所示。
圖15Allcost與n關(guān)系Fig. 15 Relation betweenAllcostandn
由圖15 中可以發(fā)現(xiàn),隨著節(jié)點個數(shù)的增加,Pow 算法的運行成本線性上升,而CPow 算法運行成本增加緩慢。 因此,CPow 算法在運行成本方面與Pow 算法相比有著顯著優(yōu)勢。
在本系統(tǒng)中,更改未來的區(qū)塊需要攻破中心計算節(jié)點;更改已生成的區(qū)塊,需要在Ts時間內(nèi)攻破網(wǎng)絡(luò)中二分之一的節(jié)點。
這里假設(shè)中心計算節(jié)點由于具有很高的安全級別難以被攻破,同時假設(shè)區(qū)塊總長度為L,區(qū)塊的平均信息量為Info,系統(tǒng)設(shè)置同步額外時間為ExT,網(wǎng)絡(luò)延遲為WiT。Ts的計算公式如下:
由于現(xiàn)代計算機哈希計算速度極快,因此可以忽略SHA256time(L?Info) 項,得到Ts如下:
由于系統(tǒng)安全性和Ts負(fù)相關(guān),可以得到關(guān)系圖如圖16 所示。
圖16Security與Ts關(guān)系Fig. 16 Relation betweenSecurityandTs
由圖16 可知,隨著ExT增大,節(jié)點之間互相錨定的時間變長,Ts的增加帶來了區(qū)塊鏈安全性的下降。 此外,長度越長,鏈的可恢復(fù)程度也就越低。
同時,隨著ExT減小,節(jié)點之間互相錨定的時間越來越短,Ts減小,系統(tǒng)安全性越來越高,卻使用了過多的系統(tǒng)資源。
因此,ExT是本系統(tǒng)運行效率與安全性的重要參數(shù),應(yīng)當(dāng)慎重考慮。
由于國內(nèi)長租房領(lǐng)域未臻成熟,各類租房平臺也有待規(guī)范,不僅難以保障租客、房主的利益,也在一定程度上關(guān)系到社會的安定與和諧。 本文從租客與房主本身的利益出發(fā),設(shè)計出一套基于區(qū)塊鏈的長租房可靠租賃交易系統(tǒng),可以保障租客、房主的利益,改善了用戶的使用體驗。 本系統(tǒng)也對當(dāng)下租房平臺的設(shè)計產(chǎn)生了一定的指導(dǎo)作用。