-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgasHelper_asm.sol
More file actions
44 lines (41 loc) · 1.63 KB
/
gasHelper_asm.sol
File metadata and controls
44 lines (41 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract GasHelper_asm {
function deploy(
address logicContract
) external payable returns (address proxy, uint256 gasUsed) {
uint256 gasBefore = gasleft();
{
// //# v1
// bytes memory deploymentData = abi.encodePacked(
// hex"73",
// logicContract,
// hex"7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55604280380380825f395ff37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff16365f5f375f5f365f845af43d5f5f3e58600801573d5ffd5b3d5ff3"
// );
//# v2
bytes memory deploymentData = abi.encodePacked(
hex"60518060225f395f73",
logicContract,
hex"60165155f373ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416365f5f375f5f365f845af43d5f5f3e604d573d5ffd5b3d5ff3"
);
assembly ("memory-safe") {
// proxy := create2(
// 0x0,
// add(deploymentData, 0x20),
// mload(deploymentData),
// 0
// )
proxy := create(
0x0,
add(deploymentData, 0x20),
mload(deploymentData)
)
if iszero(proxy) {
revert(0, 0)
}
}
}
uint256 gasAfter = gasleft();
gasUsed = gasBefore - gasAfter;
}
}