• 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;
        }
    }
     

    1. // SPDX-License-Identifier: MIT
    2. //指定 Solidity 的版本号,表示该智能合约是用 Solidity 0.8.0 版本编写的
    3. pragma solidity ^0.8.0;
    4. //定义一个名为 NameContract 的合约
    5. contract NameContract {
    6. //定义一个私有变量 name,它的值是一个字符串类型。
    7. string private name;
    8. //定义一个 Solidity 函数,名为 setName,它是一个公共函数,可以被其他合约或外部账户调用。
    9. //该函数有一个参数 _name,类型为 string memory,表示要设置的名字。
    10. //memory 关键字表示该参数的值将被存储在内存中,而不是存储在合约的状态变量中。
    11. function setName(string memory _name) public {
    12. name = _name;
    13. }
    14. //定义一个 Solidity 函数,名为 getName,它是一个公共视图函数(view function),
    15. //该函数不会修改合约的状态变量,只读取合约的状态变量并返回结果。
    16. //该函数没有参数,返回值类型为 string memory,表示返回的名字。
    17. //函数体中的语句 return name; 表示返回合约的状态变量 name 的值作为函数的返回值。
    18. //因为这是一个视图函数,所以不需要使用 memory 或 storage 关键字来指定返回值的存储位置。
    19. function getName() public view returns (string memory) {
    20. return name;
    21. }
    22. }

    在remix中运行solidity代码 

     编译智能合约

     选择正确的solidity版本

     

    编译成功展示图 
     部署智能合约

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

     

    编译完成展示图 

     

     使用合约中的setName方法

            右侧是交易信息

     

    使用合约中的getName方法 

     后记

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

  • 相关阅读:
    mysql join语句优化实战
    Arduino安装全流程(包括ESP32离线包安装)
    Building a Robust Data Infrastructure for Cloud Computing Platforms
    业务脚本pytest封装
    Day40 代码随想录打卡|二叉树篇---完全二叉树的节点个数
    Java接口统一格式模板以及获取前一天时间固定时间方法(add和set区别)
    http 和 https 的区别?
    H3C-IRF堆叠-VRRP双机热备-IPSecvpan
    走进Spring Boot的世界
    1.2 基本分类
  • 原文地址:https://blog.csdn.net/m0_70819559/article/details/133857071