Skip to content

Commit

Permalink
Merge branch 'master' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
barrasso committed May 24, 2022
2 parents aea53e0 + 3334c35 commit 8c9e3d6
Show file tree
Hide file tree
Showing 14 changed files with 535 additions and 177 deletions.
113 changes: 113 additions & 0 deletions contracts/migrations/Migration_Rasalhague.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
pragma solidity ^0.5.16;

import "../AddressResolver.sol";
import "../BaseMigration.sol";
import "../legacy/LegacyTokenState.sol";
import "../Proxy.sol";
import "../RewardEscrow.sol";
import "../RewardsDistribution.sol";

interface ISynthetixNamedContract {
// solhint-disable func-name-mixedcase
function CONTRACT_NAME() external view returns (bytes32);
}

// solhint-disable contract-name-camelcase
contract Migration_Rasalhague is BaseMigration {
// https://etherscan.io/address/0xEb3107117FEAd7de89Cd14D463D340A2E6917769;
address public constant OWNER = 0xEb3107117FEAd7de89Cd14D463D340A2E6917769;

// ----------------------------
// EXISTING SYNTHETIX CONTRACTS
// ----------------------------

// https://etherscan.io/address/0x823bE81bbF96BEc0e25CA13170F5AaCb5B79ba83
AddressResolver public constant addressresolver_i = AddressResolver(0x823bE81bbF96BEc0e25CA13170F5AaCb5B79ba83);
// https://etherscan.io/address/0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F
Proxy public constant proxysynthetix_i = Proxy(0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F);
// https://etherscan.io/address/0x5b1b5fEa1b99D83aD479dF0C222F0492385381dD
LegacyTokenState public constant tokenstatesynthetix_i = LegacyTokenState(0x5b1b5fEa1b99D83aD479dF0C222F0492385381dD);
// https://etherscan.io/address/0xb671F2210B1F6621A2607EA63E6B2DC3e2464d1F
RewardEscrow public constant rewardescrow_i = RewardEscrow(0xb671F2210B1F6621A2607EA63E6B2DC3e2464d1F);
// https://etherscan.io/address/0x29C295B046a73Cde593f21f63091B072d407e3F2
RewardsDistribution public constant rewardsdistribution_i =
RewardsDistribution(0x29C295B046a73Cde593f21f63091B072d407e3F2);

// ----------------------------------
// NEW CONTRACTS DEPLOYED TO BE ADDED
// ----------------------------------

// https://etherscan.io/address/0x7F30336E0e01bEe8dD1C641bD793400f82d080cf
address public constant new_Synthetix_contract = 0x7F30336E0e01bEe8dD1C641bD793400f82d080cf;

constructor() public BaseMigration(OWNER) {}

function contractsRequiringOwnership() public pure returns (address[] memory contracts) {
contracts = new address[](5);
contracts[0] = address(addressresolver_i);
contracts[1] = address(proxysynthetix_i);
contracts[2] = address(tokenstatesynthetix_i);
contracts[3] = address(rewardescrow_i);
contracts[4] = address(rewardsdistribution_i);
}

function migrate() external onlyOwner {
// ACCEPT OWNERSHIP for all contracts that require ownership to make changes
acceptAll();

// MIGRATION
// Import all new contracts into the address resolver;
addressresolver_importAddresses_0();
// Rebuild the resolver caches in all MixinResolver contracts - batch 1;
addressresolver_rebuildCaches_1();
// Ensure the SNX proxy has the correct Synthetix target set;
proxysynthetix_i.setTarget(Proxyable(new_Synthetix_contract));
// Ensure the Synthetix contract can write to its TokenState contract;
tokenstatesynthetix_i.setAssociatedContract(new_Synthetix_contract);
// Ensure the legacy RewardEscrow contract is connected to the Synthetix contract;
rewardescrow_i.setSynthetix(ISynthetix(new_Synthetix_contract));
// Ensure the RewardsDistribution has Synthetix set as its authority for distribution;
rewardsdistribution_i.setAuthority(new_Synthetix_contract);

// NOMINATE OWNERSHIP back to owner for aforementioned contracts
nominateAll();
}

function acceptAll() internal {
address[] memory contracts = contractsRequiringOwnership();
for (uint i = 0; i < contracts.length; i++) {
Owned(contracts[i]).acceptOwnership();
}
}

function nominateAll() internal {
address[] memory contracts = contractsRequiringOwnership();
for (uint i = 0; i < contracts.length; i++) {
returnOwnership(contracts[i]);
}
}

function addressresolver_importAddresses_0() internal {
bytes32[] memory addressresolver_importAddresses_names_0_0 = new bytes32[](1);
addressresolver_importAddresses_names_0_0[0] = bytes32("Synthetix");
address[] memory addressresolver_importAddresses_destinations_0_1 = new address[](1);
addressresolver_importAddresses_destinations_0_1[0] = address(new_Synthetix_contract);
addressresolver_i.importAddresses(
addressresolver_importAddresses_names_0_0,
addressresolver_importAddresses_destinations_0_1
);
}

function addressresolver_rebuildCaches_1() internal {
MixinResolver[] memory addressresolver_rebuildCaches_destinations_1_0 = new MixinResolver[](8);
addressresolver_rebuildCaches_destinations_1_0[0] = MixinResolver(0xDA4eF8520b1A57D7d63f1E249606D1A459698876);
addressresolver_rebuildCaches_destinations_1_0[1] = MixinResolver(0x0e5fe1b05612581576e9A3dB048416d0B1E3C425);
addressresolver_rebuildCaches_destinations_1_0[2] = MixinResolver(0xf79603a71144e415730C1A6f57F366E4Ea962C00);
addressresolver_rebuildCaches_destinations_1_0[3] = MixinResolver(0xD64D83829D92B5bdA881f6f61A4e4E27Fc185387);
addressresolver_rebuildCaches_destinations_1_0[4] = MixinResolver(0x0689b1F72930Eb25cACB99f790d2778E713a2c33);
addressresolver_rebuildCaches_destinations_1_0[5] = MixinResolver(0x62922670313bf6b41C580143d1f6C173C5C20019);
addressresolver_rebuildCaches_destinations_1_0[6] = MixinResolver(0x39Ea01a0298C315d149a490E34B59Dbf2EC7e48F);
addressresolver_rebuildCaches_destinations_1_0[7] = MixinResolver(new_Synthetix_contract);
addressresolver_i.rebuildCaches(addressresolver_rebuildCaches_destinations_1_0);
}
}
107 changes: 107 additions & 0 deletions contracts/migrations/Migration_RasalhagueOptimism.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
pragma solidity ^0.5.16;

