{"componentChunkName":"component---src-pages-sips-sip-markdown-remark-frontmatter-sip-tsx","path":"/sips/sip-116/","result":{"data":{"markdownRemark":{"fileAbsolutePath":"/vercel/path0/content/sips/sip-116.md","frontmatter":{"sip":116,"sccp":null,"title":"Optimism bridge update","network":"Optimism","author":"Alejandro Santander (@ajsantander), Yannis Stamelakos (@i-stam)","type":"Governance","proposal":null,"implementor":null,"release":null,"created":"2021-02-25T00:00:00.000Z","updated":null,"status":"Implemented"},"html":"<!--You can leave these HTML comments in your merged SIP and delete the visible duplicate text guides, they will not appear and may be helpful to refer to if you edit it again. This is the suggested template for new SIPs. Note that an SIP number will be assigned by an editor. When opening a pull request to submit your SIP, please use an abbreviated title in the filename, `sip-draft_title_abbrev.md`. The title should be 44 characters or less.-->\n<h2 id=\"simple-summary\" style=\"position:relative;\"><a href=\"#simple-summary\" aria-label=\"simple summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Simple Summary</h2>\n<!--\"If you can't explain it simply, you don't understand it well enough.\" Simply describe the outcome the proposed changes intends to achieve. This should be non-technical and accessible to a casual community member.-->\n<p>We propose to make use of the upcoming and last Optimism regenesis, to upgrade the bridge contracts in a way that has no withdrawal downtime. The upgrade would allow future bridge upgrades to also not have any withdrawal downtime, and would make the bridge conform to the new standard bridge interface being adopted by the community.</p>\n<h2 id=\"abstract\" style=\"position:relative;\"><a href=\"#abstract\" aria-label=\"abstract permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Abstract</h2>\n<!--A short (~200 word) description of the proposed change, the abstract should clearly describe the proposed change. This is what *will* be done if the SIP is implemented, not *why* it should be done or *how* it will be done. If the SIP proposes deploying a new contract, write, \"we propose to deploy a new contract that will do x\".-->\n<p>The Ethereum and Optimism bridge contracts, <code>SynthetixBridgeToOptimism</code> and <code>SynthetixBridgeToBase</code>, would be replaced with new versions that conform to the new bridge standard. This involves renaming some functions, but keeping the existing functionality mostly intact. The SNX currently deposited in <code>SynthetixBridgeToOptimism</code> would be transferred to a new <code>SynthetixBridgeEscrow</code> contract, solely in charge of holding SNX for deposits. This would allow future bridge upgrades to occur without moving any funds, since any bridges in the future would all share the same deposit pool. Additionally, the new contracts would allow to suspend the initiation of deposits or withdrawals, while continuing to allow finalization, which is a feature that currently does not exist in the bridges and necessary for bridge upgrades.</p>\n<h2 id=\"motivation\" style=\"position:relative;\"><a href=\"#motivation\" aria-label=\"motivation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Motivation</h2>\n<!--This is the problem statement. This is the *why* of the SIP. It should clearly explain *why* the current state of the protocol is inadequate.  It is critical that you explain *why* the change is needed, if the SIP proposes changing how something is calculated, you must address *why* the current calculation is inaccurate or wrong. This is not the place to describe how the SIP will address the issue!-->\n<p>The Spartan Council has previously considered upgrading the bridges, but the idea was shelved due to the complication of inter-chain asynchronicity. The problem is that withdrawals that had already been initiated but not yet finalized before the bridge migration, would eventually finalize against the old <code>SynthetixBridgeToOptimism</code> contract, which would no longer hold the corresponding SNX deposit, and thus fail. As a consequence, the upgrade appeared to be forced to involve suspending withdrawals for a week, and then doing the migration. Alternatives that involved no withdrawal downtime were discussed, but they were all very delicate given the capabilities of the existing bridge contract code. With the upcoming Optimism regenesis, there is an opportunity to perform the upgrade without any withdrawal downtime whatsoever, since Optimism will finalize all ongoing withdrawals just before the upgrade.</p>\n<p>Even though the existing bridges don't contain any critical issues that require an immediate upgrade, the proposed upgrade would make future upgrades easier, which should come in handy if there ever any urgency to upgrade.</p>\n<h2 id=\"specification\" style=\"position:relative;\"><a href=\"#specification\" aria-label=\"specification permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Specification</h2>\n<!--The specification should describe the syntax and semantics of any new feature, there are five sections\n1. Overview\n2. Rationale\n3. Technical Specification\n4. Test Cases\n5. Configurable Values\n-->\n<h3 id=\"overview\" style=\"position:relative;\"><a href=\"#overview\" aria-label=\"overview permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Overview</h3>\n<!--This is a high level overview of *how* the SIP will solve the problem. The overview should clearly describe how the new feature will be implemented.-->\n<p>A few changes would need to be made to the bridge contracts, <code>SynthetixBridgeToOptimism</code> and <code>SynthetixBridgeToBase</code>, and a new contract <code>SynthetixBridgeEscrow</code> would need to be created.</p>\n<p>The new bridge contracts should be deployed, and the deposit SNX migrated to the new deposit contract.</p>\n<h3 id=\"rationale\" style=\"position:relative;\"><a href=\"#rationale\" aria-label=\"rationale permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Rationale</h3>\n<!--This is where you explain the reasoning behind how you propose to solve the problem. Why did you propose to implement the change in this way, what were the considerations and trade-offs. The rationale fleshes out what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work. The rationale may also provide evidence of consensus within the community, and should discuss important objections or concerns raised during discussion.-->\n<p>To conform to the new standard bridge interface, the bridge contracts, <code>SynthetixBridgeToOptimism</code> and <code>SynthetixBridgeToBase</code>, will have a few functions renamed, and some new functions added. The new functions don't introduce any major functionality, but merely extend the existing functionality with added flexibility.</p>\n<p>A new deposit/withdrawal initiation mechanism will be added to the <code>SynthetixBridgeToOptimism</code> and <code>SynthetixBridgeToBase</code>. This mechanism will allow a bridge to stop accepting deposit or withdrawal initiation, while still allowing finalization. The idea is that future bridge updates will involve deploying new bridges, while partially disabling the old bridges to allow them to finalize their deposits and withdrawals. Once this happens, they can be disconnected from the <code>SynthetixBridgeEscrow</code> contract, and thus completely disabled.</p>\n<p>The <code>SynthetixBrideToOptimism</code> contract will be modified so that it no longer holds any SNX, and will instead forward the deposit to the new contract <code>SynthetixBridgeEscrow</code>. When finalizing a deposit, <code>SynthetixBridgeToOptimism</code> will have allowance to pull funds from <code>SynthetixBridgeEscrow</code>.</p>\n<p>In terms of the next bridge upgrade, the idea would be that after the new contracts are deployed, the system is suspended, and Optimism finalizes all withdrawals, the old <code>SynthetixBridgeToOptimism</code>'s migrate function will be called, effectively disabling it, and transferring all funds to <code>SynthetixBridgeEscrow</code>.</p>\n<h3 id=\"technical-specification---standard-bridge-interface\" style=\"position:relative;\"><a href=\"#technical-specification---standard-bridge-interface\" aria-label=\"technical specification   standard bridge interface permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Technical Specification - Standard Bridge Interface</h3>\n<p><code>SynthetixBridgeToOptimism</code> should adopt <a href=\"https://github.com/ethereum-optimism/contracts/blob/master/contracts/optimistic-ethereum/iOVM/bridge/tokens/iOVM_L1ERC20Gateway.sol\"><code>iOVM_L1ERC20Gateway</code></a>:</p>\n<pre><code class=\"language-solidity\">interface iOVM_L1ERC20Gateway {\n    function deposit(uint _amount) external;\n\n    function depositTo(address _to, uint _amount) external;\n\n    function finalizeWithdrawal(address _to, uint _amount) external;\n\n    event DepositInitiated(address indexed _from, address _to, uint256 _amount);\n\n    event WithdrawalFinalized(address indexed _to, uint256 _amount);\n}\n</code></pre>\n<p><code>SynthetixBridgeToBase</code> should adopt <a href=\"https://github.com/ethereum-optimism/contracts/blob/master/contracts/optimistic-ethereum/iOVM/bridge/tokens/iOVM_L2DepositedERC20.sol\"><code>iOVM_L2DepositedERC20</code></a>:</p>\n<pre><code class=\"language-solidity\">interface iOVM_L2DepositedERC20 is IUniswapV2ERC20 {\n    function withdraw(uint _amount) external;\n\n    function withdrawTo(address _to, uint _amount) external;\n\n    function finalizeDeposit(address _to, uint _amount) external;\n\n    event WithdrawalInitiated(address indexed _from, address _to, uint256 _amount);\n\n    event DepositFinalized(address indexed _to, uint256 _amount);\n}\n</code></pre>\n<p>The bridges should implement these interfaces, as well as the previously existing <code>ISynthetixBridgeToOptimism</code> and <code>ISynthetixBridgeToBase</code> interfaces.</p>\n<p>The new interface for <code>SynthetixBridgeToOptimism</code> should be:</p>\n<pre><code class=\"language-solidity\">interface ISynthetixBridgeToOptimism {\n    function migrateEscrow(uint256[][] calldata entryIDs) external;\n\n    function depositReward(uint amount) external;\n\n    function depositAndMigrateEscrow(uint256 depositAmount, uint256[][] calldata entryIDs) external;\n}\n</code></pre>\n<p>The new interface for <code>SynthetixBridgeToBase</code> should be:</p>\n<pre><code class=\"language-solidity\">interface ISynthetixBridgeToBase {\n    function finalizeEscrowMigration(\n        address account,\n        uint256 escrowedAmount,\n        VestingEntries.VestingEntry[] calldata vestingEntries\n    ) external;\n\n    function finalizeRewardDeposit(uint amount) external;\n}\n</code></pre>\n<h3 id=\"technical-specification---new-suspension-mechanism\" style=\"position:relative;\"><a href=\"#technical-specification---new-suspension-mechanism\" aria-label=\"technical specification   new suspension mechanism permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Technical Specification - New Suspension Mechanism</h3>\n<p>The same code should be used for both <code>SynthetixBridgeToOptimism</code> and <code>SynthetixBridgeToBase</code>.</p>\n<pre><code class=\"language-solidity\">initiationActive = true // set during contracy deployment\n\nmodifier requireInitiationActive() {\n        depositingActive();\n        _;\n}\n\nfunction depositingActive() internal view {\n        require(depositsActive, \"Initiation deactivated\");\n}\n\nfunction suspendInitiation() external onlyOwner {\n        initiationActive = false;\n        emit InitiationSuspended();\n}\n\nfunction resumeInitiation() external onlyOwner {\n    initiationActive = true;\n    emit InitiationResumed();\n}\n</code></pre>\n<h3 id=\"technical-specification---new-bridge-escrow-contract\" style=\"position:relative;\"><a href=\"#technical-specification---new-bridge-escrow-contract\" aria-label=\"technical specification   new bridge escrow contract permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Technical Specification - New Bridge Escrow Contract</h3>\n<p>The bridge would need to access the address of <code>SynthetixBridgeEscrow</code>, which is going to hold all the deposited SNX on the bridge's behalf. We propose to use the address resolver for this.</p>\n<pre><code class=\"language-solidity\">bytes32 private constant CONTRACT_SYNTHETIXBRIDGEESCROW = \"SynthetixBridgeEscrow\";\n\nfunction synthetixBridgeEscrow() internal view returns (address) {\n        return requireAndGetAddress(CONTRACT_SYNTHETIXBRIDGEESCROW);\n}\n</code></pre>\n<p>When SNX are deposited to the bridge, they should be transferred to <code>SynthetixBridgeEscrow</code> instead of the bridge itsef:</p>\n<pre><code class=\"language-solidity\">// move the SNX into SynthetixBridgeEscrow\nsynthetixERC20().transferFrom(msg.sender, synthetixBridgeEscrow(), amount);\n</code></pre>\n<h3 id=\"technical-specification---first-snx-migration\" style=\"position:relative;\"><a href=\"#technical-specification---first-snx-migration\" aria-label=\"technical specification   first snx migration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Technical Specification - First SNX Migration</h3>\n<ol>\n<li>\n<p>First, the new bridges would have to be deployed and connected to the system as part of an official release. This involves both the Ethereum and the Optimism instances to be suspended of course. Ownership of all new contracts is transferred to the Protocol DAO.</p>\n</li>\n<li>\n<p>At this point, Optimism would continue with the regenesis process, and inform Synthetix when all withdrawals have been finalized.</p>\n</li>\n<li>\n<p>Synthetix then calls the old <code>SynthetixBridgeToOptimism</code> contract's <code>migrateBridge(address newBridge)</code> function, targeting the <code>SynthetixBridgeEscrow</code> contract. Which transfers all the deposited SNX to the new escrow contract.</p>\n</li>\n<li>\n<p>The Protocol DAO, as the owner provides infinite allowance to the new <code>SynthetixBridgeToOptimism</code>.</p>\n</li>\n<li>\n<p>Systems are resumed.</p>\n</li>\n</ol>\n<h3 id=\"test-cases\" style=\"position:relative;\"><a href=\"#test-cases\" aria-label=\"test cases permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Test Cases</h3>\n<!--Test cases for an implementation are mandatory for SIPs but can be included with the implementation..-->\n<p>New test cases:</p>\n<ul>\n<li>\n<p><code>depositTo(address to, uint256 amount)</code></p>\n<ul>\n<li>Same as <code>deposit(uint256 amount)</code> amount, with</li>\n<li><code>msg.sender</code> is account1</li>\n<li><code>to</code> is account2</li>\n<li><code>amount</code> is deduced from account1's balance in L1</li>\n<li><code>amount</code> is minted for account2 on L2</li>\n</ul>\n</li>\n<li>\n<p><code>withdrawTo(address to, uint256 amount)</code></p>\n<ul>\n<li>Same as <code>withdraw(uint256 amount)</code> amount, with</li>\n<li><code>msg.sender</code> is account1</li>\n<li><code>to</code> is account2</li>\n<li><code>amount</code> is deduced from account1's balance in L2</li>\n<li><code>amount</code> is released for account2 on L1</li>\n</ul>\n</li>\n<li>\n<p><code>suspendInitiation()</code></p>\n<ul>\n<li><code>msg.sender</code> is should be the contract owner (otherwise the tx should revert)</li>\n<li><code>initiationActive</code> should be set to false</li>\n<li>an <code>InitiationSuspended</code> event is emitted</li>\n</ul>\n</li>\n<li>\n<p><code>resumeInitiation()</code></p>\n<ul>\n<li>Same as <code>suspendInitiation()</code></li>\n<li><code>msg.sender</code> should be the contract owner (otherwise the tx should revert)</li>\n<li><code>initiationActive</code> should be set to false</li>\n<li>an <code>InitiationResumed</code> event is emitted</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"configurable-values-via-sccp\" style=\"position:relative;\"><a href=\"#configurable-values-via-sccp\" aria-label=\"configurable values via sccp permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Configurable Values (Via SCCP)</h3>\n<!--Please list all values configurable via SCCP under this implementation.-->\n<p>No new configurable values are involved with the proposed changes.</p>\n<h2 id=\"copyright\" style=\"position:relative;\"><a href=\"#copyright\" aria-label=\"copyright permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Copyright</h2>\n<p>Copyright and related rights waived via <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0</a>.</p>"}},"pageContext":{"id":"b3f6be88-e2b4-56ad-a4d4-a44080ac64c3","frontmatter__sip":116,"__params":{"frontmatter__sip":"116"}}},"staticQueryHashes":[]}