pancakeswap / pancake-v4-core

GNU General Public License v2.0
52 stars 36 forks source link

[Do not merge] example: create3 and create2 #179

Open ChefMist opened 1 month ago

ChefMist commented 1 month ago

Create3

For create3, it require a code change on our end, on places where Ownable(msg.sender).

In create3, the steps are as follow:

  1. deploy a minimal proxy contract
  2. proxy contract deploy contract via proxy.call{value: value}(creationCode)

Thus the owner is actually proxy contract, not Create3Factory.

thus to use create3, we will need

  1. deploy create3Factory on multiple chains
  2. update code from Ownable(msg.sender) to owner passed in constructor.

Create2

For create2, due to Ownable(msg.sender), the owner for Vault would be Create2Factory, thus we can't use publicly available create2Factory as we need to call transferOwnership.

thus to use create2, the steps are

  1. deploy create2Factory on multiple chains
github-actions[bot] commented 1 month ago
File % Lines % Statements % Branches % Funcs
src/Extsload.sol 0.00% (0/15) 0.00% (0/16) 0.00% (0/1) 100.00% (2/2)
src/Owner.sol 0.00% (0/2) 0.00% (0/2) 100.00% (0/0) 100.00% (3/3)
src/ProtocolFees.sol 86.96% (20/23) 90.32% (28/31) 100.00% (5/5) 100.00% (5/5)
src/Vault.sol 92.16% (47/51) 90.41% (66/73) 83.33% (10/12) 85.71% (18/21)
src/VaultToken.sol 85.19% (23/27) 82.86% (29/35) 100.00% (4/4) 87.50% (7/8)
src/base/Ownable.sol 81.82% (9/11) 83.33% (10/12) 50.00% (1/2) 100.00% (6/6)
src/base/Pausable.sol 75.00% (6/8) 75.00% (6/8) 100.00% (1/1) 100.00% (5/5)
src/base/PausableRole.sol 100.00% (5/5) 100.00% (9/9) 100.00% (1/1) 100.00% (4/4)
src/libraries/BipsLibrary.sol 100.00% (2/2) 100.00% (4/4) 100.00% (1/1) 100.00% (1/1)
src/libraries/CustomRevert.sol 0.00% (0/9) 0.00% (0/9) 100.00% (0/0) 100.00% (1/1)
src/libraries/Hooks.sol 77.27% (17/22) 84.21% (32/38) 83.33% (5/6) 100.00% (5/5)
src/libraries/LPFeeLibrary.sol 77.78% (7/9) 86.67% (13/15) 100.00% (1/1) 100.00% (6/6)
src/libraries/ParseBytes.sol 0.00% (0/3) 0.00% (0/3) 100.00% (0/0) 100.00% (3/3)
src/libraries/ProtocolFeeLibrary.sol 20.00% (2/10) 20.00% (2/10) 100.00% (0/0) 100.00% (4/4)
src/libraries/SafeCast.sol 83.33% (10/12) 61.11% (11/18) 0.00% (0/5) 100.00% (6/6)
src/libraries/SettlementGuard.sol 56.25% (9/16) 68.18% (15/22) 100.00% (4/4) 100.00% (5/5)
src/libraries/VaultReserve.sol 0.00% (0/4) 0.00% (0/4) 100.00% (0/0) 100.00% (2/2)
src/libraries/math/Encoded.sol 0.00% (0/8) 0.00% (0/9) 100.00% (0/0) 85.71% (6/7)
src/libraries/math/ParametersHelper.sol 100.00% (3/3) 100.00% (3/3) 100.00% (1/1) 100.00% (2/2)
src/libraries/math/UnsafeMath.sol 0.00% (0/2) 0.00% (0/2) 100.00% (0/0) 100.00% (2/2)
src/pool-bin/BinPoolManager.sol 96.81% (91/94) 96.46% (109/113) 84.62% (11/13) 87.50% (14/16)
src/pool-bin/BinPoolManagerOwner.sol 100.00% (8/8) 100.00% (9/9) 100.00% (1/1) 100.00% (7/7)
src/pool-bin/libraries/BinHelper.sol 89.66% (78/87) 91.60% (109/119) 75.00% (12/16) 100.00% (9/9)
src/pool-bin/libraries/BinHooks.sol 90.54% (67/74) 91.67% (77/84) 72.73% (16/22) 100.00% (11/11)
src/pool-bin/libraries/BinPool.sol 96.50% (138/143) 96.49% (165/171) 93.10% (27/29) 100.00% (16/16)
src/pool-bin/libraries/BinPoolParametersHelper.sol 100.00% (2/2) 100.00% (3/3) 100.00% (0/0) 100.00% (2/2)
src/pool-bin/libraries/BinPosition.sol 57.14% (4/7) 62.50% (5/8) 100.00% (0/0) 100.00% (4/4)
src/pool-bin/libraries/FeeHelper.sol 100.00% (8/8) 100.00% (12/12) 100.00% (0/0) 100.00% (3/3)
src/pool-bin/libraries/PriceHelper.sol 100.00% (10/10) 100.00% (21/21) 100.00% (0/0) 100.00% (6/6)
src/pool-bin/libraries/math/BitMath.sol 8.77% (5/57) 12.90% (8/62) 0.00% (0/16) 100.00% (4/4)
src/pool-bin/libraries/math/LiquidityConfigurations.sol 84.62% (11/13) 89.47% (17/19) 100.00% (1/1) 100.00% (3/3)
src/pool-bin/libraries/math/PackedUint128Math.sol 65.62% (21/32) 76.79% (43/56) 100.00% (2/2) 86.67% (13/15)
src/pool-bin/libraries/math/SafeCast.sol 94.29% (33/35) 49.25% (33/67) 0.00% (0/32) 100.00% (33/33)
src/pool-bin/libraries/math/TreeMath.sol 100.00% (82/82) 100.00% (101/101) 100.00% (16/16) 100.00% (7/7)
src/pool-bin/libraries/math/Uint128x128Math.sol 34.72% (25/72) 32.00% (32/100) 20.69% (6/29) 100.00% (2/2)
src/pool-bin/libraries/math/Uint256x256Math.sol 78.05% (32/41) 84.21% (48/57) 100.00% (9/9) 100.00% (8/8)
src/pool-cl/CLPoolManager.sol 97.10% (67/69) 93.41% (85/91) 80.00% (8/10) 86.67% (13/15)
src/pool-cl/CLPoolManagerOwner.sol 100.00% (5/5) 100.00% (5/5) 100.00% (0/0) 100.00% (5/5)
src/pool-cl/libraries/BitMath.sol 18.18% (2/11) 18.18% (2/11) 0.00% (0/4) 100.00% (2/2)
src/pool-cl/libraries/CLHooks.sol 91.30% (63/69) 93.75% (75/80) 78.26% (18/23) 100.00% (9/9)
src/pool-cl/libraries/CLPool.sol 96.36% (106/110) 96.46% (109/113) 94.44% (34/36) 100.00% (8/8)
src/pool-cl/libraries/CLPoolGetters.sol 100.00% (3/3) 100.00% (3/3) 100.00% (0/0) 100.00% (3/3)
src/pool-cl/libraries/CLPoolParametersHelper.sol 100.00% (2/2) 100.00% (3/3) 100.00% (0/0) 100.00% (2/2)
src/pool-cl/libraries/CLPosition.sol 81.25% (13/16) 84.21% (16/19) 100.00% (4/4) 100.00% (3/3)
src/pool-cl/libraries/FullMath.sol 68.97% (20/29) 72.73% (24/33) 33.33% (2/6) 100.00% (2/2)
src/pool-cl/libraries/LiquidityMath.sol 0.00% (0/4) 0.00% (0/4) 0.00% (0/1) 100.00% (1/1)
src/pool-cl/libraries/SqrtPriceMath.sol 60.42% (29/48) 69.84% (44/63) 58.33% (7/12) 100.00% (9/9)
src/pool-cl/libraries/SwapMath.sol 80.77% (21/26) 81.48% (22/27) 100.00% (6/6) 100.00% (2/2)
src/pool-cl/libraries/Tick.sol 79.17% (38/48) 81.48% (44/54) 100.00% (10/10) 100.00% (6/6)
src/pool-cl/libraries/TickBitmap.sol 40.00% (12/30) 50.00% (18/36) 66.67% (2/3) 100.00% (4/4)
src/pool-cl/libraries/TickMath.sol 30.00% (36/120) 48.80% (81/166) 95.83% (23/24) 100.00% (4/4)
src/types/BalanceDelta.sol 0.00% (0/2) 0.00% (0/2) 100.00% (0/0) 100.00% (2/2)
src/types/BeforeSwapDelta.sol 0.00% (0/2) 0.00% (0/2) 100.00% (0/0) 100.00% (2/2)
src/types/Currency.sol 59.09% (13/22) 70.00% (21/30) 75.00% (6/8) 100.00% (6/6)
src/types/PoolId.sol 0.00% (0/1) 0.00% (0/1) 100.00% (0/0) 100.00% (1/1)