import "../AddressResolver.sol";
import "../BaseMigration.sol";
import "../ProxyERC20.sol";
import "../RewardsDistribution.sol";
import "../TokenState.sol";

interface ISynthetixNamedContract {
// solhint-disable func-name-mixedcase
function CONTRACT_NAME() external view returns (bytes32);
}

// solhint-disable contract-name-camelcase
contract Migration_RasalhagueOptimism is BaseMigration {
// https://explorer.optimism.io/address/0x6d4a64C57612841c2C6745dB2a4E4db34F002D20;
address public constant OWNER = 0x6d4a64C57612841c2C6745dB2a4E4db34F002D20;

// ----------------------------
// EXISTING SYNTHETIX CONTRACTS
// ----------------------------

// https://explorer.optimism.io/address/0x95A6a3f44a70172E7d50a9e28c85Dfd712756B8C
AddressResolver public constant addressresolver_i = AddressResolver(0x95A6a3f44a70172E7d50a9e28c85Dfd712756B8C);
// https://explorer.optimism.io/address/0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4
ProxyERC20 public constant proxysynthetix_i = ProxyERC20(0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4);
// https://explorer.optimism.io/address/0xB9c6CA25452E7f6D0D3340CE1e9B573421afc2eE
TokenState public constant tokenstatesynthetix_i = TokenState(0xB9c6CA25452E7f6D0D3340CE1e9B573421afc2eE);
// https://explorer.optimism.io/address/0x5d9187630E99dBce4BcAB8733B76757f7F44aA2e
RewardsDistribution public constant rewardsdistribution_i =
RewardsDistribution(0x5d9187630E99dBce4BcAB8733B76757f7F44aA2e);

// ----------------------------------
// NEW CONTRACTS DEPLOYED TO BE ADDED
// ----------------------------------

// https://explorer.optimism.io/address/0x274D1dbe298993EaD5AC1B25624F53786d16006e
address public constant new_Synthetix_contract = 0x274D1dbe298993EaD5AC1B25624F53786d16006e;

constructor() public BaseMigration(OWNER) {}

function contractsRequiringOwnership() public pure returns (address[] memory contracts) {
contracts = new address[](4);
contracts[0] = address(addressresolver_i);
contracts[1] = address(proxysynthetix_i);
contracts[2] = address(tokenstatesynthetix_i);
contracts[3] = address(rewardsdistribution_i);
}

function migrate() external onlyOwner {
// ACCEPT OWNERSHIP for all contracts that require ownership to make changes
acceptAll();

// MIGRATION
// Import all new contracts into the address resolver;
addressresolver_importAddresses_0();
// Rebuild the resolver caches in all MixinResolver contracts - batch 1;
addressresolver_rebuildCaches_1();
// Ensure the SNX proxy has the correct Synthetix target set;
proxysynthetix_i.setTarget(Proxyable(new_Synthetix_contract));
// Ensure the Synthetix contract can write to its TokenState contract;
tokenstatesynthetix_i.setAssociatedContract(new_Synthetix_contract);
// Ensure the RewardsDistribution has Synthetix set as its authority for distribution;
rewardsdistribution_i.setAuthority(new_Synthetix_contract);

// NOMINATE OWNERSHIP back to owner for aforementioned contracts
nominateAll();
}

function acceptAll() internal {
address[] memory contracts = contractsRequiringOwnership();
for (uint i = 0; i < contracts.length; i++) {
Owned(contracts[i]).acceptOwnership();
}
}

function nominateAll() internal {
address[] memory contracts = contractsRequiringOwnership();
for (uint i = 0; i < contracts.length; i++) {
returnOwnership(contracts[i]);
}
}

function addressresolver_importAddresses_0() internal {
bytes32[] memory addressresolver_importAddresses_names_0_0 = new bytes32[](1);
addressresolver_importAddresses_names_0_0[0] = bytes32("Synthetix");
address[] memory addressresolver_importAddresses_destinations_0_1 = new address[](1);
addressresolver_importAddresses_destinations_0_1[0] = address(new_Synthetix_contract);
addressresolver_i.importAddresses(
addressresolver_importAddresses_names_0_0,
addressresolver_importAddresses_destinations_0_1
);
}

function addressresolver_rebuildCaches_1() internal {
MixinResolver[] memory addressresolver_rebuildCaches_destinations_1_0 = new MixinResolver[](8);
addressresolver_rebuildCaches_destinations_1_0[0] = MixinResolver(0x47eE58801C1AC44e54FF2651aE50525c5cfc66d0);
addressresolver_rebuildCaches_destinations_1_0[1] = MixinResolver(0x68a8b098967Ae077dcFf5cC8E29B7cb15f1A3cC8);
addressresolver_rebuildCaches_destinations_1_0[2] = MixinResolver(0xF4EebDD0704021eF2a6Bbe993fdf93030Cd784b4);
addressresolver_rebuildCaches_destinations_1_0[3] = MixinResolver(0xcC02F000b0aA8a0eFC2B55C9cf2305Fb3531cca1);
addressresolver_rebuildCaches_destinations_1_0[4] = MixinResolver(0x939313420A85ab8F21B8c2fE15b60528f34E0d63);
addressresolver_rebuildCaches_destinations_1_0[5] = MixinResolver(0x2DcAD1A019fba8301b77810Ae14007cc88ED004B);
addressresolver_rebuildCaches_destinations_1_0[6] = MixinResolver(0x136b1EC699c62b0606854056f02dC7Bb80482d63);
addressresolver_rebuildCaches_destinations_1_0[7] = MixinResolver(new_Synthetix_contract);
addressresolver_i.rebuildCaches(addressresolver_rebuildCaches_destinations_1_0);
}
}
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "synthetix",
"version": "2.69.0",
"version": "2.70.1",
"license": "MIT",
"author": "Synthetix",
"description": "The smart contracts which make up the Synthetix system. (synthetix.io)",
Expand Down
52 changes: 41 additions & 11 deletions publish/deployed/kovan-ovm/deployment.json

