使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动

这篇具有很好参考价值的文章主要介绍了使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我使用Remix编写合约,MetaMask钱包工具和Ganache搭建了一个私有网络,并且实现了合约的部署和互动。
在前面的博客中提到了 Remix在线环境及钱包申请 以及 Solidity的基本语法 ,没看过的小伙伴可以点击链接查看一下,都是在本专栏下,觉得有用的伙伴记得点个关注哦。

1. 工具介绍及下载地址

remix:Remix是一个基于Web的以太坊合约开发和调试工具。它允许开发人员在浏览器中编写、编译、调试和部署以太坊智能合约。地址:http://remix.ethereum.org

MetaMask:MetaMask 是一款用于管理以太坊和其他兼容区块链上的加密资产的浏览器插件。
Remix在线环境及钱包申请

Ganache:Ganache是一个以太坊区块链的个人区块链,旨在用于以太坊开发、测试和部署智能合约。
Ganache只需要去官网 https://trufflesuite.com/ganache/ 下载安装文件安装即可,我是用的是Win系统直接安装的就是系统主页推荐的版本。
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链

2. 编写合约

添加候选人:调用 addCandidate 函数,传入候选人的名字,只有管理员(合约创建者)可以调用此函数。

投票:调用 vote 函数,传入你想要投票的候选人的 ID。这里的ID就是候选人的在数组中的下标写的很简单不要介意。

查询投票结果:调用 getVoteCount 函数,传入候选人的 ID,可以查看该候选人的得票数。

合约内容:

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.10;

contract SimpleVoting {
    address public admin;
    Candidate[] public candidates;

    struct Candidate {
        string name;
        uint256 voteCount;
    }

    event Voted(address indexed voter, uint256 indexed candidateId);

    modifier onlyAdmin() {
        require(msg.sender == admin, "Only admin can call this function");
        _;
    }

    constructor() public {
        admin = msg.sender;
    }

    function addCandidate(string memory _name) public onlyAdmin {
        candidates.push(Candidate({name: _name, voteCount: 0}));
    }

    function vote(uint256 _candidateId) public {
        require(_candidateId < candidates.length, "Invalid candidate ID");

        candidates[_candidateId].voteCount++;

        emit Voted(msg.sender, _candidateId);
    }

    function getVoteCount(uint256 _candidateId) public view returns (uint256) {
        require(_candidateId < candidates.length, "Invalid candidate ID");
        return candidates[_candidateId].voteCount;
    }
}

3. 创建Ganache网络

使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链这里面的具体值默认就好关键是端口号和NETWORK ID 5777 然后点击STERT就可以创建一个网络了

使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链

4. 钱包添加Ganache测试网络

点开安装的钱包,在测试网络中点击添加网络
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链

使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
注意这里链ID并不是5777,之前一直因为这个错误一直连接失败,这里提示什么就填什么:
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
之后会提示添加网络成功,可以切换到Ganache网络下,点击切换账号的小图标,添加创建的本地链的账户
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
点击密钥图标后,复制私钥,然后添加用户
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
可以看到用户添加成功,现在在Ganache网络中有100ETH.

5. 部署合约

部署之前保证刚才添加的账户已连接到网络,如果没有连接,点击箭头的地方,展开后手动点击连接到网络即可。
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
回到Remix编译后选择使用环境钱包部署,点击Deploy即可部署
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
随后钱包确认交易:
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链

然后就部署成功,可以通过Remix和合约互动
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链

6. 合约互动

添加候选者 李四
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链

使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
给李四投票:
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
查看李四(下标0)的得票数
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链
每一次互动(交易)都要通过钱包确认

ganache中也有交易的记录:
使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动,以太坊与Solidity语言,区块链如果有用的话请三连支持文章来源地址https://www.toymoban.com/news/detail-758247.html

