1.匯款與支付概念
* 了解如何在智能合約中進行支付(如向合約地址轉移以太幣)。
* 學習 msg.value 參數如何表示發送到合約的金額。
* msg.value:表示調用函數時附帶的以太幣數量。
2.使用 payable 關鍵字
* 了解如何使用 payable 修飾符來標識可以接收以太幣的函數。
3.轉移以太幣的方法
* 三種主要的支付方式:transfer()、send() 和 call{value: }()。
1. transfer(amount):最安全的方式,會在交易失敗時 revert。
2. send(amount):較舊的方式,如果失敗不會 revert,需手動檢查。
3. call{value: amount}(""):靈活但不太安全,需要仔細處理錯誤檢查。
4.使用 payable 關鍵字
* 了解如何使用 payable 修飾符來標識可以接收以太幣的函數。
說明:
* receive() 函數是一個特殊函數,用於接收以太幣而不需要額外的邏輯。
* donate() 是一個標有 payable 的函數,這表示它可以接受以太幣。
* msg.value 表示調用該函數時附帶的以太幣數量。
* 使用 require(msg.sender == owner) 確保只有合約擁有者可以提取資金。
* payable(owner).transfer(amount) 將指定數量的以太幣轉給擁有者。
* getBalance() 函數是一個 view 函數,僅用於查詢合約中的以太幣餘額,不會改 變合約的狀態。
* address(this).balance 返回合約當前的以太幣餘額。