智能合约部署测试步骤及报错

第一次写博客,这篇用来记录一下自己部署智能合约的过程以及遇到的问题和解决方法。

环境搭建
  1. Node.js:这个直接去官网下载安装就行。
  2. truffle:在下载完Node.js并且配置好环境变量之后,打开命令行输入npm –g install truffle
  3. ganache-cli: 在命令行输入npm install -g ganache-cli
创建一个truffle项目
  1. truffle init命令可以创建一个truffle项目,但是由于还不太会写智能合约,先下载官方示例进行部署和测试。
    新建一个文件夹block test并在命令行中导航到该文件夹。
    输入命令truffle unbox metacoin
    结果出错RequestError: Error: getaddrinfo ENOENT raw.githubusercontent.com
    据说是通过https://www.ipaddress.com查询 raw.githubusercontent.com 的地址。
    配置hosts文件 C:\Windows\System32\drivers\etc\hosts
    但是我用查询到的ip修改了hosts文件之后还是没有成功,后来在hosts文件里添加了199.232.68.133 raw.githubusercontent.com之后再下载就成功了。
  2. 下载完之后block test目录下出现了一些文件夹:
  • constracts:所有的智能合约文件都放置在这里
  • migrations: 用来处理部署智能合约,每个migration文件前面有序号,表示migration文件的执行顺序
  • test:测试用例
  • truffle.js: 配置文件。如果使用Windows的cmd命令行的话,需要将文件名改为truffle-config.js。
编译部署智能合约到ganache环境
  1. 还是在block test文件夹下,使用truffle compile命令编译。
    但是又报错module未定义
    参考了别的博客,错误原因是

OS运行了truffle.js而非truffle.cmd

解决办法是

1.去truffle根目录修改truffle.cmd的名称,编译时输入修改名称+compile
2.输入truffle.cmd compile

于是,输入truffle.cmd compile之后编译成功
在这里插入图片描述

  1. 在命令行输入ganache-cli -p 7545启动ganache,然后再打开一个命令行窗口进入block test文件夹下,输入truffle migrate --network ganacheNet命令来部署到ganache环境中,但是,报错Unknown network “ganacheNet”. See your Truffle configuration file for available networks.
    原因是truffle.config.js中没有进行配置。
    修改truffle.config.js配置如下:
    在这里插入图片描述
    然后再输入truffle migrate --network ganacheNet命令就成功了。

  2. 测试使用命令truffle test

最后,还有一点是在truffle.cmd compile之后直接执行了truffle migration命令,然后报错Error: The network id specified in the truffle config (5777) does not match the one returned by the network (1617084237314). Ensure that both the network and the provider are properly configured.
这个错误应该是因为还没有生成区块链?在执行truffle migration之前可以使用truffle内置的Truffle Dev启动一条区块链,这个命令会默认生成10个账户,每个账户里有100个以太坊。默认监听localhost:9545
如果部署到ganache环境的话就要先用上面提到的命令先启动ganache

先就这样吧,以后遇到其他问题再来更新~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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`方法获取当前值并输出到控制台。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值