solidity智能合约[23]-payable-创新互联

转账

如果在函数中涉及到以太币的转移,需要使用到payable关键词。意味着可以在调用这笔函数的消息中附带以太币。

创新互联专注骨干网络服务器租用10年,服务更有保障!服务器租用,资阳服务器托管 成都服务器租用,成都服务器托管,骨干网络带宽,享受低延迟,高速访问。灵活、实现低成本的共享或公网数据中心高速带宽的专属高性能服务器。
1
2
3
function pay() public payable{

}

this代表合约地址

this 代表当前部署的合约地址

1
2
3
4
5
function  getThis() public view returns(address){
  return this;
  // 0x9F4c14f487B8e4E3986467c2a2aA5bDE93052666
   //0x9f4c14f487b8e4e3986467c2a2aa5bde93052666
}

获取合约账户余额

1
2
3
4
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
3
4
5
6
7
8
9
10
//给外部账户转账
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
3
4
function transfer3() public payable{
  address account = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c;
  account.transfer(10*10**18);
}

全部代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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协议 许可协议。转载请注明出处!

solidity智能合约[23]-payable

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:solidity智能合约[23]-payable-创新互联
分享路径:http://hbruida.cn/article/gioos.html