2.DApp-编写和运行solidity智能合约

题记

演示如何编写solidity智能合约,以及在remix中运行solidity代码。

准备Remix环境

在浏览器中搜索remix,找到remix官网,并打开

由于是国内网络,所以访问国外网站较慢,可以耐心等待加载完成,或者科学上网。

加载完成是这样:

编写 app.sol文件

app.sol智能合约可以部署到以太坊网络上,然后通过调用 setName 函数来设置名字,再通过调用 getName 函数来获取名字。

// SPDX-License-Identifier: MIT

//指定 Solidity 的版本号,表示该智能合约是用 Solidity 0.8.0 版本编写的

pragma solidity ^0.8.0;

//定义一个名为 NameContract 的合约

contract NameContract {

//定义一个私有变量 name,它的值是一个字符串类型。

string private name;

//定义一个 Solidity 函数,名为 setName,它是一个公共函数,可以被其他合约或外部账户调用。

//该函数有一个参数 _name,类型为 string memory,表示要设置的名字。

//memory 关键字表示该参数的值将被存储在内存中,而不是存储在合约的状态变量中。

function setName(string memory _name) public {

name = _name;

}

//定义一个 Solidity 函数,名为 getName,它是一个公共视图函数(view function),

//该函数不会修改合约的状态变量,只读取合约的状态变量并返回结果。

//该函数没有参数,返回值类型为 string memory,表示返回的名字。

//函数体中的语句 return name; 表示返回合约的状态变量 name 的值作为函数的返回值。

//因为这是一个视图函数,所以不需要使用 memory 或 storage 关键字来指定返回值的存储位置。

function getName() public view returns (string memory) {

return name;

}

}

复制代码
// SPDX-License-Identifier: MIT
//指定 Solidity 的版本号,表示该智能合约是用 Solidity 0.8.0 版本编写的
pragma solidity ^0.8.0;

//定义一个名为 NameContract 的合约
contract NameContract {
    //定义一个私有变量 name,它的值是一个字符串类型。
    string private name;

    //定义一个 Solidity 函数,名为 setName,它是一个公共函数,可以被其他合约或外部账户调用。
    //该函数有一个参数 _name,类型为 string memory,表示要设置的名字。
    //memory 关键字表示该参数的值将被存储在内存中,而不是存储在合约的状态变量中。
    function setName(string memory _name) public {
        name = _name;
    }

    //定义一个 Solidity 函数,名为 getName,它是一个公共视图函数(view function),
    //该函数不会修改合约的状态变量,只读取合约的状态变量并返回结果。
    //该函数没有参数,返回值类型为 string memory,表示返回的名字。
    //函数体中的语句 return name; 表示返回合约的状态变量 name 的值作为函数的返回值。
    //因为这是一个视图函数,所以不需要使用 memory 或 storage 关键字来指定返回值的存储位置。
    function getName() public view returns (string memory) {
        return name;
    }
}

在remix中运行solidity代码

编译智能合约
选择正确的solidity版本
编译成功展示图
部署智能合约

选择运行智能合约的环境(remix虚拟环境,ganache,本地geth),再点击编译。

编译完成展示图
使用合约中的setName方法

右侧是交易信息

使用合约中的getName方法

后记

觉得有用可以点赞或收藏!

相关推荐
国科安芯3 分钟前
基于RISC-V架构的商业航天级MCU国产化技术路径与产业生态研究
网络·分布式·单片机·嵌入式硬件·架构·risc-v·安全性测试
掘金者阿豪4 分钟前
一个 DISTINCT,让我在上线前多盯了三天,最后发现数据库自己就能处理
后端
久菜盒子工作室9 分钟前
徕木股份经营分析
科技·学习
砍材农夫22 分钟前
物联网 基于netty核心实战-心跳保活机制
java·后端·物联网·struts·servlet·netty
小江的记录本27 分钟前
【JVM虚拟机】垃圾回收GC:垃圾判定算法:引用计数法、可达性分析算法(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·spring·面试
songyuc29 分钟前
Matplotlib&seaborn学习笔记
笔记·学习·matplotlib
彦楠30 分钟前
指定Tomcat运行的JDK地址
java·开发语言·tomcat
csbysj202031 分钟前
Rust 组织管理
开发语言
清水白石00836 分钟前
构建企业级 Python 服务:配置、日志、指标与追踪的稳健之道
开发语言·python·elasticsearch
lsx20240636 分钟前
特效(Effect)
开发语言