话不多说,请看上图

正常情况下,我们部署合约到以太坊网络上,会花费0.01 - 1个ETH这个区间,当你部署合约时,Gas费超过了1个ETH,部署脚本就会告诉你部署一个合约建议不要超过1个ETH,你应该检查下你的代码或脚本,然后部署脚本终止部署。

但是某种情况是,你自己使用web3.js或者ethers.js部署的合约,gas limit和gas price是你自己设置的值,你没有写提示拦截等逻辑,然后设置了一个很大的值,结果就导致部署一个简单的合约,花费了巨大的价钱。

const fs = require('fs');
const solc = require('solc');
const Web3 = require('web3');// 获取到合约sol文件
const myContractSol = fs.readFileSync('../contracts/MyContractLogic.sol');
// 编译前格式化合约
var input = {language: 'Solidity',sources: { 'myContractSol': {content: myContractSol().toString()}},settings: {outputSelection: {'*': {'*': ['*']}}}
};// 编译合约
var output = JSON.parse(solc.compile(JSON.stringify(input)));
console.log(output)// 获取编译后合约的字节码
const bytecode = output.contracts.SuperConfig.SuperConfig.evm.bytecode.object;
// 获取编译后合约的abi
const abi = output.contracts.SuperConfig.SuperConfig.abi;// Ethereum的RPC
let rpcUrl = "https://mainnet.infura.io/v3/your-key";
const web3 = new Web3(new Web3.providers.HttpProvider(rpcUrl)); // 设置使用哪个账号进行部署
const privateKey = '0x00xxxxxxx';
const account = web3.eth.accounts.privateKeyToAccount(privateKey);
web3.eth.accounts.wallet.add(account);
web3.eth.defaultAccount = account.address;// 使用web3.js部署
const contract = new web3.eth.Contract(abi);
contract.deploy({data: "0x" + bytecode,
})
.send({from: account.address,   gas: 5000000,gasPrice: 800 * (10 ** 9),
}, function(error, transactionHash){ console.log("=====error, transactionHash: ", error, transactionHash)
})
.on('error', function(error){ console.log("=====error: ", error)  })
.on('transactionHash', function(transactionHash){ console.log("=====transactionHash: ", transactionHash)
})
.on('receipt', function(receipt){console.log("receipt合约地址:", receipt.options)
})
.on('confirmation', function(confirmationNumber, receipt){ console.log("=====confirmation:", confirmationNumber)})
.then(function(newContractInstance){console.log("last合约地址:", newContractInstance.options)
});

知道在哪一行了吗?就是Send()那个函数,当时的情况是,网络特别拥堵,我试了2天都不能部署成功,就一直增加gas limit和gas price,结果吧,之前发出去的那些交易,有一些被成交了,有一些超时被取消了。

然后就是设置gas比较的高的那两笔交易被意外成交了,可惜了我的ETH。

发此文章就是警告自己,小心谨慎设值gas limit和gas price,可以跟MetaMask学习,缓慢的增加gas limit和gas price.

