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 访问