diff --git a/packages/currency/src/native.ts b/packages/currency/src/native.ts index ec6bf066e2..dc1fa018d2 100644 --- a/packages/currency/src/native.ts +++ b/packages/currency/src/native.ts @@ -15,6 +15,12 @@ export const nativeCurrencies: Record ``` -#### Compute the contract addresses +### Compute the contract addresses Run: @@ -152,13 +128,21 @@ yarn hardhat compute-contract-addresses It will compute the addresses of the contracts to be deployed via the request deployer. -#### Deploy the contracts +### Deploy the contracts Depending on the xdeployer config, this script will deploy the smart contracts on several chain simultaneously Environment variables needed: `ADMIN_PRIVATE_KEY` You will need the request deployer to be deployed. Then run: +To deploy all contracts to one network, use: + +```bash +NETWORK= yarn hardhat deploy-contracts-through-deployer +``` + +If you want to deploy all contracts on all networks: + ```bash yarn hardhat deploy-contracts-through-deployer ``` @@ -171,17 +155,45 @@ This command will output details about each contract deployment on each chain: - If already deployed: the network, and the contract address - If an error occured: the said error -#### Verify the contracts +### Verify the contracts -For each network the contract were deployed to run: +Verify and publish the contract code automatically to blockchain explorers, right after smart contracts compilation. You should first set the `ETHERSCAN_API_KEY` environment variable. ```bash yarn hardhat verify-contract-from-deployer --network ``` -The associated `EXPLORER_API_KEY` is mandatory. +#### Verify the contracts manually With Hardhat (legacy) -### Tests +A more generic way to verify any contract by setting constructor argments manually: + +```bash +yarn hardhat verify --network NETWORK_NAME DEPLOYED_CONTRACT_ADDRESS "Constructor argument 1" +``` + +### Deprecated payment deployment scripts (legacy) + +The goal of this script is to let all our payment contracts be deployed with the same sequence on every chain. + +The script also verify deployed contracts. + +**Be sure that artifacts are up-to-date with most recent deployments** + +Environment variables needed: `ETHERSCAN_API_KEY`, `ADMIN_WALLET_ADDRESS`, `DEPLOYMENT_PRIVATE_KEY` + +```bash +# First check what will be done +yarn hardhat deploy-live-payments --network matic --dry-run + +# Run +yarn hardhat deploy-live-payments --network matic + +# To test locally +yarn hardhat deploy-live-payments --network private --force +yarn hardhat deploy-live-payments --network private --force --dry-run +``` + +## Tests After a local deployment: @@ -195,14 +207,6 @@ Networks and providers are configured in [hardhat.config.ts](hardhat.config.ts). Have a look at the [Hardhat documentation](https://hardhat.org/config/). -## Contract verification with Hardhat - -Verify and publish the contract code automatically to blockchain explorers, right after smart contracts compilation. You should first set the `ETHERSCAN_API_KEY` environment variable. - -```bash -yarn hardhat verify --network NETWORK_NAME DEPLOYED_CONTRACT_ADDRESS "Constructor argument 1" -``` - ## Contributing Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. diff --git a/packages/smart-contracts/hardhat.config.ts b/packages/smart-contracts/hardhat.config.ts index c9369f911f..f12fdc0d4b 100644 --- a/packages/smart-contracts/hardhat.config.ts +++ b/packages/smart-contracts/hardhat.config.ts @@ -11,8 +11,8 @@ import { checkCreate2Deployer } from './scripts-create2/check-deployer'; import { deployDeployer } from './scripts-create2/deploy-request-deployer'; import { HardhatRuntimeEnvironmentExtended } from './scripts-create2/types'; import { computeCreate2DeploymentAddressesFromList } from './scripts-create2/compute-one-address'; -import { VerifyCreate2FromList } from './scripts-create2/verify-one'; -import { deployWithCreate2FromList } from './scripts-create2/deploy-one'; +import { VerifyCreate2FromList } from './scripts-create2/verify'; +import { deployWithCreate2FromList } from './scripts-create2/deploy'; import utils from '@requestnetwork/utils'; config(); @@ -69,6 +69,11 @@ export default { chainId: 4, accounts, }, + goerli: { + url: process.env.WEB3_PROVIDER_URL || 'https://goerli.infura.io/v3/YOUR_API_KEY', + chainId: 5, + accounts, + }, matic: { url: url('matic'), chainId: 137, @@ -124,6 +129,7 @@ export default { apiKey: { mainnet: process.env.ETHERSCAN_API_KEY, rinkeby: process.env.ETHERSCAN_API_KEY, + goerli: process.env.ETHERSCAN_API_KEY, // binance smart chain bsc: process.env.BSCSCAN_API_KEY, bscTestnet: process.env.BSCSCAN_API_KEY, diff --git a/packages/smart-contracts/scripts-create2/compute-one-address.ts b/packages/smart-contracts/scripts-create2/compute-one-address.ts index 17ebcc5c84..7e8c4809a7 100644 --- a/packages/smart-contracts/scripts-create2/compute-one-address.ts +++ b/packages/smart-contracts/scripts-create2/compute-one-address.ts @@ -52,11 +52,19 @@ export const computeCreate2DeploymentAddressesFromList = async ( switch (contract) { case 'EthereumProxy': case 'EthereumFeeProxy': + case 'ETHConversionProxy': + case 'ERC20FeeProxy': case 'Erc20ConversionProxy': + case 'ERC20EscrowToPay': + case 'BatchPayments': case 'ERC20SwapToConversion': { - const constructorArgs = getConstructorArgs(contract); - address = await computeCreate2DeploymentAddress({ contract, constructorArgs }, hre); - console.log(`${contract.padEnd(36, ' ')}${address}`); + try { + const constructorArgs = getConstructorArgs(contract, hre.network.name); + address = await computeCreate2DeploymentAddress({ contract, constructorArgs }, hre); + console.log(`${contract.padEnd(36, ' ')}${address}`); + } catch (e) { + console.warn(`ERROR computing address of ${contract}: ${e}`); + } break; } // Other cases to add when necessary diff --git a/packages/smart-contracts/scripts-create2/constructor-args.ts b/packages/smart-contracts/scripts-create2/constructor-args.ts index 1d462ff125..db9d4952e6 100644 --- a/packages/smart-contracts/scripts-create2/constructor-args.ts +++ b/packages/smart-contracts/scripts-create2/constructor-args.ts @@ -1,27 +1,33 @@ import * as artifacts from '../src/lib'; +const getAdminWalletAddress = (contract: string): string => { + if (!process.env.ADMIN_WALLET_ADDRESS) { + throw new Error(`ADMIN_WALLET_ADDRESS missing to get constructor args for: ${contract}`); + } + return process.env.ADMIN_WALLET_ADDRESS; +}; + export const getConstructorArgs = (contract: string, network?: string): string[] => { switch (contract) { case 'Erc20ConversionProxy': { - if (!process.env.ADMIN_WALLET_ADDRESS) { - throw new Error(`ADMIN_WALLET_ADDRESS missing to get constructor args for: ${contract}`); - } return [ '0x0000000000000000000000000000000000000000', '0x0000000000000000000000000000000000000000', - process.env.ADMIN_WALLET_ADDRESS, + getAdminWalletAddress(contract), + ]; + } + case 'ETHConversionProxy': { + return [ + '0x0000000000000000000000000000000000000000', + '0x0000000000000000000000000000000000000000', + '0x39e19aa5b69466dfdc313c7cda37cb2a599015cd', ]; + // TODO setupETHConversionProxy } case 'ERC20SwapToConversion': { - if (!process.env.ADMIN_WALLET_ADDRESS) { - throw new Error(`ADMIN_WALLET_ADDRESS missing to get constructor args for: ${contract}`); - } - return [process.env.ADMIN_WALLET_ADDRESS]; + return [getAdminWalletAddress(contract)]; } case 'ERC20EscrowToPay': { - if (!process.env.ADMIN_WALLET_ADDRESS) { - throw new Error(`ADMIN_WALLET_ADDRESS missing to get constructor args for: ${contract}`); - } if (!network) { throw new Error( 'Escrow contract requires network parameter to get correct address of erc20FeeProxy', @@ -29,12 +35,9 @@ export const getConstructorArgs = (contract: string, network?: string): string[] } const erc20FeeProxy = artifacts.erc20FeeProxyArtifact; const erc20FeeProxyAddress = erc20FeeProxy.getAddress(network); - return [erc20FeeProxyAddress, process.env.ADMIN_WALLET_ADDRESS]; + return [erc20FeeProxyAddress, getAdminWalletAddress(contract)]; } case 'BatchPayments': { - if (!process.env.ADMIN_WALLET_ADDRESS) { - throw new Error(`ADMIN_WALLET_ADDRESS missing to get constructor args for: ${contract}`); - } if (!network) { throw new Error( 'Batch contract requires network parameter to get correct address of erc20FeeProxy and ethereumFeeProxy', @@ -43,7 +46,7 @@ export const getConstructorArgs = (contract: string, network?: string): string[] return [ '0x0000000000000000000000000000000000000000', '0x0000000000000000000000000000000000000000', - process.env.ADMIN_WALLET_ADDRESS, + getAdminWalletAddress(contract), ]; } default: diff --git a/packages/smart-contracts/scripts-create2/contract-setup/setupETHConversionProxy.ts b/packages/smart-contracts/scripts-create2/contract-setup/setupETHConversionProxy.ts new file mode 100644 index 0000000000..28d1c974d9 --- /dev/null +++ b/packages/smart-contracts/scripts-create2/contract-setup/setupETHConversionProxy.ts @@ -0,0 +1,47 @@ +import { batchPaymentsArtifact } from '../../src/lib'; +import { HardhatRuntimeEnvironmentExtended } from '../types'; +import utils from '@requestnetwork/utils'; +import { updateChainlinkConversionPath, updatePaymentErc20FeeProxy } from './adminTasks'; + +/** + * Updates the values of the batch fees of the BatchPayments contract, if needed + * @param contractAddress address of the BatchPayments Proxy + * @param hre Hardhat runtime environment + */ +export const setupEthConversionProxy = async ( + contractAddress: string, + hre: HardhatRuntimeEnvironmentExtended, +): Promise => { + // Setup contract parameters + const EthConversionProxyContract = new hre.ethers.Contract( + contractAddress, + batchPaymentsArtifact.getContractAbi(), + ); + await Promise.all( + hre.config.xdeploy.networks.map(async (network) => { + let provider; + if (network === 'celo') { + provider = utils.getCeloProvider(); + } else { + provider = utils.getDefaultProvider(network); + } + const wallet = new hre.ethers.Wallet(hre.config.xdeploy.signer, provider); + const signer = wallet.connect(provider); + const EthConversionProxyConnected = await EthConversionProxyContract.connect(signer); + const adminNonce = await signer.getTransactionCount(); + const gasPrice = await provider.getGasPrice(); + + // start from the adminNonce, increase gasPrice if needed + await Promise.all([ + updatePaymentErc20FeeProxy(EthConversionProxyConnected, network, adminNonce, gasPrice), + updateChainlinkConversionPath( + EthConversionProxyConnected, + network, + adminNonce + 1, + gasPrice, + ), + ]); + }), + ); + console.log('Setup for EthConversionProxy successful'); +}; diff --git a/packages/smart-contracts/scripts-create2/contract-setup/setups.ts b/packages/smart-contracts/scripts-create2/contract-setup/setups.ts new file mode 100644 index 0000000000..88f85e030b --- /dev/null +++ b/packages/smart-contracts/scripts-create2/contract-setup/setups.ts @@ -0,0 +1,168 @@ +import { HardhatRuntimeEnvironmentExtended } from '../types'; +import { erc20SwapConversionArtifact } from '../../src/lib'; +import { batchPaymentsArtifact } from '../../src/lib'; +import utils from '@requestnetwork/utils'; +import { + updateBatchPaymentFees, + updatePaymentErc20FeeProxy, + updatePaymentEthFeeProxy, + updateChainlinkConversionPath, + updateRequestSwapFees, + updateSwapRouter, +} from './adminTasks'; + +/** + * Updates the values of the batch fees of the BatchPayments contract, if needed + * @param contractAddress address of the BatchPayments Proxy + * @param hre Hardhat runtime environment + */ +const setupBatchPayments = async ( + contractAddress: string, + hre: HardhatRuntimeEnvironmentExtended, +): Promise => { + // Setup contract parameters + const batchPaymentContract = new hre.ethers.Contract( + contractAddress, + batchPaymentsArtifact.getContractAbi(), + ); + await Promise.all( + hre.config.xdeploy.networks.map(async (network) => { + let provider; + if (network === 'celo') { + provider = utils.getCeloProvider(); + } else { + provider = utils.getDefaultProvider(network); + } + const wallet = new hre.ethers.Wallet(hre.config.xdeploy.signer, provider); + const signer = wallet.connect(provider); + const batchPaymentConnected = await batchPaymentContract.connect(signer); + const adminNonce = await signer.getTransactionCount(); + const gasPrice = await provider.getGasPrice(); + + // start from the adminNonce, increase gasPrice if needed + await Promise.all([ + updateBatchPaymentFees(batchPaymentConnected, adminNonce, gasPrice.mul(2)), + updatePaymentErc20FeeProxy(batchPaymentConnected, network, adminNonce + 1, gasPrice.mul(2)), + updatePaymentEthFeeProxy(batchPaymentConnected, network, adminNonce + 2, gasPrice.mul(2)), + ]); + }), + ); + console.log('Setup for setupBatchPayment successful'); +}; + +/** + * Updates the values of the chainlinkConversionPath and swap router of the ERC20SwapToConversion contract, if needed + * @param contractAddress address of the ERC20SwapToConversion Proxy + * @param hre Hardhat runtime environment + */ +const setupERC20SwapToConversion = async ( + contractAddress: string, + hre: HardhatRuntimeEnvironmentExtended, +): Promise => { + // Setup contract parameters + const ERC20SwapToConversionContract = new hre.ethers.Contract( + contractAddress, + erc20SwapConversionArtifact.getContractAbi(), + ); + await Promise.all( + hre.config.xdeploy.networks.map(async (network) => { + let provider; + if (network === 'celo') { + provider = utils.getCeloProvider(); + } else { + provider = utils.getDefaultProvider(network); + } + const wallet = new hre.ethers.Wallet(hre.config.xdeploy.signer, provider); + const signer = wallet.connect(provider); + const ERC20SwapToConversionConnected = await ERC20SwapToConversionContract.connect(signer); + const adminNonce = await signer.getTransactionCount(); + const gasPrice = await provider.getGasPrice(); + + await Promise.all([ + updateChainlinkConversionPath( + ERC20SwapToConversionConnected, + network, + adminNonce, + gasPrice, + ), + updateSwapRouter(ERC20SwapToConversionConnected, network, adminNonce + 1, gasPrice), + updateRequestSwapFees(ERC20SwapToConversionConnected, adminNonce + 2, gasPrice), + ]); + }), + ); + console.log('Setup for ERC20SwapToConversion successfull'); +}; + +/** + * Updates the values of the EthConversionProxy contract, if needed + * @param contractAddress address of the EthConversion Proxy + * @param hre Hardhat runtime environment + */ +const setupEthConversionProxy = async ( + contractAddress: string, + hre: HardhatRuntimeEnvironmentExtended, +): Promise => { + // Setup contract parameters + const EthConversionProxyContract = new hre.ethers.Contract( + contractAddress, + batchPaymentsArtifact.getContractAbi(), + ); + await Promise.all( + hre.config.xdeploy.networks.map(async (network) => { + let provider; + if (network === 'celo') { + provider = utils.getCeloProvider(); + } else { + provider = utils.getDefaultProvider(network); + } + const wallet = new hre.ethers.Wallet(hre.config.xdeploy.signer, provider); + const signer = wallet.connect(provider); + const EthConversionProxyConnected = await EthConversionProxyContract.connect(signer); + const adminNonce = await signer.getTransactionCount(); + const gasPrice = await provider.getGasPrice(); + + // start from the adminNonce, increase gasPrice if needed + await Promise.all([ + updatePaymentErc20FeeProxy(EthConversionProxyConnected, network, adminNonce, gasPrice), + updateChainlinkConversionPath( + EthConversionProxyConnected, + network, + adminNonce + 1, + gasPrice, + ), + ]); + }), + ); + console.log('Setup for EthConversionProxy successful'); +}; + +/** + * Updates the values of either BatchPayments, EthConversionProxy, or ERC20SwapToConversion contract, if needed + * @param contractAddress address of the proxy + * @param hre Hardhat runtime environment + * @param contractName name of the contract + */ +export const setupContract = async ( + contractAddress: string, + hre: HardhatRuntimeEnvironmentExtended, + contractName: string, +): Promise => { + switch (contractName) { + case 'EthConversionProxy': { + await setupEthConversionProxy(contractAddress, hre); + break; + } + case 'ERC20SwapToConversion': { + await setupERC20SwapToConversion(contractAddress, hre); + break; + } + case 'BatchPayments': { + await setupBatchPayments(contractAddress, hre); + break; + } + default: { + console.log('Contract name not found'); + break; + } + } +}; diff --git a/packages/smart-contracts/scripts-create2/deploy-request-deployer.ts b/packages/smart-contracts/scripts-create2/deploy-request-deployer.ts index 1138f15686..34fbdcc373 100644 --- a/packages/smart-contracts/scripts-create2/deploy-request-deployer.ts +++ b/packages/smart-contracts/scripts-create2/deploy-request-deployer.ts @@ -1,6 +1,6 @@ import { HardhatRuntimeEnvironment } from 'hardhat/types'; import { HardhatRuntimeEnvironmentExtended } from './types'; -import { verifyOne } from './verify-one'; +import { verifyOne } from './verify'; // Deploys, set up the contracts export async function deployDeployer(hre: HardhatRuntimeEnvironment): Promise { diff --git a/packages/smart-contracts/scripts-create2/deploy-one.ts b/packages/smart-contracts/scripts-create2/deploy.ts similarity index 93% rename from packages/smart-contracts/scripts-create2/deploy-one.ts rename to packages/smart-contracts/scripts-create2/deploy.ts index 3cf7c0c73a..ec15644fac 100644 --- a/packages/smart-contracts/scripts-create2/deploy-one.ts +++ b/packages/smart-contracts/scripts-create2/deploy.ts @@ -18,7 +18,7 @@ export const deployOneWithCreate2 = async ( const deploymentResult = await xdeploy(deploymentParams, hre); for (let i = 0; i < hre.config.xdeploy.networks.length; i++) { if (deploymentResult[i].deployed) { - console.log(`${deploymentParams.contract} succesffuly deployed:`); + console.log(`${deploymentParams.contract} successfully deployed:`); console.log(` On network: ${hre.config.xdeploy.networks[i]}`); console.log(` At address: ${deploymentResult[i].address}`); console.log(` At block: ${deploymentResult[i].receipt.blockNumber}`); @@ -53,6 +53,8 @@ export const deployWithCreate2FromList = async ( switch (contract) { case 'EthereumProxy': case 'EthereumFeeProxy': + case 'ETHConversionProxy': + case 'ERC20FeeProxy': case 'Erc20ConversionProxy': { const constructorArgs = getConstructorArgs(contract); await deployOneWithCreate2({ contract, constructorArgs }, hre); @@ -79,7 +81,7 @@ export const deployWithCreate2FromList = async ( } // Other cases to add when necessary default: - throw new Error(`The contrat ${contract} is not to be deployed using the CREATE2 scheme`); + throw new Error(`The contract ${contract} is not to be deployed using the CREATE2 scheme`); } } }; diff --git a/packages/smart-contracts/scripts-create2/utils.ts b/packages/smart-contracts/scripts-create2/utils.ts index 5f0fe3d9d8..421bba148c 100644 --- a/packages/smart-contracts/scripts-create2/utils.ts +++ b/packages/smart-contracts/scripts-create2/utils.ts @@ -9,6 +9,8 @@ import * as artifacts from '../src/lib'; export const create2ContractDeploymentList = [ 'EthereumProxy', 'EthereumFeeProxy', + 'ETHConversionProxy', + 'ERC20FeeProxy', 'Erc20ConversionProxy', 'ERC20SwapToConversion', 'ERC20EscrowToPay', diff --git a/packages/smart-contracts/scripts-create2/verify-one.ts b/packages/smart-contracts/scripts-create2/verify.ts similarity index 97% rename from packages/smart-contracts/scripts-create2/verify-one.ts rename to packages/smart-contracts/scripts-create2/verify.ts index 2b5875240c..cc8648e862 100644 --- a/packages/smart-contracts/scripts-create2/verify-one.ts +++ b/packages/smart-contracts/scripts-create2/verify.ts @@ -27,6 +27,8 @@ export async function VerifyCreate2FromList(hre: HardhatRuntimeEnvironmentExtend switch (contract) { case 'EthereumProxy': case 'EthereumFeeProxy': + case 'ETHConversionProxy': + case 'ERC20FeeProxy': case 'ERC20SwapToConversion': case 'Erc20ConversionProxy': { const constructorArgs = getConstructorArgs(contract); diff --git a/packages/smart-contracts/src/lib/artifacts/BatchPayments/index.ts b/packages/smart-contracts/src/lib/artifacts/BatchPayments/index.ts index e0de6d9db8..b62fc9924a 100644 --- a/packages/smart-contracts/src/lib/artifacts/BatchPayments/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/BatchPayments/index.ts @@ -17,6 +17,10 @@ export const batchPaymentsArtifact = new ContractArtifact( address: '0x0DD57FFe83a53bCbd657e234B16A3e74fEDb8fBA', creationBlockNumber: 10857190, }, + goerli: { + address: '0x0DD57FFe83a53bCbd657e234B16A3e74fEDb8fBA', + creationBlockNumber: 7091488, + }, mainnet: { address: '0x0DD57FFe83a53bCbd657e234B16A3e74fEDb8fBA', creationBlockNumber: 14884721, diff --git a/packages/smart-contracts/src/lib/artifacts/ChainlinkConversionPath/index.ts b/packages/smart-contracts/src/lib/artifacts/ChainlinkConversionPath/index.ts index 7ebde79521..ee0761fde6 100644 --- a/packages/smart-contracts/src/lib/artifacts/ChainlinkConversionPath/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/ChainlinkConversionPath/index.ts @@ -22,6 +22,10 @@ export const chainlinkConversionPath = new ContractArtifact( address: '0xEbe28A2B7336670Ba752bfEad4a121D2c4FF2464', creationBlockNumber: 10461945, }, + goerli: { + address: '0xEbe28A2B7336670Ba752bfEad4a121D2c4FF2464', + creationBlockNumber: 10461945, + }, matic: { address: '0xc7f471F5A8f8b33F131049b1e9A43941CbE31792', creationBlockNumber: 29821569, diff --git a/packages/smart-contracts/src/lib/artifacts/ERC20FeeProxy/index.ts b/packages/smart-contracts/src/lib/artifacts/ERC20FeeProxy/index.ts index f3c6024a5b..dd64ee33e5 100644 --- a/packages/smart-contracts/src/lib/artifacts/ERC20FeeProxy/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/ERC20FeeProxy/index.ts @@ -21,6 +21,10 @@ export const erc20FeeProxyArtifact = new ContractArtifact( address: '0xda46309973bFfDdD5a10cE12c44d2EE266f45A44', creationBlockNumber: 7118080, }, + goerli: { + address: '0x399F5EE127ce7432E4921a61b8CF52b0af52cbfE', + creationBlockNumber: 7091472, + }, matic: { address: '0x2171a0dc12a9E5b1659feF2BB20E54c84Fa7dB0C', creationBlockNumber: 14163521, diff --git a/packages/smart-contracts/src/lib/artifacts/ERC20SwapToPay/index.ts b/packages/smart-contracts/src/lib/artifacts/ERC20SwapToPay/index.ts index 4a03696db1..ad9a3ff5eb 100644 --- a/packages/smart-contracts/src/lib/artifacts/ERC20SwapToPay/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/ERC20SwapToPay/index.ts @@ -21,6 +21,10 @@ export const erc20SwapToPayArtifact = new ContractArtifact( address: '0xb674e3d228e631594D8fd4BF947E1811288bf836', creationBlockNumber: 7363204, }, + goerli: { + address: '0x0Ef49176A87Adcc88bD5125126C6a6c23a28303C', + creationBlockNumber: 7109102, + }, }, }, '0.3.0': { diff --git a/packages/smart-contracts/src/lib/artifacts/Erc20ConversionProxy/index.ts b/packages/smart-contracts/src/lib/artifacts/Erc20ConversionProxy/index.ts index 830cbf6eca..dc1e7ce920 100644 --- a/packages/smart-contracts/src/lib/artifacts/Erc20ConversionProxy/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/Erc20ConversionProxy/index.ts @@ -22,6 +22,10 @@ export const erc20ConversionProxy = new ContractArtifact( address: '0x78334ed20da456e89cd7e5a90de429d705f5bc88', creationBlockNumber: 8014584, }, + goerli: { + address: '0x493d6cBeE0142c73eE5461fA92CaC94e3e75df62', + creationBlockNumber: 7091387, + }, matic: { address: '0xf0f49873C50765239F6f9534Ba13c4fe16eD5f2E', creationBlockNumber: 17427747, diff --git a/packages/smart-contracts/src/lib/artifacts/Erc20SwapConversion/index.ts b/packages/smart-contracts/src/lib/artifacts/Erc20SwapConversion/index.ts index 5f221c55a8..8eae29f28c 100644 --- a/packages/smart-contracts/src/lib/artifacts/Erc20SwapConversion/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/Erc20SwapConversion/index.ts @@ -63,6 +63,10 @@ export const erc20SwapConversionArtifact = new ContractArtifact( address: '0xCa3353a15fCb5C83a1Ff64BFf055781aC5c4d2F4', creationBlockNumber: 9447194, }, + goerli: { + address: '0xED250D9219EB93098Bb67aEbc992963172B9c8DA', + creationBlockNumber: 7108896, + }, fantom: { address: '0xCa3353a15fCb5C83a1Ff64BFf055781aC5c4d2F4', creationBlockNumber: 20066436, diff --git a/packages/smart-contracts/src/lib/artifacts/EthereumFeeProxy/index.ts b/packages/smart-contracts/src/lib/artifacts/EthereumFeeProxy/index.ts index 40f2adb12f..06dd436767 100644 --- a/packages/smart-contracts/src/lib/artifacts/EthereumFeeProxy/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/EthereumFeeProxy/index.ts @@ -17,6 +17,10 @@ export const ethereumFeeProxyArtifact = new ContractArtifact( address: '0xC6E23a20C0a1933ACC8E30247B5D1e2215796C1F', creationBlockNumber: 9447193, }, + goerli: { + address: '0xe11BF2fDA23bF0A98365e1A4c04A87C9339e8687', + creationBlockNumber: 7091386, + }, fantom: { address: '0xC6E23a20C0a1933ACC8E30247B5D1e2215796C1F', creationBlockNumber: 20066431, diff --git a/packages/smart-contracts/src/lib/artifacts/EthereumProxy/index.ts b/packages/smart-contracts/src/lib/artifacts/EthereumProxy/index.ts index 85e0e9a302..527cedbb78 100644 --- a/packages/smart-contracts/src/lib/artifacts/EthereumProxy/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/EthereumProxy/index.ts @@ -21,6 +21,10 @@ export const ethereumProxyArtifact = new ContractArtifact( address: '0x9c6c7817e3679c4b3f9ef9486001eae5aaed25ff', creationBlockNumber: 5955681, }, + goerli: { + address: '0x171Ee0881407d4c0C11eA1a2FB7D5b4cdED71e6e', + creationBlockNumber: 7069045, + }, xdai: { address: '0x27c60BE17e853c47A9F1d280B05365f483c2dFAF', creationBlockNumber: 18326895, diff --git a/packages/smart-contracts/src/lib/artifacts/RequestDeployer/index.ts b/packages/smart-contracts/src/lib/artifacts/RequestDeployer/index.ts index f43aa72293..1a8522cbf4 100644 --- a/packages/smart-contracts/src/lib/artifacts/RequestDeployer/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/RequestDeployer/index.ts @@ -21,6 +21,10 @@ export const requestDeployer = new ContractArtifact( address: '0xE99Ab70a5FAE59551544FA326fA048f7B95A24B2', creationBlockNumber: 10307305, }, + goerli: { + address: '0xE99Ab70a5FAE59551544FA326fA048f7B95A24B2', + creationBlockNumber: 7068867, + }, 'arbitrum-rinkeby': { address: '0xE99Ab70a5FAE59551544FA326fA048f7B95A24B2', creationBlockNumber: 10382055, diff --git a/packages/smart-contracts/src/lib/artifacts/RequestHashStorage/index.ts b/packages/smart-contracts/src/lib/artifacts/RequestHashStorage/index.ts index e3e0981d6b..d9b4ae963c 100644 --- a/packages/smart-contracts/src/lib/artifacts/RequestHashStorage/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/RequestHashStorage/index.ts @@ -21,6 +21,10 @@ export const requestHashStorageArtifact = new ContractArtifact