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. 区块链互操作性:研究不同区块链网络和协议的集成。了解跨链通信和可与多个区块链交互的互操作性智能合约的开发。
    区块链技术在不断发展,了解这一领域的最新动态非常重要。因此,一定要与区块链社区互动,积极参与讨论,探索新概念和技术,保持信息获得的灵通和及时。

Isenção de responsabilidade
* O investimento em criptomoedas envolve grandes riscos. Prossiga com cautela. O curso não se destina a servir de orientação para investimentos.
* O curso foi criado pelo autor que entrou para o Gate Learn. As opiniões compartilhadas pelo autor não representam 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. 区块链互操作性:研究不同区块链网络和协议的集成。了解跨链通信和可与多个区块链交互的互操作性智能合约的开发。
    区块链技术在不断发展,了解这一领域的最新动态非常重要。因此,一定要与区块链社区互动,积极参与讨论,探索新概念和技术,保持信息获得的灵通和及时。

Isenção de responsabilidade
* O investimento em criptomoedas envolve grandes riscos. Prossiga com cautela. O curso não se destina a servir de orientação para investimentos.
* O curso foi criado pelo autor que entrou para o Gate Learn. As opiniões compartilhadas pelo autor não representam o 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.