/housekeeper

use solidity to write a simple contract on remix

Primary LanguageHTML

Housekeeper

use solidity to write a simple contract on remix

项目需求

  • 每个居民初始状态下将获得两间住宅,每间住宅的耐久值Life为1000,居民可以自由选择进行居住或者进行出租。(出租数量n,居住数量m)
  • 假如进行居住:房屋的日损耗值Loss将会为1,当房屋耐久值Life为0时,房屋将会被回收
  • 假如进行出租:房屋的日收益值Gain将会为3,日损耗值Loss将会为3
  • 居民可以选择使用自己的个人疲劳值Energy来进行房屋维护,比例为1:1
  • 当居民有房屋居住时,个人疲劳值Energy + 2 / 日,假如所有房屋均出租,疲劳值Energy - 2 / 日
  • 当居民Energy = 0时,将被注销账号
  • 居民可以使用自己的收益值Gain来购置更多的房屋

变量分析

根据需求,一次进行函数构建以及变量声明。 需要的变量有:

  • 居民:用区块的msgsender来作为居民
  • 住宅:住宅的耐久值设置为一个固定的变量(此项目中对房屋不做差别处理)
  • 日损耗值:需要使用mapping来实现不同居民房屋日损耗值的记录
  • 日收益值:需要使用mapping来实现不同居民房屋日收益值的记录
  • 居民疲劳值:需要使用mapping来实现不同居民疲劳值的记录
  • 用来出租的房屋数量和用来居住的房屋数量:由于房屋数量以居民所有权区分,因此分别需要两个mapping来实现出租和居住数量的记录。(此项目中不对房屋居住数量或者出租数量进行限定,但不能超过房屋总量)
  • 更新变量:由于损耗值,收益值,疲劳值都是根据时间进行改变,所以增加三个lastUpdate变量,来记录上次更新的时间
  • 取消资格:当居民的energy为0时会被取消资格并删除资产,因此设置mapping变量来记录不同居民的状态(合格或者不合格)
  • 房屋的耐久值:设置变量为1000
  • 房屋的价格:由于不对房屋进行区分,因此房屋价格统一设定

食用方法

  • 打开私链并运行
geth --datadir "./" --networkid 20181221 --rpc --rpccorsdomain "*" --nodiscover --rpcport 8545 console
  • 解锁账户
personal.unlockAccount(eth.accounts[0],"123",0)
  • 打开remix网页端并将文件夹中的sol文件复制进去,compile
  • 成功之后选择run->environment: web3 provider -> 端口:8545
  • 点击deploy
  • run板块获得地址和合约api,替换home.js 文件中的同名变量
  • 运行app.js
  • 通过localhost:3000/signin 访问