部署一个合约花费了3.5ETH - GasLimit和GasPrice谨慎设值区间相关推荐

  1. 区块链100讲:Truffle——一个更简单的部署智能合约的方法

    本期<区块链100讲>我们将介绍一个更简单的部署智能合约的方法:Truffle. 1 什么是Truffle ? Truffle是针对基于以太坊的Solidity语言的一套开发框架.本身基于 ...

  2. java使用web3j,部署智能合约在测试链上,并调用(万字详细教程)

    目录 前言 一.准备工作 二.智能合约的编写 三.用java完成web3j调用 (一)定义为生成对应合约的bin 以及 abi 文件 (二).利用abi,bin文件生成solidity的java代码 ...

  3. 我自己可以挖矿了!使用Ethereum C++客户端Aleth建一个私有网络,并使用Remix部署一个智能合约

    本文是按照这个教程执行的结果记录:Creating a private network and deploying a contract with Remix Ethereum Aleth在Wins上 ...

  4. 使用web3部署一个比较复杂的智能合约

    以太坊系列之二十一 使用web3部署比较复杂的智能合约 搭建私链上的雷电网络 以太坊系列之二十一 使用web3部署比较复杂的智能合约 1 雷电网络智能合约简单介绍 2 remix 无法部署使用了lib ...

  5. 如何在私有链部署智能合约

    2017年12月25日 15:08:38 阅读数:5629 原文:How To Write, Deploy, and Interact with Ethereum Smart Contracts on ...

  6. Linux环境下搭建区块链私有链+部署智能合约

    文章目录 一.前期准备 二.安装goland环境 三.安装go版本的以太坊源码,并编译 四.私有链搭建 五.私有链节点加入 六.部署智能合约 七.参考链接 一.前期准备 安装更新相关组件 sudo y ...

  7. 从部署EOSIO到部署智能合约

    提示:如果你对EOSIO已经有了一定的了解,那么此文章能帮助你快速安装部署一个智能合约 文章目录 EOSIO简单介绍 一.部署EOSIO 1.安装 下载EOSIO源码 构建EOSIO二进制文件 安装E ...

  8. 代币转账_手把手教你从源代码开始搭建多节点以太坊私链(五)部署智能合约及代币发行...

    一.安装以太坊合约编译环境 安装solc 智能合约代码的编译可以通过第三方平台或者软件.不过,为了安全起见,还是搭建自己的编译器比较好.(But be aware that if the compil ...

  9. 10分钟部署一个数据中心

    VMworld 2014大会进一步明确了软件定义数据中心的内涵,并给出了快速部署解决方案--VMware超融合架构,十几分钟可以部署一个软件定义的数据中心. 8月25日,VMworld 2014在美国 ...

最新文章

  1. 修改Eclipse格式化代默认长度
  2. MFC:总结篇 CDialog 类
  3. 第一百零二节,JavaScript函数
  4. 成功解决ValueError: (‘Unknown transform primitive years. ‘, ‘Call ft.primitives.list_primitives() to get
  5. hashmap赋值给另一个hashmap_图解设计一个 HashMap
  6. 从动力学角度看优化算法SGD:一些小启示
  7. mongodb 索引建立问题
  8. dart系列之:dart语言中的特殊操作符
  9. java 水印乱码,linux java程序加水印及中文乱码方案
  10. 【Flink】CSV 文件写入 追加写入 CsvWriter 的使用
  11. git 应用 cherry-pick
  12. 云ubuntu服务器配置
  13. 单摆运动属于什么现象_物理模型中的隐含条件是什么
  14. 拓端tecdat|windows中用命令行执行R语言命令
  15. 【机房报修管理系统】后端篇(一) 设计数据表
  16. Go 语言入门系列:指针的基本应用
  17. 短除法对一个数分解质因数
  18. html5做宠物饲养,说一说最适合上班族养的十大宠物
  19. 探访广东第二鬼城,一座长在石油上的城市
  20. 雷蛇 笔记本 装linux,顺应民意:雷蛇考虑开发Linux版Blade游戏本

热门文章

  1. 内部类如何调用外部类的方法
  2. [firefox浏览器插件]记录一下自己经常用的插件
  3. 硬核推荐!Mac电脑必备软件/工具!
  4. 由于断电,重启服务器后,LVM卷组出现错误:ata1.00 status drdy err unc
  5. 服务器tcp连接上限问题解决:报错代码10060 由于连接方在一段时间后没有正确答复或连接的主机没有反应
  6. 仓库摆放示意图_仓库货物摆放标准精编版.docx
  7. 使用emcc工具编译最新的ffmpeg
  8. Maven项目中pox.xml文件报错以及项目编译错误
  9. Android中app进程ABI确定过程
  10. 基于 DataEase 完成上海4月27日病例居住地信息分析