第4課

使用修飾符提升代碼效率

在Solidity中,修飾符的功能非常強大。通過修飾符,我們可以在函數中嵌入預檢查,從而生成更易讀和高效的代碼。

引入修飾符

在本例中,我們將在Marketplace合約中實現一個修飾符。我們會定義一個onlySeller修飾符,它將驗證函數的調用者是否確實是商品的賣家。

以下是已更新併添加onlySeller修飾符的Marketplace合約:

Solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.6;

contract Marketplace {
    // Define a new structure for Items
    struct Item {
        string name;
        uint price;
        address payable seller;
        bool forSale;
    }

    // Array to hold all the items
    Item[] public items;

    // Modifier that checks if the caller is the seller of an item
    modifier onlySeller(uint _itemId) {
        require(msg.sender == items[_itemId].seller, "Only the owner can execute this");
        _;
    }

    // Function to remove an item from sale, updated with 'onlySeller' modifier
    function removeItemFromSale(uint _itemId) public onlySeller(_itemId) {
        items[_itemId].forSale = false;
    }

    // Function to update the price of an item, updated with 'onlySeller' modifier
    function updateItemPrice(uint _itemId, uint _newPrice) public onlySeller(_itemId) {
        items[_itemId].price = _newPrice;
    }
}

在引入了onlySeller修飾符後,removeItemFromSaleupdateItemPrice函數變得更加高效和易於理解。

部署併運行增強版合約

在增強了Marketplace合約後,請按照我們前麵所介紹的步驟進行編譯和部署。

合約部署完成後,您可以運行該合約。在經過我們以上改進措施後,我們的合約變得更加高效,更易於閲讀和維護。

祝賀!現在,您已經學會了如何在以太坊區塊鏈上創建、增強和使用基本的去中心化市場合約。至此,我們的《Solidity和智能合約開髮》入門課程便結束了。在未來的探索中,希望您能繼續實踐、學習併構建智能合約!

結語

恭喜大家完成了使用Solidity開髮智能合約的入門課程的學習。在整個課程中,我們探索了使用Remix IDE在模擬的以太坊環境中創建、部署和使用智能合約的過程。

我們來回顧一下本課程的重點內容:

  • 第1課:介紹了以太坊、區塊鏈和智能合約的基礎知識,創建了我們的第一個簡單的智能合約Item.sol,該合約定義了一個可以購買或出售的單個商品。
  • 第2課:在最初的合約基礎上進行了擴展,創建了Marketplace.sol合約,實現了創建、上架和購買多個商品的功能。
  • 第3課:引入了從在售列錶中移除商品和更新商品價格的方法,爲市場添加了新功能。
  • 第4課:通過實現Solidity中的“修飾符”功能,提升了智能合約的可讀性和效率,併學習了簡化代碼併提升其安全性的技巧。
    通過本次課程,您不僅建立了堅實的Solidity和智能合約開髮基礎,還邁出了成爲區塊鏈開髮者的第一步。您學會了如何評估去中心化應用,併對區塊鏈技術的創新潛力有了初步了解。

未來,您可以選擇不衕的路徑繼續探索。您可以深入學習Solidity,了解更高級的功能和安全因素;也可以探索其他區塊鏈平颱,如Polkadot、Cardano或幣安智能鏈;或學習使用Web3.js或Ether.js進行dApp的前端開髮;亦或是在真實的以太坊網絡上部署自己的合約。

無論您選擇哪條道路,都請記住:實踐是最有效的學習方式。不要害怕嘗試、構建、打破併重建。您麵臨的每一個挑戰都是學習和成長的機會。

最後,再次感謝大家參與本次課程的學習,加入到這令人激動的區塊鏈開髮之旅中。區塊鏈革命才剛剛開始,像您這樣的開髮者正處於這場革命的最前沿。所以,請繼續學習,繼續構建,最重要的是,享受其中的樂趣!

祝編程愉快!

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。
目錄
第4課

使用修飾符提升代碼效率

