首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以太合约中的接口函数

以太合约中的接口函数
EN

Stack Overflow用户
提问于 2017-09-24 09:36:16
回答 1查看 2.3K关注 0票数 0

我在看以太坊网站上的代码,这个代码是做什么的?

代码语言:javascript
运行
复制
interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData); }

请访问:https://ethereum.org/token#full-coin-code

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-09-25 00:21:10

它不做任何事情,因为它是一个接口。接口是一种定义约束的方法,这样您就可以与实现约束的任何对象通信,并知道接口中定义的函数将存在于实现中。

代码语言:javascript
运行
复制
interface tokenRecipient {
    function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData);
}

这方面的一个例子是从一个契约到另一个契约的通信方式,并且看起来像是接收者的ERC223实现

在契约中,你想要与之通信,你必须已经实现了tokenRecipient,例如

代码语言:javascript
运行
复制
pragma solidity ^0.4.0;

interface tokenRecipient {
    function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData);
}

contract MyContract is tokenRecipient {
    function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) {
        // functionality
    }
}

因此,如果我们现在实现一个契约,我就知道我们可以与任何实现了tokenRecipient的契约进行交互。

代码语言:javascript
运行
复制
pragma solidity ^0.4.0;

interface tokenRecipient {
    function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData);
}

contract RemoteContract {
    function func(address _addr, uint _value) {
        tokenRecipient _tokenRecipient = tokenRecipient(_addr);
        _tokenRecipient.receiveApproval(msg.sender, _value, address(this), empty);
    }
}

如果调用失败,它将出错,这是我们需要发生的事情,以防止诸如令牌之类的事情被发送到无法对其执行任何操作的约定。因为固定性是原子的,并且以事务性的方式工作,如果契约不能接收到它,那么它将回滚所有已经执行的功能。

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

https://stackoverflow.com/questions/46385742

复制
相关文章

相似问题

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