找回密码
 立即注册
查看: 703|回复: 0

[其它] [区块链] 使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动

[复制链接]

36

主题

1

回帖

177

积分

注册会员

积分
177
发表于 2024-5-21 12:09:08 | 显示全部楼层 |阅读模式
本帖最后由 0xlavon 于 2024-5-21 12:12 编辑

以太坊智能合约开发需要一个安全可靠的环境进行测试。MetaMask和Ganache是两款非常流行的工具,前者是一个以太坊钱包浏览器扩展,后者是一个快速创建私有区块链的工具。本文将介绍如何使用MetaMask和Ganache搭建本地私有网络,并实现合约的部署与互动。

1. 前期准备

1.1 安装MetaMask

1. 在Chrome浏览器中,访问[MetaMask官网](https://metamask.io/)。
2. 点击“下载”按钮,按照提示安装MetaMask扩展。
3. 安装完成后,打开MetaMask并创建一个新的账户或导入现有账户。

1.2 安装Ganache

1. 访问[Ganache官网](https://trufflesuite.com/ganache/)。
2. 根据操作系统选择对应版本下载并安装Ganache。
3. 启动Ganache,它会自动创建一个本地私有以太坊区块链网络,并生成一些测试账户。

2. 配置MetaMask连接Ganache

2.1 获取Ganache网络信息

1. 打开Ganache,在主界面可以看到本地私有网络的RPC服务器地址,通常是`http://127.0.0.1:7545`。
2. 记录下该地址,稍后在MetaMask中使用。

2.2 在MetaMask中添加Ganache网络

1. 打开MetaMask扩展,点击右上角的网络选择器,选择“添加网络”。
2. 输入如下信息:
    - 网络名称:Ganache
    - 新的RPC URL: `http://127.0.0.1:7545`
    - 链ID:1337(默认情况下Ganache的链ID)
    - 符号:ETH
    - 区块浏览器 URL:留空
3. 点击“保存”,MetaMask现在已连接到Ganache网络。

2.3 导入Ganache账户到MetaMask

1. 在Ganache中,点击一个账户旁边的钥匙图标,复制私钥。
2. 打开MetaMask,点击账户图标,选择“导入账户”。
3. 选择“私钥”,粘贴刚才复制的私钥,然后点击“导入”。
4. 现在,MetaMask中应该能看到与Ganache账户一致的ETH余额。

3. 部署智能合约

3.1 编写智能合约

编写一个简单的智能合约,例如一个存储整数的合约:


  1. // SimpleStorage.sol
  2. pragma solidity ^0.8.0;

  3. contract SimpleStorage {
  4.     uint256 storedData;

  5.     function set(uint256 x) public {
  6.         storedData = x;
  7.     }

  8.     function get() public view returns (uint256) {
  9.         return storedData;
  10.     }
  11. }
复制代码

3.2 使用Truffle部署合约

1. 安装Truffle:

  1.     npm install -g truffle
复制代码
   

2. 初始化Truffle项目:

  1.     mkdir SimpleStorage
  2.     cd SimpleStorage
  3.     truffle init
复制代码

3. 将合约文件放置到`contracts`文件夹中。

4. 编辑`truffle-config.js`,配置Ganache网络:

  1.     module.exports = {
  2.         networks: {
  3.             development: {
  4.                 host: "127.0.0.1",
  5.                 port: 7545,
  6.                 network_id: "*"
  7.             }
  8.         },
  9.         compilers: {
  10.             solc: {
  11.                 version: "0.8.0"
  12.             }
  13.         }
  14.     };
复制代码


5. 创建部署脚本,在`migrations`文件夹中创建一个新的文件`2_deploy_contracts.js`:

  1.    
  2.     const SimpleStorage = artifacts.require("SimpleStorage");

  3.     module.exports = function(deployer) {
  4.         deployer.deploy(SimpleStorage);
  5.     };
复制代码


6. 部署合约:
  1. truffle migrate
复制代码


4. 通过MetaMask与合约互动

4.1 获取合约地址

部署完成后,Truffle会输出合约的部署地址。记录下该地址,稍后在MetaMask中使用。

4.2 使用Web3.js与合约互动

1. 安装Web3.js:
   
  1. npm install web3
复制代码

2. 编写一个简单的javaScript文件,用于与合约互动:

  1.    
  2.     const Web3 = require('web3');
  3.     const web3 = new Web3('http://127.0.0.1:7545');
  4.     const contractABI = [/* 合约ABI */];
  5.     const contractAddress = '0xYourContractAddress';

  6.     const contract = new web3.eth.Contract(contractABI, contractAddress);
  7.     const account = '0xYourMetaMaskAccountAddress';

  8.     async function interact() {
  9.         await contract.methods.set(42).send({ from: account });
  10.         const value = await contract.methods.get().call();
  11.         console.log('Stored value:', value);
  12.     }

  13.     interact();
复制代码



4.3 查看结果

运行上述JavaScript文件,成功后应看到存储的值输出到控制台。

5. 结语

通过以上步骤,你已经成功搭建了一个本地私有区块链网络,并实现了智能合约的部署与互动。使用MetaMask和Ganache,可以方便地进行智能合约的开发和测试,为正式部署到以太坊主网打下坚实的基础。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-4 13:44 , Processed in 0.061533 second(s), 24 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表