当前位置: 首页 > news >正文

使用Truffle、Ganache、MetaMask、Vue+Web3完成的一个简单区块链项目

文章目录

    • 概要
    • 初始化Truffle项目
    • 创建编写合约
    • 编译合约
    • 配置Ganache
    • 修改truffle-config.js文件
    • 编写迁移文件
    • 部署合约
    • 使用Truffle 控制台
    • 使用MetaMask和Vue+Web3与链交互

概要

使用Truffle、Ganache、MetaMask、Vue+Web3完成的一个简单区块链项目。

初始化Truffle项目

安装好truffle,执行命令。

truffle init

完成后目录如下。
在这里插入图片描述
在这里插入图片描述

创建编写合约

在contracts目录下创建编写合约。

在这里插入图片描述
准备一个简单的合约。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract SimpleStorage {// 存储一个数字uint256 private storedNumber;// 设置数字function setNumber(uint256 _number) public {storedNumber = _number;}// 获取数字function getNumber() public view returns (uint256) {return storedNumber;}
}

编译合约

在项目目录执

truffle compile

执行成功会在build/contracts目录下生成一个json文件, JSON 文件中,abi 和 bytecode 是与合约交互的关键部分。
在这里插入图片描述

配置Ganache

在这里插入图片描述点击New WorkSPACE配置,主要配置本地和端口号,本地的话我没就使用默认的。

在这里插入图片描述
配置完成后启动就行,默认有十个账户,都有以太。

在这里插入图片描述

修改truffle-config.js文件

在这里插入图片描述
修改两个地方,一个网络和合约版本,网络要和gannche里的一样,合约版本要一致或兼容。

在这里插入图片描述
在这里插入图片描述

编写迁移文件

在migrations目录下编写一个js文件。

在这里插入图片描述

const SimpleStorage = artifacts.require("SimpleStorage");module.exports = function (deployer) {deployer.deploy(SimpleStorage);
}

迁移文件用于管理和自动化智能合约的部署过程。每当你需要将合约部署到区块链网络时,迁移文件会帮助你定义和执行这一过程。

部署合约

项目目录下执行命令

truffle migrate

部署完成后查看Ganache。
在这里插入图片描述在这里插入图片描述

使用Truffle 控制台

部署完成后项目目录下执行

truffle console
let instance = await SimpleStorage.deployed();
//
await instance.setNumber(42);
//
let number = await instance.getNumber();
//
console.log(number.toString());

验证合约。

使用MetaMask和Vue+Web3与链交互

创建Vue项目,安装web3。编写两个简单的页面,一个用于连接钱包,一个用于合约交互。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意需要编译好的合约json文件。

启动项目。

在游览器插件中安装MetaMask。

在这里插入图片描述
点击连接钱包,会弹出MetaMask。
选择导入钱包。输入Ganache中产生的助记词。
在这里插入图片描述连接到钱包。

在这里插入图片描述

点击登入。
在这里插入图片描述
输入数字。点击set。会弹出MetaMask。

在这里插入图片描述

点击确认交易。提示交易成功。
在这里插入图片描述
点击查询就可以查看到钢材输入的数字。

然后查看Ganache,看到块变化和交易信息。
在这里插入图片描述
在这里插入图片描述
至此,一个简单的区块链就实现了。

相关文章:

使用Truffle、Ganache、MetaMask、Vue+Web3完成的一个简单区块链项目

文章目录 概要初始化Truffle项目创建编写合约编译合约配置Ganache修改truffle-config.js文件编写迁移文件部署合约使用Truffle 控制台使用MetaMask和VueWeb3与链交互 概要 使用Truffle、Ganache、MetaMask、VueWeb3完成的一个简单区块链项目。 初始化Truffle项目 安装好truf…...

初出茅庐的小李博客之按键驱动库使用

驱动库介绍 源码地址:https://github.com/jiejieTop/ButtonDrive 使用只需3步,创建按键,按键事件与回调处理函数链接映射,周期检查按键,支持单双击、连按、长按;采用回调处理按键事件(自定义消…...

如何调试Linux内核?

通过创建一个最小的根文件系统,并使用QEMU和GDB进行调试。 1.准备工作环境 确保系统上安装了所有必要的工具和依赖项。 sudo apt-get update //更新一下软件包 sudo apt-get install build-essential git libncurses-dev bison flex libssl-dev qemu-system-x…...

ECharts组件封装教程:Vue3中的实践与探索

在日常的前端开发中,ECharts 作为一款强大且易用的图表库,被广泛应用于数据可视化场景。为了更好地在 Vue3 项目中复用 ECharts 功能,我们可以将其封装成一个组件。本文将带大家一步步实现 ECharts 的 Vue3 组件封装,并演示如何在父组件中调用和使用。 一、封装 ECharts 组…...

