合约"/>
hardhat同时编译不同版本的智能合约
hardhat可以同时编译不同版本的.sol智能合约,只需要在hardhat.config.ts或hardhat.config.js配置文件的compilers/version字段添加对应的版本号即可。比如,同时编译 solc-v0.4.26、v0.5.12、v0.6.12的sol智能合约,则新增一个compilers/version字段,在该字段里添加版本号即可。这里以hardhat v2.6.5为例进行说明。
配置文件hardhat.config.js 或 hardhat.config.ts
修改前
require("@nomiclabs/hardhat-waffle");module.exports = {solidity: "0.6.12", //修改此处networks: {localhost: {url: "http://127.0.0.1:8545"},// ropsten: {// url: `/${ALCHEMY_API_KEY}`,// accounts: [`0x${ROPSTEN_PRIVATE_KEY}`]// },}};
修改后
require("@nomiclabs/hardhat-waffle");module.exports = {solidity: {compilers: [ //可指定多个sol版本{version: "0.4.26"},{version: "0.5.12"},{version: "0.6.12"}]},networks: {localhost: {url: "http://127.0.0.1:8545"},// ropsten: {// url: `/${ALCHEMY_API_KEY}`,// accounts: [`0x${ROPSTEN_PRIVATE_KEY}`]// },}
};
或者指定其硬分叉的版本
solidity: {compilers: [{version: "0.5.16", settings: {optimizer: {enabled: true,runs: 200,},evmVersion: "istanbul"}},{version: "0.6.6",settings: {optimizer: {enabled: true,runs: 200,},evmVersion: "istanbul" }}]},
附录: 以太坊硬分叉
代号 | 时间 | 区块高度 | 修改项 |
---|---|---|---|
london | 2021年8月 | 12965000 | 伦敦版本,引入EIP-1559、EIP-3554、EIP-3198等协议、支持POS共识、LAY2分片 |
berlin | 2021年4月 | 1224400 | 柏林版本,执行多种类型的交易,节省EVM的gas费用 |
istanbul | 2019年8月 | 9069000 | 伊斯坦布尔版本,优化SNARKs和STARKs的第2层扩展解决方案性能,加强对拒绝服务的抵抗力 |
constantinople | 2019年2月 | 7280000 | 君士坦丁堡版本,优化EVM的gas执行费用 |
byzantium | 2017年10月 | 4370000 | 拜占庭版本,区块奖励由5ETH降到3ETH,将难度炸弹延迟1年 |
spuriousDragon | 2016年11月 | 2675000 | 幻龙版本,调整操作码定价,抵御重放攻击 |
tangerineWhite | 2016年10月 | 2463000 | 白橘子版本,抵御DOS攻击 |
DAO | 2016年7月 | 1920000 | DAO版本,因DAO合约被黑客攻击事件,导致以太坊分裂为2条链:ETC和ETH,ETC是经典以太坊,其chainId=61,ETH是现在的mainnet主网,其chainId=1 |
homestead | 2016年3月 | 1150000 | 家园版本, 是初始版本,定义了网络和服务 |
参考文献
[1] 以太坊硬分叉历史
[2] hardhat编译设置
[3] 主网、测试网的chainID含义
更多推荐
hardhat同时编译不同版本的智能合约
发布评论