Skip to content

SIP-167 Introduces an L2 governance bridge #1402

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 107 commits into from
Nov 23, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
aa3f0a6
Drafting L1<>L2 governance bridge
eternauta1337 Jul 12, 2021
1afe430
First draft of owner bridge
eternauta1337 Jul 12, 2021
c00dd54
Minor fix
eternauta1337 Jul 12, 2021
fddeb7c
Minor renaming
eternauta1337 Jul 12, 2021
079c639
WIP Preparing to deploy owner relay contracts
eternauta1337 Jul 13, 2021
0c2f41e
WIP first deployments of the owner relay contracts
eternauta1337 Jul 13, 2021
4666157
WIP Minor fix to CLI
eternauta1337 Jul 13, 2021
737e356
WIP Setting relay cross domain gas limit
eternauta1337 Jul 13, 2021
2db8545
WIP Update connect bridge script to include owner relay bridge
eternauta1337 Jul 13, 2021
ced5584
WIP First working integration tests
eternauta1337 Jul 13, 2021
733ba52
WIP More interesting owner relay integration tests
eternauta1337 Jul 13, 2021
a204ccd
WIP Minor improvement to integration tests
eternauta1337 Jul 13, 2021
a9e61f6
WIP Minor tidy up
eternauta1337 Jul 13, 2021
383290c
WIP Minor tidy ups on relay integration tests
eternauta1337 Jul 14, 2021
b4ebbee
WIP Wrote unit tests for OwnerRelayOnEthereum
eternauta1337 Jul 14, 2021
2e599e5
WIP Working unit tests for OwnerRelayOnOptimism
eternauta1337 Jul 14, 2021
cb968bf
WIP Working OwnerRelayOnEthere.js tests
eternauta1337 Jul 14, 2021
321f6b9
WIP Tidy up on tests
eternauta1337 Jul 15, 2021
160889e
WIP More tidy ups on unit tests
eternauta1337 Jul 15, 2021
f1037b9
WIP Renamed functions and added events
eternauta1337 Jul 15, 2021
da53d8c
WIP Testing relay events
eternauta1337 Jul 15, 2021
ea2aaba
WIP Favor mocks in place
eternauta1337 Jul 15, 2021
5d64ccc
WIP Minor tidy up
eternauta1337 Jul 15, 2021
ff0a886
WIP Less hardcoded addresses in tests
eternauta1337 Jul 15, 2021
5d33db5
Adding direct way to accept ownership on L2 owner relay
eternauta1337 Jul 15, 2021
b663d01
WIP Added event check
eternauta1337 Jul 15, 2021
c9a2a61
Lint fixes
eternauta1337 Jul 15, 2021
aac7602
Update to develop
eternauta1337 Jul 15, 2021
17a2837
Added coverage for new cross domain gas limit type
eternauta1337 Jul 15, 2021
ebb5aab
Merge branch 'develop' into governance-bridge
eternauta1337 Jul 15, 2021
f155e74
Added SIP number
eternauta1337 Jul 15, 2021
e68b90a
Merge branch 'governance-bridge' of github.com:Synthetixio/synthetix …
eternauta1337 Jul 15, 2021
a8591ee
Merge branch 'develop' into governance-bridge
eternauta1337 Jul 16, 2021
b207662
Update publish tests
eternauta1337 Jul 16, 2021
6917716
Merge branch 'develop' into governance-bridge
eternauta1337 Jul 19, 2021
01d01e5
Fix in upcoming release data
eternauta1337 Jul 19, 2021
2e8ee69
Undo changes to network config.json files
eternauta1337 Jul 19, 2021
6c6e675
Undo more changes to config.json files
eternauta1337 Jul 19, 2021
ea1f4d2
Dynamic cross domain gas limit on relays
eternauta1337 Jul 19, 2021
332a226
Add acceptRelayOwner script (#1415)
leomassazza Jul 21, 2021
7978c52
Merge branch 'develop' of github.com:Synthetixio/synthetix into gover…
eternauta1337 Jul 26, 2021
ec66e4e
Clean install
eternauta1337 Jul 26, 2021
798999d
Update release number
eternauta1337 Jul 26, 2021
e28c41c
Fix error in owner relay unit test
eternauta1337 Jul 27, 2021
60c7905
Removes Web3 from the deploy script (#1418)
eternauta1337 Jul 26, 2021
2a1468b
System settings needs to be deployed for the owner relay update on L1
eternauta1337 Jul 27, 2021
e31f607
Correction on releases.json
eternauta1337 Jul 27, 2021
88e7abd
remove unused import (#1429)
leomassazza Jul 27, 2021
30d07b0
Add relayed-nominate command to governance-bridge branch (#1422)
mjlescano Jul 28, 2021
7810593
Update to develop
eternauta1337 Aug 16, 2021
4c10c1e
Merge branch 'develop' of github.com:Synthetixio/synthetix into gover…
eternauta1337 Aug 16, 2021
317537b
Add comments
eternauta1337 Aug 16, 2021
475cee4
Remove redundant check in deploy-core
eternauta1337 Aug 16, 2021
88506ba
Add OwnerRelayOnOptimism.acceptOwnershipOnBatch (#1463)
eternauta1337 Aug 17, 2021
fe34f1f
Add L2 governance bridge relay temp circumvention (#1438)
mjlescano Aug 17, 2021
afa73aa
Merge branch 'develop' of github.com:Synthetixio/synthetix into gover…
eternauta1337 Aug 17, 2021
5721368
Update to develop
eternauta1337 Aug 17, 2021
1204bd4
Merge branch 'develop' of github.com:Synthetixio/synthetix into gover…
eternauta1337 Aug 18, 2021
6fa585b
Merge branch 'develop' into governance-bridge
eternauta1337 Aug 19, 2021
718ed9f
Add support for relaying a batch of calls to L2 via the governance br…
i-stam Aug 19, 2021
9c07fa9
Update scripts to use batch operations (#1465)
Aug 19, 2021
1ce250a
Fixed typo in relay related scripts
leomassazza Aug 19, 2021
f854964
Change ALL ownerships in batch relay test (#1473)
eternauta1337 Aug 20, 2021
6ad605a
Merge branch 'develop' into governance-bridge
eternauta1337 Aug 23, 2021
b888989
Fix Owner-relay and Nominate-relay (#1474)
Aug 23, 2021
397c6c5
Merge branch 'develop' into governance-bridge
jjgonecrypto Aug 24, 2021
a03acc8
Fixing release logic
jjgonecrypto Aug 24, 2021
f7728b0
OwnerRelayOnOptimism unit test simplification (#1475)
i-stam Aug 25, 2021
0fe426d
fix sips listing when having different sources
mjlescano Aug 25, 2021
d8e51b0
Merge branch 'develop' into governance-bridge
Aug 25, 2021
91acfd9
Merge branch 'develop' into governance-bridge
i-stam Oct 20, 2021
135c9c3
Iosiro audit fixes (#1481)
i-stam Oct 29, 2021
2561082
Merge branch 'develop' into governance-bridge
barrasso Oct 29, 2021
26395f5
Add SafeBatchSubmitter
barrasso Nov 1, 2021
0f0d2d2
Merge branch 'develop' into governance-bridge
barrasso Nov 4, 2021
b233fd8
Fix relay scripts
barrasso Nov 15, 2021
998eb97
Add safe utils
barrasso Nov 15, 2021
baa9157
Merge branch 'develop' into governance-bridge
barrasso Nov 15, 2021
3127bc5
Merge branch 'develop' into governance-bridge
barrasso Nov 16, 2021
58568da
Fix packages
barrasso Nov 16, 2021
5f8faf8
Revert lockfile change
barrasso Nov 17, 2021
fc3bc72
Fix lockfile
barrasso Nov 17, 2021
5575537
Merge branch 'develop' into governance-bridge
barrasso Nov 17, 2021
b3bbbda
Minor update to deploy-core relay ordering
barrasso Nov 17, 2021
a924ad0
Remove nominate-relay.js
barrasso Nov 17, 2021
4d17d49
Remove refs to nominate-relay
barrasso Nov 17, 2021
d0a2427
Add coverage to TemporarilyOwned
barrasso Nov 17, 2021
9a05357
Update TemporarilyOwned contract and tests
barrasso Nov 18, 2021
eb19e82
Merge branch 'develop' into governance-bridge
barrasso Nov 18, 2021
b33a1cd
Remove unnecessary require check
barrasso Nov 18, 2021
cb07d30
Add more explicit coverage
barrasso Nov 18, 2021
93bb5d8
Fix OwnerRelayOnOptimism tests
barrasso Nov 18, 2021
115701d
Merge branch 'develop' into governance-bridge
barrasso Nov 18, 2021
d661119
Refactor relay scripts to use SafeBatchSubmitter
barrasso Nov 22, 2021
856e74a
liquidations update (#1604)
dbeal-eth Nov 22, 2021
904cf5c
Remove safe utils
barrasso Nov 22, 2021
5b3624a
Fixes for Menkalinan release
barrasso Nov 23, 2021
451ea8d
Removing redundant nominate-relay
jjgonecrypto Nov 23, 2021
8388fec
Ensuring that previous system settings not loaded when not generateSo…
jjgonecrypto Nov 23, 2021
7612a80
Removing 167 from release (should go in separate PR)
jjgonecrypto Nov 23, 2021
b2577d4
Upping unit test timeout to 2mins
jjgonecrypto Nov 23, 2021
562ab72
fix resolution of sip sources in prepare-deploy
dbeal-eth Nov 23, 2021
d410665
add systemsettings to ovm
dbeal-eth Nov 23, 2021
9216ccf
Removing excess log noise
jjgonecrypto Nov 23, 2021
b55b5a0
Owner fixes
jjgonecrypto Nov 23, 2021
31dbf74
Removing mistaken filter
jjgonecrypto Nov 23, 2021
eb69d06
Fixing owner script
jjgonecrypto Nov 23, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .solcover.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ module.exports = {
'legacy',
'EscrowChecker.sol',
'ExchangeRatesWithoutInvPricing.sol',
'IssuerWithoutLiquidations.sol',
'EmptyEtherWrapper.sol',
],
providerOptions: {
Expand Down
15 changes: 0 additions & 15 deletions contracts/IssuerWithoutLiquidations.sol

This file was deleted.

5 changes: 4 additions & 1 deletion contracts/MixinSystemSettings.sol
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ contract MixinSystemSettings is MixinResolver {
bytes32 internal constant SETTING_CROSS_DOMAIN_ESCROW_GAS_LIMIT = "crossDomainEscrowGasLimit";
bytes32 internal constant SETTING_CROSS_DOMAIN_REWARD_GAS_LIMIT = "crossDomainRewardGasLimit";
bytes32 internal constant SETTING_CROSS_DOMAIN_WITHDRAWAL_GAS_LIMIT = "crossDomainWithdrawalGasLimit";
bytes32 internal constant SETTING_CROSS_DOMAIN_RELAY_GAS_LIMIT = "crossDomainRelayGasLimit";
bytes32 internal constant SETTING_ETHER_WRAPPER_MAX_ETH = "etherWrapperMaxETH";
bytes32 internal constant SETTING_ETHER_WRAPPER_MINT_FEE_RATE = "etherWrapperMintFeeRate";
bytes32 internal constant SETTING_ETHER_WRAPPER_BURN_FEE_RATE = "etherWrapperBurnFeeRate";
Expand All @@ -47,7 +48,7 @@ contract MixinSystemSettings is MixinResolver {

bytes32 internal constant CONTRACT_FLEXIBLESTORAGE = "FlexibleStorage";

enum CrossDomainMessageGasLimits {Deposit, Escrow, Reward, Withdrawal}
enum CrossDomainMessageGasLimits {Deposit, Escrow, Reward, Withdrawal, Relay}

constructor(address _resolver) internal MixinResolver(_resolver) {}

Expand All @@ -69,6 +70,8 @@ contract MixinSystemSettings is MixinResolver {
return SETTING_CROSS_DOMAIN_REWARD_GAS_LIMIT;
} else if (gasLimitType == CrossDomainMessageGasLimits.Withdrawal) {
return SETTING_CROSS_DOMAIN_WITHDRAWAL_GAS_LIMIT;
} else if (gasLimitType == CrossDomainMessageGasLimits.Relay) {
return SETTING_CROSS_DOMAIN_RELAY_GAS_LIMIT;
} else {
revert("Unknown gas limit type");
}
Expand Down
87 changes: 87 additions & 0 deletions contracts/OwnerRelayOnEthereum.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

// Inheritance
import "./Owned.sol";
import "./MixinSystemSettings.sol";

// Internal references
import "./interfaces/IOwnerRelayOnOptimism.sol";
import "@eth-optimism/contracts/iOVM/bridge/messaging/iAbs_BaseCrossDomainMessenger.sol";

contract OwnerRelayOnEthereum is MixinSystemSettings, Owned {
/* ========== ADDRESS RESOLVER CONFIGURATION ========== */

bytes32 private constant CONTRACT_EXT_MESSENGER = "ext:Messenger";
bytes32 private constant CONTRACT_OVM_OWNER_RELAY_ON_OPTIMISM = "ovm:OwnerRelayOnOptimism";

// ========== CONSTRUCTOR ==========

constructor(address _owner, address _resolver) public Owned(_owner) MixinSystemSettings(_resolver) {}

/* ========== INTERNALS ============ */

function _messenger() private view returns (iAbs_BaseCrossDomainMessenger) {
return iAbs_BaseCrossDomainMessenger(requireAndGetAddress(CONTRACT_EXT_MESSENGER));
}

function _ownerRelayOnOptimism() private view returns (address) {
return requireAndGetAddress(CONTRACT_OVM_OWNER_RELAY_ON_OPTIMISM);
}

function _getCrossDomainGasLimit(uint32 crossDomainGasLimit) private view returns (uint32) {
// Use specified crossDomainGasLimit if specified value is not zero.
// otherwise use the default in SystemSettings.
return
crossDomainGasLimit != 0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[np] this would probably read better if written as > 0

? crossDomainGasLimit
: uint32(getCrossDomainMessageGasLimit(CrossDomainMessageGasLimits.Relay));
}

/* ========== VIEWS ========== */

function resolverAddressesRequired() public view returns (bytes32[] memory addresses) {
bytes32[] memory existingAddresses = MixinSystemSettings.resolverAddressesRequired();
bytes32[] memory newAddresses = new bytes32[](2);
newAddresses[0] = CONTRACT_EXT_MESSENGER;
newAddresses[1] = CONTRACT_OVM_OWNER_RELAY_ON_OPTIMISM;
addresses = combineArrays(existingAddresses, newAddresses);
}

/* ========== RESTRICTED ========== */

function initiateRelay(
address target,
bytes calldata payload,
uint32 crossDomainGasLimit // If zero, uses default value in SystemSettings
) external onlyOwner {
IOwnerRelayOnOptimism ownerRelayOnOptimism;
bytes memory messageData = abi.encodeWithSelector(ownerRelayOnOptimism.finalizeRelay.selector, target, payload);

_messenger().sendMessage(_ownerRelayOnOptimism(), messageData, _getCrossDomainGasLimit(crossDomainGasLimit));

emit RelayInitiated(target, payload);
}

function initiateRelayBatch(
address[] calldata targets,
bytes[] calldata payloads,
uint32 crossDomainGasLimit // If zero, uses default value in SystemSettings
) external onlyOwner {
// First check that the length of the arguments match
require(targets.length == payloads.length, "Argument length mismatch");

IOwnerRelayOnOptimism ownerRelayOnOptimism;
bytes memory messageData =
abi.encodeWithSelector(ownerRelayOnOptimism.finalizeRelayBatch.selector, targets, payloads);

_messenger().sendMessage(_ownerRelayOnOptimism(), messageData, _getCrossDomainGasLimit(crossDomainGasLimit));

emit RelayBatchInitiated(targets, payloads);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it not be better to emit for each relay? If we ever need to track each message sent it will be hard to unpack the batches ...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We intentionally tried to avoid this, since it would significantly increase the gas cost of a batched relay.

}

/* ========== EVENTS ========== */

event RelayInitiated(address target, bytes payload);
event RelayBatchInitiated(address[] targets, bytes[] payloads);
}
90 changes: 90 additions & 0 deletions contracts/OwnerRelayOnOptimism.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

// Inheritance
import "./MixinResolver.sol";
import "./TemporarilyOwned.sol";
import "./interfaces/IOwnerRelayOnOptimism.sol";

// Internal references
import "@eth-optimism/contracts/iOVM/bridge/messaging/iAbs_BaseCrossDomainMessenger.sol";

contract OwnerRelayOnOptimism is MixinResolver, TemporarilyOwned, IOwnerRelayOnOptimism {
/* ========== ADDRESS RESOLVER CONFIGURATION ========== */

bytes32 private constant CONTRACT_EXT_MESSENGER = "ext:Messenger";
bytes32 private constant CONTRACT_BASE_OWNER_RELAY_ON_ETHEREUM = "base:OwnerRelayOnEthereum";

/* ========== CONSTRUCTOR ============ */

constructor(
address _resolver,
address _temporaryOwner,
uint _ownershipDuration
) public MixinResolver(_resolver) TemporarilyOwned(_temporaryOwner, _ownershipDuration) {}

/* ========== INTERNALS ============ */

function _messenger() private view returns (iAbs_BaseCrossDomainMessenger) {
return iAbs_BaseCrossDomainMessenger(requireAndGetAddress(CONTRACT_EXT_MESSENGER));
}

function _ownerRelayOnEthereum() private view returns (address) {
return requireAndGetAddress(CONTRACT_BASE_OWNER_RELAY_ON_ETHEREUM);
}

function _relayCall(address target, bytes memory payload) private {
// solhint-disable avoid-low-level-calls
(bool success, bytes memory result) = target.call(payload);

require(success, string(abi.encode("xChain call failed:", result)));
}

function _onlyAllowMessengerAndL1Relayer() internal view {
iAbs_BaseCrossDomainMessenger messenger = _messenger();

require(msg.sender == address(messenger), "Sender is not the messenger");
require(messenger.xDomainMessageSender() == _ownerRelayOnEthereum(), "L1 sender is not the owner relay");
}

modifier onlyMessengerAndL1Relayer() {
_onlyAllowMessengerAndL1Relayer();
_;
}

/* ========== VIEWS ========== */

function resolverAddressesRequired() public view returns (bytes32[] memory addresses) {
addresses = new bytes32[](2);
addresses[0] = CONTRACT_EXT_MESSENGER;
addresses[1] = CONTRACT_BASE_OWNER_RELAY_ON_ETHEREUM;
}

/* ========== EXTERNAL ========== */

function directRelay(address target, bytes calldata payload) external onlyTemporaryOwner {
_relayCall(target, payload);

emit DirectRelay(target, payload);
}

function finalizeRelay(address target, bytes calldata payload) external onlyMessengerAndL1Relayer {
_relayCall(target, payload);

emit RelayFinalized(target, payload);
}

function finalizeRelayBatch(address[] calldata targets, bytes[] calldata payloads) external onlyMessengerAndL1Relayer {
for (uint256 i = 0; i < targets.length; i++) {
_relayCall(targets[i], payloads[i]);
}

emit RelayBatchFinalized(targets, payloads);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here with individual events...

}

/* ========== EVENTS ========== */

event DirectRelay(address target, bytes payload);
event RelayFinalized(address target, bytes payload);
event RelayBatchFinalized(address[] targets, bytes[] payloads);
}
2 changes: 1 addition & 1 deletion contracts/SynthetixBridgeEscrow.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import "./Owned.sol";
import "./MixinResolver.sol";
import "./interfaces/ISynthetixBridgeEscrow.sol";

// External references.
// Internal references.
import "openzeppelin-solidity-2.3.0/contracts/token/ERC20/SafeERC20.sol";

contract SynthetixBridgeEscrow is Owned, ISynthetixBridgeEscrow {
Expand Down
46 changes: 46 additions & 0 deletions contracts/TemporarilyOwned.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
pragma solidity ^0.5.16;

contract TemporarilyOwned {
address public temporaryOwner;
address public nominatedOwner;
uint public expiryTime;

constructor(address _temporaryOwner, uint _ownershipDuration) public {
require(_temporaryOwner != address(0), "Temp owner address cannot be 0");
require(_ownershipDuration > 0, "Duration cannot be 0");

temporaryOwner = _temporaryOwner;
expiryTime = block.timestamp + _ownershipDuration;
}

function setNewExpiryTime(uint _duration) external onlyTemporaryOwner {
require(block.timestamp + _duration < expiryTime, "New expiry time must be sooner than it currently is");
expiryTime = block.timestamp + _duration;
}

function nominateNewOwner(address _owner) external onlyTemporaryOwner {
nominatedOwner = _owner;
emit OwnerNominated(_owner);
}

function acceptOwnership() external {
require(block.timestamp < expiryTime, "Ownership expired");
require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership");
emit OwnerChanged(temporaryOwner, nominatedOwner);
temporaryOwner = nominatedOwner;
nominatedOwner = address(0);
}

modifier onlyTemporaryOwner {
_onlyTemporaryOwner();
_;
}

function _onlyTemporaryOwner() private view {
require(block.timestamp < expiryTime, "Ownership expired");
require(msg.sender == temporaryOwner, "Only executable by temp owner");
}

event OwnerNominated(address newOwner);
event OwnerChanged(address oldOwner, address newOwner);
}
8 changes: 8 additions & 0 deletions contracts/interfaces/IOwnerRelayOnOptimism.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
pragma solidity >=0.4.24;
pragma experimental ABIEncoderV2;

interface IOwnerRelayOnOptimism {
function finalizeRelay(address target, bytes calldata payload) external;

function finalizeRelayBatch(address[] calldata target, bytes[] calldata payloads) external;
}
16 changes: 16 additions & 0 deletions contracts/test-helpers/TestableTempOwned.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
pragma solidity ^0.5.16;

import "../TemporarilyOwned.sol";

contract TestableTempOwned is TemporarilyOwned {
uint public testValue;

constructor(address _temporaryOwner, uint _ownershipDuration)
public
TemporarilyOwned(_temporaryOwner, _ownershipDuration)
{}

function setTestValue(uint _testValue) external onlyTemporaryOwner {
testValue = _testValue;
}
}
2 changes: 1 addition & 1 deletion hardhat.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,6 @@ module.exports = {
outputFile: 'test-gas-used.log',
},
mocha: {
timeout: 90e3, // 90s
timeout: 120e3, // 120s
},
};
1 change: 0 additions & 1 deletion hardhat/tasks/task-interact.js
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,6 @@ task('interact', 'Interact with a deployed Synthetix instance from the command l
const txPromise = contract[abiItemName](...inputs, overrides);
result = await _sendTx({
txPromise,
provider,
});

if (result.success) {
Expand Down
1 change: 0 additions & 1 deletion hardhat/tasks/task-status/statusActions.js
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,6 @@ const actions = {

const Issuer = getContract({
contract: 'Issuer',
source: useOvm ? 'IssuerWithoutLiquidations' : 'Issuer',
network,
useOvm,
provider,
Expand Down
2 changes: 2 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ const knownAccounts = {
// The solidity defaults are managed here in the same format they will be stored, hence all
// numbers are converted to strings and those with 18 decimals are also converted to wei amounts
const defaults = {
TEMP_OWNER_DEFAULT_DURATION: 60 * 60 * 24 * 60, // 60 days
WAITING_PERIOD_SECS: (60 * 5).toString(), // 5 mins
PRICE_DEVIATION_THRESHOLD_FACTOR: w3utils.toWei('3'),
TRADING_REWARDS_ENABLED: false,
Expand Down Expand Up @@ -156,6 +157,7 @@ const defaults = {
CROSS_DOMAIN_ESCROW_GAS_LIMIT: `${8e6}`,
CROSS_DOMAIN_REWARD_GAS_LIMIT: `${8e6}`,
CROSS_DOMAIN_WITHDRAWAL_GAS_LIMIT: `${3e6}`,
CROSS_DOMAIN_RELAY_GAS_LIMIT: `${8e6}`,

COLLATERAL_MANAGER: {
SYNTHS: ['sUSD', 'sBTC', 'sETH'],
Expand Down
3 changes: 3 additions & 0 deletions publish/deployed/local-ovm/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,9 @@
"WETH": {
"deploy": true
},
"OwnerRelayOnOptimism": {
"deploy": true
},
"SynthRedeemer": {
"deploy": true
}
Expand Down
3 changes: 3 additions & 0 deletions publish/deployed/local/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,9 @@
"WETH": {
"deploy": true
},
"OwnerRelayOnEthereum": {
"deploy": true
},
"SynthRedeemer": {
"deploy": true
}
Expand Down
8 changes: 8 additions & 0 deletions publish/releases.json
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,14 @@
"released": "base",
"sources": ["DebtCache"]
},
{
"sip": 167,
"layer": "both",
"sources": {
"base": ["OwnerRelayOnEthereum", "SystemSettings"],
"ovm": ["Issuer", "OwnerRelayOnOptimism", "SystemSettings"]
}
},
{
"sip": 158,
"layer": "base",
Expand Down
Loading