到了这里,关于使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 区块链研究(一):Windows下搭建以太坊私有链,部署智能合约实现数据上链功能(完整跑通版!好累!)

    先说一下,之前学习部署以太坊私有链,看了好多博文,发现节点之前总是无法连接识别,踩了好多坑,,,今天我把自己完整跑通的实验流程给大家展示出来,希望有所帮助! 摘要:本文主要介绍区块链网络构建的方式,区块链网络仅用于实验,主要搭建以太坊私有链,在

    2024年04月08日
    浏览(52)
  • 使用web3.js连接Metamask钱包并完成合约交互

    Web3.js是一个用于与以太坊网络进行交互的JavaScript库。Metamask是一个以太坊钱包插件,可以在浏览器中创建和管理以太坊账户。本文将介绍如何使用web3.js库连接Metamask钱包,并完成与智能合约的交互。 Web3.js是一个用于与以太坊网络进行交互的JavaScript库。它提供了一些方法和功

    2024年03月16日
    浏览(52)
  • 使用Ganache,web3js和remix在个人区块链上部署并调用合约

    Ganache是一个运行在本地的个人区块链,适用于以太坊的开发者。 首先我们需要下载Ganache web3js的中文文档 remix英文版的网址 有以上的准备之后我们就可以开始了 首先启动Ganache 这就是Ganache的主页面,下面有10个供我们使用的账号,上面有他们的地址以及余额,我们暂时需要

    2024年01月19日
    浏览(77)
  • 通过metamask与合约交互(发送ERC20 TOKEN/原生TOKEN/方法调用) javascrpt实现

    1. 首先引入web3.js最新版本 ,再引入 jquery 遇到合约有ABI文件.个人习惯单独保存ABI文件.通过jquery远程读取. 实例化合约后直接在链上与合约交互 通过按钮什么的触发后就可以通过代码转账了.  2. 无ABI与合约交互,因为有的合约闭源了,所以我们直接手工构造data参数内容,免去了实

    2024年02月16日
    浏览(37)
  • 前端VUE使用web3调用小狐狸(metamask)和合约(ERC20)交互

    1.创建vue项目 2.安装web3 npm install web3 3.项目web3 main.js 项目结构 页面代码中引用web3,倒入ERC20代币的abi 项目页面   调用小狐狸metamask演示   项目任何难题,可以加入qq群:981921011      

    2024年02月15日
    浏览(46)
  • Mac 电脑查看本地maven,及私有仓库的搭建与使用【nexus的配置与使用】

    查看状态如果要查看本地maven,使用命令行: 如下如localRepository标签 官网地址 解压后如下图 启动服务器/停止服务器 bin 目录下 执行命令: 如下图表面启动成功 此时浏览器访问:http://localhost:8081/ 进入到私服控制面板 查看状态及关闭服务器 配置环境变量(根据自己需要选择

    2024年02月07日
    浏览(44)
  • 以太坊 – 部署智能合约到Ganache

    目录 1. Ganache本地区块链 1.1 主界面 1.2 设置 2. 开发智能合约 2.1 初始化项目 2.2 添加package.json文件 2.3 添加智能合约源文件 2.4 编译项目 3. 部署智能合约到Ganache 3.1 更新配置文件 3.2 创建迁移脚本  3.3 执行迁移命令 首先启动Ganache,创建本地的以太坊区块链网络。 本地

    2024年02月16日
    浏览(53)
  • 四:调用部署在ganache的智能合约

    如果朋友有代码,工具,使用流程等不太清楚的,可用去专栏看看,专栏中有文章中所提及的具体使用方式。不太明白的朋友可以自己去看看~~ 瞬移专栏 实验目的 实验原理 ether.js中提供了我们对智能合约进行调用的方法,使用ether.js能很方便我们和智能合约进行交互。 js代码

    2023年04月09日
    浏览(35)
  • 基于Remix+MetaMask部署智能合约

    由于论文迟迟没有进展,基础知识掌握不牢,今由重新拾起区块链的应用,研究了下节点连接和智能合约部署的一些操作。 基础知识: remix是用来部署智能合约的,metamask是可视化的钱包。 准备环境: 基于浏览器的Remix,网址为:http://remix.ethereum.org/ 。 MetaMask是一个基于Ch

    2024年02月07日
    浏览(40)
  • Docker 搭建本地私有仓库

    有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似。 使用私有仓库有许多优点: Docker 官方提供了一个搭建私有仓库的镜像 registry (注册服务器),只需把镜像下载下来,运行容器并暴露5000端口

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包