创建 solidity 编程语言的样例

This commit is contained in:
2025-09-28 07:37:34 -04:00
parent 173a99a626
commit 12fdf56539
4 changed files with 260 additions and 1 deletions

View File

@@ -0,0 +1,58 @@
---
title: Solidity 学习笔记
description: 记录Solidity智能合约开发的学习心得和基础知识
createTime: 2025/09/22 10:00:00
permalink: /programming/solidity/
---
# Solidity 学习笔记~(๑>◡<๑)
欢迎来到 Solidity 的奇妙世界!这里是祀梦记录 Solidity 智能合约开发学习心得的小天地哦~如果你对区块链和智能合约感兴趣的话,那真是太棒啦~让我们一起探索这个充满可能性的领域吧!(✧ω✧)
## Solidity 是什么呀? 🌟
Solidity 是一种为以太坊区块链开发智能合约的高级编程语言哦~它看起来有点像 JavaScript但却能让你创建可以在区块链上运行的程序呢想象一下你写的代码可以在一个去中心化的世界里永久存在是不是很神奇呀(≧∇≦)/
## 学习路径
学习 Solidity 就像探索一个新的魔法世界,让我们一步一步来解锁它的奥秘吧:
1. **区块链基础** - 了解区块链的基本概念和工作原理
2. **Solidity 语法** - 掌握 Solidity 的基本语法和编程结构
3. **智能合约开发** - 学习如何编写和部署简单的智能合约
4. **高级特性** - 探索继承、接口、库、事件等高级概念
5. **安全最佳实践** - 了解智能合约开发中的安全注意事项
6. **实战项目** - 通过实际项目巩固所学知识
## 笔记分类
### 基础入门
- Solidity 语言简介
- 开发环境搭建
- 基础语法和数据类型
- 控制流语句
### 合约开发
- 智能合约结构
- 函数和修饰器
- 状态变量和局部变量
- 事件和日志
### 高级特性
- 继承和多态
- 接口和抽象合约
- 库的使用
- 异常处理
## 学习资源推荐
- [Solidity 官方文档](https://docs.soliditylang.org/) - 最权威的学习资料哦~
- [以太坊开发者文档](https://ethereum.org/zh/developers/) - 了解以太坊生态系统
- [CryptoZombies](https://cryptozombies.io/) - 通过游戏化方式学习 Solidity超有趣的
## 写在最后~💖
学习 Solidity 可能会遇到一些挑战,但请记住,每一次遇到的问题都是成长的机会哦~不要害怕犯错,勇敢地去尝试和探索吧!我相信,通过不断地学习和实践,你一定能成为一名出色的智能合约开发者~加油呀!(๑•̀ㅂ•́)و✧

View File

@@ -0,0 +1,185 @@
---
title: Solidity 基础语法与数据类型
createTime: 2025/09/22 10:30:00
permalink: /programming/solidity/basic-syntax/
---
# Solidity 基础语法与数据类型~(≧∇≦)ノ
嗨~欢迎来到 Solidity 基础语法的学习时间!今天我们要一起探索 Solidity 这门神奇语言的基本结构和数据类型哦准备好了吗Let's go(๑>◡<)
## 智能合约的基本结构 🏗️
让我们先来看一个最简单的 Solidity 智能合约是什么样子的吧
```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract HelloWorld {
// 状态变量
string public greeting = "Hello, World!";
// 函数
function setGreeting(string memory _greeting) public {
greeting = _greeting;
}
function getGreeting() public view returns (string memory) {
return greeting;
}
}
```
是不是看起来有点像其他编程语言呀让我们来一点一点地了解它吧
## 版本声明和许可证 📜
Solidity 合约的最开始我们需要添加两行重要的声明
```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
```
- **许可证声明**告诉别人你的代码使用什么许可证可以自由使用吗
- **版本声明**指定合约使用的 Solidity 编译器版本`^0.8.0` 表示可以使用 0.8.0 及以上的版本哦
## 数据类型 🌈
Solidity 有很多有趣的数据类型让我们来认识一下它们吧
### 值类型
这些类型在赋值时会直接复制值哦
#### 布尔型 (Boolean)
```solidity
bool public isActive = true;
bool public isPaused = false;
```
布尔型只有两个值`true` `false`就像开关一样简单(˘˘)
#### 整型 (Integer)
```solidity
int public negativeNumber = -42;
uint public positiveNumber = 42;
// 你还可以指定位数哦~
uint8 public smallNumber = 255; // 0-255
uint256 public bigNumber = 1000000000000000000; // 这是 1 以太币的 wei 值哦~
```
整型分为有符号`int`和无符号`uint`两种可以存储正数和负数呢
#### 地址型 (Address)
```solidity
address public owner = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F;
// 可以转账的地址类型
address payable public recipient = payable(0x71C7656EC7ab88b098defB751B7401B5f6d8976F);
```
地址类型非常特别它用于存储以太坊账户的地址就像是账户的身份证号码一样`address payable` 还可以接收以太币转账呢
### 引用类型
这些类型在赋值时只会传递引用而不是复制整个值哦
#### 字符串 (String)
```solidity
string public message = "Hello, Solidity!";
string public name = "祀梦";
```
字符串用于存储文本数据就像你平时写的便签一样
#### 数组 (Array)
```solidity
// 固定大小的数组
uint[5] public fixedArray = [1, 2, 3, 4, 5];
// 动态大小的数组
uint[] public dynamicArray;
// 你还可以在函数中这样使用哦~
function addNumber(uint _number) public {
dynamicArray.push(_number);
}
```
数组就像是一个收纳盒可以按顺序存放多个相同类型的数据呢
#### 映射 (Mapping)
```solidity
// 映射:地址 => 余额
mapping(address => uint) public balances;
// 使用方式
function deposit() public payable {
balances[msg.sender] += msg.value;
}
```
映射是 Solidity 中非常强大的数据结构就像是一个魔法字典可以通过键快速找到对应的值
## 变量作用域 🔍
Solidity 变量有不同的作用域哦
### 状态变量
```solidity
contract MyContract {
// 状态变量:存储在区块链上的
uint public myStateVariable = 42;
}
```
状态变量是存储在区块链上的所有合约函数都可以访问它们就像是合约的公共记忆一样
### 局部变量
```solidity
function myFunction() public {
// 局部变量:只在函数内部可见
uint myLocalVariable = 100;
}
```
局部变量只在定义它们的函数内部可见函数执行结束后就会消失哦
### 全局变量
```solidity
function getSender() public view returns (address) {
// msg.sender 是一个全局变量,包含当前调用者的地址
return msg.sender;
}
```
全局变量是 Solidity 内置的特殊变量可以在任何地方使用它们提供了关于区块链和交易的重要信息呢
## 小练习 🏋️‍♀️
现在让我们来做一个小练习吧试着编写一个简单的计数器合约包含以下功能
1. 一个状态变量来存储计数值
2. 一个函数来增加计数
3. 一个函数来减少计数
4. 一个函数来获取当前计数值
你可以做到吗相信自己你一定可以的(̀ㅂ́)و
## 写在最后~💌
今天我们学习了 Solidity 的基础语法和数据类型这些都是构建智能合约的基石哦虽然一开始可能会觉得有点复杂但只要多练习你一定会越来越熟练的下节课我们将学习 Solidity 的函数和修饰器敬请期待吧
如果有任何问题欢迎随时提问哦让我们一起在区块链的世界里快乐地探索吧( 3 ̄)