NAT 代理服务 内网穿透

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 NAT 技术背景二:🔥 NAT IP 转换过程三:🔥 NAPT四:🔥 代理服务器🦋 正向…...

CAN硬件协议详解

一、基本理论: 1、CAN的总线结构: CAN总线 网络结构 有 闭环和开环 两种形式;无论实际的网络多复杂,都离不开这两种基本结构。 闭环结构的CAN总线网络,总线的两端各并联一个120Ω的电阻,两…...

网络安全等级保护:网络安全等级保护基本技术

下面我们概括性探讨一下等级保护用到的一些技术,有关这些技术的每一个方面的每一个部分都可以是一部大块头,甚至一部大块头都无法介绍清楚,需要系列性的书籍去展开,所以这里也只能做到抛砖而已。期望起到抛砖引玉的作用&#xff0…...

信刻光盘安全隔离与信息交换系统让“数据摆渡”安全高效

随着数据传输、存储及信息技术的飞速发展,信息安全保护已成为重中之重。各安全领域对跨网数据交互的需求日益迫切,数据传输的安全可靠性成为不可忽视的关键。为满足业务需求并遵守保密规范,针对于涉及重要秘密信息,需做到安全的物…...

数据结构课程设计(java实现)---九宫格游戏,也称幻方

【问题描述】 九宫格,一款数字游戏,起源于河图洛书,与洛书是中国古代流传下来的两幅神秘图案,历来被认为是河洛文化的滥觞,中华文明的源头,被誉为"宇宙魔方"。九宫格游戏对人们的思维锻炼有着极大…...

[思考记录]AI时代下,悄然的改变

尝试用 xAI-Grok 去了解DS开源周的信息,有那么点被Grok的输出惊艳到。“请你以技术编辑的角色,重点参考官方文档,介绍DeepSeek开源周的内容,写一篇技术分享文章。”,得到的文字看起来很是舒服,内容靠谱、结…...

JAVA笔记【一】

现实 (抽象) 类 (创建) 对象 特点: 1.面向对象 2.跨平台 3.安全性 4.多线程 java程序基本结构 1. java源代码文件实际是普通的文本文件,源代码文件必须是.java扩展名,且必须小写 2. …...

[Java基础] 常用注解

文章目录 1. 元注解2. 非元注解2.1 常用JDK自带注解2.2 常用Spring相关注解2.2.1 在Spring框架中,注解用于简化配置和增强代码的可读性。以下是常用的Spring注解的一部分2.2.2 针对controller的相关注解2.2.3 AOP相关注解2.2.4 Enable系列注解 2.3 常用Lombok注解 1…...

uvm中的run_test作用

在SystemVerilog和UVM验证环境中,run_test() 是启动UVM仿真流程的核心函数。它负责初始化UVM框架、创建测试用例实例,并触发UVM的Phase机制来执行验证环境的构建和运行 1. run_test() 的作用 run_test() 是UVM提供的内置函数,定义在UVM库中…...

brew search报错,xcrun:error:invalid active developer path CommandLineTools

问题出现的原因 出现“xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun”错误,通常是因为Xcode命令行工具未正确安装或其路径已损坏。以下是几种常见的…...

C#内置委托(Action)(Func)

概述 在 C# 中,委托是一种类型,它表示对具有特定参数列表和返回类型的方法的引用。C# 提供了一些内置委托,使得开发者可以更方便地使用委托功能,无需手动定义委托类型。本文将详细介绍 Action 和 Func 这两个常用的内置委托。 A…...

kubernetes 部署项目

随着容器化技术的发展,使用Kubernetes(简称K8s)来部署和管理应用已经成为现代软件开发的标准实践之一。Kubernetes提供了一套强大的工具集,使得部署、扩展和管理应用程序变得更为简便高效。本文将带你走过从准备环境到部署一个实际…...

《几何原本》命题I.2

《几何原本》命题I.2 从一个给定的点可以引一条线段等于已知的线段。 设 A A A 为给定点, B C BC BC 为给定线段 连接 A B AB AB,作等边 △ A B D \triangle ABD △ABD 以 B B B 为圆心, B C BC BC 为半径作小圆 延长 D B DB DB 交小圆…...

【我的 PWN 学习手札】House of Kiwi

House of Kiwi 之前我们利用IO_FILE一般是通过劫持vtable来实现的, House of Kiwi虽然不是通过劫持vtable来实现,但实质上是劫持vtable指向的全局的_IO_file_jumps_表来实现的。注意:对于某些版本的glibc,_IO_file_jumps_并不可写…...

