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

2019-11-08 10:11 栏目:经验之谈 来源: 查看()
这是智能合约演练系列的第2部分。在以下文章中,我将为您提供一个关于房地产租赁智能合约的技术实施细节的深入概述。 出租物业用例: 总体用例非常简单,用户将根据给定的属性将自己注册为潜在客户。财产所有者将决定哪个用户将成为租户。租户将按照约定的到期日支付租金。租金账户存储在智能合约中。业主可以从合同中提取相同的租金。如果房客未在到期日之前支付租金,则允许房主对房客提出警告。所有者可以在每隔2天的向租户提出警告。如果房客超过了警告限制,房主可以将其从财产中收回。 让我们开始…

以下是我们定义的数据结构:

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

每个属性字段的注释定义了它们各自的角色 在这里,我们定义了一个“属性”结构,该结构记录属性的详细信息,例如名称、地址、是否出租属性、租金金额、租金间隔、租金到期日期、警告计数、警告限额和租户钱包地址。我们有一个月租金状态结构,这将帮助我们存储每个月的租金状态。我们还提供各种映射-月,摊点注册和租金支付状态。

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

我们定义了有助于我们记录成功交易的事件。我们在构造函数本身中设置属性所有者、属性细节和月份映射。构造函数只调用一次(部署智能合同时)。

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

上面显示的 是用于隔离和区分我们智能合同的各种功能的各种修饰语。

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

任何用户都可以通过调用registerAsTenant方法来表达自己租用该房产的兴趣。如果该属性未被租用,它将为给定用户设置tenantRegistry映射。所有者将通过调用确认租户方法来确认哪个用户应该成为租户,并输入相应的用户钱包地址。这将最终确定租户,将该物业的租赁状态标记为真,并根据租赁间隔设置租赁到期日期。 注意:这里所有基于日期的计算都基于UNIX时间戳。现在它是一个关键字,它给了我们包含事务的块的时间戳。但是,这不是一个准确的时间戳,这会导致时间超出允许的范围。

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

支付租金方法将允许租户支付给定月份的租金。请注意,只有当发送的金额等于要支付的租金金额时,才会接受租金。它还将设置下一个到期日期,并将租户警告重置为0(如果有)。 注意-如果函数参数(和返回参数)的类型是结构、数组、映射或字符串,则应该清楚地指出其数据位置——内存或存储。如果函数是外部的,数据位置应该是calldata。 方法获取租赁状态将允许任何人检查给定月份的租赁状态。 注意:任何结构类型的函数范围变量都应该清楚地表明其数据位置——内存或存储,因为这有助于编译器做出基于事务的决策。请注意,在getRentStatus方法中,我们将返回每个字段,因为不可能返回完整的结构。只实现结构作为变量的实体会丢失。

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

提取租金将允许业主从智能合同地址提取月租金。它还将每月租金指数(rentInStore)映射重置为0,因为不应该允许业主每月提取两次租金。

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

房东只能在下列情况下警告房客房租:房客没有付房租,已经到了到期日。 ,最近的警告(如果有的话)至少在两天前发出(现在-警告时间172800000)。 将触发一个警告事件,该事件可以通过使用web3 api的用户界面截取,以警告租户未决租金。警告计数也会增加。 如果达到警告限制,业主也可以解雇租户。调用dismissTenant方法也会将属性租约状态重置为false。 我希望你喜欢!在下一节中,我们将通过它来执行业务合作伙伴情报合同。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发