Large diffs are not rendered by default.

24 changes: 20 additions & 4 deletions publish/deployed/kovan-ovm/versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,12 @@
},
"Liquidations": {
"address": "0x20540E5EB1faff0DB6B1Dc5f0427C27f3852e2Ab",
"status": "current",
"status": "deleted",
"keccak256": "0x571a2669ec42d397d69e7b03e4e9945065db3777fc70c09a0409e1e8c09e5223"
},
"EternalStorageLiquidations": {
"address": "0x38a322dB8dBa2b78B622e5224611de33b8cf6480",
"status": "current",
"status": "deleted",
"keccak256": "0xdb65ca6894b3cbbd87e36f87e03a3725a1990dc2d00c2757f9e9fbfdf1a27058"
},
"FeePoolEternalStorage": {
Expand Down Expand Up @@ -1774,8 +1774,9 @@
},
"Synthetix": {
"address": "0x01eBf544794F7f38d1e937BeA1c15F952ced7c62",
"status": "current",
"keccak256": "0xc7181091631b9c6b8047460f85d0920a25c23a87ddd862eca7a114859b7b3611"
"status": "replaced",
"keccak256": "0xc7181091631b9c6b8047460f85d0920a25c23a87ddd862eca7a114859b7b3611",
"replaced_in": "v2.70.0-alpha"
},
"Exchanger": {
"address": "0xfff685537fdbD9CA07BD863Ac0b422863BF3114f",
Expand Down Expand Up @@ -1803,5 +1804,20 @@
"keccak256": "0x621221d61543cd3356f62b60c84c1a0ba0763ab6caada6705df5db116bcab9e0"
}
}
},
"v2.70.0-alpha": {
"tag": "v2.70.0-alpha",
"fulltag": "v2.70.0-alpha",
"release": "Rasalhague",
"network": "kovan",
"date": "2022-05-23T14:05:11-04:00",
"commit": "0ead7516c1e6f6fe2d48ca27117c7b6f7547628e",
"contracts": {
"Synthetix": {
"address": "0x28CAb2c065bC0aAE84f6763e621B0b814C77922B",
"status": "current",
"keccak256": "0xa3693319984f9dfdc43ef60dee3316c2ad593abfa3113b62ff79b72c2309d362"
}
}
}
}
52 changes: 41 additions & 11 deletions publish/deployed/kovan/deployment.json

