solidity msg.sender.transfer发送给谁

这篇具有很好参考价值的文章主要介绍了solidity msg.sender.transfer发送给谁。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

发送给调用者自己,表示将该合约中的自己应有的以太坊退款到发送者自己的账户

address.transfer(amount)

转账一定数量(以wei为单位)的以太币到指定的地址,遇到任何错误都将抛出异常。我们在Faucet例子中使用过这个方法,针对的是msg.sender这个地址,即msg.sender.transfer

精通以太坊8:智能合约与Solidity(2) | 码农家园精通以太坊8:智能合约与Solidity(2)8.1使用Solidity进行编程有关Solidity的完整文档可以在这里访问:https://solidity.readthedocs.io/en/latest。8.2数据...https://www.codenong.com/cs105234539/

如:weth源码文章来源地址https://www.toymoban.com/news/detail-515553.html

pragma solidity ^0.4.18;

contract WETH9 {
    string public name     = "Wrapped Ether";
    string public symbol   = "WETH";
    uint8  public decimals = 18;

    event  Approval(address indexed src, address indexed guy, uint wad);
    event  Transfer(address indexed src, address indexed dst, uint wad);
    event  Deposit(address indexed dst, uint wad);
    event  Withdrawal(address indexed src, uint wad);

    mapping (address => uint)                       public  balanceOf;
    mapping (address => mapping (address => uint))  public  allowance;

    function() public payable {
        deposit();
    }
    function deposit() public payable {
        balanceOf[msg.sender] += msg.value;
        Deposit(msg.sender, msg.value);
    }
    function withdraw(uint wad) public {
        require(balanceOf[msg.sender] >= wad);
        balanceOf[msg.sender] -= wad;
        msg.sender.transfer(wad);
        Withdrawal(msg.sender, wad);
    }

    function totalSupply() public view returns (uint) {
        return this.balance;
    }

    function approve(address guy, uint wad) public returns (bool) {
        allowance[msg.sender][guy] = wad;
        Approval(msg.sender, guy, wad);
        return true;
    }

    function transfer(address dst, uint wad) public returns (bool) {
        return transferFrom(msg.sender, dst, wad);
    }

    function transferFrom(address src, address dst, uint wad)
        public
        returns (bool)
    {
        require(balanceOf[src] >= wad);

        if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) {
            require(allowance[src][msg.sender] >= wad);
            allowance[src][msg.sender] -= wad;
        }

        balanceOf[src] -= wad;
        balanceOf[dst] += wad;

        Transfer(src, dst, wad);

        return true;
    }
}

到了这里,关于solidity msg.sender.transfer发送给谁的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • solidity开发 msg.value

    刚学完solidity的基础开发,想写一个众筹项目,在使用msg.value的时候,发现只要函数中使用到msg.value,就会自动转走账户的钱到该合约账户里。这让我非常疑惑,那怎么转出来呢?我写了一个demo来测试。 测试结果是:当我调用transfer()时,会扣除sender的eth,转到当前合约账户

    2024年02月11日
    浏览(39)
  • Solidity中this、msg、block、tx、gas的用法

    目录 前言 1.this 2.msg 3.block 4.tx 5.gas 总结 在智能合约编程中,全局变量扮演着关键的角色,提供了访问外部信息和交易上下文的重要途径。本文将重点介绍 Solidity 中的五个重要全局变量: this 、 msg 、 block 、 tx 和 gas ,以及它们在智能合约中的用法和作用。通过深入了解这些

    2024年04月09日
    浏览(49)
  • Solidity地址支付方法Send、Transfer和Call的使用

    以上三种转账方式都属于地址的成员属性(members of address)。 参见地址成员类型 Transfer 如果当前合约的余额不够大或者 Ether转账被接收账户拒绝,转账功能将失败。接收方智能合约应定义回退函数,否则转账调用将引发错误。transfer函数在失败时恢复。另外它被硬编码以防

    2024年02月03日
    浏览(34)
  • 20. solidity 发送ETH:call()

    Solidity 有三种方法向其他合约发送 ETH ,他们是: transfer() , send() 和 call() ,其中 call() 是被鼓励的用法。 call 没有 gas 限制,最为灵活,是最提倡的方法; transfer 有 2300 gas 限制,但是发送失败会自动 revert 交易,是次优选择; send 有 2300 gas 限制,而且发送失败不会自动 re

    2024年02月08日
    浏览(30)
  • C#方法调用追溯:选择正确的方式,轻松找到调用者

      概述: 在C#中,寻找调用当前方法的方法可采用`StackTrace`和`CallerMemberName`两种方式。`StackTrace`通过分析堆栈信息提供详细信息,而`CallerMemberName`则简化了获取调用者方法名的过程,更轻量且效率较高。选择取决于需求,若需要堆栈信息,可选`StackTrace`;若只需调用者方法名

    2024年04月09日
    浏览(45)
  • Rpc服务消费者(Rpc服务调用者)实现思路

    前面几节说到Rpc消费者主要通过UserServiceRPc_Stub这个protobuf帮我们生成的类来实现,上代码回顾一下 UserServiceRpc_Stub可以看做是一个给用户提供rpc远程调用的代理类,这里面有rpcclient和rpcserver约定好的远程方法Login,Login方法是调用了一个channel_的callMethod方法,那么联想到其他服

    2024年02月14日
    浏览(33)
  • 力扣题目的参数解释(力扣初用者必看指南)

    导入: 题目来源:leetcode 867 转置矩阵 参数列表: int** matrix int matrixSize int* matrixColSize int* returnSize int** returnColumnSizes 模仿main()函数 完整代码 运行结果 最后本题的AC答案 结语: 相信初次刷力扣的同学经常会因为题目所给的参数看不懂,导致从入门到 入土 ,例如下面这个

    2024年01月25日
    浏览(40)
  • 新版Redis不再“开源”,对使用者都有哪些影响?

    2024年3月20日,Redis Labs宣布从Redis 7.4开始,将原先比较宽松的BSD源码使用协议修改为RSAv2和SSPLv1协议。该变化意味着 Redis 在 OSI(开放源代码促进会)定义下不再是严格的开源产品。该变化引发Redis使用者的广泛激烈讨论,那么对Redis使用者都有哪些影响呢? BSD协议非常宽松,

    2024年03月27日
    浏览(44)
  • API 参考与帮助内容:一站式开发与使用者支援

    API 文档是旨在了解 API 详细信息的综合指南。通常,它们包括端点、请求示例、响应类别和示例以及错误代码等信息。API 文档可帮助开发人员了解 API 端点的具体细节,并了解如何将 API 成功集成到他们的软件中。 API 文档生成工具是直接从源代码创建 API 文档的软件应用程序

    2024年02月04日
    浏览(47)
  • Kafka-Sender分析

    通过前面的分析我们知道,主线程通过KafkaProducer.send方法将消息放入RecordAccumulator中缓存,并没有实际的网络I/O操作。网络I/O操作是由Sender线程统一进行的。 我们先来了解一下Sender线程发送消息的整个流程: 首先,它根据RecordAccumulator的缓存情况,筛选出可以向哪些Node节点发

    2024年01月18日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包