首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的初始sendEther函数没有被识别为接收以太函数,正在得到下面显示的错误

为什么我的初始sendEther函数没有被识别为接收以太函数,正在得到下面显示的错误
EN

Ethereum用户
提问于 2020-12-05 14:49:32
回答 1查看 425关注 0票数 0

错误:此合同具有应付回退功能,但没有接收以太功能。考虑添加一个接收以太函数。

这是我的代码:

代码语言:javascript
运行
复制
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.16;

contract MyContract {

 string public functionCalled;

 function sendEther () external payable {
     functionCalled = 'sendEther';
 }
 fallback () external payable {
     functionCalled = 'fallback';
 }
}
EN

回答 1

Ethereum用户

回答已采纳

发布于 2020-12-06 16:21:22

备用函数以两种方式使用:接收以太付款和作为功能调度器。

为了提高可读性和提高安全性,将其分为两个功能。

如果您只想接受付款,只需实现接收。来自坚实性文件

代码语言:javascript
运行
复制
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.6.0 <0.8.0;

// This contract keeps all Ether sent to it with no way
// to get it back.
contract Sink {
    event Received(address, uint);
    receive() external payable {
        emit Received(msg.sender, msg.value);
    }
} 

为了向后兼容,可以将回退声明为应付款。编译器显示一个警告,但它应该像往常一样工作。只是要意识到,在未来,它可能会被废弃。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/90810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档