溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

solidity智能合約[23]-payable

發(fā)布時(shí)間:2020-07-25 12:48:40 來(lái)源:網(wǎng)絡(luò) 閱讀:1444 作者:jonson_jackson 欄目:開發(fā)技術(shù)

轉(zhuǎn)賬

如果在函數(shù)中涉及到以太幣的轉(zhuǎn)移,需要使用到payable關(guān)鍵詞。意味著可以在調(diào)用這筆函數(shù)的消息中附帶以太幣。

1
2
3
function pay() public payable{

}

this代表合約地址

this 代表當(dāng)前部署的合約地址

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;
  }

轉(zhuǎn)賬

1
2
3
4
5
6
7
8
9
10
//給外部賬戶轉(zhuǎn)賬
function transfer() public payable{
    address account = 0xca35b7d915458ef540ade6068dfe2f44e8fa733c;
    account.transfer(msg.value);
}

//給合約地址轉(zhuǎn)賬
function transfer2() public payable{
   address(this).transfer(msg.value);
}

給合約地址與外部地址同時(shí)轉(zhuǎn)賬

在下面的例子中,如果在調(diào)用此函數(shù)時(shí),附帶了20Ether,那么就會(huì)給account賬戶轉(zhuǎn)移10ether,給合約賬戶轉(zhuǎn)移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/

  • 版權(quán)聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 CN協(xié)議 許可協(xié)議。轉(zhuǎn)載請(qǐng)注明出處!

solidity智能合約[23]-payable

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI