• 一、基本remix环境及HelloWord contract《2022 solidity8.+ 版本教程到实战》


    这个系列是 solidity8.+版本的教程,既然学习了 solidity 就应该明白智能合约是啥,在此系列文章中将不赘述基础概念,只讲解对应的语法,希望读者理解。

    环境

    solidity 版本:8.+(2022年9月8日 最新版本)
    IDE:https://remix.ethereum.org/(在线IDE)

    一、solidity IDE界面介绍

    以下图片时 solidity 智能合约开发的在线 IDE remix:
    在这里插入图片描述

    点击 greate 可以创建自己的一个工程,并且默认自带了 contracts、scripts以及tests 目录:
    在这里插入图片描述
    此时我们可以点击对应的按钮新建文件夹或者新建一个文件:
    在这里插入图片描述

    读者可尝试用鼠标悬停与按钮之上查看对应的信息,在此我点击tests目录下,在tests目录下创建一个01_test.sol 文件,sol 后缀表示 solidity 文件:
    在这里插入图片描述
    在这里插入图片描述
    创建完毕后可在右侧自动打开的 sol 文件中进行代码编写。

    二、代码编写

    协议

    在代码编写的第一行一般是协议说明,在此咱们使用其他 sol 文件中的协议说明:

    // SPDX-License-Identifier: GPL-3.0
    
    • 1

    在这里使用的协议是 GPL-3.0,关于协议的声明是使用注释表示,想了解更多协议的直接搜索相关知识即可。

    版本

    接下来编写对应solidity 的版本号:

    pragma solidity >=0.7.0 <0.9.0;
    
    • 1

    pragma solidity 表示声明的版本号信息,在此说明版本信息是大于等于 0.7.+ 版本和小于 0.9.0 版本,又可直接指定版本信息:

    pragma solidity 0.8.16;
    
    • 1

    也可添加 ^ 表示此合约是在该版本之上:

    pragma solidity ^0.8.0;
    
    • 1
    合约

    接着是编写合约部分:

    contract Hello{
        
    }
    
    • 1
    • 2
    • 3

    其中 contract 表示定义一个合约,Hello 为合约名,其花括号包裹的内容为合约内容。接着我们在合约内部创建一个对应的 string 对象:

    string public say="Hello 1_bit";
    
    • 1

    此时 string 表示当前需要创建的变量类型,public 表示当前类型的作用范围,public 表示外部可见,其 say 是变量名称,之后的等于号表示赋值,则 剩下的 Hello 1_bit 表示其内容,用双引号标记。

    此时所有代码如下:

    // SPDX-License-Identifier: GPL-3.0
    pragma solidity ^0.8.0;
    contract Hello{
        string public say="Hello 1_bit";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、编译部署

    接着我们点击编译:
    在这里插入图片描述
    点击编译后,可以看到有版本号选择:
    在这里插入图片描述
    选择 sol 代码中所指定的对应版本信息进行编译,接着点击编译后将会出现 绿色√ 表示编译通过:
    在这里插入图片描述
    最后点击 Deploy 部署合约:
    在这里插入图片描述
    部署成功后将会看见成功部署的提示,并且在 Deployed Contracts 下会出现已成功部署的合约:
    在这里插入图片描述
    此时展开合约查看,可见 say 变量:
    在这里插入图片描述
    点击 say 变量后可查看对应的 say 存储中的内容:

    不过需要注意,在合约中字符串变量存储过多内容会影响 Gas 消耗。

    若在 contract 中删除 public :
    在这里插入图片描述
    部署合约后 say 将不可见。
    在这里插入图片描述

  • 相关阅读:
    京津冀协同发展:北京·光子1号金融算力中心——智能科技新高地
    orangepi 香橙派-实时时钟模块使用DS1307/DS3231/PCF8563
    JS EventListener
    【前端笔试】知识点总结2
    .Net Web API 006 Controller上传大文件
    研究发现,每天冲洗鼻腔,可减少新冠症状和死亡风险
    对Session运用的实战与原理剖析详解
    测试工程师需要具备哪些“技能”?
    【面试题】什么是事务,什么是脏读、不可重复读、幻读,以及MySQL的几种事务隔离级别的应对方法
    ESP8266--Arduino开发(搭建HTTP网络服务器)
  • 原文地址:https://blog.csdn.net/A757291228/article/details/126757891