Thanks @ericglau,
When I try to prepare my upgrade in local development network, there seems to be no deployment of the new implementation contract. When I then call the upgrade
function using my multisig contract I receive an error message that the implementation contract hasn't been deployed.
3_prepare_contract_upgrade.ts:
import { prepareUpgrade } from '@openzeppelin/truffle-upgrades';
import { Network } from './types';
module.exports = (artifacts: Truffle.Artifacts) => {
return async (deployer: Truffle.Deployer, network: Network, accounts: string[]) => {
const TokenUpgradeable = artifacts.require('TokenUpgradeable');
const TokenUpgradeableTest = artifacts.require('TokenUpgradeableTest');
const TokenUpgradeableInstance = await TokenUpgradeable.deployed();
await prepareUpgrade(TokenUpgradeableInstance.address, TokenUpgradeableTest as any, { deployer: deployer as any });
};
};
4_upgrade_token_contract.ts:
import { admin } from '@openzeppelin/truffle-upgrades';
import { Network } from './types';
import { getTxIdFromMultiSigWallet } from '../test/lib/test-helpers';
module.exports = (artifacts: Truffle.Artifacts) => {
return async (deployer: Truffle.Deployer, network: Network, accounts: string[]) => {
const TokenUpgradeableTest = artifacts.require('TokenUpgradeableTest');
const TokenUpgradeableTestInstance = await TokenUpgradeableTest.deployed();
console.log(`TokenUpgradeableTestInstance address: ${TokenUpgradeableTestInstance.address}`);
const MultiSigWallet = artifacts.require('MultiSigWallet');
const multiSigWalletInstance = await MultiSigWallet.deployed();
const adminInstance = await admin.getInstance();
const data = await adminInstance.contract.methods.upgrade(TokenUpgradeableTestInstance.address).encodeABI();
await multiSigWalletInstance.submitTransaction(adminInstance.address, 0, data, { from: accounts[0] });
const txId = await getTxIdFromMultiSigWallet(multiSigWalletInstance);
await multiSigWalletInstance.confirmTransaction(txId, { from: accounts[1] });
console.log('Upgraded admin');
};
};
I can however log out the output of prepareUpgrade
and I'm given an address. What's confusing is that in the Truffle migrations log there is 0 gas spent and no information about any deployment of the new implementation contract.
Why am I getting conflicting information and how best to proceed?