nvm的学习

学习 nvm(Node Version Manager) 是掌握 Node.js 开发的关键技能之一。以下是系统的学习路径和实战指南,涵盖从基础到进阶的内容: 一、基础入门 1. nvm 的核心作用 多版本共存:安装和管理多个 Node.js 版本&#xff…...

haclon固定相机位标定

什么是标定? 工业应用中相机拍到一个mark点的坐标为C1(Cx,Cy),C1点对应的龙门架/机械手等执行端对应的坐标是多少? 标定就是解决这个问题,如相机拍到一个点坐标C1(Cx,Cy)&#xff0c…...

从手机芯片到AI芯片:NoC拓扑结构怎么选?(Mesh、Torus、树形对比指南)

从手机芯片到AI芯片:NoC拓扑结构选型实战指南 当你在设计一款边缘AI芯片时,面对数十个需要高效协同的计算单元,最令人头疼的问题之一就是:如何选择片上网络(NoC)的拓扑结构?这个问题看似简单,实则牵一发而动…...

C语言宏定义封装函数参数的工程实践

1. 宏定义封装函数参数的核心价值在嵌入式开发中,我们经常遇到需要传递大量固定参数的场景。以NXP RT1052 SDK中的GPIO配置为例,每个引脚复用配置需要传递6个参数,其中5个都是固定值。这种场景下,宏定义封装技术能显著提升代码的可…...

从STM32F207到F030:多路ADC采样的那些坑与填坑实录

从STM32F207到F030:多路ADC采样的那些坑与填坑实录 在嵌入式开发领域,STM32系列MCU因其出色的性能和丰富的生态而广受欢迎。然而,当开发者从高端系列(如STM32F207)转向入门级系列(如STM32F030)时…...

生成剧本杀软件2025推荐,创新剧情设计工具引领潮流

剧本杀软件2025推荐,创新剧情设计工具引领潮流随着剧本杀市场的蓬勃发展,越来越多的创作者和玩家对剧本杀软件的需求日益增长。为了帮助大家在众多选择中找到最适合自己的工具,本文将推荐一款在2025年备受瞩目的剧本杀软件——量子探险AI漫剧…...

IGBT驱动电路设计避坑指南:从选型到PCB布局的8个关键点

IGBT驱动电路设计避坑指南:从选型到PCB布局的8个关键点 在电力电子领域,IGBT驱动电路的设计质量直接决定了整个系统的可靠性和效率。我曾亲眼见过一个价值百万的变频器项目,因为驱动电阻选型不当导致批量烧毁,团队不得不连续加班三…...

AI Agent在智能制造中的应用:多智能体协同生产调度案例

AI Agent在智能制造中的应用:多智能体协同生产调度案例 摘要/引言 各位读者好,我是深耕工业软件与分布式AI系统近十年的技术博主,也是前西门子离散制造数字化转型中心的架构师。今天这篇文章,我们要聊的绝对是当前智能制造领域最…...

IEEE旗下通信类期刊全解析:从影响因子看学术风向标(2023最新版)

IEEE通信类期刊2023全景透视:影响因子背后的学术趋势与选刊策略 翻开最新发布的《期刊引证报告》(JCR2023),IEEE旗下通信类期刊的影响因子变化再次成为学界热议焦点。作为全球最大的专业技术组织之一,IEEE出版的期刊向…...

电动汽车充放电最优调度MATLAB源代码:全局与局部调度策略复现

电动汽车充放电最优调度 matlab 源代码,代码按照高水平文章复现 本文研究了电动汽车充放电调度优化问题。 首先提出了一个全局调度优化问题,优化充电功率以使一天内所有充放电电动汽车的总成本最小。 全局最优解提供全局最小的总成本。 然而&#xff0…...

5分钟免费指南:如何将旧手机变成Linux高清摄像头

5分钟免费指南:如何将旧手机变成Linux高清摄像头 【免费下载链接】droidcam GNU/Linux/nix client for DroidCam 项目地址: https://gitcode.com/gh_mirrors/dr/droidcam 想让闲置的旧手机发挥新价值吗?DroidCam正是你需要的开源解决方案&#xf…...

ConvNeXt 改进 :ConvNeXt添加MKDConv(多核深度卷积,ICCV 2025),二次创新CNBlock结构 ,独家首发

本文教的是方法,也给出几种改进方法,二次创新结构,百变不离其宗,一文带你改进自己模型,科研路上少走弯路。 前言 本文解析的是发表于 ICCVW 2025 的轻量化医学影像分割网络 MK-UNet。在医学图像处理领域,病灶(如肿瘤、息肉)的尺度变化剧烈,传统的单核 CNN 难以平衡局…...