三:将智能合约部署到ganache测试网

三:将智能合约部署到ganache测试网

实验目的

	掌握将智能合约部署到ganache测试网,首先要构建本地的ganache,然后用ganache中的用户去连接到ganache。

实验原理

  • ganache是一个模拟区块链网络的本地区块链程序,里面有20个用户共我们使用,方便我们模拟用户的使用,进行代码测试等操作。
  • ethers.js为以太坊区块链及其生态系统提供一个小而完整的 JavaScript API 库。方便开发者更好的与智能合约交互。
  • fs是js读取文件的一个组件,方便我们读取目录中的文件。

开始条件

  • 安装好基于windows系统的子系统wsl。默认安装ubuntu20.04。
  • 在ubuntu中安装node.js
  • 安装好solidity的编译器
  • 使用yarn需要先进行设置,在命令行中输入corepack enable

实验过程

  1. 下载ganche
  2. 下载ethers.js
  3. 下载fs
  4. 编写deploy.js部署合约

实验步骤

  1. ganache下载
yarn add  ganache-cli

​ 2.开启本地ganache

ganache-cli

在这里插入图片描述
** ganache中内置了10个账户, 记住ip和其中一个私钥,通过ip和私钥来连接到ganache(窗口别关闭) **

另外启动一个窗口完成后面的操作

  1. 下载ethers.js
yarn add ethers
  1. 下载fs
yarn add fs-extra
  1. 在test目录中创建 一个deploy.js文件(文件源码在后面) //test目录是上一章创建并编译的项目路径

    ​ 上一章的连接地址(solidity代码编译)[]

touch deploy.js
vim deploy.js

在这里插入图片描述

  1. 运行deploy.js
node deploy.js

结果如下:左边为ganache的运行日志,右边为运行deploy.js中控制台打印的部署合约的相关信息。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BoOqtNgA-1662612856361)(C:\Users\DAF\AppData\Roaming\Typora\typora-user-images\image-20220908115431829.png)]

相关官方知识库

  1. ether.js
  2. ganache-lic

下一章内容:

调用部署在ganache的智能合约

欢迎讨论学习⊙﹏⊙

** deploy.js的代码如下:**

// 引包
const ethers = require("ethers");
const fs = require("fs-extra");

async function main() {
  // 建立ganache网络
  let provider = new ethers.providers.JsonRpcProvider("http://127.0.0.1:8545");
  //用户连接到网络
  let wallet = new ethers.Wallet(
    "0x955befd54e2c3d5825644c32eb9770dc273e62420139724eadb42969eb33d19e", //私钥
    provider
  );

  // 获取solidity的接口和字节码
  const abi = fs.readFileSync("./SimpleStorage_sol_SimpleStorage.abi", "utf8");
  const binary = fs.readFileSync(
    "./SimpleStorage_sol_SimpleStorage.bin",
    "utf8"
  );
  //用户创建交易
  const contractFactory = new ethers.ContractFactory(abi, binary, wallet);
  console.log("Deploying, please wait...");
  //用户部署智能合约
  const contract = await contractFactory.deploy();
  console.log(contract);
}

main()
  .then(() => process.exit(0))
  .catch((error) => {
    console.error(error);
    process.exit(1);
  });

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Truffle框架是一个用于以太坊智能合约开发的开发环境和工具集,Ganache则是一个用于本地测试以太坊智能合约的工具。下面是使用Truffle框架和Ganache络进行智能合约部署的具体流程和代码。 1. 安装Truffle框架和Ganache络 首先需要在本地安装Truffle框架和Ganache络。可以使用npm命令进行安装: ``` npm install -g truffle npm install -g ganache-cli ``` 2. 创建Truffle项目 使用Truffle框架创建一个新的项目: ``` truffle init ``` 这将会在当前目录下创建一个名为`truffle-config.js`的配置文件和一个名为`contracts`的合约目录。 3. 编写智能合约代码 在`contracts`目录下创建一个名为`MyContract.sol`的智能合约文件,并编写合约代码。例如,创建一个简单的存储合约: ``` pragma solidity ^0.8.0; contract MyContract { uint256 private value; function setValue(uint256 newValue) public { value = newValue; } function getValue() public view returns (uint256) { return value; } } ``` 4. 配置Truffle项目 在`truffle-config.js`文件中配置Truffle项目。首先需要指定要使用的络,这里使用Ganache络: ``` module.exports = { networks: { development: { host: "localhost", port: 8545, network_id: "*" } } }; ``` 5. 编译智能合约 使用Truffle框架编译智能合约: ``` truffle compile ``` 6. 部署智能合约 使用Truffle框架部署智能合约: ``` truffle migrate ``` 这将会将智能合约部署Ganache络上。 7. 与智能合约交互 现在可以使用Web3.js或其他以太坊客户端库与智能合约进行交互。以下是一个使用Web3.js与上一步中部署的存储合约进行交互的示例代码: ``` const Web3 = require('web3'); const web3 = new Web3('http://localhost:8545'); const myContract = new web3.eth.Contract([{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}], '0x1234567890123456789012345678901234567890'); myContract.methods.setValue(42).send({from: '0x1234567890123456789012345678901234567890'}) .then(() => myContract.methods.getValue().call()) .then(value => console.log(value)); ``` 这段代码首先创建了一个Web3实例,并连接到Ganache络。然后创建了一个`myContract`实例,它表示上一步中部署的存储合约。最后使用`myContract`实例调用`setValue`方法将值设置为42,并使用`getValue`方法获取当前值并输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值