在 Remix 中部署合约期间无法传递值
Can't pass value during the contract deployment in Remix
我正在使用以下代码部署合约 Remix
:
pragma solidity ^0.4.17;
contract Lottery {
address public manager;
address[] public players;
function Lottery() public {
manager = msg.sender;
}
function enter() public payable {
require(msg.value > .01 ether);
players.push(msg.sender);
}
}
部署前没有输入任何值,部署成功,但如果我指定任何值,它会失败并出现以下错误:false Transaction mined but the execution failed
.
This is the params I trying to deploy a contract with.
我该如何解决?
您收到此错误是因为 Lottery()
构造函数不可支付。当您在部署前输入一个值时,它会将 Wei 的值发送到 Lottery()
,但 Lottery()
没有 payable
关键字,因此失败。
为了解决这个问题,我会在没有任何值参数的情况下部署合约,然后创建一个新函数,以便所有者可以设置彩票奖金的价值。我也会尝试用较新版本的 Solidity 编写它。
我正在使用以下代码部署合约 Remix
:
pragma solidity ^0.4.17;
contract Lottery {
address public manager;
address[] public players;
function Lottery() public {
manager = msg.sender;
}
function enter() public payable {
require(msg.value > .01 ether);
players.push(msg.sender);
}
}
部署前没有输入任何值,部署成功,但如果我指定任何值,它会失败并出现以下错误:false Transaction mined but the execution failed
.
This is the params I trying to deploy a contract with.
我该如何解决?
您收到此错误是因为 Lottery()
构造函数不可支付。当您在部署前输入一个值时,它会将 Wei 的值发送到 Lottery()
,但 Lottery()
没有 payable
关键字,因此失败。
为了解决这个问题,我会在没有任何值参数的情况下部署合约,然后创建一个新函数,以便所有者可以设置彩票奖金的价值。我也会尝试用较新版本的 Solidity 编写它。