在Solidity中,修飾符的功能非常強大。通過修飾符,我們可以在函數中嵌入預檢查,從而生成更易讀和高效的代碼。

引入修飾符

在本例中,我們將在Marketplace合約中實現一個修飾符。我們會定義一個onlySeller修飾符,它將驗證函數的調用者是否確實是商品的賣家。

以下是已更新併添加onlySeller修飾符的Marketplace合約:

Solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.6;

contract Marketplace {
    // Define a new structure for Items
    struct Item {
        string name;
        uint price;
        address payable seller;
        bool forSale;
    }

    // Array to hold all the items
    Item[] public items;

    // Modifier that checks if the caller is the seller of an item
    modifier onlySeller(uint _itemId) {
        require(msg.sender == items[_itemId].seller, "Only the owner can execute this");
        _;
    }

    // Function to remove an item from sale, updated with 'onlySeller' modifier
    function removeItemFromSale(uint _itemId) public onlySeller(_itemId) {
        items[_itemId].forSale = false;
    }

    // Function to update the price of an item, updated with 'onlySeller' modifier
    function updateItemPrice(uint _itemId, uint _newPrice) public onlySeller(_itemId) {
        items[_itemId].price = _newPrice;
    }
}

在引入了onlySeller修飾符後,removeItemFromSaleupdateItemPrice函數變得更加高效和易於理解。

部署併運行增強版合約

在增強了Marketplace合約後,請按照我們前麵所介紹的步驟進行編譯和部署。

合約部署完成後,您可以運行該合約。在經過我們以上改進措施後,我們的合約變得更加高效,更易於閲讀和維護。

祝賀!現在,您已經學會了如何在以太坊區塊鏈上創建、增強和使用基本的去中心化市場合約。至此,我們的《Solidity和智能合約開髮》入門課程便結束了。在未來的探索中,希望您能繼續實踐、學習併構建智能合約!

結語

恭喜大家完成了使用Solidity開髮智能合約的入門課程的學習。在整個課程中,我們探索了使用Remix IDE在模擬的以太坊環境中創建、部署和使用智能合約的過程。

我們來回顧一下本課程的重點內容:

  • 第1課:介紹了以太坊、區塊鏈和智能合約的基礎知識,創建了我們的第一個簡單的智能合約Item.sol,該合約定義了一個可以購買或出售的單個商品。
  • 第2課:在最初的合約基礎上進行了擴展,創建了Marketplace.sol合約,實現了創建、上架和購買多個商品的功能。
  • 第3課:引入了從在售列錶中移除商品和更新商品價格的方法,爲市場添加了新功能。
  • 第4課:通過實現Solidity中的“修飾符”功能,提升了智能合約的可讀性和效率,併學習了簡化代碼併提升其安全性的技巧。
    通過本次課程,您不僅建立了堅實的Solidity和智能合約開髮基礎,還邁出了成爲區塊鏈開髮者的第一步。您學會了如何評估去中心化應用,併對區塊鏈技術的創新潛力有了初步了解。

未來,您可以選擇不衕的路徑繼續探索。您可以深入學習Solidity,了解更高級的功能和安全因素;也可以探索其他區塊鏈平颱,如Polkadot、Cardano或幣安智能鏈;或學習使用Web3.js或Ether.js進行dApp的前端開髮;亦或是在真實的以太坊網絡上部署自己的合約。

無論您選擇哪條道路,都請記住:實踐是最有效的學習方式。不要害怕嘗試、構建、打破併重建。您麵臨的每一個挑戰都是學習和成長的機會。

最後,再次感謝大家參與本次課程的學習,加入到這令人激動的區塊鏈開髮之旅中。區塊鏈革命才剛剛開始,像您這樣的開髮者正處於這場革命的最前沿。所以,請繼續學習,繼續構建,最重要的是,享受其中的樂趣!

祝編程愉快!

免責聲明
* 投資有風險,入市須謹慎。本課程不作為投資理財建議。
* 本課程由入駐Gate Learn的作者創作,觀點僅代表作者本人,絕不代表Gate Learn讚同其觀點或證實其描述。