区块链研究实验室|Solidity智能合约演练系列第2部分

  • 时间:
  • 浏览:63
  • 来源:区块链技术网

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

出租物业用例::

总体用例非常简单,用户将根据给定的属性将自己注册为潜在客户。财产所有者将决定哪个用户将成为租户。租户将按照约定的到期日支付租金。租金账户存储在智能合约中。业主可以从合同中提取相同的租金。如果房客未在到期日之前支付租金,则允许房主对房客提出警告。所有者可以在每隔2天的向租户提出警告。如果房客超过了警告限制,房主可以将其从财产中收回。

让我们开始…

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

针对每个属性字段的注释定义了它们各自的角色

在这里,我们定义了“Property”结构,该结构将记录财产详细信息,例如名称,地址,是否租用财产,租金金额,租金间隔,租金到期日,警告计数,警告限制和租户钱包地址。我们有MonthlyRentStatus结构,这将帮助我们存储每个月的租金状态。我们还提供各种映射-months,tantantRegistry和rent paid status。

我们定义了事件,这些事件将帮助我们记录成功的交易。我们在构造函数本身中设置属性owner,属性详细信息和月份映射。构造函数仅被调用一次(部署智能合约时)。

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

任何用户都可以通过调用registerAsTenant方法表达对出租物业的兴趣。如果不出租该物业,它将为给定用户设置tenantRegistry映射。所有者将通过调用confirmTenant方法来确认哪个用户应该成为租户,并输入相应的用户钱包地址这将最终确定承租人,将物业出租状态标记为true,并将根据租金间隔设置租金到期日。

注意:此处所有基于日期的计算均基于UNIX时间戳。现在是关键字,它为我们提供了包含交易的区块的时间戳。但是这不是准确的时间戳,它会导致时间超出允许范围。

payRent方法将允许租户支付给定月份的租金。请注意,只有在发送的金额等于要支付的租金金额时才会接受租金,它还会设置下一个到期日并将租户警告重置为0(如果有)。

注-如果函数参数(以及返回参数)的类型为struct,array,mapping或string,则应明确指出其数据位置-内存还是存储。如果函数是external,则应将数据位置作为calldata。

方法getRentStatus将允许任何人检查给定月份的租金状态。

注意:任何类型为struct的函数作用域变量都应明确指出其数据位置-内存或存储,因为这有助于编译器做出基于事务的决策。请注意,在getRentStatus方法中,我们将返回每个字段,因为不可能返回完整的结构。实体仅将结构实现为变量会丢失。

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

只有在以下情况下,房主才可以警告房客关于房租:

 

  • 租户尚未支付租金,并且已到到期日。

  • 最近警告(如果有)至少在2天前提出(现在-警告时间> 172800000)。

将触发一个警告事件,该事件可以通过使用web3 api的用户界面侦听,以警告租户有关未决租金的信息。警告计数也会增加。

如果达到警告限制,所有者也可以解雇租户。调用dismissTenant方法还将财产租赁状态重置为false。

希望您喜欢!在下一部分进行结帐,我们将通过该部分进行业务合作伙伴智能合约。

猜你喜欢

solidity编程风格

Solidity编程风格的几条建议。

2021-12-31

如何部署Solidity智能合约到Solana

什么是Solana,你如何将Solidity智能合约部署到Solana?

2021-12-28

区块链红利吃饱后,这个巨头又想"征服"元宇宙?

据12月26日消息,百度与英伟达(NVIDIA)已达成协议,双方合作共建AI元宇宙。另外,在今日举行的百度AI开发者大会上,英伟达全球副总裁暨亚太区总裁 Raymond Teh将受邀出席,并发表主题演讲。

2021-12-27

2021年,区块链股权融资发生了怎么样的演变

过去一年,区块链行业融资井喷,在科技领域中独树一帜,A16z、红杉、老虎基金等等这些顶级机构在 2021 年的区块链行业肆意驰骋,在 DeFi、NFT、Metaverse 等领域扶持了一众创业项目。

2021-12-23

两个元宇宙的世界观,以及和区块链的关系

“元宇宙”这个名词音好听但义很难传达准确,想要更准确地理解义,取名为平行宇宙、竞争宇宙、山寨宇宙,更好。对应的,我们现在肉身所处的宇宙,我们称之为“肉身宇宙”。

2021-12-22