solidity智能合约[23]-payable
2018-11-24 22:52
1026 查看
转账
如果在函数中涉及到以太币的转移,需要使用到payable关键词。意味着可以在调用这笔函数的消息中附带以太币。
1 2 3 | function pay() public payable{ } |
this代表合约地址
this 代表当前部署的合约地址
1 2 34 | function getThis() public view returns(address){ return this; // 0x9F4c14f487B8e4E3986467c2a2aA5bDE93052666 //0x9f4c14f487b8e4e3986467c2a2aa5bde93052666 } |
获取合约账户余额
1 2 34 | function getbalance() public view returns(uint){ return address(this).balance; } |
获取外部账户余额
1 2 3 | function getExternalBalance(address account) public view returns(uint){ return account.balance; } |
转账
1 2 34 | //给外部账户转账 function transfer() public payable{ address account = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c; account.transfer(msg.value); } //给合约地址转账 function transfer2() public payable{ address(this).transfer(msg.value); } |
给合约地址与外部地址同时转账
在下面的例子中,如果在调用此函数时,附带了20Ether,那么就会给account账户转移10ether,给合约账户转移10ether
1 2 34 | function transfer3() public payable{ address account = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c; account.transfer(10*10**18); } |
全部代码
1 2 34 | pragma solidity ^0.4.23; contract payableTest{ function pay() public payable{ } function getbalance() public view returns(uint){ return address(this).balance; } function getThis() public view returns(address){ return this; // 0x9F4c14f487B8e4E3986467c2a2aA5bDE93052666 //0x9f4c14f487b8e4e3986467c2a2aa5bde93052666 } function getExternalBalance(address account) public view returns(uint){ return account.balance; } function transfer() public payable{ address account = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c; account.transfer(msg.value); } function transfer2() public payable{ address(this).transfer(msg.value); } function () public payable{ } function transfer3() public payable{ address account = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c; account.transfer(10*10**18); } } |
本文链接: https://dreamerjonson.com/2018/11/20/solidity-23-payable/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
相关文章推荐
- 『0008』- Solidity中public、internal、private在状态变量和函数中的使用以及Solidity智能合约继承、重写
- 区块链-智能合约简单脚本编写方法(solidity)
- 智能合约语言 Solidity 教程系列3 - 函数类型
- 区块链-智能合约简单脚本编写方法(solidity)
- 智能合约语言 SOLIDITY 教程系列5 - 数组介绍
- 智能合约编程语言solidity的特性
- 区块链入门(5)Truffle 项目实战,Solidity IDE, 智能合约部署
- 智能合约语言 Solidity 教程系列10 - 完全理解函数修改器
- 智能合约语言 Solidity 教程系列4 - 数据存储位置分析
- 智能合约语言 SOLIDITY 教程系列6 - 结构体与映射
- 智能合约语言 Solidity 教程系列8 - Solidity API(特殊的变量及函数)
- 智能合约最佳实践 之 Solidity 编码规范
- 智能合约语言 SOLIDITY 教程系列7 - 以太单位及时间单位
- 智能合约-Solidity官方文档(1)
- 用solidity语言开发代币智能合约
- 学习solidity的一个简单智能合约(2)——对冲
- 第001节 - Solidity 智能合约开发工具准备第一篇
- 第一行代码:以太坊(2)-使用Solidity语言开发和测试智能合约
- Solidity 文档--第一章:智能合约入门
- 区块链入门(5)Truffle 项目实战,Solidity IDE, 智能合约部署