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

文章目录

概要

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

初始化Truffle项目

安装好truffle,执行命令。

bash 复制代码
truffle init

完成后目录如下。

创建编写合约

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

准备一个简单的合约。

bash 复制代码
// 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;
    }
}

编译合约

在项目目录执

bash 复制代码
truffle compile

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

配置Ganache

点击New WorkSPACE配置,主要配置本地和端口号,本地的话我没就使用默认的。

配置完成后启动就行,默认有十个账户,都有以太。

修改truffle-config.js文件

修改两个地方,一个网络和合约版本,网络要和gannche里的一样,合约版本要一致或兼容。


编写迁移文件

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

bash 复制代码
const SimpleStorage = artifacts.require("SimpleStorage");

module.exports = function (deployer) {
    deployer.deploy(SimpleStorage);
}

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

部署合约

项目目录下执行命令

bash 复制代码
truffle migrate

部署完成后查看Ganache。

使用Truffle 控制台

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

bash 复制代码
truffle console
bash 复制代码
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,看到块变化和交易信息。

至此,一个简单的区块链就实现了。

相关推荐
Light604 分钟前
智链护航,数档永存:基于领码SPARK平台构建下一代AI+区块链档案系统解决方案
人工智能·spark·区块链
DICOM医学影像15 小时前
3. go语言从零实现以太坊客户端 - 查询合约中账户余额
golang·区块链·智能合约·solidity·以太坊·web3.0
WZgold14121 小时前
黄金再创新高!2026 年金价走势预测
大数据·人工智能·经验分享·区块链
DICOM医学影像1 天前
4. go语言从零实现以太坊客户端 - 区块链转账
golang·区块链·以太坊·web3.0·geth
Tancenter1 天前
区块链关键技术
区块链·哈希算法·数字签名
CryptoPP1 天前
对接API库 获取印度股票历史数据
金融·数据挖掘·数据分析·区块链
CryptoRzz2 天前
印度尼西亚(IDX)股票数据对接开发
java·后端·websocket·web3·区块链
DICOM医学影像2 天前
2. go语言从零实现以太坊客户端-查询区块链账户余额
开发语言·golang·区块链·以太坊·web3.0·hardhat
狙击主力投资工具2 天前
龙头战法的理解
区块链
DICOM医学影像2 天前
1. go语言从零实现以太坊客户端-JSON-RPC
golang·区块链·solidity·以太坊·web3.0·json-rpc·erc20