因此,据我了解,使用临时合同并在需要更改时重新部署是个好主意。假设我用以下代码控制了智能灯泡。
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;
}
}
如果我想更改成本,我应该重新部署合同吗?另外,我可以将成本放在构造函数中,但是如果我想更改成本,我仍然必须重新部署,这真的很重要吗?
答案 0 :(得分:0)
合同部署非常昂贵,您通常希望尽可能避免这样做。业务规则更改时,您将部署新合同。对于像您所描述的那样的简单状态更改操作,您可能希望提供一个使用onlyOwner
修饰符来限制访问的费用设置器。