Skip to content
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

chore: upgrade oz #56

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

chore: upgrade oz #56

wants to merge 1 commit into from

Conversation

sakulstra
Copy link
Contributor

@sakulstra sakulstra commented Jan 7, 2025

@sakulstra sakulstra marked this pull request as draft January 7, 2025 20:41
Copy link
Contributor

github-actions bot commented Jan 7, 2025

Gas report

Create3Factory

  • size: 1122 / 49152
Method min mean median max calls
create(bytes32,bytes) ↓-0.83%41507 209909 ↓-0.12%293726 ↑0.14%294494 3

TransparentProxyFactory

  • size: 5342 / 49152
Method min mean median max calls
createDeterministic(address,address,bytes,bytes32) ↓-0.14%384346 ↓-0.12%384448 ↓-0.12%384448 384550 2
createDeterministicProxyAdmin(address,bytes32) ↑0.2%288932 288932 288932 288932 2

ERC20

  • size: 3212 / 49152

MockERC721

  • size: 2449 / 49152
Method min mean median max calls
mint(address,uint256) ↓-0.3%68114 ↓-0.15%68216 ↓-0.15%68216 68318 2
transferFrom(address,address,uint256) ↓-0.38%53893 ↓-0.38%53893 ↓-0.38%53893 ↓-0.38%53893 1

ImplOwnableWithGuardian

  • size: 1198 / 49152
Method min mean median max calls
updateGuardian(address) 26169 ↓-0.15%29976 30519 30519 9

PermissionlessRescuable

  • size: 2145 / 49152

Rescuable721

  • size: 2233 / 49152
Method min mean median max calls
emergency721TokenTransfer(address,address,uint256) ↓-0.91%22219 ↓-0.5%40862 ↓-0.5%40862 ↓-0.34%59505 2

ImplOwnableWithGuardian

  • size: 1492 / 49152
Method min mean median max calls
updateGuardian(address) ↓-0.82%26127 ↓-0.7%28996 ↓-0.67%30328 ↓-0.62%30535 3

Copy link
Contributor

github-actions bot commented Jan 7, 2025

🔧 Build logs
Compiling 88 files with Solc 0.8.28
installing solc version "0.8.28"
Successfully installed solc 0.8.28
Solc 0.8.28 finished in 3.94s
Compiler run successful with warnings:
Warning (5667): Unused function parameter. Remove or comment out the variable name to silence this warning.
   --> src/mocks/ERC721.sol:933:23:
    |
