From 3c0c646186c4180d26025abe625ac1338acf0ec3 Mon Sep 17 00:00:00 2001 From: Kirill Fedoseev Date: Mon, 11 May 2020 20:19:46 +0300 Subject: [PATCH] Add new upgrade script --- test/erc_to_native/foreign_bridge.test.js | 1 - upgrade/.env.example | 3 ++- upgrade/src/upgradeBridgeOnForeign.js | 15 ++++++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/test/erc_to_native/foreign_bridge.test.js b/test/erc_to_native/foreign_bridge.test.js index 9a5efb47..7436e0b0 100644 --- a/test/erc_to_native/foreign_bridge.test.js +++ b/test/erc_to_native/foreign_bridge.test.js @@ -2220,7 +2220,6 @@ contract('ForeignBridge_ERC20_to_Native', async accounts => { otherSideBridge.address ).should.be.fulfilled - await sai.mint(foreignBridgeProxy.address, 100) await foreignBridgeProxy.fixLockedSai(accounts[9], { from: accounts[1] }).should.be.rejected diff --git a/upgrade/.env.example b/upgrade/.env.example index ac8f30e9..0ae0ac7e 100644 --- a/upgrade/.env.example +++ b/upgrade/.env.example @@ -1,6 +1,6 @@ FOREIGN_RPC_URL=https://mainnet.infura.io/v3/API_KEY FOREIGN_PRIVKEY=0x... -FOREING_BRIDGE_ADDRESS=0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016 +FOREIGN_BRIDGE_ADDRESS=0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016 FOREIGN_START_BLOCK=9122083 FOREIGN_GAS_PRICE=1000000000 @@ -8,3 +8,4 @@ FOREIGN_GAS_PRICE=1000000000 ROLE=confirm NEW_IMPLEMENTATION_ETH_BRIDGE= +SAI_TOKENS_RECEIVER= diff --git a/upgrade/src/upgradeBridgeOnForeign.js b/upgrade/src/upgradeBridgeOnForeign.js index 3b3d01c2..59ae19f4 100644 --- a/upgrade/src/upgradeBridgeOnForeign.js +++ b/upgrade/src/upgradeBridgeOnForeign.js @@ -2,17 +2,19 @@ require('dotenv').config() const Web3 = require('web3') const multiSigWalletAbi = require('../abi/multiSigwallet') const proxyAbi = require('../../build/contracts/EternalStorageProxy').abi +const bridgeAbi = require('../../build/contracts/ForeignBridgeErcToNative').abi const callMultiSigWallet = require('./utils/callMultiSigWallet') const validatorState = require('./utils/validatorState') const { FOREIGN_PRIVKEY, FOREIGN_RPC_URL, - FOREING_BRIDGE_ADDRESS, + FOREIGN_BRIDGE_ADDRESS, ROLE, FOREIGN_START_BLOCK, FOREIGN_GAS_PRICE, - NEW_IMPLEMENTATION_ETH_BRIDGE + NEW_IMPLEMENTATION_ETH_BRIDGE, + SAI_TOKENS_RECEIVER } = process.env const web3 = new Web3(new Web3.providers.HttpProvider(FOREIGN_RPC_URL)) @@ -20,18 +22,21 @@ const { address } = web3.eth.accounts.wallet.add(FOREIGN_PRIVKEY) const upgradeBridgeOnForeign = async () => { try { - const proxy = new web3.eth.Contract(proxyAbi, FOREING_BRIDGE_ADDRESS) + const proxy = new web3.eth.Contract(proxyAbi, FOREIGN_BRIDGE_ADDRESS) + const foreignBridge = new web3.eth.Contract(bridgeAbi, FOREIGN_BRIDGE_ADDRESS) const ownerAddress = await proxy.methods.upgradeabilityOwner().call() const multiSigWallet = new web3.eth.Contract(multiSigWalletAbi, ownerAddress) await validatorState(web3, address, multiSigWallet) - const data = proxy.methods.upgradeTo('5', NEW_IMPLEMENTATION_ETH_BRIDGE).encodeABI() + const fixData = foreignBridge.methods.fixLockedSai(SAI_TOKENS_RECEIVER).encodeABI() + + const data = proxy.methods.upgradeToAndCall('6', NEW_IMPLEMENTATION_ETH_BRIDGE, fixData).encodeABI() await callMultiSigWallet({ role: ROLE, contract: multiSigWallet, - destination: FOREING_BRIDGE_ADDRESS, + destination: FOREIGN_BRIDGE_ADDRESS, fromBlock: FOREIGN_START_BLOCK, gasPrice: FOREIGN_GAS_PRICE, address,