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

相关文章:

  • word有一大段空白就跳到下一页了
  • 算法系列之排序算法-堆排序
  • 五、数据库索引详解:作用、原理与使用指南
  • 11.【线性代数】——矩阵空间,秩1矩阵,小世界图
  • 【时时三省】(C语言基础)字符型数据
  • Redis高可用部署:3台服务器打造哨兵集群
  • 环境会影响你的决策:K近邻算法(KNN)
  • 如何更好地利用Instagram的故事功能提升互动率?
  • AI大模型-提示工程学习笔记17—程序辅助语言模型
  • React实现无缝滚动轮播图
  • RBF神经网络+NSGAII多目标优化算法,工艺参数优化、工程设计优化(Matlab)
  • OpenAI发布GPT-4.5:功能非常特殊,推理很贵
  • 【STL】7.STL常用算法(2)
  • return和print
  • Virtual Box虚拟机安装苹果Monterey和big sur版本实践
  • Milvus高性能向量数据库与大模型结合
  • 【Spring Cloud Alibaba】基于Spring Boot 3.x 搭建教程
  • 如何查看日本药品审评报告?(PMDA官网查询步骤)
  • 北京大学mooc《实用python程序设计》第六章 笔记及测试答案
  • fastadmin 后台sku 插件
  • 做网站的公司金坛/西安网站seo排名优化
  • 武汉新闻最新消息疫情/seo综合查询平台
  • 上海做网址域名的公司/洛阳seo网络推广
  • 12380网站建设意见/舟山百度seo
  • 企业网站建设/深圳互联网公司排行榜
  • 湛江有那些网站制作公司/厦门网站流量优化价格