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

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

码农世界 2024-05-23 后端 61 次浏览 0个评论

我使用Remix编写合约,MetaMask钱包工具和Ganache搭建了一个私有网络,并且实现了合约的部署和互动。

在前面的博客中提到了 Remix在线环境及钱包申请 以及 Solidity的基本语法 ,没看过的小伙伴可以点击链接查看一下,都是在本专栏下,觉得有用的伙伴记得点个关注哦。

目录

    • 1. 工具介绍及下载地址
    • 2. 编写合约
    • 3. 创建Ganache网络
    • 4. 钱包添加Ganache测试网络
    • 5. 部署合约
    • 6. 合约互动

      1. 工具介绍及下载地址

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

      MetaMask:MetaMask 是一款用于管理以太坊和其他兼容区块链上的加密资产的浏览器插件。

      Remix在线环境及钱包申请

      Ganache:Ganache是一个以太坊区块链的个人区块链,旨在用于以太坊开发、测试和部署智能合约。

      Ganache只需要去官网 https://trufflesuite.com/ganache/ 下载安装文件安装即可,我是用的是Win系统直接安装的就是系统主页推荐的版本。

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

      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搭建本地私有网络并实现合约部署与互动使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动这里面的具体值默认就好关键是端口号和NETWORK ID 5777 然后点击STERT就可以创建一个网络了

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

      4. 钱包添加Ganache测试网络

      点开安装的钱包,在测试网络中点击添加网络

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

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

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

      注意这里链ID并不是5777,之前一直因为这个错误一直连接失败,这里提示什么就填什么:

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

      之后会提示添加网络成功,可以切换到Ganache网络下,点击切换账号的小图标,添加创建的本地链的账户

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

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

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

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

      点击密钥图标后,复制私钥,然后添加用户

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

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

      可以看到用户添加成功,现在在Ganache网络中有100ETH.

      5. 部署合约

      部署之前保证刚才添加的账户已连接到网络,如果没有连接,点击箭头的地方,展开后手动点击连接到网络即可。

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

      回到Remix编译后选择使用环境钱包部署,点击Deploy即可部署

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

      随后钱包确认交易:

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

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

      然后就部署成功,可以通过Remix和合约互动

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

      6. 合约互动

      添加候选者 李四

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

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

      给李四投票:

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

      查看李四(下标0)的得票数

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

      每一次互动(交易)都要通过钱包确认

      ganache中也有交易的记录:

      使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动如果有用的话请三连支持

转载请注明来自码农世界,本文标题:《使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,61人围观)参与讨论

还没有评论,来说两句吧...

Top