第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環境。您已經邁出了進入智能合約開髮領域的第一步!

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。
目录
第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環境。您已經邁出了進入智能合約開髮領域的第一步!

免责声明
* 投资有风险,入市须谨慎。本课程不作为投资理财建议。
* 本课程由入驻Gate Learn的作者创作,观点仅代表作者本人,绝不代表Gate Learn赞同其观点或证实其描述。