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

上文 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.hqwc.cn/news/9653.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot--超时熔断器

需求背景 如果一个服务中有很多涉及需要服务间熔断的地方,就会出现N多下述代码: 1.N个fegnClient接口 FeignClient(name "hello-world-service", fallback HelloWorldFallback.class) public interface HelloWorldService {GetMapping(&q…

HDLBits刷题笔记9:Circuits.Sequential Logic.Counters + Shift Registers

Counters Four-bit binary counter module top_module (input clk,input reset, // Synchronous active-high resetoutput reg [3:0] q);always (posedge clk) beginif(reset)q < 0;elseq < q 1;end endmoduleDecade counter 建立一个计数器&#xff0c;从0计数…

【深度学习】深度强化学习初学者指南

一、说明 GAN&#xff08;Generative Adversarial Networks&#xff09;是一种深度学习模型&#xff0c;它由两个神经网络组成&#xff1a;一个生成网络和一个判别网络。生成网络学习如何生成类似于给定数据集的新数据&#xff0c;而判别网络则学习如何区分生成网络生成的数据和…

vscode 插件系统的运行机制!

做vscode二次开发有一段时间了&#xff0c;平时都是任务比较重&#xff0c;最近有时间做下总结&#xff0c;详细的讲解下vscode 插件系统的运行机制&#xff0c;vscode做为最受欢迎的编辑器&#xff0c;有着庞大的插件市场。其插件系统确实很复杂&#xff0c;文章很长&#xff…

Maven基础概念

仓库 作用&#xff1a;用于存储资源&#xff0c;包含各种jar包 仓库分类 本地仓库远程仓库 2.1中央仓库 2.2私服&#xff08;用于解决下载速度慢&#xff0c;版权问题等&#xff09; 1.maven坐标 <groupId></groupId>当前MAVEN项目隶属组织名称 <artifactId…

nginx纳入skywalking调用链监控

nginx纳入skywalking调用链监控 一、说明二、nginx部署2.1 OpenResty介绍2.2 准备SkyWalking Nginx Agent2.3 docker方式部署OpenResty2.3.1 修改配置文件2.3.2 启动OpenResty容器 2.4 验证 一、说明 服务器中已部署好skywalking&#xff0c;并将tomcat纳入skywalking监控(tom…

Unity包体积优化实践

目录 简述优化前优化中assets目录资源ab包动态下发资源大小优化dll大小优化场景模型动态下载和加载优化assets目录后大小 lib目录优化目标架构裁剪代码优化代码和引用 其他优化项Shader优化Release模式编译选项 优化后 简述 在移动端App混合Unity开发的项目中&#xff0c;Unit…

MATLAB图像处理实现高光抑制

下面是的几个用MATLAB进行高光抑制的处理例子。 1. 基于最大值滤波的亮光抑制方法 原理是用某像素周围一定大小的邻域中的最大值减去该像素值&#xff0c;可达到亮光抑制的效果。在MATLAB中&#xff0c;可以使用mat2gray函数将图像归一化后&#xff0c;再使用imextendedmax函…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册10

随着科技的不断进步&#xff0c;机器人技术已经成为了一个重要的领域。在这个领域中&#xff0c;机械结构是机器人设计中至关重要的一部分&#xff0c;它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说&#xff0c;了解机械结构的基础知识&#xff0c;掌…

目标检测的评估指标

Precision(精确率/查准率)&#xff1a;是指在所有被预测为正的样本中&#xff0c;确实是正样本的占比。当Precision越大时&#xff0c;FP越小&#xff0c;此时将其他类别预测为本类别的个数也就越少&#xff0c;可以理解为预测出的正例纯度越高。Precision越高&#xff0c;误检…

ORA-01122 ORA-01200故障处理---惜分飞

由于某种原因客户的数据库启动报ORA-01122 ORA-01200错误 让客户把system01.dbf文件发给我进行分析,发现system01.dbf文件大于32G(在8k的blocksize库中,默认情况system01.dbf文件不会超过32G),这个明显异常 检测坏块情况发现4096000之后的block全部为全0块 通过bbed分析文…

uniapp-设置全屏

需求&#xff1a;就是想要小程序不受限制&#xff0c;可以把图片或者文字全屏的展示&#xff0c;如下图 vue代码如下&#xff1a; <template><view class"content"><image class"image-bg" src"/static/logo.png" /><imag…