Bài học 1

去中心化投票繫統和Remix IDE

歡迎來到本次《構建去中心化投票繫統》課程第一章的學習。在本章中,我們將學習去中心化投票的概念,併了解它爲投票過程帶來的好處。我們還將介紹Remix IDE,這是一個用於開髮和部署以太坊智能合約的強大工具。

去中心化投票繫統

去中心化投票繫統是指在區塊鏈上運行的投票繫統,其核心理念是利用區塊鏈技術提供的透明度、安全性和不可篡改性,構建一個難以操縱且易於驗證的投票繫統。

在去中心化投票繫統中,每一次投票都是區塊鏈上的一筆交易,對所有參與者可見,但隻有投票人在投票結束前才能修改。投票結束後,該投票將被記録在區塊鏈上,不可更改,從而形成一個透明、防篡改的投票機製。

Remix IDE介紹

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

您可以通過https://remix.ethereum.org來使用Remix IDE。打開Remix後,您會看到三個麵闆:

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

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

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

編寫您的第一份智能合約

我們將首先編寫一個簡單的“Voter(投票人)”合約。這份合約將跟蹤繫統中的投票人。

在Remix IDE中,進入“File Explorer(文件資源管理器)”併單擊“+”圖標,創建一個新文件,將其命名爲Voter.sol

接下來,我們將開始編寫合約:

Solidity
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract Voter {
    // A struct to represent a person
    struct Person {
        bool voted;  // if true, that person already voted
        uint vote;   // index of the voted proposal
    }

    // A mapping to keep track of all voters
    mapping(address => Person) public voters;

    // A function to register a voter
    function registerVoter() public {
        voters[msg.sender].voted = false;
    }
}
  1. SPDX許可證標識符:// SPDX-License-Identifier: GPL-3.0命令行錶示合約使用GNU通用公共許可證v3.0。GNU通用公共許可證v3.0是一個常用的自由軟件許可證,保證最終用戶可以自由運行、學習、共享和修改軟件。

  2. Pragma指令:pragma solidity >=0.7.0 &lt;0.9.0;語句錶明合約使用的Solidity版本大於或等於0.7.0且小於0.9.0。該指令可以防止合約使用較新的、不兼容的編譯器版本進行編譯。

  3. 合約定義:contract Voter {...}定義了一個名爲Voter的新合約。我們將在這裡指定合約狀態變量和函數。

  4. 結構定義:在合約中,我們定義了一個結構Person,代錶投票繫統中的一個人。每個Person 都有一個錶示他們是否已投票(voted)的布爾值,以及一個vote整數,錶示他們投票支持的提案數。

  5. 狀態變量:mapping(address => Person) public voters;語句聲明了一個狀態變量voters,它在以太坊地址和Person結構之間創建了一個鏈接。這將允許我們跟蹤繫統中有資格投票的人員以及他們的投票情況。public關鍵字自動爲voters創建一個getter函數。

  6. 函數定義:function registerVoter() public {...}定義了一個公共函數,允許用戶將自己註冊爲繫統中的投票人(voter)。voters[msg.sender].voted = false;語句將新投票人的投票狀態設置爲false(“假”)。
    至此,我們的合約已經介紹完畢!在後麵的課程中,我們將對合約進行擴展,爲投票過程添加更多函數。請務必定期編譯併測試合約代碼,確保一切都按預期運行。在Remix IDE中,您可以通過單擊左側邊欄(從頂部數第三個)上的Solidity編譯器圖標,然後單擊“Compile”按鈕來編譯合約。

在下一章中,我們將學習如何允許已註冊投票人進行投票併實現投票繫統的邏輯。現在,您可以運行自己的合約,併熟悉Remix環境。您已經邁出了進入智能合約開髮領域的第一步!

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 IDE

歡迎來到本次《構建去中心化投票繫統》課程第一章的學習。在本章中,我們將學習去中心化投票的概念,併了解它爲投票過程帶來的好處。我們還將介紹Remix IDE,這是一個用於開髮和部署以太坊智能合約的強大工具。

去中心化投票繫統

去中心化投票繫統是指在區塊鏈上運行的投票繫統,其核心理念是利用區塊鏈技術提供的透明度、安全性和不可篡改性,構建一個難以操縱且易於驗證的投票繫統。

在去中心化投票繫統中,每一次投票都是區塊鏈上的一筆交易,對所有參與者可見,但隻有投票人在投票結束前才能修改。投票結束後,該投票將被記録在區塊鏈上,不可更改,從而形成一個透明、防篡改的投票機製。

Remix IDE介紹

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

您可以通過https://remix.ethereum.org來使用Remix IDE。打開Remix後,您會看到三個麵闆:

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

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

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

編寫您的第一份智能合約

我們將首先編寫一個簡單的“Voter(投票人)”合約。這份合約將跟蹤繫統中的投票人。

在Remix IDE中,進入“File Explorer(文件資源管理器)”併單擊“+”圖標,創建一個新文件,將其命名爲Voter.sol

接下來,我們將開始編寫合約:

Solidity
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract Voter {
    // A struct to represent a person
    struct Person {
        bool voted;  // if true, that person already voted
        uint vote;   // index of the voted proposal
    }

    // A mapping to keep track of all voters
    mapping(address => Person) public voters;

    // A function to register a voter
    function registerVoter() public {
        voters[msg.sender].voted = false;
    }
}
  1. SPDX許可證標識符:// SPDX-License-Identifier: GPL-3.0命令行錶示合約使用GNU通用公共許可證v3.0。GNU通用公共許可證v3.0是一個常用的自由軟件許可證,保證最終用戶可以自由運行、學習、共享和修改軟件。

  2. Pragma指令:pragma solidity >=0.7.0 &lt;0.9.0;語句錶明合約使用的Solidity版本大於或等於0.7.0且小於0.9.0。該指令可以防止合約使用較新的、不兼容的編譯器版本進行編譯。

  3. 合約定義:contract Voter {...}定義了一個名爲Voter的新合約。我們將在這裡指定合約狀態變量和函數。

  4. 結構定義:在合約中,我們定義了一個結構Person,代錶投票繫統中的一個人。每個Person 都有一個錶示他們是否已投票(voted)的布爾值,以及一個vote整數,錶示他們投票支持的提案數。

  5. 狀態變量:mapping(address => Person) public voters;語句聲明了一個狀態變量voters,它在以太坊地址和Person結構之間創建了一個鏈接。這將允許我們跟蹤繫統中有資格投票的人員以及他們的投票情況。public關鍵字自動爲voters創建一個getter函數。

  6. 函數定義:function registerVoter() public {...}定義了一個公共函數,允許用戶將自己註冊爲繫統中的投票人(voter)。voters[msg.sender].voted = false;語句將新投票人的投票狀態設置爲false(“假”)。
    至此,我們的合約已經介紹完畢!在後麵的課程中,我們將對合約進行擴展,爲投票過程添加更多函數。請務必定期編譯併測試合約代碼,確保一切都按預期運行。在Remix IDE中,您可以通過單擊左側邊欄(從頂部數第三個)上的Solidity編譯器圖標,然後單擊“Compile”按鈕來編譯合約。

在下一章中,我們將學習如何允許已註冊投票人進行投票併實現投票繫統的邏輯。現在,您可以運行自己的合約,併熟悉Remix環境。您已經邁出了進入智能合約開髮領域的第一步!

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.
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.