以太坊智慧合約開發:讓合約接受轉賬

我才是二亮發表於2017-12-10

以太坊智慧合約開發:讓合約接受轉賬

在以太坊智慧合約開發中,通常會有向合約地址進行轉賬的需求,那麼有幾種向合約地址進行轉賬的方式呢?

有三種方式:

  • 部署合約時轉賬
  • 呼叫合約提供的方法
  • 直接向合約地址進行轉賬

但有一個問題,以太坊的智慧合約預設是拒絕來自任何地址的轉賬,那麼如何讓合約能夠支援接收轉賬呢?

1、部署轉賬

在進行合約開發時,如果想要在部署時,直接向該合約進行轉賬,只需要給建構函式中新增payable修飾符。

示例:

contract Test {
    
      // 建構函式新增payable修飾符即可
      function Test() payable {
        // 建構函式其他邏輯程式碼  
    }
}

2、執行合約轉賬

執行合約轉賬,則需要給你需要支援轉賬功能的方法新增payable修飾符

示例:

contract Test {
    
      function getBalance() payable {
        // 其他邏輯
    }
}

3、直接轉賬

支援直接轉賬,需要藉助後備函式(fallback function),只需要為後備函式新增 payable 修飾符

示例:

contract Test {
    
      function () payable {
        // 其他邏輯
    }
}

附錄

相關文章