以太坊作为全球领先的智能合约平台,其开发语法主要围绕 Solidity 语言展开,辅以其他工具和库(如 Web3.js、 ethers.js 等)与区块链进行交互,掌握以太坊开发语法,是构建去中心化应用(dApp)的核心技能,本文将带你深入了解以太坊开发中的关键语法要素。

Solidity:智能合约的编程语言

Solidity 是一种面向合约的高级编程语言,语法风格类似 JavaScript、C++ 和 Python,专为以太坊虚拟机(EVM)设计,其核心目标是实现智能合约的自执行代码。

基本语法结构

  • 文件后缀.sol

  • 版本指令:通常以 pragma solidity ^0.8.0; 开头,指定编译器版本,^ 表示兼容该版本及更高的小版本更新。

  • 合约结构

    pragma solidity ^0.8.0;
    contract HelloWorld {
        // 状态变量
        string public greeting = "Hello, Ethereum!";
        // 事件
        event GreetingChanged(string newGreeting);
        // 函数
        function setGreeting(string memory _newGreeting) public {
            greeting = _newGreeting;
            emit GreetingChanged(_newGreeting); // 触发事件
        }
        // 获取函数(view/pure 函数不修改状态,不消耗 gas)
        function getGreeting() public view returns (string memory) {
            return greeting;
        }
    }

数据类型

Solidity 支持多种数据类型,主要分为值类型和引用类型。

  • 值类型 (Value Types)

    • 布尔型 (bool)truefalse,支持 (逻辑非), && (逻辑与), (逻辑或), (等于), (不等于)。
    • 整数型 (Integers)
      • int / int256:有符号整数,范围从 -2²⁵⁵ 到 2²⁵⁵-1。
      • uint / uint256:无符号整数,范围从 0 到 2²⁵⁶-1。uintuint256 的别名。
      • 支持常见算术运算:, , , , (取模), (幂), << (左移), >> (右移), & (按与), (按或), ^ (按异或)。
    • 地址型 (Address)
      • address:存储一个 20 字节的以太坊地址。
      • address payable:继承自 address,增加了 transfer()send() 方法,可用于发送以太币。
    • 定长字节数组 (Fixed-size Byte Arrays)bytes1, bytes2, ..., bytes32,存储 1 到 32 字节的数据。
    • 枚举 (Enum):用户定义的类型,用于表示一组有限的常量值。enum Status { Pending, Active, Completed }
    • 函数类型 (Function Types):可以将函数作为参数传递或返回值。
  • 引用类型 (Reference Types)

    • 数组 (Arrays)
      • 固定大小数组uint256[5] fixedArray;
      • 动态大小数组配图