Web3 智能合约通过数组方式存储更多学生数据

这篇具有很好参考价值的文章主要介绍了Web3 智能合约通过数组方式存储更多学生数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前的文章 Web3 在Truffle项目中编写出自己的第一个solidity智能合约带大家写了一个相对捡漏的智能合约
Web3 智能合约通过数组方式存储更多学生数据,web3,智能合约
这样 每次 我们set 后 都会将原来的数据覆盖掉了

那么 有些人可能会想 那我们弄个数组 将新的数据全部加到数组里不就行了吗?
这个想法其实就很不错 我们可以基于这个想法 对我们的智能合约进行改造

我们将 StudentStorage.sol 代码整个更改如下

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;

contract StudentStorage{
    //struct是一个结构体
    struct userData {
        uint id;
        string name;
        uint age;
    }
    //基于结构体创建一个动态数组
    userData[] public userList;
    
    function addtList(string memory name,uint age) public returns (uint) {
        uint cont = userList.length;
        uint index = cont+1;
        userList.push(userData(index,name,age));
        return userList.length;
    }

    function queryList() public view returns (userData[] memory) {
        return userList;
    }
}

我们先定义了一个struct结构体 其中 是一个对象 对象中有三个字段 数字类型id 字符串类型name 数字类型age
然后呢 我们定义了一个数组 userList 它的类型被限制为userData
就是 之后 你给他添加的每一个下标都必须是这个格式的 id name age 的一个对象
这里 我们定义了他是一个动态数组 就是没有限制它的长度
你也可以这样

下标类型[10] public 数组名称;

这样 他就成一个静态的里 固定为十条数据

然后 我们addtList 接收两个参数 字符串类型的name 和 数字类型的age
然后 我们 就还少一个id
那么 我们这里 做一个自增的逻辑 通过 数组.length 获取到我们userList的长度 然后 将它加一 作为index 传给userData
这样我们三个参数齐全了 就调用push 将数据插入到数组最后面
处理完之后 我们返回数组的长度
然后 我们的queryList只是单纯的把处理好的userList数组返回

然后 我们就可以来试试成功了 先终端执行

truffle migrate

将我们写的合约部署到区块链上

然后 我们在 项目根目录下创建一个文件夹 叫 scripts 下面创建一个test.js
参考内容如下

const Contacts = artifacts.require("StudentStorage.sol")

module.exports = async function(callback) {
    const studentStorage = await Contacts.deployed();
    await studentStorage.addtList("天山派掌门",11);
    await studentStorage.addtList("小猫猫",15);
    await studentStorage.addtList("大猫猫",25);
    const list = await studentStorage.queryList();
    console.log(list);
    callback()
}

我们导入了StudentStorage
这里 不用特意指定contracts
他会自动在contracts 帮你找这个文件
然后 我们Contacts.deployed 初始化这个合约的对象
然后 我们通过这个对象 调用了addtList 连续加了三条数据
然后 调用queryList获取这个数组
然后输出上去

然后 我们终端执行

truffle exec .\scripts\test.js

测试代码
Web3 智能合约通过数组方式存储更多学生数据,web3,智能合约
显然 我们的运行就成功了 数据都被加了进去

然后 我们最神奇的操作在这里
我们再次运行

truffle exec .\scripts\test.js

Web3 智能合约通过数组方式存储更多学生数据,web3,智能合约
他就变成六条了 因为 你第一次运行 他加了三条 第二次运行 他又加了三条

因为我们区块链本身也有存储能力 当然 我们智能合约每次执行操作 包括这个添加数据 他都会消耗燃料

然后 我们在 根目录下的scripts 下 的 test.js中添加一行代码

console.log(await studentStorage.userList(1))

Web3 智能合约通过数组方式存储更多学生数据,web3,智能合约
寻找id为 1 的数据
再次执行

truffle exec .\scripts\test.js

结果就被输出了
Web3 智能合约通过数组方式存储更多学生数据,web3,智能合约文章来源地址https://www.toymoban.com/news/detail-557691.html

