Bài học 1

去中心化市場與Remix集成開髮環境

在本課中,我們將首先學習去中心化市場的基本概念及其運作原理。緊接著,我們將熟悉Remix集成開髮環境,併編寫一個簡單的Solidity合約。

什麽是去中心化市場?

在傳統的電子商務市場(如亞馬遜和eBay)中,存在一個中央機構促進買賣雙方之間的交易。這個中央機構掌控著交易過程、維護産品列錶,併管理爭議解決。雖然這種中心化模式具有一些優勢,但也存在審查風險、高額費用和對信任的依賴等問題。

去中心化市場則利用區塊鏈技術實現無需中介的點對點交易。它消除了對信任的需要,因爲交易是透明的,併可以由區塊鏈上的所有參與者驗證。OpenBazaar和Origin Protocol便是典型的去中心化市場案例。

Remix集成開髮環境介紹

Remix集成開髮環境(IDE)是一款功能強大的開源工具,專爲開髮以太坊智能合約而設計。它可以直接在瀏覽器中運行,您無需在電腦上安裝任何軟件。

您可以通過訪問https://remix.ethereum.org來使用Remix IDE。在瀏覽器中打開Remix後,您會看到如下三個麵闆:

  1. 左側麵闆:您可以在此處創建、導入和管理您的Solidity文件。此外,您還可以使用各種插件來進行合約的編譯、測試、調試和部署等操作。

  2. 中間麵闆:這是代碼編輯器,用於編寫和編輯Solidity代碼。

  3. 右側麵闆:此麵闆提供了各種工具,用於編譯合約,在以太坊網絡(可以是真實的以太坊網絡,也可以是JavaScript VM模擬環境)上部署合約,以及運行您部署的合約。

編寫您的第一份Solidity合約Item

在本部分,我們將開始編寫我們的第一份Solidity合約。該合約將代錶我們市場中的一個基本商品(item)。

首先,在Remix中單擊左側麵闆頂部的第二個圖標(文件圖標)創建一個新文件。中間麵闆上將出現一個新對話框。輸入Item.sol作爲文件名,然後單擊“OK”。

創建好文件後,就可以開始編寫我們的合約了:

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

contract Item {
    // Define an event that will be fired when a new item is created
    event NewItem(uint itemId, string itemName, uint itemPrice);

    // Each Item has an id, a name and a price
    struct ItemStruct {
        string name;
        uint price;
    }

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

    // Function to create a new item
    function createItem(string memory _name, uint _price) public {
        items.push(ItemStruct(_name, _price));
        emit NewItem(items.length - 1, _name, _price);
    }
}

這份合約的各個部分都代錶什麽含義呢?下麵,我們將一步步進行探討:

  1. SPDX License Identifier:這是一種錶達合約許可證的標準方式。//SPDX-License-Identifier:MIT行錶示該合約使用寬鬆的MIT許可。

  2. Pragma指令:pragma solidity ^0.8.6;指明合約是使用Solidity 0.8.6版本編寫的。符號^錶示它也將兼容任何更新的版本,但不包括0.9.0版本。

  3. 合約定義:contract Item {...}定義了一個名爲Item的新合約。這是我們編寫合約的狀態變量和函數的地方。

  4. 事件定義:event NewItem(uint itemId, string itemName, uint itemPrice);定義了一個事件,每當創建新Item時,我們都可以髮出事件。事件是智能合約記録外部各方可以監聽的活動的一種方式。

  5. 結構定義:struct ItemStruct {...} 定義了一個新的數據類型ItemStruct,它錶示一個帶有名稱價格的商品。

  6. 狀態變量:ItemStruct[] public items;定義了一個狀態變量item,它保存了一個ItemStruct數組,public關鍵字會自動創建一個getter函數,允許任何人訪問商品列錶。

  7. 函數定義:function createItem(string memory _name, uint _price) public {...}定義了一個公共函數,任何人都可以調用它來創建一個新商品。該函數接收名稱和價格作爲參數,創建一個新的ItemStruct,將其添加到item數組中,併髮出一個NewItem事件。
    要編譯此合約,請轉到右側麵闆併單擊頂部的第三個圖標(Solidity徽標)。在這裡,您可以編譯合約。單擊“Compile”按鈕,如果所有信息都正確,您的合約將編譯成功。

此時,左側麵闆可能會彈出一個問題:

關於Swarm或IPFS的問題是關於Remix將用來存儲合約元數據的方法。

  1. IPFS:星際文件繫統(IPFS)是一種旨在創建永久和去中心化網絡的協議。它就像一個單一的BitTorrent Swarm,在一個Git存儲庫中交換對象。

  2. Swarm:Swarm是一個分布式存儲和內容分髮服務,是以太坊Web3堆棧的原生基礎層服務。它允許一組節點存儲和分髮數據。
    在編譯合約時,Solidity編譯器會生成一個包含應用程序二進製接口(ABI)和字節碼等信息的JSON文件,這是合約的元數據。將元數據存儲在去中心化存儲網絡上可確保其永久可用,還可用於驗證合約的源代碼。

如果您不打算在Etherscan或其他區塊鏈瀏覽器上驗證合約,而隻是出於學習目的,您可以在Swarm或IPFS中任選其一使用,或者直接忽略,併繼續下一步的學習。請記住,目前的重點是了解如何編寫、編譯和部署合約。

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 1

