以太坊智慧合約開發:讓合約接受轉賬
在以太坊智慧合約開發中,通常會有向合約地址進行轉賬的需求,那麼有幾種向合約地址進行轉賬的方式呢?
有三種方式:
- 部署合約時轉賬
- 呼叫合約提供的方法
- 直接向合約地址進行轉賬
但有一個問題,以太坊的智慧合約預設是拒絕來自任何地址的轉賬,那麼如何讓合約能夠支援接收轉賬呢?
1、部署轉賬
在進行合約開發時,如果想要在部署時,直接向該合約進行轉賬,只需要給建構函式中新增payable
修飾符。
示例:
contract Test {
// 建構函式新增payable修飾符即可
function Test() payable {
// 建構函式其他邏輯程式碼
}
}
2、執行合約轉賬
執行合約轉賬,則需要給你需要支援轉賬功能的方法新增payable
修飾符
示例:
contract Test {
function getBalance() payable {
// 其他邏輯
}
}
3、直接轉賬
支援直接轉賬,需要藉助後備函式(fallback function),只需要為後備函式新增 payable
修飾符
示例:
contract Test {
function () payable {
// 其他邏輯
}
}