参考文档:Solidity 0.5 address payable和address的区别是什么? | 学习软件编程
测试环境:以太坊POA联盟链 + remix
solidity 0.5将地址类型细分为address
和address payable
的目的在于,它有助于强制智能合约开发人员认真考虑一个地址是否应当接收以太币,如果该地址根本不需要接收以太币,那么就应当使用address
类型。当地址被声明为address
类型后,如果开发者试图向该地址转入以太币,就会导致编译时类型错误。
address
和address payable
类型都用来存储160位的以太坊地址,两者的区别仅在编译时存在,在编译后的合约代码中就没有区别了 -- 也就是说,引入地址类型细分的唯一目的就是帮助开发者在编译期理清一个地址的实际用途。
address payable
和address
类型的变量都表示以太坊地址,都可以使用底层的.call