Introduction
As part of our ongoing efforts to improve the efficiency, stability, and user experience of the protocol, we present the following proposals aimed at addressing identified system issues and optimizing key processes in light of recent network changes. These enhancements are designed to strengthen user perception of usability and adapt the protocol’s operations to the new block generation conditions.
Proposals
- Migration from TEX to OKU Trade in MOC Flow
Description:
We propose discontinuing TEX in MOC Flow and transitioning to the OKU Trade platform.
Justification:
- OKU Trade offers a more robust solution better suited to the current needs of the protocol.
- This change aims to optimize user experience and ensure MOC Flow operates more efficiently and reliably.
- Solution for the ROC Queue (Rif On Chain)
Problem identification:
- Edge cases were identified within the Flux Capacitor that caused prolonged blockages in the ROC Queue, negatively impacting the platform’s usability perception.
Proposed Solution: - Implement a solution in the ROC Queue logic to prevent future blockages and improve system stability.
- Adjustments to block duration parameters due to increased block frequency
context:
- Since October, the average number of blocks generated per day has significantly increased due to a reduction in the average block duration to less than ~22 seconds (compared to the previous ~30 seconds).
- This situation necessitates modifying certain parameters to maintain system efficiency.
Proposed adjustment: - Redefine the calculation of EMA, which was previously performed every ~2,880 blocks per day, to execute every ~3,927 blocks per day now.
- This adjustment ensures daily processes align with the new block generation rate.
Reference: - More details and block statistics can be found at: Rootstock Blockscout Stats.
Benefits of the change
- Improved user experience:
- The transition to OKU Trade will simplify processes, offering a more intuitive and seamless interaction.
- Enhanced operational stability:
- Upgrading the ROC Queue to eliminate prolonged blockages will ensure consistent and reliable performance.
- Adaptability to network changes:
- Adjusting block duration-related parameters, such as the EMA calculation, will allow the protocol to operate efficiently under the new block generation conditions.
- Protocol optimization:
- With a more efficient MOC Flow and adjusted parameters, the protocol will become more competitive and robust in meeting the ecosystem’s current demands.
Technical procedure to achieve these changes
Warning: some technical/coding knowledge is necessary to fully understand this document.
In order to make all these changes, a Change Contract must be put to a vote in the governance system and after the community reaches consensus, the changes will be executed.
This Change Contract will put these new previously deployed components to work.
Contract | Name | Type | Address ¹ |
---|---|---|---|
ReverseAuctionUniswapToken |
ReverseAuction MOC2BTC-1 |
Proxy | 0x73…17f3 |
ReverseAuctionUniswapToken |
ReverseAuction MOC2BTC-1 |
Impl. | 0xdF…E8e9 ² |
ReverseAuctionUniswapToken |
ReverseAuction MOC2BTC-2 |
Proxy | 0xbe…393D |
ReverseAuctionUniswapToken |
ReverseAuction MOC2BTC-2 |
Impl. | 0xdF…E8e9 ² |
ReverseAuctionUniswapToken |
ReverseAuction BTC2MOC |
Proxy | 0xc8…D508 |
ReverseAuctionUniswapToken |
ReverseAuction BTC2MOC |
Impl. | 0xdF…E8e9 ² |
ReverseAuctionUniswapToken |
ReverseAuction RIF2BTC |
Proxy | 0x35…F1E0 |
ReverseAuctionUniswapToken |
ReverseAuction RIF2BTC |
Impl. | 0xdF…E8e9 ² |
ReverseAuctionUniswapToken |
ReverseAuction BTC2RIF |
Proxy | 0x2A…5b2f |
ReverseAuctionUniswapToken |
ReverseAuction BTC2RIF |
Impl. | 0xdF…E8e9 ² |
Unwrapper |
Unwrapper |
Simple | 0x95…188D |
UniswapV3OracleUSD |
mocFeeTokenPriceProvider |
Simple | 0x15…A41b |
PriceProviderDiv |
rocFeeTokenPriceProvider |
Simple | 0x4f…230f |
CommissionSplitterV2 |
mocCommissionSplitterV2 |
Proxy | 0x60…6E47 |
CommissionSplitterV2 |
mocCommissionSplitterV2 |
Impl. | 0x3D…9BeB |
CommissionSplitterV3 |
mocCommissionSplitterV3 |
Proxy | 0x11…B0fD |
CommissionSplitterV3 |
mocCommissionSplitterV3 |
Impl. | 0x16…a019 |
CommissionSplitter |
rocCommissionSplitterV2 |
Proxy | 0x9C…5851 |
CommissionSplitter |
rocCommissionSplitterV2 |
Impl. | 0x4c…31C5 |
CommissionSplitter |
rocCommissionSplitterV3 |
Proxy | 0x6C…f948 |
CommissionSplitter |
rocCommissionSplitterV3 |
Impl. | 0x53…adD1 |
MocQueue (for ROC) |
newQueueImpl (for ROC) |
Impl. | 0xeA…f4aD |
¹ The contract address links point to the verified codes in the RSK explorer.
² The address of all reverse auction implementations are the same because they share the same logic.
List of the simplified steps carried out by the Change Contract
- Remove the threshold from all old ReverseAuctions.
- Remove the threshold from old Unwrapper.
- Fix the output of reverse auction BTC2RIF.
- Change the old outputs for the new ones in the Buffers.
- Add the new reverse auctions to the registry.
- Remove the old reverse auctions from the registry.
- Change queue implementation.
- Update ROC Stable V2 setups.
- Update MOC Stable V1 setups.
- Set the coiner mint block interval.
- Set the supporters period using impersonate method.
- Update MOC Stable V1 block span.
- Update ROC Stable V2 block span.
The changer contract to vote would be:
Name | Address ¹ |
---|---|
FixForOKUQueueBlockTimeChange |
0xA4821a85fFeb3f2F51dBCE7bae894E7b8121838A |
¹ The contract address links point to the verified codes in the RSK explorer.
The parameters loaded in the change contract
Registry portocol registry address
All old reverse auctions addresses
oldReverseAuctions(0)
:0xc1cDe1b4434f91c2B4d3eb079D6b04e409FEcb26
oldReverseAuctions(1)
:0x1C913f71D54e11751Da1dA5a027dfCf92b37bd7A
oldReverseAuctions(2)
:0x3A70513735A82BDd2c725A2Bf37cD8b1d1Eb085d
oldReverseAuctions(3)
:0xB64DC1c93573001551f32bC7443452e93A00344f
oldReverseAuctions(4)
:0x728967DD751F5f21bF390eeE66527dBC17bD7E25
All new reverse auctions addresses
newReverseAuctions(0)
:0x73e9DabfcDAE8e50BAF9F6FaDd2F4f8b845E17f3
newReverseAuctions(1)
:0xbe9B273d23A6ED9ca0df098bF70ac79bAD5D393D
newReverseAuctions(2)
:0xc8863d91604A12cE6073cA6A01D00172BB9BD508
newReverseAuctions(3)
:0x3533bd069Ed7dA74C2274869Cd930778e8edF1E0
newReverseAuctions(4)
:0x2Ae2870424E1bad972157c860C9e06f870e15b2f
Old unwrapper address
oldUnwrapper
:0x768282eD87A4D948E48c4E15C18bF5d91BAFa2ba
New reverse auction BTC2RIF address
newRevAucWRBtc2Rif
:0x2Ae2870424E1bad972157c860C9e06f870e15b2f
ROC Stable V2 mocRif address
mocRifStableV2
:0xA27024Ed70035E46dba712609fc2Afa1c97aA36A
Buffers addresses that need to modify their outputs
buffers(0)
:0x09A84d61c1A10f1D5fb3267DFb00D16ca0DaCC30
buffers(1)
:0x7002dD3027947aB98cA3DDC28F93F2450281453A
Old buffers exits
oldBuffersExit(0)
:0x1C913f71D54e11751Da1dA5a027dfCf92b37bd7A
oldBuffersExit(1)
:0x3A70513735A82BDd2c725A2Bf37cD8b1d1Eb085d
New buffers exits
newBuffersExit(0)
:0x73e9DabfcDAE8e50BAF9F6FaDd2F4f8b845E17f3
newBuffersExit(1)
:0xbe9B273d23A6ED9ca0df098bF70ac79bAD5D393D
Queue proxy contract
queueProxy
:0x9181E99dceace7dFd5f2E7d5126275D54067A9E3
New queue implementation contract
newQueueImpl
:0xeAcB4ACceaFebE4C5FE9f16a4ae544e4D86bf4aD
New ROC Fee Token price provider address
rocFeeTokenPriceProvider
:0x4fE0f11966DE88a0F8b489017F52d13D9eC1230f
New splitter for MoCFee collector in ROC
rocCommissionSplitterV2
:0x9C66296938d849802fFa879A20fdC11B58C55851
New splitter for TCInterest in ROC
rocCommissionSplitterV3
:0x6C22ff31fbdF725d30F206efFF9f8a2a11fAf948
MocInrate contract
mocInrate
:0xc0f9B54c41E3d0587Ce0F7540738d8d649b0A3F3
MocState contract
Moc Commission Splitter V2 contract
mocCommissionSplitterV2
:0x60cEEf03AA1AA96263e297D220EE4EBc3c6b6E47
Moc Commission Splitter V3 contract
mocCommissionSplitterV3
:0x114921bcbd5fc34E103494d338cA492B9400B0fD
New MOC Fee Token price provider address
mocFeeTokenPriceProvider
:0x15956e5F5792a241ACc3c607588626656C01A41b
Coiner address
Supporters address
supporters
:0xB1fc9817C4ad3C40562DfF1159732d657831558A
MocSettlement contract
mocSettlement
:0x609dF03D8a85eAffE376189CA7834D4C35e32F22
A month in blocks
aMonthInBlocks
:119536
A week in blocks
aWeekInBlocks
:27489
A day in blocks
aDayInBlocks
:3927