欢迎光临
我们一直在努力

Solidity 智能合约入门:从 0 到 1 编写第一个区块链合约

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

一、什么是 Solidity?

Solidity 是一门面向以太坊虚拟机(EVM)、静态类型的高级编程语言,专门用于编写区块链上的智能合约。

简单来说:

  • 智能合约 = 运行在区块链上的自动执行代码(无需第三方,代码即规则)
  • Solidity = 编写智能合约最主流的语言(支持以太坊、BSC、Polygon 等公链)

它的语法和 JavaScript/Java 非常接近,新手极易上手,是 Web3 开发的核心技能之一。

二、开发前准备

无需复杂环境,直接用在线 IDE即可开始编写:推荐工具:Remix IDE(浏览器打开即用,零配置)

基础概念提前知:

  • 合约(Contract):Solidity 的核心单元,类似其他语言的「类」
  • 地址(Address):区块链上的账户 ID(类似银行卡号)
  • ETH:以太坊原生代币,合约中用wei作为最小单位(1 ETH = 10¹⁸ wei)
  • 状态变量:存储在区块链上的永久数据(不会丢失)
  • 三、第一个 Solidity 合约:极简存储合约

    我们从最基础的数据存储合约开始,实现「存数据 + 读数据」两个核心功能,完全贴合入门逻辑。

    完整代码(可直接复制到 Remix 运行)

    solidity

    // 1. 指定Solidity编译器版本(兼容0.8.0以上,含安全检查)
    pragma solidity ^0.8.0;

    // 2. 定义合约(类似JavaScript的class)
    contract SimpleStorage {
    // 状态变量:存储在区块链上的数字,初始值为0
    uint256 private _number;

    // 函数1:设置数字(外部调用,修改区块链数据)
    function setNumber(uint256 num) public {
    _number = num;
    }

    // 函数2:获取数字(外部调用,读取区块链数据)
    function getNumber() public view returns (uint256) {
    return _number;
    }
    }

    代码逐行解析

  • pragma solidity ^0.8.0;声明合约兼容的 Solidity 版本,^0.8.0表示支持 0.8.0 及以上版本,0.8 + 自带整数溢出安全检查,是入门首选版本。

  • contract SimpleStorage定义合约名称为SimpleStorage,所有代码都写在这个大括号内。

  • uint256 private _number;

    • uint256:256 位无符号整数(只能存非负数,区块链最常用数值类型)
    • private:私有变量,只能在合约内部访问(安全规范)
    • _number:状态变量,永久存储在区块链上,断电 / 重启都不会丢失。
  • setNumber函数

    • public:公开函数,外部账户 / 其他合约都能调用
    • 作用:修改区块链上的_number值(修改数据需要消耗 Gas 费)
  • getNumber函数

    • view:只读函数,不修改区块链数据,免费调用
    • returns (uint256):声明函数返回值类型
    • 作用:读取_number的值
  • 四、在 Remix 中运行合约

  • 打开Remix IDE,新建文件SimpleStorage.sol
  • 粘贴上面的代码,点击左侧「Solidity Compiler」编译合约
  • 点击左侧「Deploy & Run Transactions」,点击Deploy部署合约
  • 部署后在下方找到合约:
    • 输入数字,点击setNumber(写入数据)
    • 点击getNumber(读取数据)
  • ✅ 恭喜你!已经完成了第一个智能合约的部署与调用!

    五、进阶:带所有者的存储合约

    入门后我们加一个权限控制:只有合约部署者(所有者)才能修改数据,更贴近实际业务场景。

    solidity

    // 指定编译器版本
    pragma solidity ^0.8.0;

    contract OwnedStorage {
    // 状态变量
    uint256 private _number;
    // 存储合约所有者地址
    address private immutable _owner;

    // 构造函数:部署合约时自动执行1次
    constructor() {
    // 将部署者地址设为所有者
    _owner = msg.sender;
    }

    // 修饰器:权限检查(只有所有者能调用)
    modifier onlyOwner() {
    require(msg.sender == _owner, "Not owner!");
    // 执行被修饰的函数代码
    _;
    }

    // 只有所有者能设置数字
    function setNumber(uint256 num) public onlyOwner {
    _number = num;
    }

    // 任何人都能读取数字
    function getNumber() public view returns (uint256) {
    return _number;
    }

    // 获取所有者地址
    function getOwner() public view returns (address) {
    return _owner;
    }
    }

    新增核心知识点

  • address类型:区块链地址类型,存储账户 / 合约地址
  • msg.sender:当前调用函数的账户地址(内置全局变量)
  • constructor:构造函数,仅部署时执行一次,用于初始化
  • modifier:函数修饰器,封装通用逻辑(这里做权限检查)
  • require:条件判断,不满足则报错并回滚操作(安全保障)
  • 六、Solidity 入门核心关键词总结

    表格

    关键词作用是否消耗 Gas
    public 公开可调用 分情况
    view/pure 只读函数,不修改数据 免费
    private 私有变量 / 函数,仅内部访问 –
    constructor 部署时初始化,仅执行一次 部署时消耗
    require 条件校验,失败则回滚 –
    msg.sender 当前调用者地址(内置全局变量) –

    七、入门避坑指南

  • 修改区块链数据必收 Gas 费:所有public非只读函数,都会消耗 Gas
  • 状态变量永久存储:一旦写入区块链,无法删除(谨慎存储数据)
  • 权限一定要控制:核心操作必须加onlyOwner等权限校验,防止被恶意调用
  • 版本选 0.8.0+:低版本无溢出检查,容易出现安全漏洞
  • 八、下一步学习方向

  • 学习 Solidity 基础类型(字符串、数组、映射mapping)
  • 编写代币合约(ERC20 标准,区块链最常用合约)
  • 学习事件event、异常处理、合约继承
  • 了解区块链 Gas 优化、安全审计

  • 总结

  • Solidity 是编写 EVM 链智能合约的主流语言,语法贴近 JS,入门简单
  • 核心是状态变量(链上永久存储)和函数(读 / 写链上数据)
  • 入门先练「读写数据」,再学权限控制,逐步进阶
  • 用 Remix IDE 快速上手,无需配置本地环境
  • 这篇入门教程覆盖了 Solidity 最核心的基础逻辑,跟着代码实操一遍,就能快速掌握智能合约的编写思路啦!

    赞(0)
    未经允许不得转载:171主机测评 » Solidity 智能合约入门:从 0 到 1 编写第一个区块链合约
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址