Lição 3

在Vyper中創建和管理智能合約

通過本課程的學習,可爲使用Vyper進行區塊鏈編程打下了堅實的基礎,對以太坊、智能合約以及如何在Remix IDE中使用Vyper創建智能合約有了深入的了解,爲您打開了開髮去中心化應用和參與區塊鏈生態繫統的機會。

簡介

歡迎開啟第3課的學習!在本課中,我們將重點應用前一課中學到的概念和語法,使用Vyper和Remix IDE開髮以太坊智能合約。我們將創建、部署併使用簡單的智能合約,讓您掌握Vyper和以太坊的實操經驗。我們將介紹一個簡單的數據存儲合約併模擬一個基本的投票繫統。

SimpleStorage智能合約介紹

我們要部署的第一個合約是SimpleStorage。這個合約是一個簡單的數據存儲合約,用於存儲單個數字。SimpleStorage由一個變量storedData和兩個函數setget組成。set函數用於存儲數字,get函數用於檢索此數字。

部署併使用SimpleStorage合約

我們將分步介紹如何在以太坊區塊鏈上部署和使用SimpleStorage合約。將合約部署到以太坊區塊鏈是將合約的字節碼和ABI傳輸到以太坊網絡的過程,從那裡可以調用和執行合約。一旦合約部署完成,它將穫得一個獨特的地址,可以通過該地址進行訪問。

SimpleStorage的代碼如下:

Python
# @title SimpleStorage
storedData: int128

@external
def set(x: int128):
    self.storedData = x

@external
def get() -> int128:
    return self.storedData

在這個合約中,我們定義了一個公共整數變量storedData,一個用於設置storedData值的公共函數set(x: int128),以及一個用於檢索storedData當前值的公共常量函數get() -> int128

使用Remix部署此合約的詳細步驟如下:

  1. 打開網絡瀏覽器併進入Remix以太坊IDE

  2. 激活Vyper插件。

  3. Deploy & Run Transactions界麵將環境切換到Injected Web3,將Remix連接到您的MetaMask錢包。

  4. File Explorer界麵,單擊+圖標創建一個新文件,命名爲SimpleStorage.vy

  5. SimpleStorage合約代碼粘貼到新文件中。

  6. 轉到 VyperCompile選項卡併選擇SimpleStorage合約。

  7. 切換到Deploy & Run Transactions選項卡,單擊Deploy按鈕。

  8. MetaMask將打開一個交易確認彈窗。確認交易。

  9. 確認交易後,您可以在Deployed Contracts界麵看到部署好的SimpleStorage合約。

  10. 完成以上操作後,便可以使用該合約了。例如,要存儲一個數字,請在set函數中輸入該數字併點擊transact。要檢索存儲的數字,請單擊get

較覆雜的SimpleVoting合約

在了解SimpleStorage合約的編碼過程後,我們將進一步學習更覆雜的SimpleVoting合約的構建。SimpleVoting合約將模擬一個簡單的投票繫統。我們有一繫列候選人,每個候選人都以一個字符串錶示。用戶可以爲這些候選人投票,我們將跟蹤每個候選人穫得的票數。該合約將提供添加候選人、爲候選人投票以及穫取候選人穫得的總票數的函數。

部署併使用SimpleVoting

SimpleVoting合約比SimpleStorage稍微覆雜一些。在SimpleVoting中,我們將擁有多位候選人,每個候選人由一個字符串錶示。

SimpleVoting的代碼如下:

Python
# Vyper Voting Contract

# Declare a state variable `votes` as a HashMap to store the votes for each candidate.
votes: HashMap[bytes32, uint256]

@external
def vote(candidate: bytes32):
    """
    Cast a vote for a candidate.

    Arguments:
    candidate: bytes32 - The identifier of the candidate to vote for.
    """
    # Increment the vote count for the specified candidate.
    self.votes[candidate] += 1

