Итак, насколько я понимаю, хорошей идеей является использование временных контрактов и повторное развертывание, когда необходимо внести изменения. Давайте предположим, что я управлял умной лампочкой со следующим кодом.
pragma solidity 0.4.24;
contract Lightbulb {
enum LightState { off, on }
address public owner;
LightState light;
LightState constant defaultChoice = LightState.off;
uint public cost = 1 ether;
constructor () public {
owner = msg.sender;
}
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
function turnOn() public payable {
require(msg.value == cost);
light = LightState.on;
}
function turnOff() public {
light = LightState.off;
}
function getState() public view returns (LightState) {
return light;
}
}
Должен ли я просто перераспределить контракт, если я хочу изменить стоимость? Кроме того, я мог бы поместить стоимость в конструктор, но если бы я хотел изменить стоимость, мне все равно пришлось бы перераспределить, так что это действительно имеет значение?