Large diffs are not rendered by default.

24 changes: 20 additions & 4 deletions publish/deployed/kovan/versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -5423,7 +5423,7 @@
},
"EternalStorageLiquidations": {
"address": "0x5D4A4B51A824E2dD1C25aD16023Bf8FF3F648602",
"status": "current"
"status": "deleted"
}
}
},
Expand Down Expand Up @@ -6183,7 +6183,7 @@
},
"Liquidations": {
"address": "0x9880cfA7B81E8841e216ebB32687A2c9551ae333",
"status": "current",
"status": "deleted",
"keccak256": "0x1d4e965a08a7e64e2b2cf49d4ee92e84afe1138cbd14517baebaba174585d4f4"
},
"BinaryOptionMarketFactory": {
Expand Down Expand Up @@ -7427,8 +7427,9 @@
"contracts": {
"Synthetix": {
"address": "0x2bAf929DBff85A8148D339EA122c8dcbd055F30a",
"status": "current",
"keccak256": "0xd82a28402f6b409adafc8ec5a078ea573f8c9f4bbc9039a7e53ca913fa0a5793"
"status": "replaced",
"keccak256": "0xd82a28402f6b409adafc8ec5a078ea573f8c9f4bbc9039a7e53ca913fa0a5793",
"replaced_in": "v2.70.0-alpha"
},
"Exchanger": {
"address": "0xb9713D033DF6190D941F169cDEDc1C69B5314e72",
Expand Down Expand Up @@ -7461,5 +7462,20 @@
"keccak256": "0x621221d61543cd3356f62b60c84c1a0ba0763ab6caada6705df5db116bcab9e0"
}
}
},
"v2.70.0-alpha": {
"tag": "v2.70.0-alpha",
"fulltag": "v2.70.0-alpha",
"release": "Rasalhague",
"network": "kovan",
"date": "2022-05-23T14:05:11-04:00",
"commit": "0ead7516c1e6f6fe2d48ca27117c7b6f7547628e",
"contracts": {
"Synthetix": {
"address": "0xD802079Cbdd5E99c2E301079BC643B99B2cD05C9",
"status": "current",
"keccak256": "0x4f4e83441a09daa99e58b65902a6fff61ba13586d37a1b26f4a80054197bb6bd"
}
}
}
}
52 changes: 41 additions & 11 deletions publish/deployed/mainnet-ovm/deployment.json