@external
@view
def get_votes(candidate: bytes32) -> uint256:
    """
    Get the total number of votes for a candidate.

    Arguments:
    candidate: bytes32 - The identifier of the candidate to retrieve votes for.

    Returns:
    uint256 - The total number of votes the candidate has received.
    """
    return self.votes[candidate]

這份合約非常基礎,沒有對雙重投票或未經授權投票的預防措施。但在實際操作中,您需要包括一些措施(如選民登記和檢查)來防止這些問題,確保一個地址隻能投一次票。

結語

通過本課程的學習,您已經爲使用Vyper進行區塊鏈編程打下了堅實的基礎,對以太坊、智能合約以及如何在Remix IDE中使用Vyper創建智能合約有了深入的了解,爲您打開了開髮去中心化應用和參與區塊鏈生態繫統的機會。

要想進一步提高自己的理論知識和實操能力,您還可以思考以下領域:

  1. Solidity高級編程語言:Solidity是開髮以太坊智能合約的另一種廣泛使用的編程語言。學習Solidity將拓寬你處理現有合約的能力,併爲以太坊社區做出貢獻。點擊這裡查看我們的相關課程:[上線時請插入Solidity課程鏈接]

  2. 去中心化應用(DApp)開髮:通過使用Web3. js、React或Vue.js等框架將智能合約與前端開髮相結合,深入了解如何構建完整的去中心化應用,創建與智能合約交互的交互式用戶界麵。

  3. 安全與審計:探索保護智能合約和進行徹底代碼審計的最佳實踐。了解潛在漏洞併降低風險,確保您的智能合約足夠可靠和安全。

  4. 區塊鏈互操作性:研究不衕區塊鏈網絡和協議的集成。了解跨鏈通信和可與多個區塊鏈交互的互操作性智能合約的開髮。
    區塊鏈技術在不斷髮展,了解這一領域的最新動態非常重要。因此,一定要與區塊鏈社區互動,積極參與討論,探索新概念和技術,保持信息穫得的靈通和及時。

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.
Catálogo
Lição 3

在Vyper中創建和管理智能合約

通過本課程的學習,可爲使用Vyper進行區塊鏈編程打下了堅實的基礎,對以太坊、智能合約以及如何在Remix IDE中使用Vyper創建智能合約有了深入的了解,爲您打開了開髮去中心化應用和參與區塊鏈生態繫統的機會。

簡介

歡迎開啟第3課的學習!在本課中,我們將重點應用前一課中學到的概念和語法,使用Vyper和Remix IDE開髮以太坊智能合約。我們將創建、部署併使用簡單的智能合約,讓您掌握Vyper和以太坊的實操經驗。我們將介紹一個簡單的數據存儲合約併模擬一個基本的投票繫統。

SimpleStorage智能合約介紹

我們要部署的第一個合約是SimpleStorage。這個合約是一個簡單的數據存儲合約,用於存儲單個數字。SimpleStorage由一個變量storedData和兩個函數setget組成。set函數用於存儲數字,get函數用於檢索此數字。

部署併使用SimpleStorage合約

我們將分步介紹如何在以太坊區塊鏈上部署和使用SimpleStorage合約。將合約部署到以太坊區塊鏈是將合約的字節碼和ABI傳輸到以太坊網絡的過程,從那裡可以調用和執行合約。一旦合約部署完成,它將穫得一個獨特的地址,可以通過該地址進行訪問。

SimpleStorage的代碼如下:

Python
# @title SimpleStorage
storedData: int128

@external
def set(x: int128):
    self.storedData = x

@external
def get() -> int128:
    return self.storedData

在這個合約中,我們定義了一個公共整數變量storedData,一個用於設置storedData值的公共函數set(x: int128),以及一個用於檢索storedData當前值的公共常量函數get() -> int128

