区块链 - 智能合约入门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",则可以读取对应的数,如图:

参考:链接

相关推荐
旋生万物7 小时前
全息编码:从 CRC 到 Merkle Tree 到区块链的统一视角
区块链·#人工智能·#后端开发·#软件工程·#数据结构与算法·#云原生·#分布式系统
ZDGJ609911 小时前
国际期货交易中如何选择交易时机?
区块链
MuMuMu12232 天前
越华环保集团碳惠小屋:物联网 + 区块链,构建碳普惠终端数据可信与隐私保护体系
物联网·区块链
IvorySQL2 天前
PostgreSQL 日报| PgBouncer 修复三个 CVE 漏洞(10 月 15 日)
数据库·postgresql·区块链
十二同学啊3 天前
反洗钱体系详解:KYC、风险评级、交易监控与可疑交易报告
web3·区块链·智能合约
海宇大数据3 天前
零信任架构实战:基于海宇公安二要素认证即时版构建自动化证券账户实名鉴权网关
人工智能·架构·自动化·区块链
磐链科技3 天前
DApp技术架构全面解析:从区块链底层、前后端开发到链上数据交互体系设计
架构·区块链
ZDGJ60993 天前
国际期货交易时段流动性影响因素
区块链
IvorySQL4 天前
PostgreSQL 日报| pg_vectorsearch 开源向量搜索发布(10 月 14 日)
数据库·人工智能·postgresql·开源·区块链