简介
Truffle是以太坊最流行的开发框架,能够在本地编译、部署智能合约,使命是让开发更容易。
本文以fibonacci作为实例进行调试
参考文档
https://trufflesuite.com/docs/truffle/how-to/debug-test/use-the-truffle-debugger/
https://trufflesuite.com/guides/debugger-variable-inspection/
插件安装
vscode插件安装
extension中搜索Truffle for VS Code并安装
nodejs/npm安装
最新版本下载:https://nodejs.org/en/download/
nodejs,npm的版本限制可安装该pkg:https://nodejs.org/download/release/v16.20.2/node-v16.20.2.pkg,
完整卸载之前的nodejs/npm
sudo npm uninstall npm -g
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
sudo rm -rf /usr/local/include/node /Users/$USER/.npm
sudo rm /usr/local/bin/node
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d
清空缓存
npm update
npm cache clean --force
truffle/ganache安装
安装最新版本的nodejs/npm,然后自动点击页面安装即可
详细流程
新建一个web3的空项目
然后选择目录创建,创建之后的目录结构是这样:
新建合约代码
在contracts目录新建一个Fibonacci.sol的合约:
pragma solidity ^0.4.22;
contract Fibonacci {
uint[] fibseries;
// n = how many in the series to return
function generateFib(uint n) public {
// set 1st and 2nd entries
fibseries.push(1);
fibseries.push(1);
// generate subsequent entries
for (uint i=2; i < n ; i++) {
fibseries.push(fibseries[i-1] + fibseries[i-2]);
}
}
}
新建部署代码
在migrations目录新建一个2_deploy_contracts.js的部署代码:
module.exports = function (deployer) {
deployer.deploy(Fibonacci);
};
修改根项目里的truffle-config.js文件
在truffle-config.js中打开默认的development网络,这个是连接到ganache的服务器
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 7545,
network_id: "*",
},
},
};
这个地址是ganache的服务器地址
开始ganache服务器
编译合约:
右键某个.sol合约,选择Build Contracts:
Output中会显示编译结果:
部署合约:
右键某个.sol合约,选择Deploy Contracts:
在弹出框选择对应的网络:
Output中会看到部署结果和合约信息:
手动用js调用合约的generateFib函数:
Terminal中输入:truffle consule
然后输入js代码:
Fibonacci.deployed().then(function (instance) {
return instance.generateFib(10);
});
代码意义是获取Fibonacci的部署合约,然后调用generateFib的合约方法,传入参数是10
这样执行以后,生成了一个新的交易:
Ganache也可以看到交易:
调试刚才的generateFib交易:
打开command Palette, 或者command + shift + p打开也行
选择Truffle:Debug Transaction
选择网络:
选择交易:
这里2个交易:
1个是创建合约的时候调用构造函数,
1个就是刚才我手动调用js的generateFib()方法
那我们就调试generateFib()那个交易
然后就进入调试页面,可正常调试了:
标签:npm,nodejs,VSCode,local,solidity,generateFib,truffle,Truffle,合约 From: https://www.cnblogs.com/zhanchenjin/p/18005749