本文介绍了如何使用Solidity编写一个简单的智能合约,该合约能够在以太坊区块链上存储和检索数据。文章通过一个SimpleStorage
合约的例子,讲解了状态变量的声明、set
和get
函数的编写,以及如何在Remix IDE中部署和交互该合约。
嘿,区块建造者们 👷♀️,
欢迎来到我们 Solidity 之旅的第 3 天!昨天,我们使用 Remix、Hardhat 和 MetaMask 设置了我们的开发环境,甚至编写了我们的第一个“Hello Web3”合约。今天,我们将更进一步:
👉 我们将编写我们的第一个真正的智能合约。
简单、干净且强大——一个在以太坊区块链上存储和检索数据的合约。
set
和 get
这是 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);
}
}
SimpleStorage
的新智能合约。uint8
是一个无符号 8 位整数(值从 0 到 255)。private
意味着它只能在此合约内部访问。此变量存储在链上 —— 在合约的持久存储中。bytes32 private passportHash; — 这些存储用户全名和护照的哈希版本。为什么要哈希?为了节省 gas(将在后面的课程中添加更多详细信息)并保护敏感信息。这些也存储在区块链上。
set()
— 接收用户的年龄、全名、钱包、护照,并将其存储在链上。get()
— 返回存储的 kyc 数据。是的,就是这么简单 —— 但这是 Web3 编程的基础。
Class3.sol
SimpleStorage
版本我们将深入研究 Solidity 变量、数据类型和函数 —— 所有智能合约的构建块。如果说今天主要讲的是什么,那么明天讲的就是如何以及为什么。
在那之前 —— 继续编码,继续学习 💻✨
- 原文链接: coinsbench.com/solidity-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!