IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> Solidity 工厂模式 -> 正文阅读

[区块链]Solidity 工厂模式

最近在看智能合约的工厂模式,工厂模式明白,但部署后的合约总是工厂中的方法,久久不明白是怎么回事,今天在学习课程时终于解决了这个问题。

首先来看一个工厂模式的例子,最近总是去做核酸,因此写一个防疫站点工厂吧。

1、一个防疫站点合约,里面记录站点信息与方法

2、一个防疫站点工厂合约,用于创建防疫站点或注销防疫站点方法(例子中暂时只有创建没有注销)

以下只是简单示例,没有过多校验与逻辑:?

备注:编写、编译、部署合约都是在Remix中完成。

// SPDX-License-Identifier:MIT
pragma solidity ^0.8.7;

//站点
contract Station {
    //站点名称
    string private name;
    //站点位置
    string addr;
    //站点人员数量
    uint16 count;

    //构造函数
    constructor(string memory _name, string memory _addr, uint16 _count) {
        name = _name;
        addr = _addr;
        count = _count;
    }

    function getStationInfo() public view returns (string memory, string memory, uint16) {
        return (name, addr, count);
    }
}

//站点工厂
contract StationFactory {
    //状态变量 - 存储所有已创建的站点
    address[] stations;

    // 创建站点工厂
    function createStation(string memory _name, string memory _addr, uint16 _count) external {
        Station station = new Station(_name, _addr, _count);
        stations.push(address(station));
    }

    //获取所有站点工厂
    function getStationAll() external view returns (address[] memory) {
        return stations;
    }
}

部署合约 - 选择StationFactory合约部署:

部署完成后,调用方法“createStation”增加一个防疫站点,然后调用方法“getStationAll”查看新增防疫站点的合约地址:

拷贝新增防疫站点的合约地址到At Address中查看合约:

我的问题来了,查看新合约地址内容,发现还是工厂中的方法,而没有出现防疫站点中的方法,久久思考这是为什么,一直没想明白,后来在老师的教程中发现需要选择防疫站点合约(因为默认是工厂合约,所以一直显示工厂合约中的方法)。

选择合约“Station”, 再点击“At Address”,终于出来梦寐已久的防疫站点合约了,查看下在工厂合约中增加的防疫站点,没错,就是它了。

当然我们可以通过工厂合约添加更多的防疫站点,每个防疫站点都有自己的合约地址,可以通过合约地址进行维护自己的防疫站点(当然也需要在防疫站点中增加一些方法进行维护,比较检测时间,检测结果等等)。?

完结。

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:57:58  更:2022-05-10 11:58:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:49:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码