933 |     function tokenURI(uint256 id) public view override returns (string memory) {
    |                       ^^^^^^^^^^

Warning (2018): Function state mutability can be restricted to pure
   --> src/mocks/ERC721.sol:923:5:
    |
923 |     function name() public view override returns (string memory) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/mocks/ERC721.sol:928:5:
    |
928 |     function symbol() public view override returns (string memory) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to pure
   --> src/mocks/ERC721.sol:933:5:
    |
933 |     function tokenURI(uint256 id) public view override returns (string memory) {
    |     ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
  --> test/PermissionlessRescuable.t.sol:63:3:
   |
63 |   function test_whoShouldReceiveFunds() public {
   |   ^ (Relevant source part starts here and spans across multiple lines).

Warning (2018): Function state mutability can be restricted to view
  --> test/UpgradeableOwnableWithGuardian.t.sol:29:3:
   |
29 |   function test_initializer() external {
   |   ^ (Relevant source part starts here and spans across multiple lines).


╭-----------------------------+------------------+-------------------+--------------------+---------------------╮
| Contract                    | Runtime Size (B) | Initcode Size (B) | Runtime Margin (B) | Initcode Margin (B) |
+===============================================================================================================+
| Address                     | 85               | 135               | 24,491             | 49,017              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| ChainHelpers                | 85               | 135               | 24,491             | 49,017              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| ChainIds                    | 85               | 135               | 24,491             | 49,017              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| Create2Utils                | 162              | 212               | 24,414             | 48,940              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| Create3                     | 85               | 135               | 24,491             | 49,017              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| Create3Factory              | 1,094            | 1,122             | 23,482             | 48,030              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| ERC1967Proxy                | 163              | 1,014             | 24,413             | 48,138              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| ERC1967Utils                | 85               | 135               | 24,491             | 49,017              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| ERC20                       | 2,331            | 3,020             | 22,245             | 46,132              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| EnumerableSet               | 85               | 135               | 24,491             | 49,017              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| Errors                      | 85               | 135               | 24,491             | 49,017              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| ImplOwnableWithGuardian     | 1,464            | 1,492             | 23,112             | 47,660              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| MockContract                | 759              | 1,021             | 23,817             | 48,131              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| MockERC721                  | 2,421            | 2,449             | 22,155             | 46,703              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| MockImpl                    | 465              | 690               | 24,111             | 48,462              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| PermissionlessRescuable     | 1,908            | 2,081             | 22,668             | 47,071              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| ProxyAdmin                  | 1,039            | 1,275             | 23,537             | 47,877              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| Rescuable                   | 1,807            | 1,958             | 22,769             | 47,194              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| Rescuable721                | 2,043            | 2,201             | 22,533             | 46,951              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| RescuableACL                | 1,695            | 1,827             | 22,881             | 47,325              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| SafeCast                    | 85               | 135               | 24,491             | 49,017              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| SafeERC20                   | 85               | 135               | 24,491             | 49,017              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| StorageSlot                 | 85               | 135               | 24,491             | 49,017              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| TestNetChainIds             | 85               | 135               | 24,491             | 49,017              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| TransparentProxyFactory     | 5,314            | 5,342             | 19,262             | 43,810              |
|-----------------------------+------------------+-------------------+--------------------+---------------------|
| TransparentUpgradeableProxy | 1,137            | 2,266             | 23,439             | 46,886              |
╰-----------------------------+------------------+-------------------+--------------------+---------------------╯
🔧 Build logs zksync
Compiling 47 files with zksolc and solc 0.8.24
zksolc and solc 0.8.24 finished in 11.13s
Compiler run successful with warnings:
Warning (2519)
Warning: This declaration shadows an existing declaration.
  --> zksync/test/TransparentProxyFactoryZkSync.t.sol:88:5:
   |
88 |     address proxyAdmin = factory.createDeterministicProxyAdmin(proxyAdminOwner, proxyAdminSalt);
   |     ^^^^^^^^^^^^^^^^^^
Note: The shadowed declaration is here:
  --> zksync/test/TransparentProxyFactoryZkSync.t.sol:14:3:
   |
14 |   ProxyAdmin internal proxyAdmin;
   |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Warning (2519)
Warning: This declaration shadows an existing declaration.
   --> zksync/test/TransparentProxyFactoryZkSync.t.sol:106:5:
    |
106 |     address proxyAdmin = factory.createDeterministicProxyAdmin(proxyAdminOwner, proxyAdminSalt);
    |     ^^^^^^^^^^^^^^^^^^
Note: The shadowed declaration is here:
  --> zksync/test/TransparentProxyFactoryZkSync.t.sol:14:3:
   |
14 |   ProxyAdmin internal proxyAdmin;
   |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


╭-------------------------------+------------------+-------------------+--------------------+---------------------╮
| Contract                      | Runtime Size (B) | Initcode Size (B) | Runtime Margin (B) | Initcode Margin (B) |
+=================================================================================================================+
| Address                       | 224              | 224               | 450,775            | 450,775             |
|-------------------------------+------------------+-------------------+--------------------+---------------------|
| Create2UtilsZkSync            | 480              | 480               | 450,519            | 450,519             |
|-------------------------------+------------------+-------------------+--------------------+---------------------|
| ERC1967Proxy                  | 4,000            | 4,000             | 446,999            | 446,999             |
|-------------------------------+------------------+-------------------+--------------------+---------------------|
| ERC1967Utils                  | 224              | 224               | 450,775            | 450,775             |
|-------------------------------+------------------+-------------------+--------------------+---------------------|
| Errors                        | 224              | 224               | 450,775            | 450,775             |
|-------------------------------+------------------+-------------------+--------------------+---------------------|
| MockImpl                      | 2,208            | 2,208             | 448,791            | 448,791             |
|-------------------------------+------------------+-------------------+--------------------+---------------------|
| ProxyAdmin                    | 4,384            | 4,384             | 446,615            | 446,615             |
|-------------------------------+------------------+-------------------+--------------------+---------------------|
| StorageSlot                   | 224              | 224               | 450,775            | 450,775             |
|-------------------------------+------------------+-------------------+--------------------+---------------------|
| TransparentProxyFactoryZkSync | 7,712            | 7,712             | 443,287            | 443,287             |
|-------------------------------+------------------+-------------------+--------------------+---------------------|
| TransparentUpgradeableProxy   | 6,752            | 6,752             | 444,247            | 444,247             |
╰-------------------------------+------------------+-------------------+--------------------+---------------------╯

Copy link
Contributor

github-actions bot commented Jan 7, 2025

🌈 Test Results
No files changed, compilation skipped

Ran 1 test for test/ChainHelperTest.t.sol:TestChainHelpers
[PASS] test_selectChain_shouldRevert() (gas: 3293)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 527.39µs (148.90µs CPU time)

Ran 6 tests for test/PermissionlessRescuable.t.sol:PermissionlessRescuableTest
[PASS] test_emergencyEtherTransfer() (gas: 59257)
[PASS] test_emergencyEtherTransferInsufficientBalance_shouldRevert() (gas: 45456)
[PASS] test_emergencyTokenTransfer() (gas: 81017)
[PASS] test_emergencyTokenTransferInsufficientBalance_shouldRevert() (gas: 21438)
[PASS] test_emergencyTokenTransfer_withTransferRestriction() (gas: 115750)
[PASS] test_whoShouldReceiveFunds() (gas: 12734)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 1.01ms (567.23µs CPU time)

Ran 5 tests for test/Rescuable.t.sol:RescueTest
[PASS] testEmergencyEtherTransfer() (gas: 57744)
[PASS] testEmergencyEtherTransferWhenNotOwner() (gas: 17666)
[PASS] testEmergencyTokenTransfer() (gas: 231216)
[PASS] testEmergencyTokenTransferWhenNotOwner() (gas: 203504)
[PASS] testToken() (gas: 2392)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 5.51ms (5.12ms CPU time)

Ran 5 tests for test/RescuableACL.t.sol:RescueACLTest
[PASS] testEmergencyEtherTransfer() (gas: 57746)
[PASS] testEmergencyEtherTransferWhenNotOwner() (gas: 17659)
[PASS] testEmergencyTokenTransfer() (gas: 231235)
[PASS] testEmergencyTokenTransferWhenNotOwner() (gas: 203516)
[PASS] testToken() (gas: 2392)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 2.55ms (2.16ms CPU time)

Ran 6 tests for test/OwnableWithGuardian.t.sol:TestOfOwnableWithGuardian
[PASS] testConstructorLogic() (gas: 18202)
[PASS] testGuardianUpdateNoAccess() (gas: 14902)
[PASS] testGuardianUpdateViaGuardian(address) (runs: 256, μ: 19419, ~: 19419)
[PASS] testGuardianUpdateViaOwner(address) (runs: 256, μ: 19236, ~: 19236)
[PASS] test_onlyGuardianGuard() (gas: 12577)
[PASS] test_onlyGuardianGuard_shouldRevert() (gas: 10566)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 49.72ms (35.55ms CPU time)

Ran 3 tests for test/Rescuable721.t.sol:Rescue721Test
[PASS] testFuzzEmergencyTokenTransfer(address) (runs: 256, μ: 79081, ~: 79081)
[PASS] testFuzzEmergencyTokenTransferWhenNotOwner(address,address) (runs: 256, μ: 71859, ~: 71859)
[PASS] testToken() (gas: 2458)
Suite result: ok. 3 passed; 0 failed; 0 skipped; finished in 56.38ms (82.16ms CPU time)

Ran 6 tests for test/UpgradeableOwnableWithGuardian.t.sol:TestOfUpgradableOwnableWithGuardian
[PASS] test_initializer() (gas: 18304)
[PASS] test_onlyGuardian() (gas: 11066)
[PASS] test_onlyOwnerOrGuardian() (gas: 13262)
[PASS] test_updateGuardian_eoa(address,address) (runs: 256, μ: 18703, ~: 18703)
[PASS] test_updateGuardian_guardian(address) (runs: 256, μ: 19684, ~: 19684)
[PASS] test_updateGuardian_owner(address) (runs: 256, μ: 19400, ~: 19400)
Suite result: ok. 6 passed; 0 failed; 0 skipped; finished in 35.27ms (35.04ms CPU time)

Ran 2 tests for test/create3Test.t.sol:Create3FactoryTest
[PASS] testCreate3WithValue(address,address,address) (runs: 256, μ: 280857, ~: 280857)
[PASS] testCreate3WithoutValue(address,address,bytes32) (runs: 256, μ: 283786, ~: 283786)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 86.48ms (138.48ms CPU time)

Ran 4 tests for test/TransparentProxyFactory.t.sol:TestTransparentProxyFactory
[PASS] testCreateDeterministic(address,bytes32) (runs: 256, μ: 384826, ~: 384826)
[PASS] testCreateDeterministicProxyAdmin(address,bytes32) (runs: 256, μ: 282376, ~: 282376)
[PASS] testCreateDeterministicWithDeterministicProxy(bytes32,bytes32) (runs: 256, μ: 391377, ~: 391377)
[PASS] testCreateProxyAdmin(address,bytes32) (runs: 256, μ: 276438, ~: 276438)
Suite result: ok. 4 passed; 0 failed; 0 skipped; finished in 166.65ms (244.29ms CPU time)

Ran 9 test suites in 168.89ms (404.10ms CPU time): 38 tests passed, 0 failed, 0 skipped (38 total tests)
🌈 Test Results zksync
Compiling 45 files with Solc 0.8.24
Solc 0.8.24 finished in 1.64s
Compiler run successful with warnings:
Warning (2519): This declaration shadows an existing declaration.
  --> zksync/test/TransparentProxyFactoryZkSync.t.sol:88:5:
   |
88 |     address proxyAdmin = factory.createDeterministicProxyAdmin(proxyAdminOwner, proxyAdminSalt);
   |     ^^^^^^^^^^^^^^^^^^
Note: The shadowed declaration is here:
  --> zksync/test/TransparentProxyFactoryZkSync.t.sol:14:3:
   |
14 |   ProxyAdmin internal proxyAdmin;
   |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Warning (2519): This declaration shadows an existing declaration.
   --> zksync/test/TransparentProxyFactoryZkSync.t.sol:106:5:
    |
106 |     address proxyAdmin = factory.createDeterministicProxyAdmin(proxyAdminOwner, proxyAdminSalt);
    |     ^^^^^^^^^^^^^^^^^^
Note: The shadowed declaration is here:
  --> zksync/test/TransparentProxyFactoryZkSync.t.sol:14:3:
   |
14 |   ProxyAdmin internal proxyAdmin;
   |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


No files changed, compilation skipped

Ran 5 tests for zksync/test/TransparentProxyFactoryZkSync.t.sol:TestTransparentProxyFactoryZkSync
[PASS] testCreate() (gas: 343742)
[PASS] testCreateDeterministic(bytes32) (runs: 256, μ: 576712, ~: 576712)
[PASS] testCreateDeterministicProxyAdmin(address,bytes32) (runs: 256, μ: 466616, ~: 471406)
[PASS] testCreateDeterministicWithDeterministicProxy(bytes32,bytes32) (runs: 256, μ: 687776, ~: 687792)
[PASS] testCreateProxyAdmin(address,bytes32) (runs: 256, μ: 355533, ~: 359815)
Suite result: ok. 5 passed; 0 failed; 0 skipped; finished in 11.01s (35.55s CPU time)

Ran 1 test suite in 11.01s (11.01s CPU time): 5 tests passed, 0 failed, 0 skipped (5 total tests)

Copy link
Contributor

github-actions bot commented Jan 7, 2025

🔮 Coverage report
File Line Coverage Function Coverage Branch Coverage
src/contracts/access-control/OwnableWithGuardian.sol ${\color{orange}88.89\%}$
$16 / 18$
19, 20
${\color{orange}87.5\%}$
$7 / 8$
OwnableWithGuardian.onlyOwnerOrGuardian
${\color{green}100\%}$
$4 / 4$
src/contracts/access-control/UpgradeableOwnableWithGuardian.sol ${\color{green}100\%}$
$23 / 23$
${\color{green}100\%}$
$9 / 9$
${\color{green}100\%}$
$2 / 2$
src/contracts/create3/Create3.sol ${\color{orange}89.47\%}$
$17 / 19$
62, 66
${\color{red}80\%}$
$4 / 5$
Create3.create3
${\color{red}33.33\%}$
$1 / 3$
src/contracts/create3/Create3Factory.sol ${\color{green}100\%}$
$6 / 6$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$0 / 0$
src/contracts/oz-common/Ownable.sol ${\color{red}76.47\%}$
$13 / 17$
36, 37, 62, 63
${\color{red}71.43\%}$
$5 / 7$
Ownable.onlyOwner, Ownable.renounceOwnership
${\color{red}50\%}$
$2 / 4$
src/contracts/oz-common/SafeERC20.sol ${\color{red}16.67\%}$
$5 / 30$
45, 46, 53, 54, 55 and 20 more
${\color{red}25\%}$
$2 / 8$
SafeERC20.safeTransferFrom, SafeERC20.safeIncreaseAllowance, SafeERC20.safeDecreaseAllowance, SafeERC20.forceApprove, SafeERC20.safePermit and 1 more
${\color{red}0\%}$
$0 / 4$
src/contracts/transparent-proxy/Initializable.sol ${\color{red}66.67\%}$
$16 / 24$
123, 124, 128, 129, 131 and 3 more
${\color{red}60\%}$
$3 / 5$
Initializable.reinitializer, Initializable.onlyInitializing
${\color{red}45.45\%}$
$5 / 11$
src/contracts/transparent-proxy/Proxy.sol ${\color{red}0\%}$
$0 / 16$
28, 33, 37, 40, 44 and 11 more
${\color{red}0\%}$
$0 / 5$
Proxy._delegate, Proxy._fallback, Proxy.fallback, Proxy.receive, Proxy._beforeFallback
${\color{green}100\%}$
$0 / 0$
src/contracts/transparent-proxy/ProxyAdmin.sol ${\color{red}0\%}$
$0 / 2$
38, 43
${\color{red}0\%}$
$0 / 1$
ProxyAdmin.upgradeAndCall
${\color{green}100\%}$
$0 / 0$
src/contracts/transparent-proxy/TransparentProxyFactory.sol ${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$1 / 1$
${\color{green}100\%}$
$0 / 0$
src/contracts/transparent-proxy/TransparentProxyFactoryBase.sol ${\color{red}63.64\%}$
$14 / 22$
18, 19, 21, 22, 26 and 3 more
${\color{red}66.67\%}$
$4 / 6$
TransparentProxyFactoryBase.create, TransparentProxyFactoryBase.createProxyAdmin
${\color{green}100\%}$
$0 / 0$
src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol ${\color{red}57.14\%}$
$8 / 14$
104, 105, 107, 121, 122 and 1 more
${\color{red}75\%}$
$3 / 4$
TransparentUpgradeableProxy._dispatchUpgradeToAndCall
${\color{red}0\%}$
$0 / 4$
src/contracts/utils/PermissionlessRescuable.sol ${\color{green}100\%}$
$4 / 4$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$0 / 0$
src/contracts/utils/Rescuable.sol ${\color{green}100\%}$
$7 / 7$
${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$1 / 1$
src/contracts/utils/Rescuable721.sol ${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$1 / 1$
${\color{green}100\%}$
$0 / 0$
src/contracts/utils/RescuableACL.sol ${\color{green}100\%}$
$6 / 6$
${\color{green}100\%}$
$3 / 3$
${\color{green}100\%}$
$0 / 0$
src/contracts/utils/RescuableBase.sol ${\color{green}100\%}$
$10 / 10$
${\color{green}100\%}$
$2 / 2$
${\color{green}100\%}$
$1 / 1$

@sakulstra sakulstra marked this pull request as ready for review January 7, 2025 22:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant