背景:
有开发者反映,使用ganache-cli fork和hardhat fork 对OKC主网进行测试的时候经常遇到失败的情况。这是因为OKC主网的RPC节点并不会对历史区块的数据进行保留,因此会导致数据请求失败,无法进行fork。下面我介绍一下对OKC主网进行fork的正确方法。
使用说明:
第一:对OKC主网进行fork不要使用常规RPC节点,请使用专有主网节点: http://35.72.176.238:26659;测试网专有节点: http://18.167.77.79:26657/
第二:该节点仅保留整万块的历史区块以及最近一千块,因此在指定区块进行fork的时候,请确认区块号是否符合要求,如果不指定区块默认fork最新区块。
比如:假设区块号是N, N应该满足以下条件
可以使用整万块的区块号: N % 10000 = 0
可以使用最近一千块的区块号: latest - N < 1000
注意
该节点可能会出现区块延迟等情况,因此只能用于fork测试,不建议用于发送正常请求
举例:
ganache模拟命令如下
ganache-cli --fork http://13.230.141.168:26659@10910000 -u "0xeB196a61f9A1E35Bf5053b65AAA57c5541dcBa86"//模拟指定账户
hardhat在hardhat.config.js中加入如下内容可实现主网fork
module.exports = {
solidity: {
version: "0.8.0",
settings: {
optimizer: {
enabled: true,
runs: 200
}
}
},
networks: {
hardhat: {
forking: {
url: "http://43.206.83.79:26657/"
// blockNumber: 10910000
}
}
}
};