blockchain - " 期望 '(' 但得到标识符 " & " 解析错误:不匹配的输入 '{' 期望 {';', '='} [undefined] "
问题描述
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
contract CrowdFunding
{
struct Investor
{
address addr;
uint amount;
}
address public owner;
uint public NumOfInvestors;
uint public deadline;
string public status;
bool public isOver;
uint public goalAmount;
uint public totalAmount;
mapping (uint => Investor) public investors;
modifier onlyOwner ()
{
require(msg.sender == owner);
_;
}
function crowdfunding(uint _duration, uint _goalAmount) public
{
owner == msg.sender;
deadline = now + _duration;
goalAmount = _goalAmount;
status = "Funding";
isOver = "false";
NumOfInvestors = 0;
totalAmount = 0;
}
function fund() payable public
{
require(!isOver);
Investor inv = investors[NumOfInvestors++];
inv.addr = msg.sender;
inv.amount = msg.value;
totalAmount += inv.amount;
}
function checkGoalReached () public onlyOwner
{
require(!isOver);
require(now >= deadline);
if(totalAmount >= goalAmount)
{
status = "Campaign succeeded.";
isOver = true;
if(!owner.send(this.balance))
{
throw;
}
else
{
uint i = 0;
status = "Campaign Failed.";
isOver = true;
while (i <= NumOfInvestors)
{
if(!investors[i].addr.send(investors[i].amount))
{
throw;
}
i++;
}
}
}
function kill() public onlyOwner
{
selfdestrct(owner);
}
}
}
我写了一份合约,但在函数 kill() 的第一行和第二行出现错误。
它在第一行显示“ Expected '(' but got identifier”,在第二行显示“ Parse error: mismatched input '{' Expecting { ';' , '=' } [undefined]”。
我仔细检查了我的代码结构,还阅读了一些来自 StackOverflow 的文章。
对于第一行显示的问题,那些文章说可能会错过“{”或“}”。但我肯定没有错过。(如果我真的错过了他们,那我就是一个该死的傻瓜。
至于第二行中显示的问题,我只是不知道为什么它是错误的。会不会是版本问题??
请帮助我。求救。
解决方案
您的
function kill() public onlyOwner
{
selfdestrct(owner);
}
在另一个函数内部,将其移到外部,一切都会正常进行。请检查关闭刹车}
。另外,您将要修复错字selfdestruct
这是工作代码:
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
contract CrowdFunding
{
struct Investor
{
address payable addr;
uint amount;
}
address payable public owner;
uint public NumOfInvestors;
uint public deadline;
string public status;
bool public isOver;
uint public goalAmount;
uint public totalAmount;
mapping (uint => Investor) public investors;
modifier onlyOwner ()
{
require(msg.sender == owner);
_;
}
function crowdfunding(uint _duration, uint _goalAmount) public
{
owner == msg.sender;
deadline = block.timestamp + _duration;
goalAmount = _goalAmount;
status = "Funding";
isOver = false;
NumOfInvestors = 0;
totalAmount = 0;
}
function fund() payable public
{
require(!isOver);
Investor storage inv = investors[NumOfInvestors++];
inv.addr = payable(msg.sender);
inv.amount = msg.value;
totalAmount += inv.amount;
}
function checkGoalReached () public onlyOwner
{
require(!isOver);
require(block.timestamp >= deadline);
if(totalAmount >= goalAmount)
{
status = "Campaign succeeded.";
isOver = true;
address payable self = payable(address(this));
uint256 balance = self.balance;
if(!owner.send(balance))
{
revert();
}
else
{
uint i = 0;
status = "Campaign Failed.";
isOver = true;
while (i <= NumOfInvestors)
{
if(!investors[i].addr.send(investors[i].amount))
{
revert();
}
i++;
}
}
}
}
function kill() public onlyOwner
{
selfdestruct(owner);
}
}
推荐阅读
- vba - 保留文本的下划线状态以供以后恢复
- python - Spotify Web API 重定向 URI 的持续问题
- c++ - 如何在前向声明的类不完整的头文件中声明智能指针?
- google-sheets - 在谷歌表格中为 COUNTIFS 使用多种功能
- javascript - Herokuapp 无法部署,但可以在 localhost:3000 上完美运行
- pdf - 如何使用 Imagemagick 替换单个 PDF 页面?
- javascript - 为什么当我尝试使用 react native 钩子时,它不能按预期正常工作?
- java - Kotlin 和 Jackson - 尝试解析简单类型的子类型时缺少类型 ID
- python - 为什么输入错误:在
需要字符串作为左操作数,而不是列表 - css - 在 Safari/Webkit 中设置 Details/Summary 标记样式时出错