|
| 1 | +# Notes on splitting token from base |
| 2 | + |
| 3 | +## MangerBase |
| 4 | + |
| 5 | +### Implements (Should it implement all these?) |
| 6 | + |
| 7 | +- IManagerBase, |
| 8 | +- TransceiverRegistry, |
| 9 | +- PausableOwnable, |
| 10 | +- ReentrancyGuardUpgradeable, |
| 11 | +- Implementation |
| 12 | + |
| 13 | +### Functionality Provided |
| 14 | + |
| 15 | +- Stores the following: |
| 16 | + - Transceiver registry |
| 17 | + - Thresholds |
| 18 | + - Attestations |
| 19 | + - Message sequence number |
| 20 | +- Has the following functionality: |
| 21 | + - `quoteDeliveryPrice` |
| 22 | + - Record attestation |
| 23 | + - Send message |
| 24 | + |
| 25 | +### Simple Changes Made |
| 26 | + |
| 27 | +- Moved the following from `ManagerBase` to `NttManager: |
| 28 | + |
| 29 | + - Token |
| 30 | + - Mode |
| 31 | + - `_prepareForTransfer` |
| 32 | + |
| 33 | +### Possible Ideas |
| 34 | + |
| 35 | +- Maybe we could [like an external library](https://book.getfoundry.sh/reference/forge/forge-create#linker-options) for admin functionality. |
| 36 | + |
| 37 | +### Contract Sizes |
| 38 | + |
| 39 | +#### Before we started |
| 40 | + |
| 41 | +```bash |
| 42 | +evm (main)$ forge build --sizes --via-ir --skip test |
| 43 | + |
| 44 | +╭-----------------------------------------+------------------+-------------------+--------------------+---------------------╮ |
| 45 | +| Contract | Runtime Size (B) | Initcode Size (B) | Runtime Margin (B) | Initcode Margin (B) | |
| 46 | ++===========================================================================================================================+ |
| 47 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 48 | +| NttManager | 24,066 | 25,673 | 510 | 23,479 | |
| 49 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 50 | +| NttManagerNoRateLimiting | 17,141 | 18,557 | 7,435 | 30,595 | |
| 51 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 52 | +| TestManager | 8,981 | 10,259 | 15,595 | 38,893 | |
| 53 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 54 | + |
| 55 | +``` |
| 56 | + |
| 57 | +- Note the `TestManager` just instantiates `ManagerBase.sol`. |
| 58 | + |
| 59 | +#### After simple changes |
| 60 | + |
| 61 | +```bash |
| 62 | +evm (main)$ forge build --sizes --via-ir --skip test |
| 63 | + |
| 64 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 65 | +| NttManager | 24,066 | 25,676 | 510 | 23,476 | |
| 66 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 67 | +| NttManagerNoRateLimiting | 18,788 | 20,281 | 5,788 | 28,871 | |
| 68 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 69 | +| TestManager | 8,368 | 9,511 | 16,208 | 39,641 | |
| 70 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 71 | + |
| 72 | +``` |
| 73 | + |
| 74 | +``` |
| 75 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 76 | +| NttManager | 23,907 | 25,510 | 669 | 23,642 | |
| 77 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 78 | +| NttManagerHelpersLib | 58 | 87 | 24,518 | 49,065 | |
| 79 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 80 | +| NttManagerNoRateLimiting | 18,644 | 20,130 | 5,932 | 29,022 | |
| 81 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 82 | +``` |
| 83 | + |
| 84 | +- Question: Why did `NttManagerNoRateLimiting` grow so much?? |
| 85 | + |
| 86 | +#### Creating TransceiverRegistryAdmin |
| 87 | + |
| 88 | +#### Before |
| 89 | + |
| 90 | +```bash |
| 91 | +evm (main)$ forge build --sizes --via-ir --skip test |
| 92 | + |
| 93 | +╭-----------------------------------------+------------------+-------------------+--------------------+---------------------╮ |
| 94 | +| Contract | Runtime Size (B) | Initcode Size (B) | Runtime Margin (B) | Initcode Margin (B) | |
| 95 | ++===========================================================================================================================+ |
| 96 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 97 | +| NttManager | 24,066 | 25,673 | 510 | 23,479 | |
| 98 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 99 | +| NttManagerNoRateLimiting | 17,141 | 18,557 | 7,435 | 30,595 | |
| 100 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 101 | + |
| 102 | +``` |
| 103 | + |
| 104 | +#### After |
| 105 | + |
| 106 | +```bash |
| 107 | +evm (main)$ forge build --sizes --via-ir --skip test |
| 108 | + |
| 109 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 110 | +| NttManager | 23,220 | 26,937 | 1,356 | 22,215 | |
| 111 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 112 | +| NttManagerNoRateLimiting | 16,254 | 19,713 | 8,322 | 29,439 | |
| 113 | +|-----------------------------------------+------------------+-------------------+--------------------+---------------------| |
| 114 | + |
| 115 | +``` |
0 commit comments