程志軒 沈蘇彬
(1.南京郵電大學(xué)計算機(jī)學(xué)院;2.南京郵電大學(xué)通信與網(wǎng)絡(luò)技術(shù)國家工程研究中心 江蘇南京 210046)
隨著互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,出現(xiàn)了很多網(wǎng)絡(luò)租房應(yīng)用,但目前的房屋租賃應(yīng)用還存在著一些問題:(1)信息不對稱,由于房屋租賃應(yīng)用中心化的運(yùn)行機(jī)制,所有的房源信息掌握在房屋租賃中介手中,承租人需要通過房屋中介才能獲取到相關(guān)的房源信息;(2)房源信息真實(shí)性難以得到保障,出于盈利的目的,房源信息的發(fā)布者通常會對采集到的房源信息進(jìn)行篡改,使得承租人在網(wǎng)絡(luò)租房應(yīng)用中看到的房源信息與實(shí)際情況不符,還降低了大眾對于網(wǎng)絡(luò)租房應(yīng)用的信任程度;(3)中介費(fèi)用高昂。承租人需要支付高昂的中介費(fèi)用來獲取有價值的房源信息以及現(xiàn)場看房?;谀壳胺课葑赓U應(yīng)用所存在的問題,目前的房屋租賃市場需要一種去中心化的可信房屋租賃應(yīng)用,同時能夠保證房源信息的真實(shí)性。
區(qū)塊鏈?zhǔn)且环N對等公共賬本技術(shù),它提供了一種方法,可以通過加密協(xié)議在計算機(jī)的對等系統(tǒng)上公開記錄和分發(fā)有關(guān)交易的信息[1]。其源于2008年中本聰發(fā)表的《比特幣:一種點(diǎn)對點(diǎn)的電子現(xiàn)金系統(tǒng)》一文[2],區(qū)塊鏈的去中心化、不可篡改等特點(diǎn)對于解決目前房屋租賃應(yīng)用存在的問題提供了新的解決思路[3-4]。
目前已有一些租房項目中開始應(yīng)用區(qū)塊鏈技術(shù),最早應(yīng)用該技術(shù)的是Rentberry[5],其主要通過區(qū)塊鏈技術(shù)保證租賃雙方信息的真實(shí)性,其利用智能合約簡化了整個租賃流程,承租人獲取租賃權(quán)的方式是在Rentberry拍賣平臺對房屋租賃權(quán)進(jìn)行拍賣。
國內(nèi)也有一些租房場景的區(qū)塊鏈項目,比如:LUCIA[6]將其所對接的銀行、公安、學(xué)歷、電商、手機(jī)運(yùn)營商等多維度數(shù)據(jù)來為租住者和出租者進(jìn)行身份驗證,但其中的房源信息依然由用戶自行上傳,上傳房源的真實(shí)性沒有得到很好的保障。雄安新區(qū)區(qū)塊鏈[7]將租房平臺、誠信積分系統(tǒng)及區(qū)塊鏈系統(tǒng)三者相結(jié)合,其缺陷在于該應(yīng)用平臺不是人人都可以使用的公眾平臺,普通用戶無法使用。李瑞娥等人[8]提出了基于區(qū)塊鏈的房屋租賃分配系統(tǒng),提出將用戶信息鏈與交易鏈分離的設(shè)計思想,通過智能合約[9]實(shí)現(xiàn)自適應(yīng)尋租與匹配問題。
為了實(shí)現(xiàn)基于區(qū)塊鏈的房屋租賃應(yīng)用,該文進(jìn)行了基于區(qū)塊鏈的房屋租賃應(yīng)用設(shè)計,為保證房源信息的真實(shí)性設(shè)計了沒有人為干預(yù)的房源信息采集與“上鏈”流程;為了解決房屋租賃交易中虛假交易的問題參照比特幣的交易模型設(shè)計了房屋租賃交易模型,最終利用以太坊平臺完成智能合約的部署,實(shí)現(xiàn)了基于區(qū)塊鏈的房屋租賃應(yīng)用,以下是該文的研究內(nèi)容。
區(qū)塊鏈可以保證鏈上數(shù)據(jù)的不可篡改,因此區(qū)塊鏈常常被應(yīng)用于保證數(shù)據(jù)真實(shí)性的相關(guān)研究當(dāng)中,但區(qū)塊鏈上數(shù)據(jù)的真實(shí)性需要有一個重要前提作為保證,即數(shù)據(jù)在上鏈前的真實(shí)性。對于一些人為主觀產(chǎn)生的信息,如比特幣中的轉(zhuǎn)賬交易,只要該交易由交易雙方簽名,即可證明該交易的真實(shí)性,但隨著區(qū)塊鏈應(yīng)用的發(fā)展,出現(xiàn)了一些客觀存在的信息,如房源信息、溯源信息等,這些信息如果由人工填寫,再加上簽名,僅能保證信息由信息填寫人員上傳,并不能保證信息本身的真實(shí)性。因此,需要研究對于客觀信息,如何保證信息上鏈前的真實(shí)性。
該文提出了一種物聯(lián)網(wǎng)+智能合約的方案來保證房源信息的真實(shí)性。物聯(lián)網(wǎng)的目的是實(shí)現(xiàn)在沒有人為干預(yù)的情況下,實(shí)體設(shè)備依賴射頻識別(Radio Frequency Identification,RFID)和傳感器科技收集到的數(shù)據(jù)完成對現(xiàn)實(shí)世界的觀察、識別和認(rèn)知[10]。智能合約是指可以運(yùn)行在區(qū)塊鏈上的模塊化、可重用、自動執(zhí)行的一段程序代碼[11-12]。利用物聯(lián)網(wǎng)設(shè)備在沒有人為干預(yù)的情況下采集房源信息,再利用智能合約自動將房源信息進(jìn)行“上鏈”,即可在將房源信息存儲到區(qū)塊鏈的過程中消除人為干預(yù),保證信息的真實(shí)性。區(qū)塊鏈信息保存在區(qū)塊鏈網(wǎng)絡(luò)中的每一個全節(jié)點(diǎn)中,不利于存儲像房源信息這樣的大體量數(shù)據(jù),因此對于房源信息的存儲,需要考慮區(qū)塊鏈的鏈下存儲方式。鏈下存儲分為基于云的鏈下存儲以及基于IPFS(InterPlanetary File System,IPFS)的鏈下存儲,兩者的對比如表1所示,基于云的鏈下存儲將真實(shí)信息存儲于云端,當(dāng)需要獲取對應(yīng)信息時,通過hash 值找到相應(yīng)信息的物理存儲位置,這樣的存儲方式不會有數(shù)據(jù)冗余,但同時這也是一個中心化的存儲方式。而IPFS 是一種旨在將所有計算設(shè)備與相同文件系統(tǒng)連接起來的點(diǎn)對點(diǎn)分布式文件系統(tǒng),該系統(tǒng)基于內(nèi)容尋址,利用文件內(nèi)容的hash 值尋找對應(yīng)的存儲節(jié)點(diǎn),基于IPFS 的存儲方式雖存在多個節(jié)點(diǎn)存儲相同數(shù)據(jù)的情況,但其是一個去中心化的存儲方式[13-15]。為了保證基于區(qū)塊鏈的房屋租賃應(yīng)用中房源數(shù)據(jù)的去中心化可信存儲,該文利用基于IPFS的鏈下存儲方式。
表1 鏈上存儲與鏈下存儲對比
如圖1所示,房源信息“上鏈”步驟如下。
圖1 房源信息“上鏈”
(1)房源信息采集:物聯(lián)網(wǎng)設(shè)備對房源信息進(jìn)行采集,采集內(nèi)容包括房源圖片、位置等。
(2)物聯(lián)網(wǎng)對數(shù)據(jù)進(jìn)行處理:為了后續(xù)的驗證,物聯(lián)網(wǎng)會對采集到的房源信息進(jìn)行初步的數(shù)據(jù)處理,處理方式為對房源信息取hash值。
(3)發(fā)送房源信息:物聯(lián)網(wǎng)設(shè)備將房源信息以及hash值發(fā)送給管理員節(jié)點(diǎn)。
(4)管理員節(jié)點(diǎn)對數(shù)據(jù)進(jìn)行處理:房源信息數(shù)據(jù)量大,不適用于直接存儲進(jìn)區(qū)塊鏈中,需要將房源信息存儲進(jìn)IPFS 中,再將房源信息的索引即房源信息的hash值存入?yún)^(qū)塊鏈,同時為了后續(xù)驗證,將IPFS 返回的hash值與物聯(lián)網(wǎng)設(shè)備產(chǎn)生的hash值共同作為要存入?yún)^(qū)塊鏈的房源信息。
(5)管理員節(jié)點(diǎn)調(diào)用智能合約:管理員節(jié)點(diǎn)為了將房源信息存儲進(jìn)區(qū)塊鏈,需要調(diào)用房源信息存儲智能合約,對房源信息利用自身私鑰簽名并存入智能合約調(diào)用交易中。
(6)其他節(jié)點(diǎn)對智能合約調(diào)用交易進(jìn)行驗證:其他節(jié)點(diǎn)會對管理員調(diào)用智能合約的交易進(jìn)行驗證,驗證房源信息hash值的一致性以及管理員節(jié)點(diǎn)的身份。
(7)信息“上鏈”:其他節(jié)點(diǎn)驗證成功,智能合約便成功被調(diào)用,房源信息也成功“上鏈”。
房源數(shù)據(jù)真實(shí)性主要是要保證房源數(shù)據(jù)在存儲至區(qū)塊鏈前未被篡改。這主要是在沒有人為干預(yù)的情況下通過房源數(shù)據(jù)hash+非對稱加密來保證的。hash 是指把任意長度的輸入通過hash算法變換成固定長度的輸出,并且這個過程很難找到逆向規(guī)律,即很難通過hash結(jié)果推算出原始信息,一旦原始信息產(chǎn)生變化,所產(chǎn)生的hash值也會變化。非對稱加密機(jī)制保證了私鑰加密的信息只有對應(yīng)的公鑰能解密,而公鑰加密的信息只有對應(yīng)的私鑰能解密。根據(jù)上述驗證算法,物聯(lián)網(wǎng)設(shè)備采用與IPFS 一致的SHA2-256 的hash 算法,若物聯(lián)網(wǎng)設(shè)備計算的房源數(shù)據(jù)hash 值與IPFS 返回的房源數(shù)據(jù)hash 值一致,根據(jù)hash 算法的特性,即可證明房源數(shù)據(jù)在上鏈前未發(fā)生改動。確保房源數(shù)據(jù)未被篡改之后,就需要驗證房源交易發(fā)布者的身份,房源交易發(fā)布是由房源數(shù)據(jù)管理員完成的,這里的身份驗證利用簽名驗證來實(shí)現(xiàn),驗證管理員節(jié)點(diǎn)的簽名的過程,就是利用管理員公鑰去解密管理員私鑰加密的信息的過程,若解密成功則驗證成功,若驗證成功即可證明管理員身份的真實(shí)性,管理員作為基于區(qū)塊鏈的房屋租賃應(yīng)用系統(tǒng)中的可信節(jié)點(diǎn),驗證其身份的真實(shí)性即可驗證其操作的真實(shí)性。綜上所述,該驗證流程能夠保證房源數(shù)據(jù)“上鏈”前的真實(shí)性。
比特幣系統(tǒng)中未花費(fèi)的交易輸出(Unspent Transaction Outputs,UTXO)模型有效防止了雙花攻擊,所謂雙花攻擊,是指將一筆經(jīng)過雙方簽名的轉(zhuǎn)賬交易發(fā)布多次,從而達(dá)到轉(zhuǎn)賬多次的目的,在UTXO 模型中,每一筆轉(zhuǎn)賬的輸入都必須來源于上一筆轉(zhuǎn)賬的輸出,每一筆轉(zhuǎn)賬都有跡可循,從而有效地防止雙花攻擊[16-18]。而對于房屋租賃應(yīng)用,類比于雙花攻擊,房屋租賃交易可能存在以下幾點(diǎn)問題。
(1)房源的虛假性。需要對房源數(shù)據(jù)的真實(shí)性進(jìn)行相關(guān)驗證,此交易中有可能存在根本不存在的房源或虛假的房源,交易雙方若對根本不存在的房源產(chǎn)生租賃交易,并成功“上鏈”,對于基于區(qū)塊鏈的房屋租賃應(yīng)用來說就失去了其作用。(2)房源的時效性。若房源本身的信息為真,是真實(shí)的房源數(shù)據(jù),但此房源還處在租賃當(dāng)中或是此房源還處在不可租賃狀態(tài),此交易同樣可以成功“上鏈”,若交易雙方針對此漏洞對同一房源重復(fù)租賃,同樣會對房屋租賃交易的真實(shí)性產(chǎn)生沖擊。(3)房源的所屬關(guān)系。租賃雙方是否真的是房東與承租人的關(guān)系,此房源是否屬于此房東同樣也是此應(yīng)用所必須考慮的問題。
上文中所提出的問題需要通過交易模型的設(shè)計來解決,針對房源的虛假性問題,在基于區(qū)塊鏈的房屋租賃應(yīng)用中,租賃交易必須指明所租賃的是哪個房源,并且此房源必須存在于房源數(shù)據(jù)區(qū)塊鏈中,利用房源數(shù)據(jù)的存在性證明可以作為該房源的真實(shí)性驗證。因此,需要在房屋租賃交易的輸入中增加房源數(shù)據(jù)的存在性證明。而房源的存在性證明只需指明該房源在房源數(shù)據(jù)區(qū)塊鏈的位置,即存儲該房源數(shù)據(jù)區(qū)塊的hash值。針對房源的時效性問題,只需將同一房源自發(fā)布起的所有交易關(guān)聯(lián),并對每筆交易加上租賃時間以及時間戳,該房源的下一筆交易成功發(fā)布的前提條件是前一筆交易到期,驗證方式為當(dāng)前交易的時間戳減去上一筆交易的時間戳大于等于交易持續(xù)時間,即可解決房源時效性問題。針對房源所屬關(guān)系問題,房源所屬關(guān)系主要解決交易的房東是否擁有該房源的所有權(quán),由于已經(jīng)將房源的發(fā)布與交易關(guān)聯(lián)起來,因此只需驗證房源發(fā)布者與后續(xù)房源交易的房東是否為同一人,就可以驗證房源與房東的所屬關(guān)系。為驗證方便,可在交易中加上房源所屬房東ID,只要在房源發(fā)布時驗證此ID的真實(shí)性,后續(xù)交易只需驗證此ID的一致性就可以驗證房源所屬關(guān)系的正確性。
基于上述研究,房屋租賃交易的交易模型如圖2所示,房屋租賃的輸入分為兩部分,房源數(shù)據(jù)的hash值來源于房源數(shù)據(jù)鏈,主要作為房源數(shù)據(jù)的存在性證明,每一筆房屋租賃交易的輸入都必須來源于上一筆交易的輸出,房屋租賃交易的輸出主要包括交易時間戳、租賃時間以及承租人和房東的ID特別地,對于第一筆房屋租賃交易,交易的輸入為房源數(shù)據(jù)交易。
圖2 房屋租賃交易模型
基于上文中的研究與設(shè)計,利用以太坊開發(fā)平臺完成基于區(qū)塊鏈的房屋租賃應(yīng)用的實(shí)現(xiàn),利用geth 進(jìn)行私人網(wǎng)絡(luò)設(shè)置。利用web3j 用于處理以太坊智能合約及與以太坊網(wǎng)絡(luò)上的客戶端進(jìn)行集成。利用Ganache 用于客戶端測試和開發(fā)。它提供了一個私有區(qū)塊鏈網(wǎng)絡(luò),快速啟動時可以創(chuàng)建10 個賬戶,可以根據(jù)需要對這些賬戶進(jìn)行操作。在Remix平臺進(jìn)行智能合約的編譯與部署,最終的實(shí)現(xiàn)結(jié)果如圖3所示,正確的房屋租賃交易填寫完畢后,經(jīng)過智能合約的驗證,最終提交成功,該房源交易就被成功存儲至區(qū)塊鏈上,如圖4所示。
圖3 房屋租賃交易提交成功
圖4 房屋租賃交易“上鏈”成功
該文從基于區(qū)塊鏈的房屋租賃應(yīng)用設(shè)計層面與實(shí)現(xiàn)層面進(jìn)行相關(guān)研究,從保證房源信息真實(shí)性的角度出發(fā),提出了物聯(lián)網(wǎng)+智能合約的房源信息“上鏈”方式。從保證房屋租賃交易正確性的角度出發(fā),基于比特幣的交易模型,提出一種適用于房屋租賃應(yīng)用的交易模型,最后利用以太坊開發(fā)平臺,仿真實(shí)現(xiàn)了基于區(qū)塊鏈的去中心化的可信房屋租賃應(yīng)用。下一步的研究計劃是對該應(yīng)用中未進(jìn)行深入研究的共識機(jī)制進(jìn)行相關(guān)研究,優(yōu)化“上鏈”流程。