diff --git a/deploy/1_deploy.js b/deploy/1_deploy.js index 65d40887..3dac1d78 100644 --- a/deploy/1_deploy.js +++ b/deploy/1_deploy.js @@ -62,13 +62,46 @@ module.exports = async ({ getUnnamedAccounts, deployments }) => { }); log(`Deployed Api3ServerV1 at ${api3ServerV1.address}`); - const proxyFactory = await deploy('ProxyFactory', { + const { address: proxyFactoryAddress, abi: proxyFactoryAbi } = await deploy('ProxyFactory', { from: accounts[0], args: [api3ServerV1.address], log: true, deterministicDeployment: process.env.DETERMINISTIC ? ethers.constants.HashZero : undefined, }); - log(`Deployed ProxyFactory at ${proxyFactory.address}`); + log(`Deployed ProxyFactory at ${proxyFactoryAddress}`); + + const proxyFactory = new ethers.Contract(proxyFactoryAddress, proxyFactoryAbi, (await ethers.getSigners())[0]); + const nodaryEthUsdDataFeedId = '0x4385954e058fbe6b6a744f32a4f89d67aad099f8fb8b23e7ea8dd366ae88151d'; + const expectedDataFeedProxyAddress = await proxyFactory.computeDataFeedProxyAddress(nodaryEthUsdDataFeedId, '0x'); + if ((await ethers.provider.getCode(expectedDataFeedProxyAddress)) === '0x') { + await proxyFactory.deployDataFeedProxy(nodaryEthUsdDataFeedId, '0x'); + log(`Deployed example DataFeedProxy at ${expectedDataFeedProxyAddress}`); + } + const ethUsdDapiName = ethers.utils.formatBytes32String('ETH/USD'); + const expectedDapiProxyAddress = await proxyFactory.computeDapiProxyAddress(ethUsdDapiName, '0x'); + if ((await ethers.provider.getCode(expectedDapiProxyAddress)) === '0x') { + await proxyFactory.deployDapiProxy(ethUsdDapiName, '0x'); + log(`Deployed example DapiProxy at ${expectedDapiProxyAddress}`); + } + const exampleOevBeneficiaryAddress = (await ethers.getSigners())[0].address; + const expectedDataFeedProxyWithOevAddress = await proxyFactory.computeDataFeedProxyWithOevAddress( + nodaryEthUsdDataFeedId, + exampleOevBeneficiaryAddress, + '0x' + ); + if ((await ethers.provider.getCode(expectedDataFeedProxyWithOevAddress)) === '0x') { + await proxyFactory.deployDataFeedProxyWithOev(nodaryEthUsdDataFeedId, exampleOevBeneficiaryAddress, '0x'); + log(`Deployed example DataFeedProxyWithOev at ${expectedDataFeedProxyWithOevAddress}`); + } + const expectedDapiProxyWithOevAddress = await proxyFactory.computeDapiProxyWithOevAddress( + ethUsdDapiName, + exampleOevBeneficiaryAddress, + '0x' + ); + if ((await ethers.provider.getCode(expectedDapiProxyWithOevAddress)) === '0x') { + await proxyFactory.deployDapiProxyWithOev(ethUsdDapiName, exampleOevBeneficiaryAddress, '0x'); + log(`Deployed example DapiProxyWithOev at ${expectedDapiProxyWithOevAddress}`); + } if ([...chainsSupportedByOevRelay].includes(network.name)) { let tokenAddress = tokenAddresses.usdc[network.name]; diff --git a/deploy/3_verify.js b/deploy/3_verify.js index 59d5fcf6..ce928825 100644 --- a/deploy/3_verify.js +++ b/deploy/3_verify.js @@ -43,6 +43,47 @@ module.exports = async ({ getUnnamedAccounts, deployments }) => { constructorArguments: [Api3ServerV1.address], }); + const proxyFactory = new hre.ethers.Contract( + ProxyFactory.address, + ProxyFactory.abi, + (await hre.ethers.getSigners())[0] + ); + const nodaryEthUsdDataFeedId = '0x4385954e058fbe6b6a744f32a4f89d67aad099f8fb8b23e7ea8dd366ae88151d'; + const expectedDataFeedProxyAddress = await proxyFactory.computeDataFeedProxyAddress(nodaryEthUsdDataFeedId, '0x'); + await hre.run('verify:verify', { + address: expectedDataFeedProxyAddress, + constructorArguments: [Api3ServerV1.address, nodaryEthUsdDataFeedId], + }); + const ethUsdDapiName = hre.ethers.utils.formatBytes32String('ETH/USD'); + const expectedDapiProxyAddress = await proxyFactory.computeDapiProxyAddress(ethUsdDapiName, '0x'); + await hre.run('verify:verify', { + address: expectedDapiProxyAddress, + constructorArguments: [Api3ServerV1.address, hre.ethers.utils.keccak256(ethUsdDapiName)], + }); + const testOevBeneficiaryAddress = (await hre.ethers.getSigners())[0].address; + const expectedDataFeedProxyWithOevAddress = await proxyFactory.computeDataFeedProxyWithOevAddress( + nodaryEthUsdDataFeedId, + testOevBeneficiaryAddress, + '0x' + ); + await hre.run('verify:verify', { + address: expectedDataFeedProxyWithOevAddress, + constructorArguments: [Api3ServerV1.address, nodaryEthUsdDataFeedId, testOevBeneficiaryAddress], + }); + const expectedDapiProxyWithOevAddress = await proxyFactory.computeDapiProxyWithOevAddress( + ethUsdDapiName, + testOevBeneficiaryAddress, + '0x' + ); + await hre.run('verify:verify', { + address: expectedDapiProxyWithOevAddress, + constructorArguments: [ + Api3ServerV1.address, + hre.ethers.utils.keccak256(ethUsdDapiName), + testOevBeneficiaryAddress, + ], + }); + if ([...chainsSupportedByOevRelay].includes(network.name)) { let tokenAddress = tokenAddresses.usdc[network.name]; if (!tokenAddress) {