1.16 Returns, Visibility, State Mutability, Fallback

閱讀時間約 2 分鐘

練習題 1

    • 請敘述四種 Solidity 函式的可視性分別對於當前合約 (MyContract)、繼承合約 (DerivedContract)、其他合約 (AnotherContract)的訪問權限。

public - 任何的合約和帳戶都可以呼叫這個函數,也就是在合約的外部和內部均可見。

private - 只有當前合約可以呼叫這個函數,任何外部或繼承合約皆不可呼叫。

external - 只有除了自己和繼承合約以外的合約或帳戶可以呼叫此函數。 

internal - 只有自己和繼承合約的合約或帳戶可以呼叫此函數。


練習題 2

    • 請實作一函式 getContractBalance() 來查看當前合約擁有的餘額。
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

contract Balance {
function getContractBalance() public view returns(uint){
return address(this).balance;
}
}

這個合約提供了一個簡單的功能,讓任何人都能夠查詢合約當前的餘額

練習題 3

    • 請使用 Fallback Function 使合約可以接收外部的匯款。 並且使用 REMIX 介面匯款給合約。最後利用上一題的 getContractBalance() 查看一切是否運作正常。
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

contract Balance {
function getContractBalance() public view returns(uint){
return address(this).balance;
}

fallback() external payable {
// Handle incoming ether in the fallback function
}

receive() external payable {
// Handle incoming ether in the receive function
}
}

[Reference]

  1. Solidity 教學: 函式 Function, KryptoCamp - 智能合約教學與區塊鏈工程師課程
    尋大神腳印, 亦步亦趨。
    留言0
    查看全部
    發表第一個留言支持創作者!
    3.2 荷蘭拍
    閱讀時間約 1 分鐘
    1.18 Todo List
    閱讀時間約 5 分鐘
    KOL to follow
    閱讀時間約 1 分鐘
    4.3 [實作] 猜數字合約
    閱讀時間約 8 分鐘
    If I learn code again
    閱讀時間約 1 分鐘