Solidity 智能合约入门:从 0 到 1 编写第一个区块链合约
一、什么是 SoliditySolidity 是一门面向以太坊虚拟机EVM、静态类型的高级编程语言专门用于编写区块链上的智能合约。简单来说智能合约 运行在区块链上的自动执行代码无需第三方代码即规则Solidity 编写智能合约最主流的语言支持以太坊、BSC、Polygon 等公链它的语法和 JavaScript/Java 非常接近新手极易上手是 Web3 开发的核心技能之一。二、开发前准备无需复杂环境直接用在线 IDE即可开始编写推荐工具Remix IDE浏览器打开即用零配置基础概念提前知合约ContractSolidity 的核心单元类似其他语言的「类」地址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;uint256256 位无符号整数只能存非负数区块链最常用数值类型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 入门核心关键词总结表格关键词作用是否消耗 Gaspublic公开可调用分情况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 最核心的基础逻辑跟着代码实操一遍就能快速掌握智能合约的编写思路啦
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2455758.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!