🔐 Solidity:从菜鸟到英雄 — 第 3 天

本文介绍了如何使用Solidity编写一个简单的智能合约,该合约能够在以太坊区块链上存储和检索数据。文章通过一个SimpleStorage合约的例子,讲解了状态变量的声明、setget函数的编写,以及如何在Remix IDE中部署和交互该合约。

🔐 Solidity:新手到英雄 — 第 3 天 | 编写你的第一个智能合约

嘿,区块建造者们 👷‍♀️,

欢迎来到我们 Solidity 之旅的第 3 天!昨天,我们使用 RemixHardhatMetaMask 设置了我们的开发环境,甚至编写了我们的第一个“Hello Web3”合约。今天,我们将更进一步:

👉 我们将编写我们的第一个真正的智能合约。

简单、干净且强大——一个在以太坊区块链上存储和检索数据的合约。

🧾 你今天将学到什么

  • 如何从头开始编写一个基本的 Solidity 智能合约
  • 声明状态变量
  • 编写简单的函数:setget
  • 在 Remix 中部署合约并与之交互

💡 让我们编写一个简单的存储合约

这是 Solidity 如何存储数据的最适合初学者的示例:

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

contract SimpleStorage {
    uint256 private storedData;
    uint8 private age;
    bytes32 private fullName;
    bytes32 private passport;
    address private wallet;

    function setUserKycData(uint8 _age, string memory _fullName, string memory _passport, address _wallet) public  {
        age = _age;
        fullName =  keccak256(abi.encodePacked(_fullName));
        passport =  keccak256(abi.encodePacked(_passport));
        wallet=_wallet;
    }

    function getUserKycData() view public returns (uint8, bytes32, bytes32, address){
        return (age,fullName, passport, wallet);
    }
}

🧠 分解

  • // SPDX-License-Identifier: MIT — 这只是告诉编译器此代码使用什么许可证的元数据。它不是合约逻辑的一部分。在这种情况下,它使用的是 MIT 许可证,它是开源且允许的。
  • pragma solidity ^0.8.0; — 这告诉编译器:“仅使用 Solidity 0.8.0 或更高版本(但低于 0.9.0)编译此代码。”
  • contract SimpleStorage { — 你正在定义一个名为 SimpleStorage 的新智能合约。
  • uint8 private age;uint8 是一个无符号 8 位整数(值从 0 到 255)。private 意味着它只能在此合约内部访问。此变量存储在链上 —— 在合约的持久存储中。
  • bytes32 private fullNameHash;

bytes32 private passportHash; — 这些存储用户全名和护照的哈希版本。为什么要哈希?为了节省 gas(将在后面的课程中添加更多详细信息)并保护敏感信息。这些也存储在区块链上。

  • address private wallet; — 存储用户的以太坊钱包地址。✅ 也保存在链上。
  • string memory _fullName — 该字符串存储在内存中,这意味着它是临时的。它不会直接存储在区块链上。它仅在此函数调用期间可用。该函数完成后它就会消失。
  • set() — 接收用户的年龄、全名、钱包、护照,并将其存储在链上。
  • get() — 返回存储的 kyc 数据。

是的,就是这么简单 —— 但这是 Web3 编程的基础

🛠️ 动手实践:在 Remix 上亲自尝试

  1. 转到 Remix IDE
  2. 创建一个新文件:Class3.sol
  3. 复制上面的代码
  4. 使用 0.8.0 或更高版本编译
  5. 使用“Deploy & Run”模块部署

  1. 尝试设置和获取值!

🚀 这教会了你什么

  • 智能合约永久保存状态/数据(除非明确更改)
  • 你可以从前端调用公共函数(我们很快就会这样做)
  • 每次更改都需要花费 gas —— 但读取是免费
  • 注意:此智能合约需要改进,因为它需要大量 gas,这很昂贵,但在即将到来的课程中会解决这个问题

📝 第 3 天作业

  • 在 Remix 上部署你自己的 SimpleStorage 版本
  • 修改它以存储字符串布尔值,甚至多个值

👀 明天即将到来 — 第 4 天

我们将深入研究 Solidity 变量、数据类型和函数 —— 所有智能合约的构建块。如果说今天主要讲的是什么,那么明天讲的就是如何以及为什么

在那之前 —— 继续编码,继续学习 💻✨

  • 原文链接: coinsbench.com/solidity-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
CoinsBench
CoinsBench
https://coinsbench.com/