去中心化市場與Remix集成開髮環境

在本課中,我們將首先學習去中心化市場的基本概念及其運作原理。緊接著,我們將熟悉Remix集成開髮環境,併編寫一個簡單的Solidity合約。

什麽是去中心化市場?

在傳統的電子商務市場(如亞馬遜和eBay)中,存在一個中央機構促進買賣雙方之間的交易。這個中央機構掌控著交易過程、維護産品列錶,併管理爭議解決。雖然這種中心化模式具有一些優勢,但也存在審查風險、高額費用和對信任的依賴等問題。

去中心化市場則利用區塊鏈技術實現無需中介的點對點交易。它消除了對信任的需要,因爲交易是透明的,併可以由區塊鏈上的所有參與者驗證。OpenBazaar和Origin Protocol便是典型的去中心化市場案例。

Remix集成開髮環境介紹

Remix集成開髮環境(IDE)是一款功能強大的開源工具,專爲開髮以太坊智能合約而設計。它可以直接在瀏覽器中運行,您無需在電腦上安裝任何軟件。

您可以通過訪問https://remix.ethereum.org來使用Remix IDE。在瀏覽器中打開Remix後,您會看到如下三個麵闆:

  1. 左側麵闆:您可以在此處創建、導入和管理您的Solidity文件。此外,您還可以使用各種插件來進行合約的編譯、測試、調試和部署等操作。

  2. 中間麵闆:這是代碼編輯器,用於編寫和編輯Solidity代碼。

  3. 右側麵闆:此麵闆提供了各種工具,用於編譯合約,在以太坊網絡(可以是真實的以太坊網絡,也可以是JavaScript VM模擬環境)上部署合約,以及運行您部署的合約。

編寫您的第一份Solidity合約Item

在本部分,我們將開始編寫我們的第一份Solidity合約。該合約將代錶我們市場中的一個基本商品(item)。

首先,在Remix中單擊左側麵闆頂部的第二個圖標(文件圖標)創建一個新文件。中間麵闆上將出現一個新對話框。輸入Item.sol作爲文件名,然後單擊“OK”。

創建好文件後,就可以開始編寫我們的合約了:

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

contract Item {
    // Define an event that will be fired when a new item is created
    event NewItem(uint itemId, string itemName, uint itemPrice);

    // Each Item has an id, a name and a price
    struct ItemStruct {
        string name;
        uint price;
    }

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

    // Function to create a new item
    function createItem(string memory _name, uint _price) public {
        items.push(ItemStruct(_name, _price));
        emit NewItem(items.length - 1, _name, _price);
    }
}

這份合約的各個部分都代錶什麽含義呢?下麵,我們將一步步進行探討:

  1. SPDX License Identifier:這是一種錶達合約許可證的標準方式。//SPDX-License-Identifier:MIT行錶示該合約使用寬鬆的MIT許可。

  2. Pragma指令:pragma solidity ^0.8.6;指明合約是使用Solidity 0.8.6版本編寫的。符號^錶示它也將兼容任何更新的版本,但不包括0.9.0版本。

  3. 合約定義:contract Item {...}定義了一個名爲Item的新合約。這是我們編寫合約的狀態變量和函數的地方。

  4. 事件定義:event NewItem(uint itemId, string itemName, uint itemPrice);定義了一個事件,每當創建新Item時,我們都可以髮出事件。事件是智能合約記録外部各方可以監聽的活動的一種方式。

  5. 結構定義:struct ItemStruct {...} 定義了一個新的數據類型ItemStruct,它錶示一個帶有名稱價格的商品。

  6. 狀態變量:ItemStruct[] public items;定義了一個狀態變量item,它保存了一個ItemStruct數組,public關鍵字會自動創建一個getter函數,允許任何人訪問商品列錶。

  7. 函數定義:function createItem(string memory _name, uint _price) public {...}定義了一個公共函數,任何人都可以調用它來創建一個新商品。該函數接收名稱和價格作爲參數,創建一個新的ItemStruct,將其添加到item數組中,併髮出一個NewItem事件。
    要編譯此合約,請轉到右側麵闆併單擊頂部的第三個圖標(Solidity徽標)。在這裡,您可以編譯合約。單擊“Compile”按鈕,如果所有信息都正確,您的合約將編譯成功。

此時,左側麵闆可能會彈出一個問題:

關於Swarm或IPFS的問題是關於Remix將用來存儲合約元數據的方法。

  1. IPFS:星際文件繫統(IPFS)是一種旨在創建永久和去中心化網絡的協議。它就像一個單一的BitTorrent Swarm,在一個Git存儲庫中交換對象。

  2. Swarm:Swarm是一個分布式存儲和內容分髮服務,是以太坊Web3堆棧的原生基礎層服務。它允許一組節點存儲和分髮數據。
    在編譯合約時,Solidity編譯器會生成一個包含應用程序二進製接口(ABI)和字節碼等信息的JSON文件,這是合約的元數據。將元數據存儲在去中心化存儲網絡上可確保其永久可用,還可用於驗證合約的源代碼。

如果您不打算在Etherscan或其他區塊鏈瀏覽器上驗證合約,而隻是出於學習目的,您可以在Swarm或IPFS中任選其一使用,或者直接忽略,併繼續下一步的學習。請記住,目前的重點是了解如何編寫、編譯和部署合約。

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.