到了这里,关于Web3 智能合约通过数组方式存储更多学生数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web3: 智能合约

    2024年01月09日
    浏览(43)
  • 智能合约及其web3共识机制

      目录 什么是共识? 什么是共识机制? 共识机制的目标 为什么需要共识机制? 如何评价一个共识机制的优劣: 共识机制分类 PoW( Proof of Work)工作量证明:多劳多得 PoS(Proof of Stake)股权证明算法:持有越多,获得越多 优点 缺点 如何配置web3 智能合约测试   我们所说的共识,是

    2024年01月17日
    浏览(41)
  • 为 Web3 项目撰写智能合约(Web3项目三实战之二)

    时间像是在我们身边悄然而过,而我们的 Web3项目实战 系列也来到了第三个 Web3 项目。若正在屏幕前浏览本篇文章的您,或是从 Web3项目一 开篇之作,一直跟随着我的步伐来到了本文,想必您对于 Web3 与 Web2 的区别,有了最为深刻的感触了! 当然咯,前提是您先前或者说是当

    2024年01月18日
    浏览(47)
  • 怎么在Web3中创建智能合约

    智能合约是在区块链上运行并在 web3 生态系统中启用去中心化应用程序 (dapps) 的自动执行协议。Web3 是指下一代互联网的术语,用户可以更好地控制自己的数据、身份和资产,并且可以在没有中介的情况下直接相互交互。 本篇文章将介绍如何使用 JavaScript 和 Solidity(最流行的

    2024年02月07日
    浏览(54)
  • 智能合约:Web3的商业合作新模式

    随着区块链技术的发展,智能合约在Web3时代崭露头角,成为商业合作中的全新模式。这一技术不仅重新定义了商业合作的方式,还为各行各业带来了更加高效、透明和安全的商务交往。本文将深入探讨智能合约在Web3时代的崭新商业合作模式,以及它对商业领域的深远影响。

    2024年01月22日
    浏览(46)
  • MetaMask与Web3中智能合约调用(2)

    智能合约交易区别于点对点交易,智能合约交易只需付费给矿工费用,也就是gas fee,是支付给矿工的手续费,当我们在以太坊区块链上进行转账时,矿工要把我们的交易打包并放上区块链,才能使交易完成,在这过程中会消耗区块链的运算资源,所以要支付费用 这个过程为

    2024年01月16日
    浏览(47)
  • Web3本地搭建truffle智能合约开发环境

    之前的几篇文章 我们是成功的操作了我们本地区块链的 那么 本文 我们就来说说智能合约 啊 不容易啊 扯了这么久 终于到这了 智能合约是部署在区块链上 不可逆的 一种去中心化的程序,他没有任何第三方公司来管理这个程序和数据 然后 还有就是怎么连接到区块链上的智能

    2024年02月12日
    浏览(41)
  • DAPP开发(一)——web3.0和智能合约

    web1.0~3.0,很多年前,互联网没有那么发达,刚出来的时候,仅仅只能在网上浏览观看信息,这就是1.0,后来出现了很多的软件,人们不仅可以浏览还可以发表自己的看法,手机app百花齐放,每个应用都有自己的数据库,存储数据,这就是2.0,现如今出现了3.0,去中心化的思想

    2024年02月05日
    浏览(43)
  • web3系列———2.以太坊与智能合约

    主流币: 中本聪设计的比特币大获成功后,各种区块链和其对应的加密货币层出不穷,其中不乏新技术的使用,不过大部分的模仿货币最后都销声匿迹了,最终存活并存有大量用户的被称作主流币。 BTC比特币 ETH以太坊 LTC莱特币 XRP瑞波币 USDT (代币) USDC (代币) BUSD (代币) …

    2024年04月24日
    浏览(38)
  • Web3 React项目Dapp获取智能合约对象

    上文Web3 整理React项目 导入Web3 并获取区块链信息中,我们在react搭建的dapp中简单拿到了我们区块链中的账号授权信息 那 我们继续 先终端运行 将ganache环境起起来 然后 我们运行 dapp 拿到授权列表 回到上文结束的一个状态 然后 我们发布一下自己的智能合约 在我们的项目终端

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包