智能合約技術(shù)在房地產(chǎn)租賃中的應(yīng)用實(shí)施介紹
在以下文章中,我將為您提供一個(gè)關(guān)于房地產(chǎn)租賃智能合約的技術(shù)實(shí)施細(xì)節(jié)的深入概述。
出租物業(yè)用例::
總體用例非常簡(jiǎn)單,用戶將根據(jù)給定的屬性將自己注冊(cè)為潛在客戶。財(cái)產(chǎn)所有者將決定哪個(gè)用戶將成為租戶。租戶將按照約定的到期日支付租金。租金賬戶存儲(chǔ)在智能合約中。業(yè)主可以從合同中提取相同的租金。如果房客未在到期日之前支付租金,則允許房主對(duì)房客提出警告。所有者可以在每隔2天的向租戶提出警告。如果房客超過了警告限制,房主可以將其從財(cái)產(chǎn)中收回。
讓我們開始…
以下是我們定義的數(shù)據(jù)結(jié)構(gòu):
針對(duì)每個(gè)屬性字段的注釋定義了它們各自的角色
在這里,我們定義了“Property”結(jié)構(gòu),該結(jié)構(gòu)將記錄財(cái)產(chǎn)詳細(xì)信息,例如名稱,地址,是否租用財(cái)產(chǎn),租金金額,租金間隔,租金到期日,警告計(jì)數(shù),警告限制和租戶錢包地址。我們有MonthlyRentStatus結(jié)構(gòu),這將幫助我們存儲(chǔ)每個(gè)月的租金狀態(tài)。我們還提供各種映射-months,tantantRegistry和rent paid status。
我們定義了事件,這些事件將幫助我們記錄成功的交易。我們?cè)跇?gòu)造函數(shù)本身中設(shè)置屬性owner,屬性詳細(xì)信息和月份映射。構(gòu)造函數(shù)僅被調(diào)用一次(部署智能合約時(shí))。
上面顯示的是各種修飾符,用于隔離和區(qū)分我們智能合約的各種函數(shù)。
任何用戶都可以通過調(diào)用registerAsTenant方法表達(dá)對(duì)出租物業(yè)的興趣。如果不出租該物業(yè),它將為給定用戶設(shè)置tenantRegistry映射。所有者將通過調(diào)用confirmTenant方法來確認(rèn)哪個(gè)用戶應(yīng)該成為租戶,并輸入相應(yīng)的用戶錢包地址這將最終確定承租人,將物業(yè)出租狀態(tài)標(biāo)記為true,并將根據(jù)租金間隔設(shè)置租金到期日。
注意:此處所有基于日期的計(jì)算均基于UNIX時(shí)間戳?,F(xiàn)在是關(guān)鍵字,它為我們提供了包含交易的區(qū)塊的時(shí)間戳。但是這不是準(zhǔn)確的時(shí)間戳,它會(huì)導(dǎo)致時(shí)間超出允許范圍。
payRent方法將允許租戶支付給定月份的租金。請(qǐng)注意,只有在發(fā)送的金額等于要支付的租金金額時(shí)才會(huì)接受租金,它還會(huì)設(shè)置下一個(gè)到期日并將租戶警告重置為0(如果有)。
注-如果函數(shù)參數(shù)(以及返回參數(shù))的類型為struct,array,mapping或string,則應(yīng)明確指出其數(shù)據(jù)位置-內(nèi)存還是存儲(chǔ)。如果函數(shù)是external,則應(yīng)將數(shù)據(jù)位置作為calldata。
方法getRentStatus將允許任何人檢查給定月份的租金狀態(tài)。
注意:任何類型為struct的函數(shù)作用域變量都應(yīng)明確指出其數(shù)據(jù)位置-內(nèi)存或存儲(chǔ),因?yàn)檫@有助于編譯器做出基于事務(wù)的決策。請(qǐng)注意,在getRentStatus方法中,我們將返回每個(gè)字段,因?yàn)椴豢赡芊祷赝暾慕Y(jié)構(gòu)。實(shí)體僅將結(jié)構(gòu)實(shí)現(xiàn)為變量會(huì)丟失。
withdrawRent將允許所有者從智能合約地址中提取每月租金。它還將把每個(gè)月的rentInStore映射重置為0,因?yàn)椴粦?yīng)允許所有者每月兩次提取租金。
只有在以下情況下,房主才可以警告房客關(guān)于房租:
· 租戶尚未支付租金,并且已到到期日。
· 最近警告(如果有)至少在2天前提出(現(xiàn)在-警告時(shí)間》 172800000)。
將觸發(fā)一個(gè)警告事件,該事件可以通過使用web3 api的用戶界面?zhèn)陕?,以警告租戶有關(guān)未決租金的信息。警告計(jì)數(shù)也會(huì)增加。
如果達(dá)到警告限制,所有者也可以解雇租戶。調(diào)用dismissTenant方法還將財(cái)產(chǎn)租賃狀態(tài)重置為false。