智能合约入门

发布: (2025年12月2日 GMT+8 21:09)
3 min read
原文: Dev.to

Source: Dev.to

Introduction

学习区块链概念可能具有挑战性,但理解智能合约并不一定如此。本指南介绍了智能合约的基础,并演示了一个用 Solidity 编写的简易“银行金库”合约。

Key Concepts

  • State machine – 区块链的工作方式类似于状态机(类似 Redux 或 Context API),用于跟踪和更新状态。
  • View – 只读操作,允许你查看当前状态,例如合约的余额。
  • State – 存储在区块链上的数据(例如余额、记录)。
  • Contract – 一段代码,规定了状态如何被读取或修改,类似于一套规则。
  • Public – 标记为 public 的函数或变量可以被网络上的任何人访问。
  • Remix – 用于编写、测试和部署 Solidity 合约的在线 IDE。
  • Returns – 指定函数的返回类型,通常用于 view 函数。

Example: Vault Contract

下面是一个最小化的 Solidity 合约,它充当一个简单的金库,用户可以存入和提取 Ether。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract Vault {
    uint public initialBalance;
    uint public balance;

    constructor(uint _balance) {
        initialBalance = _balance;
        balance = _balance;
    }

    function checkBalance() public view returns (uint) {
        return balance;
    }

    function deposit(uint amount) public {
        balance += amount;
    }

    function withdraw(uint amount) public {
        require(balance >= amount, "Not enough balance");
        balance -= amount;
    }
}

Contract Overview

  • State variables

    • initialBalance – 存储部署时设定的初始余额。
    • balance – 跟踪当前金库的余额。
  • Constructor
    在部署时使用传入的数值初始化 initialBalancebalance

  • Functions

    • checkBalance() – 一个 view 函数,返回当前余额。
    • deposit(uint amount) – 将 balance 增加指定的 amount
    • withdraw(uint amount) – 在通过 require 验证资金充足后,减少 balance

Important Details

  • 参数名前加下划线(例如 _balance)可以避免与状态变量同名产生冲突。
  • require 语句类似于 if 检查;如果条件不满足,交易将回滚并返回提供的错误信息。
  • 所有函数均标记为 public,因此任何外部账户都可以调用它们。

Conclusion

Vault 合约展示了 Solidity 的核心概念:状态变量、构造函数、view 函数、改变状态的函数以及基本的错误处理。通过在 Remix 中实验此示例,你可以为构建更复杂的智能合约奠定坚实的基础。

Back to Blog

相关文章

阅读更多 »

macOS 上的网络驱动器映射

打开 Finder 在 Mac 上打开 Finder 以启动此过程。 连接到服务器 在 Finder 顶部栏,点击 “前往 → 连接到服务器…” 或使用 …