自学笔记Solidity基础知识点总览-持续更新
【自学笔记】Solidity基础知识点总览-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Solidity 基础知识点总览
1 Solidity 简介
Solidity 是一种用于编写智能合约的高级编程语言,专为以太坊虚拟机(EVM)设计。智能合约是自动执行和控制的计算机程序,它们在区块链上运行,无需中间人。
2 环境设置
- 安装 Node.js 和 npm(Node Package Manager)。
- 安装 Truffle 或 Hardhat 等开发框架。
- 配置以太坊测试网络(如 Ganache)或连接到真实的以太坊网络。
3 智能合约基础
3.1 合约结构
一个基本的 Solidity 智能合约通常包含以下几个部分:
pragma solidity ^版本号;
:指定 Solidity 编译器版本。contract 合约名 { ... }
:定义合约。- 状态变量(state variables):存储在区块链上的变量。
- 函数(functions):可执行的操作。
3.2 示例合约:简单的存储合约
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SimpleStorage { uint256 storedData; // 状态变量 // 读取存储的数据 function retrieve() public view returns (uint256) { return storedData; } // 存储数据 function store(uint256 x) public { storedData = x; } }
3.3 合约部署与交互
使用 Truffle 或 Hardhat 等框架可以方便地部署和与智能合约交互。以下是一个使用 Truffle 部署上述合约的简要步骤:
- 创建一个新的 Truffle 项目。
- 将上述合约代码保存到
contracts/SimpleStorage.sol
文件中。 - 编写迁移脚本(migrations)来部署合约。
- 使用
truffle compile
编译合约。 - 使用
truffle migrate
部署合约到测试网络。 - 使用
truffle console
或其他工具与合约交互。
4 Solidity 关键点
4.1 数据类型
- 值类型(Value Types):如
uint
,int
,address
,bool
等。 - 引用类型(Reference Types):如
mapping
,array
,struct
等。
4.2 函数修饰符
public
:函数可以从合约外部和内部调用。private
:函数只能从合约内部调用。external
:函数只能从合约外部调用。view
:表示函数不会修改区块链上的状态。pure
:表示函数既不读取也不修改区块链上的状态。payable
:允许函数接收以太币。
4.3 事件(Events)
事件是合约中用于记录日志的特殊函数,它们可以被区块链外部的应用程序监听。 event DataStored(uint256 indexed value); function storeWithEvent(uint256 x) public { storedData = x; emit DataStored(x); // 触发事件 }
4.4 错误处理(Errors)
Solidity 提供了自定义错误的功能,可以在合约中定义错误并在触发时抛出。 error InsufficientFunds(uint256 required, uint256 provided); function withdraw(uint256 amount) public { if (amount > msg.value) { revert InsufficientFunds({required: amount, provided: msg.value}); } // 处理提款逻辑 }
5 进阶概念
- 智能合约的安全性:了解常见的智能合约漏洞,如重入攻击、整数溢出等。
- 以太坊的gas机制:理解gas消耗和gas价格对交易费用的影响。 -ERC标准:如ERC-20(代币标准)、ERC-721(非同质化代币标准)等。
总结
提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,自学记录Solidity基础知识点总览。