http://www.tnmanning.com

Solidity智能合约演练系列第2部分

出租物业用例::

Solidity智能合约演练系列第2部门

针对每个属性字段的注释界说了它们各自的脚色

在这里,我们界说了“Property”布局,该布局将记录工业具体信息,譬喻名称,地点,是否租用工业,租金金额,租金隔断,租金到期日,告诫计数,告诫限制和租户钱包地点。我们有MonthlyRentStatus布局,这将辅佐我们存储每个月的租金状态。我们还提供各类映射-months,tantantRegistry和rent paid status。

这是智能合约演练系列的第2部门。在以下文章中,我将为您提供一个关于房地产租赁智能合约的技能实施细节的深入概述。

总体用例很是简朴,用户将按照给定的属性将本身注册为潜在客户。工业所有者将抉择哪个用户将成为租户。租户将凭据约定的到期日付出租金。租金账户存储在智能合约中。业主可以从条约中提取沟通的租金。假如房客未在到期日之前付出租金,则答允房主对房客提出告诫。所有者可以在每隔2天的向租户提出告诫。假如房客高出了告诫限制,房主可以将其从工业中收回。

Solidity智能合约演练系列第2部门

payRent要领将答允租户付出给定月份的租金。请留意,只有在发送的金额便是要付出的租金金额时才会接管租金,它还会配置下一个到期日并将租户告诫重置为0(假如有)。

withdrawRent将答允所有者从智能合约地点中提取每月租金。它还将把每个月的rentInStore映射重置为0,因为不该答允所有者每月两次提取租金。

只有在以下环境下,房主才可以告诫房客关于房租:

留意:此地方有基于日期的计较均基于UNIX时间戳。此刻是要害字,它为我们提供了包括生意业务的区块的时间戳。可是这不是精确的时间戳,它会导致时间超出答允范畴。

· 租户尚未付出租金,而且已到到期日。


上面显示的是各类修饰符,用于断绝和区分我们智能合约的各类函数。

Solidity智能合约演练系列第2部门

以下是我们界说的数据布局:


让我们开始…

我们界说了事件,这些事件将辅佐我们记录乐成的生意业务。我们在结构函数自己中配置属性owner,属性具体信息和月份映射。结构函数仅被挪用一次(陈设智能合约时)。

Solidity智能合约演练系列第2部门





· 最近告诫(假如有)至少在2天前提出(此刻-告诫时间> 172800000)。
将触发一个告诫事件,该事件可以通过利用web3 api的用户界面侦听,以告诫租户有关未决租金的信息。告诫计数也会增加。

任何用户都可以通过挪用registerAsTenant要领表达对出租物业的乐趣。假如不出租该物业,它将为给定用户配置tenantRegistry映射。所有者将通过挪用confirmTenant要领来确认哪个用户应该成为租户,并输入相应的用户钱包地点这将最终确定承租人,将物业出租状态标志为true,并将按照租金隔断配置租金到期日。
要领getRentStatus将答允任何人查抄给定月份的租金状态。
留意:任何范例为struct的函数浸染域变量都应明晰指出其数据位置-内存或存储,因为这有助于编译器做出基于事务的决定。请留意,在getRentStatus要领中,我们将返回每个字段,因为不行能返回完整的布局。实体仅将布局实现为变量会丢失。

Solidity智能合约演练系列第2部门

假如到达告诫限制,所有者也可以开除租户。挪用dismissTenant要领还将工业租赁状态重置为false。
但愿您喜欢!在下一部门举办结帐,我们将通过该部门举办业务相助同伴智能合约。



要害词: Solidity  智能合约  

Solidity智能合约演练系列第2部门


注-假如函数参数(以及返回参数)的范例为struct,array,mapping或string,则应明晰指出其数据位置-内存照旧存储。假如函数是external,则应将数据位置作为calldata。

Solidity智能合约演练系列第2部门

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。