使用Truffle编译智能合约及所遇到的问题

这篇具有很好参考价值的文章主要介绍了使用Truffle编译智能合约及所遇到的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装Truffle框架

安装nvm(Node 版本管理器)

1.下载安装nvm,首先安装目录不要有空格和中文,会出现乱码

 https://github.com/coreybutler/nvm-windows/releases

使用Truffle编译智能合约及所遇到的问题
2、解压之后安装,安装后自动配置环境变量

使用Truffle编译智能合约及所遇到的问题

3、nvm -v 查看版本

使用Truffle编译智能合约及所遇到的问题

4、通过如下指令进行node版本的安装、替换

nvm list     //查看已安装的nodejs版本
nvm on      // 启用node.js版本管理
nvm off   // 禁用node.js版本管理(不卸载任何东西)
nvm install <version>       // 安装node.js的命名 version是版本号 例如:nvm install 8.12.0
nvm use <version>      //使用某一version的nodejs
nvm uninstall <version>   // 卸载指定版本的nodejs

安装truffle

npm -g install truffle

创建truffle项目目录

mkdir Faucet
cd Faucet
truffle init   // 初始化truffle
npm init    // 初始化npm目录结构

配置truffle

我是通过VS code 打开项目,编辑truffle-config.js文件

配置网络

使用Truffle编译智能合约及所遇到的问题
配置本地以太坊网络和远程的以太坊测试网络方式有所差异,可见上方。
注意:这里需要绑定solidity的版本,后续有一个错误就是由于未绑定所致。

使用Truffle部署合约

Truffle提供了名为 “migration” 的部署机制,用于跟踪哪些合约(及他们的版本)已经被部署了。
migration有关的脚本代码都保存在Truffle的migrations目录,初始时该目录下有一个1_initial_migration.js文件,用来部署Migrations.sol自身。
我们现在需要编写第二个migration脚本,用来部署Faucet.sol。

使用Truffle编译智能合约及所遇到的问题

Faucet.sol合约:

// Version of Solidity compiler this program was written for
pragma solidity >=0.4.22 <0.9.0;

// Our first contract is a faucet!
contract Faucet {

	// Accept any incoming amount


	// Give out ether to anyone who asks
	function withdraw(uint withdraw_amount) public {

    	// Limit withdrawal amount
    	require(withdraw_amount <= 100000000000000000);

    	// Send the amount to the address that requested it
    	msg.sender.transfer(withdraw_amount);
    }

    receive() external payable{}

}

编译合约

truffle compile

部署合约

truffle migrate --network ropsten  // 部署到指定的ropsten网络

使用truffle控制台

truffle console --network ropsten

获取当前账户

web3.eth.getAccounts()

根据地址获取账户余额

web3.eth.getBalance(accounts[0])

根据合约名获取合约地址

Faucet.address

执行转账交易(转入合约账户)

web3.eth.sendTransaction({from: accounts[0], to: Faucet.address, value:web3.utils.toWei('0.1','ether')})

使用Truffle编译智能合约及所遇到的问题

可在测试网络上查看交易信息:

使用Truffle编译智能合约及所遇到的问题

使用Truffle编译智能合约及所遇到的问题

查看合约账户余额,0.6 ether

使用Truffle编译智能合约及所遇到的问题

调用合约退款函数(合约转钱到调用账户)

Faucet.deployed().then(instance => {instance.withdraw(web3.utils.toWei('0.1','ether'))})

取0.1 ether,在withdraw函数中,require判定最多取0.1 ether
取过之后可查看交易:

使用Truffle编译智能合约及所遇到的问题

使用Truffle编译智能合约及所遇到的问题
交易信息:

使用Truffle编译智能合约及所遇到的问题

此时再查看合约的余额:

使用Truffle编译智能合约及所遇到的问题

当调用函数转账超过0.1 ether 时会报错!转账失败

使用Truffle编译智能合约及所遇到的问题

编译合约时遇到的错误

