区块链/solidity-address payable和address

本文详细介绍了Solidity中address payable和address两种地址类型的区别,强调了payable修饰符对于接收Ether的重要性。内容包括address payable如何转换为address,以及不同类型地址在数组转换中的限制,并列举了内置变量如msg.sender、tx.origin和block.coinbase的类型。
摘要由CSDN通过智能技术生成

payable 修饰符的公有函数才能接受接收 Ether

如果你的合约通过一个没有 payable 修饰符的公有函数(包括构造函数和 fallback 函数)接收 Ether。将会产生一个 require 式异常

solidity 0.5将地址类型细分为addressaddress payable的目的:

它有助于强制智能合约开发人员认真考虑一个地址是否应当接收以太币,如果该地址根本不需要接收以太币,那么就应当使用address类型。当地址被声明为address类型后,如果开发者试图向该地址转入以太币,就会导致编译时类型错误。

addressaddress payable类型都用来存储160位的以太坊地址,两者的区别仅在编译时存在,在编译后的合约代码中就没有区别了——也就是说,引入地址类型细分的唯一 目的:

就是帮助开发者在编译期理清一个地址的实际用途。

address payableaddress类型的变量都表示以太坊地址,都可以使用底层的.call()方法。从字面意思看,address payable表示可用于支付的地址,因此在address payable类型的变量上,你可以使用.transfer().send()方法,但是address类型的变量则不能使用这些方法。

因此,addre

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值