Web3 处理智能合约部署到本地区块链,并在本地进行测试

news2024/11/25 8:13:23

上文 Web3 在Truffle项目中编写出自己的第一个solidity智能合约我们演示了 在Truffle环境下写一个智能合约并编译的功能
编译出的文件夹中的这个JSON就非常重要了 我们就可以通过 它这个ABI链接到需要的智能合约程序上去
在这里插入图片描述
但这也仅仅是编译完了 我们的智能合约还没有部署到我们的区块链上

然后 我们在根目录下的 migrations 目录下创建一个 1_contract.js 注意 这里的文件 一定要以数字开头
在这里插入图片描述
就我们在这个目录创建文件时 就 1 什么什么 2 什么什么 3什么什么 以此类推 不然 我们在部署时 就会报错
因为 如果你不遵循它的规范 它找不到 它只认识以数字开头的

我们编写1_contract.js代码如下

const Contacts = artifacts.require("StudentStorage.sol")
module.exports = function(deployer) {
    deployer.deploy(Contacts)
}

这里 我们artifacts.require中的路径 你只需要写合约文件的名字 因为 他会自动帮你在contracts目录下去找
然后 我们这里 如果你有多个只能合约
那就

const 合约1名称 = artifacts.require("文件路径")
const 合约2名称 = artifacts.require("文件路径")
const 合约3名称 = artifacts.require("文件路径")
module.exports = function(deployer) {
    deployer.deploy(合约1名称)
    deployer.deploy(合约2名称)
    deployer.deploy(合约3名称)
}

这样就可以了

然后 我们在终端执行

truffle migrate

这个命令的话 是先编译 再执行 所以 其实 他也包含了之前我们用的truffle compile 的功能

执行之前 我们先通过 MetaMask 查看一下ganache环境中第一个用户的ETH
在这里插入图片描述
然后 我们执行命令

通过控制台 我们可以看到 这个确实是先编译 再部署
在这里插入图片描述
再回来看 MetaMask 我们第一个用户的数据确实是变化了
在这里插入图片描述
那么 我们web3调用肯定现在是做不了 但是 我们如果作为一个后端开发人员 我们开发一个程序 自己也肯定要测试啊

我们先在终端执行

truffle console

在这里插入图片描述
进入truffle控制台

然后 我们输入

const obj = await StudentStorage.deployed()

注意 StudentStorage是智能合约的名字 如果你的命名和我不一样 就要根据自己合约的名字去改
在这里插入图片描述
这个命令执行之后 我们就能拿到智能合约的一个对象了

执行完之后 我们在终端输入

obj

进行对象访问
在这里插入图片描述
可以看到 是一个非常大的对象

将来Web3 连接智能合约 拿到的一个对象 就是这样的
我们可以在终端通过 合约对象.address
例如我这里

obj.address

看到他在链上的地址
在这里插入图片描述
那么 我们还是试试 调用我们的方法吧

终端输入

obj.setData(33,"小猫猫")

这里就输出了对应内容
在这里插入图片描述
这其实就是输出了 你这个数据上链 消耗的燃料等信息
存都存了
那么 我们获取一下吧

obj.getData()

我们的数据就回来了
在这里插入图片描述
通过年龄的返回 我们可以看到 uint 的处理相对特殊一点 但这个不用担心 之后我们用web3 还是能将他处理成正常的数值类型

那么 我们合约中有一个 name 和 age 我们能不能直接通过合约对象去拿呢?
显然拿不到
在这里插入图片描述
如果你想让他也能直接访问 那就还是public设置一下
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/718797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gma 2 教程(一)概述:2.GMA 安装

依赖环境 系统环境 【操作系统】:64位(amd64)Windows、Linux 【内存】:≥8 GBPython 环境 【Windows】:3.8.8~3.11 【Linux】:3.9~3.11 目前不支持MacOS和其他平台。建议安装Anaconda创建Python环境。Anac…

解决postman接口自动化测试中登录后401权限问题

大家在做接口自动化测试的时候,碰到有登录的系统应该都会遇到401权限的问题,下面我来说下如何解决这个问题。 首先需要了解问题的本质,是要解决什么?这样我们才好对症下药,报401是因为用户在登录的时候,服务…

亚马逊云科技让AI开发速度更快,门槛更低

过去只有大型科技公司、政府机构和大学才有能力和时间、金钱去部署生成式AI能力。近二十年来,云服务把计算的门槛降低了。亚马逊云科技全球产品副总裁Matt Wood博士表示:“我们希望在生成式AI上做同样的事,把技术提供到每个开发者和商业用户的…

kaggle免费服务器全攻略

1. kaggle服务器16G显卡一周40小时. 所以我们直接干一堆谷歌账号即可 2. 谷歌账号的注册: 我们需要FQcolab for windows可以做到. 然后我们注册好账号后.我们注册4个账号. 注册方法. 打开chrome 点最下面的添加按钮.然后一直下一步即可.无脑注册. 3. 为Chrome多账户添加单独的…

机器人制作开源方案 | 立式铣床模型

1. 功能说明 铣床主要是指用铣刀在工件上加工多种表面的机床,本文示例将通过程序控制模拟铣床的运动效果--模拟铣床进行加工时各个结构的运动方式。铣床的运动主要包括:主轴的旋转运动、立铣头的上下进给运动、工作台的前后左右进给运动。 2. 结构说明 该…