(1)ParserError: Expected identifier but got ‘(’
receive() external payable{}

解决方式:选用6版本以上的solidity,并在truffle-config文件中绑定
使用Truffle编译智能合约及所遇到的问题
(2)ParserError: Expected primary expression.
payable(msg.sender).transfer(withdraw_amount);

解决方式:solidity版本问题,别选太高,好像是8的话address不支持可支付需要带payable,但带上payable,truffle编译合约会报这个错误。因此我最后选用solidity 6从而不需要带payable。

(3)truffle migrate 重新部署合约出现 network up to date.

解决方式:truffle migrate --reset
由于合约移植是懒编译的,如果发现已经发布过,且发布的版本号没有变化就不会再发布,所以使用–reset。使用truffle migrate –reset来强制重编译并发布所有合约文章来源地址https://www.toymoban.com/news/detail-400848.html

到了这里,关于使用Truffle编译智能合约及所遇到的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • truffle 进行智能合约测试

    以太坊区块链开发 truffle 入门教程 1_哔哩哔哩_bilibili 快速入门 Truffle | Truffle 中文文档 - DApp 开发框架 | 深入浅出区块链 (learnblockchain.cn) 下载node.js  利用npm 下载truffle :  npm install -g truffle 安装vscode 插件、   下载完成会多一个这个标志,然后点进去,会让检测让你下载几个东

    2024年02月16日
    浏览(44)
  • 【区块链技术开发】 Solidity使用Truffle Box工具实现预构建模板、自动化部署、创建智能合约示例代码

    专栏:区块链技术开发 Truffle Box是一个开发工具,为Truffle生态系统中的开发人员提供了预构建

    2023年04月16日
    浏览(49)
  • Web3 通过truffle 脚本进行智能合约测试

    上文 Web3 处理智能合约部署到本地区块链,并在本地进行测试中 我们讲解了部署智能合约 然后在终端测试的方法 但上文那种终端测试 其实并不保险 而且也比较不专业 对于这个 有一个mocha测试 这是基于node部署环境的一种环境测试 但是这个需要一定的基础 大家可以专门去学

    2024年02月13日
    浏览(43)
  • Web3本地搭建truffle智能合约开发环境

    之前的几篇文章 我们是成功的操作了我们本地区块链的 那么 本文 我们就来说说智能合约 啊 不容易啊 扯了这么久 终于到这了 智能合约是部署在区块链上 不可逆的 一种去中心化的程序,他没有任何第三方公司来管理这个程序和数据 然后 还有就是怎么连接到区块链上的智能

    2024年02月12日
    浏览(38)
  • Mythril测试智能合约遇到的一些问题与解决方法

    由于笔者最近在做智能合约相关的实验,使用了Mythril工具来检测智能合约,并在使用的过程中遇到了一系列的问题,这里给大家一点建议。   其中Mythril检测智能合约时的合约缺陷分类如下所示 SWC ID:116----------表示该漏洞的分类编号 Severity:Low----------表示该漏洞的严重程度

    2024年02月01日
    浏览(45)
  • ms08-067漏洞的复现及所遇到的问题分析

           靶机             Windows XP Service Pack 3         IP地址:192.168.244.133      攻击机                         Kali        IP地址:192.168.244.138 1、执行命令: msfconsole 2、执行命令: search ms08-067 3、执行命令: use 0 或 use exploit/windows/smb/ms08_067_netapi 4、执行命令: sho

    2023年04月20日
    浏览(35)
  • python 之 web3 与智能合约的交互、编译等使用

    一、背景 web3.py是一个用于与以太坊交互的 Python 库。 它常见于去中心化应用程序 (dapps)中,帮助发送交易、与智能合约交互、读取块数据以及各种其他用例。 最初的 API 源自Web3.js Javascript API,但后来不断发展以满足 Python 开发人员的需求和物质享受。 本人在合约审计于模糊

    2024年02月11日
    浏览(33)
  • QTAV的编译、使用及遇到的问题

    最近有个功能需求,界面可以直播显示某个特定摄像头的实时画面,通过对Qt本身的 QMiediaPlayer,和其他一些在网上找到的组件做了一些对比,最终选择了QtAv作为我们的组件使用。 QtAV 是一个基于 Qt 和 FFmpeg 的跨平台、高性能多媒体播放框架。 从 Github 上下载到的是 QtAV 的源码

    2024年02月02日
    浏览(29)
  • 华为ensp详细安装包、安装教程及所遇问题

    链接: https://pan.baidu.com/s/1QbUUYMOMIV2oeIKHWP1SpA?pwd=xftx 提取码:xftx 1.安装Wireshark和WinPcap 找到Wireshark安装包所在文件夹,双击它,按照以下步骤安装。 2.安装Oracle VM VirtualBox 找到Oracle VM VirtualBox安装包所在文件夹,双击它,按照以下步骤安装。 注:可自定义安装路径,但不要出现

    2024年02月05日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包