使用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,看到块变化和交易信息。
在这里插入图片描述
在这里插入图片描述
至此,一个简单的区块链就实现了。

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

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

相关文章

在线会议时, 笔记本电脑的麦克风收音效果差是为什么

背景 最近在线面试. 使用腾讯会议或者飞书, 戴耳机参加在线面试, 遇到好几个面试官说我的音质不好. 一直没在意, 后来反思, 应该是电脑哪里出了问题. 排查 先买了一副品牌有线耳机, 测试后本地录制的声音仍然品质很差去掉耳机延长线后, 麦克风品质仍然很差最终找到答案, 原…

通过百度构建一个智能体

通过百度构建一个智能体 直接可用,我不吝啬算力 首先部署一个模型,我们选用deepseek14 构建智能体思考步骤,甚至多智能体; from openai import OpenAIclass Agent:def __init__(self, api_key, base_url, model

解决“request returned Internal Server Error for API route and version xxx”错误

一、问题描述 ragflow/README_zh.md at main infiniflow/ragflowhttps://github.com/infiniflow/ragflow/blob/main/README_zh.md 当我们使用Docker部署ragflow,确认服务器状态时,提示“request returned Internal Server Error for API route and version http://%2F%2F.%…

OpenFlexure记录

https://openflexure.org/projects/microscope/build

游戏引擎学习第131天

仓库:https://gitee.com/mrxiao_com/2d_game_3 运行游戏并识别我们的小问题 今天的工作重点是对游戏引擎进行架构优化,特别是针对渲染和多线程的部分。目前,我们的目标是让地面块在独立线程上进行渲染,以提高性能。在此过程中,我…

Hbase伪分布安装教程,详细版

注意Hbase版本与Hadoop版本的兼容,还有与JDK版本的兼容 本次用到的Hbase为2.4.6版本,Hadoop为3.1.3版本,JDK为JDK8 打开下面的网址查看兼容问题 Apache HBase Reference Guidehttps://hbase.apache.org/book.html#configuration 点击基础先…

使用Hydra进行AI项目的动态配置管理

引言:机器学习中的超参数调优挑战 在机器学习领域,超参数调优是决定模型性能的关键环节。不同的模型架构,如神经网络中的层数、节点数,决策树中的最大深度、最小样本分割数等;以及各种训练相关的超参数,像学习率、优化器类型、批量大小等,其取值的选择对最终模型的效果…

基于Kerberos认证对接华为云Elasticsearch

可以通过华为官方提供的Elasticsearch Java客户端(基于Elasticsearch官方版本改造),实现基于Kerberos认证访问和操作华为云Elasticsearch;亦可以使用更加通用的开源Elasticsearch Java客户端bboss,实现基于Kerberos认证…

Rocky Linux 8.5 6G内存 静默模式(没图形界面)安装Oracle 19C

Oracle19c 下载地址 Database Software Downloads | Oraclehttps://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_ee 目录 一、准备服务器 1、服务器可以克隆、自己装 2、修改主机名 3、重启 4、关闭selinux 5、关闭防火墙 5.1、…

6.6.6 嵌入式SQL

文章目录 2个核心问题识别SQL语句主语言和SQL通信完整导图 2个核心问题 SQL语句嵌入高级语言需要解决的2个核心问题是:如何识别嵌入语句?如何让主语言(比如C,C语言)和SQL通信? 识别SQL语句 为了识别主语言中嵌入的SQL…

农作物叶子病害检测数据集VOC+YOLO格式5169张29类别

数据集有部分增强 数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):5169 标注数量(xml文件个数):5169 标注数量(txt文件个数)…

hfs for windows linux apple

HFS(HTTP File Server)是一款轻量级的文件共享工具,专门用于通过 HTTP 协议快速共享文件。它非常适合在局域网或互联网上临时共享文件,操作简单,无需复杂的配置。 HFS 的主要特点 简单易用: 界面直观&#…

塑造网络安全的关键事件

注:本文为 “网络安全” 相关文章合辑。 机翻,未校。 Timeline of Cyber Security: Key Events that Shaped the Field 网络安全时间表:塑造该领域的关键事件 October 29, 2023 Cyberattacks are an everyday threat, always changing. T…

本地部署deepseek大模型后使用c# winform调用(可离线)

介于最近deepseek的大火,我就在想能不能用winform也玩一玩本地部署,于是经过查阅资料,然后了解到ollama部署deepseek,最后用ollama sharp NUGet包来实现winform调用ollama 部署的deepseek。 本项目使用Vs2022和.net 8.0开发,ollam…

Python 绘制迷宫游戏,自带最优解路线

1、需要安装pygame 2、上下左右移动,空格实现物体所在位置到终点的路线,会有虚线绘制。 import pygame import random import math# 迷宫单元格类 class Cell:def __init__(self, x, y):self.x xself.y yself.walls {top: True, right: True, botto…

2025-03-01 学习记录--C/C++-PTA 7-35 有理数均值

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 二、代码&#xff08;C语言&#xff09;⭐️ #include <stdio.h>// 【关键】计算最大公约数&#xff…

入门基础项目(SpringBoot+Vue)

文章目录 1. css布局相关2. JS3. Vue 脚手架搭建4. ElementUI4.1 引入ElementUI4.2 首页4.2.1 整体框架4.2.2 Aside-logo4.2.3 Aside-菜单4.2.4 Header-左侧4.2.5 Header-右侧4.2.6 iconfont 自定义图标4.2.7 完整代码 4.3 封装前后端交互工具 axios4.3.1 安装 axios4.3.2 /src…

CAM350_安装

版本&#xff1a;V14.5 一、安装 打开.exe文件 选择不重启&#xff0c;然后再打开这个.exe 再来一次类似的操作 二、配置 复制patch文件夹中的这三个 &#xff0c;粘贴到掉安装目录中 设置ACT_INC_LICENSE_FILE用户环境变量来设置license管理 打开电脑的环境变量 破解完毕&am…

STM32定时器超声波测距实验手册

1. 实验目标 使用STM32 HAL库和定时器实现超声波测距功能。 当超声波模块前方障碍物距离 < 10cm 时&#xff0c;点亮板载LED。 2. 硬件准备 硬件模块说明STM32开发板STM32F103C8T6HC-SR04模块超声波测距模块杜邦线若干连接模块与开发板 3. 硬件连接 HC-SR04引脚STM32引脚…

Open3D解决SceneWidget加入布局中消失的问题

Open3D解决SceneWidget加入布局中消失的问题 Open3D解决SceneWidget加入布局中消失的问题1. 问题2. 问题代码3. 解决 Open3D解决SceneWidget加入布局中消失的问题 1. 问题 把SceneWidget加到布局管理其中图形可以展示出来&#xff0c;但是鼠标点击就消失了。 stackoverflow上已…