期权专业知识常用术语有哪些?虚值期权和实值期权怎么选择合理的执行价

【1】美式期权:每个交易日都可以行权的期权 【2】欧式期权:只有在到期日才可以执行的期权 【3】平值期权:内在价值为零或极小的期权,或行权价格等于或接近于标的物合约市场价格的期权。通常是指行权价格最接近标的合约市场价格的期…

JavaEE语法之第二章、多线程(初阶三)

目录 一、多线程带来的风险-线程安全 (重点) 1.1观察线程不安全 1.2线程安全的概念 1.3线程不安全的原因 1.3.1抢占式执行(进程的随机调度) 1.3.2多个线程修改同一个变量 1.3.3内存的可见性 1.3.4原子性 1.3.5指令重排序 二、解决之前的线程不…

Spring Boot 中的 @Query 注解是什么,原理,如何使用

Spring Boot 中的 Query 注解是什么,原理,如何使用 在 Spring Boot 中,Query 注解是一个非常常用的注解,用于定义自定义查询语句。本文将介绍 Query 注解的作用、原理和使用方法。 1. Query 注解的作用 在 Spring Boot 中&#…

【论文精读】《Classifying User Activities in the Encrypted WeChat Traffic》

Classifying User Activities in the Encrypted WeChat Traffic Authors:Chengshang Hou,Junzheng Shi,Cuicui Kang,Zigang Cao,Xiong Gang Journal:2018 IEEE 37th International Performance Computing and Communications Conference (IPCCC) (2018) 摘要 加密移动应用程序…

【算法】从记忆化搜索到递推——动态规划入门

文章目录 笔者说:我们为什么要学记忆化搜索?预备知识例题:198. 打家劫舍记忆化搜索 相关题目练习70. 爬楼梯记忆化搜索dp 746. 使用最小花费爬楼梯记忆化搜索dp 2466. 统计构造好字符串的方案数记忆化搜索dp 213. 打家劫舍 II记忆化搜索dp 笔…

unity + python socket通信,自定义数据包

unity和python相互之间通过socket通信来发送自定义数据包是一个利用unity构建场景和通过python来做数据处理的方式,能够有效的利用两种不同语言的优势。 我已经将对应的操作封装为对应的一个模块,SocketTools.cs,我们先来看一下具体的代码用…

7.3.2 【Linux】磁盘分区: gdisk/fdisk

MBR 分区表使用 fdisk 分区, GPT 分区表使用 gdisk 分区。 gdisk 通过lsblk或blkid先找到磁盘,再用parted /dev/xxx print来找出内部的分区表类型,之后采用gdisk或fdisk来操作系统。上表中可以发现 gdisk 会扫描 MBR 与 GPT 分区表&#xff…

【Arduino】超声波实验

4个端: Vcc : 5V电源Trig : 控制端(触发)Echo : 接收端(回声)Gnd : 接地端 相关参数 : 工作电流 : 15mA工作电压 : 5V工作频率 &am…

Linux常用命令——expr命令

在线Linux命令查询工具 expr 一款表达式计算工具 补充说明 expr命令是一款表达式计算工具,使用它完成表达式的求值操作。 expr的常用运算符: 加法运算:减法运算:-乘法运算:\*除法运算:/求摸&#xff0…

【Android】解决 build项目报错manifest merge fail XXX

报错图片: 解决方式: 找到 AndroidManifest.xml文件,找到找到文件的上一级,加上android:exported“true” 作用:Android:exported true 在Activity中该属性用来标示:当前Activity是否可以被另一个Application的组件启…

牛客网基础语法111~120题

牛客网基础语法111~120题😘😘😘 💫前言:今天是咱们第十一期刷牛客网上的题目。 💫目标:能使用数组来解决问题。 💫鸡汤:一张纸对折就能站立。先干为敬,大家随…

自定义MVC框架实现增删改查

目录 一、环境搭建 二、导入配置文夹 1.中央控制器xml 2.增删改配置文件 3.导入工具类 三、编写后端代码 1. 通用增删改查 2. BookDao类 3. book实现增删改查类 4. 分页助手类 四、编写前端代码 1. 数据显示主界面 2. 默认运行显示所有数据servlet 3. 新增、修改共用…

解决uni-app微信小程序底部输入框,键盘弹起时页面整体上移问题

存在问题 做了一个记录页面(类似单方聊天页),输入框在底部;当弹出键盘时,页面整体上移,页面头信息会消失不见 需要实现效果: 比如一个记录页面,需要在键盘弹出时: 底…

解析ASEMI代理海矽美快恢复二极管SFP6012A的性能与应用

编辑-Z 在电子元件领域,快恢复二极管是一种重要的半导体器件,它在电路中起到关键的保护和控制作用。今天,我们将重点介绍一款优秀的快恢复二极管——SFP6012A,深入探讨其性能特点和应用领域。 一、SFP6012A快恢复二极管的性能特点…

chatglm docker镜像,一键部署chatglm本地知识库

好久没有写文章了,今天有空,记录一下chatglm本地知识库的docker镜像制作过程。 核心程序是基于“闻达”开源项目,稍作改动。 制作镜像: docker tag chatglm:v1 ch1949/chatglm:latest docker push ch1949/chatglm:latest 使用 …