2024-05-06|閱讀時間 ‧ 約 23 分鐘

1.16 Returns, Visibility, State Mutability, Fallback

    練習題 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 - 智能合約教學與區塊鏈工程師課程
    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.