Large diffs are not rendered by default.

24 changes: 20 additions & 4 deletions publish/deployed/mainnet-ovm/versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,12 @@
},
"Liquidations": {
"address": "0x14E6f8e6Da00a32C069b11b64e48EA1FEF2361D4",
"status": "current",
"status": "deleted",
"keccak256": "0x571a2669ec42d397d69e7b03e4e9945065db3777fc70c09a0409e1e8c09e5223"
},
"EternalStorageLiquidations": {
"address": "0x76d2de36936005A0182a1BB61dA501A8A044D477",
"status": "current",
"status": "deleted",
"keccak256": "0xdb65ca6894b3cbbd87e36f87e03a3725a1990dc2d00c2757f9e9fbfdf1a27058"
},
"FeePoolEternalStorage": {
Expand Down Expand Up @@ -1168,8 +1168,9 @@
},
"Synthetix": {
"address": "0xc66a263f2C7C1Af0bD70c6cA4Bff5936F3D6Ef9F",
"status": "current",
"keccak256": "0xc7181091631b9c6b8047460f85d0920a25c23a87ddd862eca7a114859b7b3611"
"status": "replaced",
"keccak256": "0xc7181091631b9c6b8047460f85d0920a25c23a87ddd862eca7a114859b7b3611",
"replaced_in": "v2.70.0"
},
"Exchanger": {
"address": "0xcC02F000b0aA8a0eFC2B55C9cf2305Fb3531cca1",
Expand Down Expand Up @@ -1197,5 +1198,20 @@
"keccak256": "0x621221d61543cd3356f62b60c84c1a0ba0763ab6caada6705df5db116bcab9e0"
}
}
},
"v2.70.0": {
"tag": "v2.70.0",
"fulltag": "v2.70.0",
"release": "Rasalhague",
"network": "mainnet",
"date": "2022-05-23T23:00:44-04:00",
"commit": "48d93a047b167c24d7234615ac3947d6c541246b",
"contracts": {
"Synthetix": {
"address": "0x274D1dbe298993EaD5AC1B25624F53786d16006e",
"status": "current",
"keccak256": "0xa3693319984f9dfdc43ef60dee3316c2ad593abfa3113b62ff79b72c2309d362"
}
}
}
}

0 comments on commit 8c9e3d6

Please sign in to comment.