区块链 - 智能合约入门solidity

目录

一、代码

二、解释

三、实战

1.打开网站

2.编译合约

3.部署合约

4.交互

这是ETH以太坊中智能合约版hello word。

一、代码

javascript 复制代码
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;

contract SimpleStorage {
    uint storedData;

    function set(uint x) public {
        storedData = x;
    }

    function get() public view returns (uint) {
        return storedData;
    }
}

二、解释

复制代码
// SPDX-License-Identifier: GPL-3.0

声明本合约使用 GPL-3.0 开源许可证,属于规范写法。

复制代码
pragma solidity >=0.4.16 <0.9.0;

指定编译器版本:使用 0.4.16 到 0.8.XX 的任何 Solidity 编译器都可以编译(不包括 0.9.0)。

复制代码
contract SimpleStorage {

定义一个名为 SimpleStorage 的合约,相当于其他语言里的"类"。

复制代码
    uint storedData;

声明一个状态变量 storedData,类型是 uint(即 uint256,无符号整数,0~2²⁵⁶-1)。

这个变量会被永久存储在区块链上,初始值是 0。

复制代码
    function set(uint x) public {
        storedData = x;
    }

定义一个公开的函数 set,接收一个 uint 类型的参数 x。

调用这个函数时,会把传入的 x 值赋值给状态变量 storedData,从而修改链上存储的数据。

每次调用都需要支付 gas,因为它修改了区块链状态。

复制代码
    function get() public view returns (uint) {
        return storedData;
    }

定义一个公开的只读函数 get,不带参数,返回一个 uint 类型的值。

view 关键字表示这个函数只读取数据,不会修改区块链状态。

它直接返回当前存储在链上的 storedData 值。总结(一句话功能)这个合约实现了区块链上最简单的"可读写变量":

  • 用 set(520) 可以把链上数字改成 520
  • 用 get() 可以读取当前链上存的数字是多少

三、实战

1.打开网站

打开Remix网站,然后如下:

2.编译合约

点击左边的编译按钮。

如果编译成功,会出现一个绿色的勾:

3.部署合约

如图,Environment 选 "Remix VM (Cancun)",点橙色的 【Deploy】 按钮 。

4.交互

部署完后,左侧往下拉,展开 就可以看到如图了。

先输入set右边的数字,然后点击"set";再点击"get",则可以读取对应的数,如图:

参考:链接

相关推荐
模型时代13 小时前
Infosecurity Europe欧洲信息安全展将推出网络安全初创企业专区
安全·web安全·区块链
devmoon13 小时前
智能合约实战 - 水龙头哪里领和创建第一个智能合约地址
web3·区块链·测试用例·智能合约·solidity
Mr.朱鹏13 小时前
预测-下一个互联网风口?【PolyMarket调研】
web3·区块链·互联网·预测·加密货币·polymartet·风口
MicroTech202513 小时前
微算法科技(NASDAQ :MLGO)抗量子攻击区块链共识机制:通过量子纠缠态优化节点验证流程,降低计算复杂度
科技·算法·区块链
财迅通Ai14 小时前
《2025年香港IPO及二级市场白皮书》发布:港股投资热情高涨 基石投资金额突破千亿
区块链
傻小胖14 小时前
20.ETH-难度调整-北大肖臻老师客堂笔记
笔记·区块链
草原猫14 小时前
Web3 生态构建:DAPP 开发的创新方向与落地路径
区块链·dapp开发
暴躁小师兄数据学院15 小时前
【WEB3.0零基础转行笔记】基础知识篇-第二讲:以太坊基础
笔记·web3·区块链
devmoon15 小时前
30秒一键连接Polkadot区块链网络和测试网
网络·web3·区块链·智能合约·polkadot
devmoon15 小时前
选择基于rust的以太坊虚拟机,还是基于RISC-V的虚拟机?一文了解他们的部署差异和部署机制
web3·区块链·智能合约·solidity·polkadot