使用Remix部署此合約的詳細步驟如下:

  1. 打開網絡瀏覽器併進入Remix以太坊IDE

  2. 激活Vyper插件。

  3. Deploy & Run Transactions界麵將環境切換到Injected Web3,將Remix連接到您的MetaMask錢包。

  4. File Explorer界麵,單擊+圖標創建一個新文件,命名爲SimpleStorage.vy

  5. SimpleStorage合約代碼粘貼到新文件中。

  6. 轉到 VyperCompile選項卡併選擇SimpleStorage合約。

  7. 切換到Deploy & Run Transactions選項卡,單擊Deploy按鈕。

  8. MetaMask將打開一個交易確認彈窗。確認交易。

  9. 確認交易後,您可以在Deployed Contracts界麵看到部署好的SimpleStorage合約。

  10. 完成以上操作後,便可以使用該合約了。例如,要存儲一個數字,請在set函數中輸入該數字併點擊transact。要檢索存儲的數字,請單擊get

較覆雜的SimpleVoting合約

在了解SimpleStorage合約的編碼過程後,我們將進一步學習更覆雜的SimpleVoting合約的構建。SimpleVoting合約將模擬一個簡單的投票繫統。我們有一繫列候選人,每個候選人都以一個字符串錶示。用戶可以爲這些候選人投票,我們將跟蹤每個候選人穫得的票數。該合約將提供添加候選人、爲候選人投票以及穫取候選人穫得的總票數的函數。

部署併使用SimpleVoting

SimpleVoting合約比SimpleStorage稍微覆雜一些。在SimpleVoting中,我們將擁有多位候選人,每個候選人由一個字符串錶示。

SimpleVoting的代碼如下:

Python
# Vyper Voting Contract

# Declare a state variable `votes` as a HashMap to store the votes for each candidate.
votes: HashMap[bytes32, uint256]

@external
def vote(candidate: bytes32):
    """
    Cast a vote for a candidate.

    Arguments:
    candidate: bytes32 - The identifier of the candidate to vote for.
    """
    # Increment the vote count for the specified candidate.
    self.votes[candidate] += 1

@external
@view
def get_votes(candidate: bytes32) -> uint256:
    """
    Get the total number of votes for a candidate.

    Arguments:
    candidate: bytes32 - The identifier of the candidate to retrieve votes for.

    Returns:
    uint256 - The total number of votes the candidate has received.
    """
    return self.votes[candidate]

這份合約非常基礎,沒有對雙重投票或未經授權投票的預防措施。但在實際操作中,您需要包括一些措施(如選民登記和檢查)來防止這些問題,確保一個地址隻能投一次票。

結語

通過本課程的學習,您已經爲使用Vyper進行區塊鏈編程打下了堅實的基礎,對以太坊、智能合約以及如何在Remix IDE中使用Vyper創建智能合約有了深入的了解,爲您打開了開髮去中心化應用和參與區塊鏈生態繫統的機會。

要想進一步提高自己的理論知識和實操能力,您還可以思考以下領域:

  1. Solidity高級編程語言:Solidity是開髮以太坊智能合約的另一種廣泛使用的編程語言。學習Solidity將拓寬你處理現有合約的能力,併爲以太坊社區做出貢獻。點擊這裡查看我們的相關課程:[上線時請插入Solidity課程鏈接]

  2. 去中心化應用(DApp)開髮:通過使用Web3. js、React或Vue.js等框架將智能合約與前端開髮相結合,深入了解如何構建完整的去中心化應用,創建與智能合約交互的交互式用戶界麵。

  3. 安全與審計:探索保護智能合約和進行徹底代碼審計的最佳實踐。了解潛在漏洞併降低風險,確保您的智能合約足夠可靠和安全。

  4. 區塊鏈互操作性:研究不衕區塊鏈網絡和協議的集成。了解跨鏈通信和可與多個區塊鏈交互的互操作性智能合約的開髮。
    區塊鏈技術在不斷髮展,了解這一領域的最新動態非常重要。因此,一定要與區塊鏈社區互動,積極參與討論,探索新概念和技術,保持信息穫得的靈通和及時。

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.