@1inch/solidity-utils 2.2.16 → 2.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/contracts/libraries/ECDSA.sol +9 -18
- package/contracts/libraries/RevertReasonForwarder.sol +1 -2
- package/contracts/libraries/RevertReasonParser.sol +3 -6
- package/contracts/libraries/SafeERC20.sol +27 -18
- package/contracts/libraries/StringUtil.sol +1 -2
- package/contracts/libraries/UniERC20.sol +2 -4
- package/dist/src/permit.d.ts +1 -1
- package/dist/src/permit.js +7 -1
- package/dist/src/permit.js.map +1 -1
- package/package.json +1 -1
|
@@ -25,8 +25,7 @@ library ECDSA {
|
|
|
25
25
|
bytes32 r,
|
|
26
26
|
bytes32 s
|
|
27
27
|
) internal view returns (address signer) {
|
|
28
|
-
|
|
29
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
28
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
30
29
|
if lt(s, _S_BOUNDARY) {
|
|
31
30
|
let ptr := mload(0x40)
|
|
32
31
|
|
|
@@ -46,8 +45,7 @@ library ECDSA {
|
|
|
46
45
|
bytes32 r,
|
|
47
46
|
bytes32 vs
|
|
48
47
|
) internal view returns (address signer) {
|
|
49
|
-
|
|
50
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
48
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
51
49
|
let s := and(vs, _COMPACT_S_MASK)
|
|
52
50
|
if lt(s, _S_BOUNDARY) {
|
|
53
51
|
let ptr := mload(0x40)
|
|
@@ -71,8 +69,7 @@ library ECDSA {
|
|
|
71
69
|
/// signature uniqueness will get rekt.
|
|
72
70
|
/// More info: https://github.com/OpenZeppelin/openzeppelin-contracts/security/advisories/GHSA-4h98-2769-gh6h
|
|
73
71
|
function recover(bytes32 hash, bytes calldata signature) internal view returns (address signer) {
|
|
74
|
-
|
|
75
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
72
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
76
73
|
let ptr := mload(0x40)
|
|
77
74
|
|
|
78
75
|
// memory[ptr:ptr+0x80] = (hash, v, r, s)
|
|
@@ -166,8 +163,7 @@ library ECDSA {
|
|
|
166
163
|
// (bool success, bytes memory data) = signer.staticcall(abi.encodeWithSelector(IERC1271.isValidSignature.selector, hash, signature));
|
|
167
164
|
// return success && data.length >= 4 && abi.decode(data, (bytes4)) == IERC1271.isValidSignature.selector;
|
|
168
165
|
bytes4 selector = IERC1271.isValidSignature.selector;
|
|
169
|
-
|
|
170
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
166
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
171
167
|
let ptr := mload(0x40)
|
|
172
168
|
|
|
173
169
|
mstore(ptr, selector)
|
|
@@ -189,8 +185,7 @@ library ECDSA {
|
|
|
189
185
|
bytes32 s
|
|
190
186
|
) internal view returns (bool success) {
|
|
191
187
|
bytes4 selector = IERC1271.isValidSignature.selector;
|
|
192
|
-
|
|
193
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
188
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
194
189
|
let ptr := mload(0x40)
|
|
195
190
|
|
|
196
191
|
mstore(ptr, selector)
|
|
@@ -215,8 +210,7 @@ library ECDSA {
|
|
|
215
210
|
// (bool success, bytes memory data) = signer.staticcall(abi.encodeWithSelector(IERC1271.isValidSignature.selector, hash, abi.encodePacked(r, vs)));
|
|
216
211
|
// return success && data.length >= 4 && abi.decode(data, (bytes4)) == IERC1271.isValidSignature.selector;
|
|
217
212
|
bytes4 selector = IERC1271.isValidSignature.selector;
|
|
218
|
-
|
|
219
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
213
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
220
214
|
let ptr := mload(0x40)
|
|
221
215
|
|
|
222
216
|
mstore(ptr, selector)
|
|
@@ -240,8 +234,7 @@ library ECDSA {
|
|
|
240
234
|
// (bool success, bytes memory data) = signer.staticcall(abi.encodeWithSelector(IERC1271.isValidSignature.selector, hash, abi.encodePacked(r, vs & ~uint256(1 << 255), uint8(vs >> 255))));
|
|
241
235
|
// return success && data.length >= 4 && abi.decode(data, (bytes4)) == IERC1271.isValidSignature.selector;
|
|
242
236
|
bytes4 selector = IERC1271.isValidSignature.selector;
|
|
243
|
-
|
|
244
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
237
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
245
238
|
let ptr := mload(0x40)
|
|
246
239
|
|
|
247
240
|
mstore(ptr, selector)
|
|
@@ -260,8 +253,7 @@ library ECDSA {
|
|
|
260
253
|
function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 res) {
|
|
261
254
|
// 32 is the length in bytes of hash, enforced by the type signature above
|
|
262
255
|
// return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
|
|
263
|
-
|
|
264
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
256
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
265
257
|
mstore(0, 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000) // "\x19Ethereum Signed Message:\n32"
|
|
266
258
|
mstore(28, hash)
|
|
267
259
|
res := keccak256(0, 60)
|
|
@@ -270,8 +262,7 @@ library ECDSA {
|
|
|
270
262
|
|
|
271
263
|
function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 res) {
|
|
272
264
|
// return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
|
|
273
|
-
|
|
274
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
265
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
275
266
|
let ptr := mload(0x40)
|
|
276
267
|
mstore(ptr, 0x1901000000000000000000000000000000000000000000000000000000000000) // "\x19\x01"
|
|
277
268
|
mstore(add(ptr, 0x02), domainSeparator)
|
|
@@ -8,8 +8,7 @@ library RevertReasonForwarder {
|
|
|
8
8
|
/// @dev Forwards latest externall call revert.
|
|
9
9
|
function reRevert() internal pure {
|
|
10
10
|
// bubble up revert reason from latest external call
|
|
11
|
-
|
|
12
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
11
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
13
12
|
let ptr := mload(0x40)
|
|
14
13
|
returndatacopy(ptr, 0, returndatasize())
|
|
15
14
|
revert(ptr, returndatasize())
|
|
@@ -27,8 +27,7 @@ library RevertReasonParser {
|
|
|
27
27
|
// We assume that revert reason is abi-encoded as Error(string)
|
|
28
28
|
bytes4 selector;
|
|
29
29
|
if (data.length >= 4) {
|
|
30
|
-
|
|
31
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
30
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
32
31
|
selector := mload(add(data, 0x20))
|
|
33
32
|
}
|
|
34
33
|
}
|
|
@@ -36,8 +35,7 @@ library RevertReasonParser {
|
|
|
36
35
|
// 68 = 4-byte selector + 32 bytes offset + 32 bytes length
|
|
37
36
|
if (selector == _ERROR_SELECTOR && data.length >= 68) {
|
|
38
37
|
string memory reason;
|
|
39
|
-
|
|
40
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
38
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
41
39
|
// 68 = 32 bytes data length + 4-byte selector + 32 bytes offset
|
|
42
40
|
reason := add(data, 68)
|
|
43
41
|
}
|
|
@@ -55,8 +53,7 @@ library RevertReasonParser {
|
|
|
55
53
|
// 36 = 4-byte selector + 32 bytes integer
|
|
56
54
|
else if (selector == _PANIC_SELECTOR && data.length == 36) {
|
|
57
55
|
uint256 code;
|
|
58
|
-
|
|
59
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
56
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
60
57
|
// 36 = 32 bytes data length + 4-byte selector
|
|
61
58
|
code := mload(add(data, 36))
|
|
62
59
|
}
|
|
@@ -46,8 +46,7 @@ library SafeERC20 {
|
|
|
46
46
|
) internal {
|
|
47
47
|
bytes4 selector = token.transferFrom.selector;
|
|
48
48
|
bool success;
|
|
49
|
-
|
|
50
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
49
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
51
50
|
let data := mload(0x40)
|
|
52
51
|
|
|
53
52
|
mstore(data, selector)
|
|
@@ -77,8 +76,7 @@ library SafeERC20 {
|
|
|
77
76
|
) internal {
|
|
78
77
|
bytes4 selector = IPermit2.transferFrom.selector;
|
|
79
78
|
bool success;
|
|
80
|
-
|
|
81
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
79
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
82
80
|
let data := mload(0x40)
|
|
83
81
|
|
|
84
82
|
mstore(data, selector)
|
|
@@ -159,8 +157,7 @@ library SafeERC20 {
|
|
|
159
157
|
bytes4 permitSelector = IERC20Permit.permit.selector;
|
|
160
158
|
bytes4 daiPermitSelector = IDaiLikePermit.permit.selector;
|
|
161
159
|
bytes4 permit2Selector = IPermit2.permit.selector;
|
|
162
|
-
|
|
163
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
160
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
164
161
|
let ptr := mload(0x40)
|
|
165
162
|
switch permit.length
|
|
166
163
|
case 100 {
|
|
@@ -189,11 +186,10 @@ library SafeERC20 {
|
|
|
189
186
|
|
|
190
187
|
// Compact IDaiLikePermit.permit(uint32 nonce, uint32 expiry, uint256 r, uint256 vs)
|
|
191
188
|
{ // stack too deep
|
|
192
|
-
let nonce := shr(224, calldataload(permit.offset))
|
|
193
189
|
let expiry := shr(224, calldataload(add(permit.offset, 0x04)))
|
|
194
190
|
let vs := calldataload(add(permit.offset, 0x28))
|
|
195
191
|
|
|
196
|
-
mstore(add(ptr, 0x44),
|
|
192
|
+
mstore(add(ptr, 0x44), shr(224, calldataload(permit.offset)))
|
|
197
193
|
mstore(add(ptr, 0x64), sub(expiry, 1))
|
|
198
194
|
mstore(add(ptr, 0x84), true)
|
|
199
195
|
mstore(add(ptr, 0xa4), add(27, shr(255, vs)))
|
|
@@ -215,12 +211,29 @@ library SafeERC20 {
|
|
|
215
211
|
// IDaiLikePermit.permit(address holder, address spender, uint256 nonce, uint256 expiry, bool allowed, uint8 v, bytes32 r, bytes32 s)
|
|
216
212
|
success := call(gas(), token, 0, ptr, add(4, permit.length), 0, 0)
|
|
217
213
|
}
|
|
214
|
+
case 128 {
|
|
215
|
+
// Compact IPermit2.permit(address owner, PermitSingle calldata permitSingle, bytes calldata signature)
|
|
216
|
+
mstore(ptr, permit2Selector)
|
|
217
|
+
mstore(add(ptr, 0x04), owner)
|
|
218
|
+
mstore(add(ptr, 0x24), token)
|
|
219
|
+
calldatacopy(add(ptr, 0x50), permit.offset, 0x14) // amount
|
|
220
|
+
calldatacopy(add(ptr, 0x7e), add(permit.offset, 0x14), 0x06) // expiration
|
|
221
|
+
calldatacopy(add(ptr, 0x9e), add(permit.offset, 0x1a), 0x06) // nonce
|
|
222
|
+
mstore(add(ptr, 0xa4), spender)
|
|
223
|
+
calldatacopy(add(ptr, 0xc4), add(permit.offset, 0x20), 0x20) // sigDeadline
|
|
224
|
+
mstore(add(ptr, 0xe4), 0x100)
|
|
225
|
+
mstore(add(ptr, 0x104), 0x40)
|
|
226
|
+
calldatacopy(add(ptr, 0x124), add(permit.offset, 0x40), 0x20) // r
|
|
227
|
+
calldatacopy(add(ptr, 0x144), add(permit.offset, 0x60), 0x20) // vs
|
|
228
|
+
// IPermit2.permit(address owner, PermitSingle calldata permitSingle, bytes calldata signature)
|
|
229
|
+
success := call(gas(), _PERMIT2, 0, ptr, 388, 0, 0)
|
|
230
|
+
}
|
|
218
231
|
case 384 {
|
|
219
232
|
mstore(ptr, permit2Selector)
|
|
220
233
|
calldatacopy(add(ptr, 0x04), permit.offset, permit.length)
|
|
221
|
-
|
|
234
|
+
// IPermit2.permit(address owner, PermitSingle calldata permitSingle, bytes calldata signature)
|
|
235
|
+
success := call(gas(), _PERMIT2, 0, ptr, 388, 0, 0)
|
|
222
236
|
}
|
|
223
|
-
// TODO: add case for compact permit2
|
|
224
237
|
default {
|
|
225
238
|
mstore(ptr, _PERMIT_LENGHT_ERROR)
|
|
226
239
|
revert(ptr, 4)
|
|
@@ -234,8 +247,7 @@ library SafeERC20 {
|
|
|
234
247
|
address to,
|
|
235
248
|
uint256 amount
|
|
236
249
|
) private returns (bool success) {
|
|
237
|
-
|
|
238
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
250
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
239
251
|
let data := mload(0x40)
|
|
240
252
|
|
|
241
253
|
mstore(data, selector)
|
|
@@ -257,8 +269,7 @@ library SafeERC20 {
|
|
|
257
269
|
function safeDeposit(IWETH weth, uint256 amount) internal {
|
|
258
270
|
if (amount > 0) {
|
|
259
271
|
bytes4 selector = IWETH.deposit.selector;
|
|
260
|
-
|
|
261
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
272
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
262
273
|
mstore(0, selector)
|
|
263
274
|
if iszero(call(gas(), weth, amount, 0, 4, 0, 0)) {
|
|
264
275
|
returndatacopy(0, 0, returndatasize())
|
|
@@ -270,8 +281,7 @@ library SafeERC20 {
|
|
|
270
281
|
|
|
271
282
|
function safeWithdraw(IWETH weth, uint256 amount) internal {
|
|
272
283
|
bytes4 selector = IWETH.withdraw.selector;
|
|
273
|
-
|
|
274
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
284
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
275
285
|
mstore(0, selector)
|
|
276
286
|
mstore(4, amount)
|
|
277
287
|
if iszero(call(gas(), weth, 0, 0, 0x24, 0, 0)) {
|
|
@@ -284,8 +294,7 @@ library SafeERC20 {
|
|
|
284
294
|
function safeWithdrawTo(IWETH weth, uint256 amount, address to) internal {
|
|
285
295
|
safeWithdraw(weth, amount);
|
|
286
296
|
if (to != address(this)) {
|
|
287
|
-
|
|
288
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
297
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
289
298
|
if iszero(call(gas(), to, amount, 0, 0, 0, 0)) {
|
|
290
299
|
returndatacopy(0, 0, returndatasize())
|
|
291
300
|
revert(0, returndatasize())
|
|
@@ -16,8 +16,7 @@ library StringUtil {
|
|
|
16
16
|
/// @dev this is the assembly adaptation of highly optimized toHex16 code from Mikhail Vladimirov
|
|
17
17
|
/// https://stackoverflow.com/a/69266989
|
|
18
18
|
function toHex(bytes memory data) internal pure returns (string memory result) {
|
|
19
|
-
|
|
20
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
19
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
21
20
|
function _toHex16(input) -> output {
|
|
22
21
|
output := or(
|
|
23
22
|
and(input, 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000),
|
|
@@ -133,8 +133,7 @@ library UniERC20 {
|
|
|
133
133
|
that overall data length is greater or equal than string length + extra 64 bytes
|
|
134
134
|
*/
|
|
135
135
|
if (offset == 0x20 && data.length >= 0x40 + len) {
|
|
136
|
-
|
|
137
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
136
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
138
137
|
result := add(data, 0x40)
|
|
139
138
|
}
|
|
140
139
|
return result;
|
|
@@ -149,8 +148,7 @@ library UniERC20 {
|
|
|
149
148
|
}
|
|
150
149
|
|
|
151
150
|
if (len > 0) {
|
|
152
|
-
|
|
153
|
-
assembly { // solhint-disable-line no-inline-assembly
|
|
151
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
154
152
|
mstore(data, len)
|
|
155
153
|
}
|
|
156
154
|
return string(data);
|
package/dist/src/permit.d.ts
CHANGED
|
@@ -64,6 +64,6 @@ export declare function buildDataLikeDai(name: string, version: string, chainId:
|
|
|
64
64
|
};
|
|
65
65
|
export declare function permit2Contract(): Promise<Contract>;
|
|
66
66
|
export declare function getPermit(owner: Wallet | SignerWithAddress, permitContract: Contract, tokenVersion: string, chainId: number, spender: string, value: string, deadline?: string, compact?: boolean): Promise<string>;
|
|
67
|
-
export declare function getPermit2(owner: Wallet | SignerWithAddress, token: string, chainId: number, spender: string, amount: bigint, expiration?: bigint, sigDeadline?: bigint): Promise<string>;
|
|
67
|
+
export declare function getPermit2(owner: Wallet | SignerWithAddress, token: string, chainId: number, spender: string, amount: bigint, compact?: boolean, expiration?: bigint, sigDeadline?: bigint): Promise<string>;
|
|
68
68
|
export declare function getPermitLikeDai(holder: Wallet | SignerWithAddress, permitContract: Contract, tokenVersion: string, chainId: number, spender: string, allowed: boolean, expiry?: string, compact?: boolean): Promise<string>;
|
|
69
69
|
export declare function withTarget(target: bigint | string, data: bigint | string): string;
|
package/dist/src/permit.js
CHANGED
|
@@ -106,7 +106,7 @@ exports.getPermit = getPermit;
|
|
|
106
106
|
/*
|
|
107
107
|
* @param permit2Contract The contract object for Permit2 Uniswap contract.
|
|
108
108
|
*/
|
|
109
|
-
async function getPermit2(owner, token, chainId, spender, amount, expiration = exports.defaultDeadlinePermit2, sigDeadline = exports.defaultDeadlinePermit2) {
|
|
109
|
+
async function getPermit2(owner, token, chainId, spender, amount, compact = false, expiration = exports.defaultDeadlinePermit2, sigDeadline = exports.defaultDeadlinePermit2) {
|
|
110
110
|
const permitContract = await permit2Contract();
|
|
111
111
|
const nonce = (await permitContract.allowance(owner.address, token, spender)).nonce;
|
|
112
112
|
const details = {
|
|
@@ -122,6 +122,12 @@ async function getPermit2(owner, token, chainId, spender, amount, expiration = e
|
|
|
122
122
|
};
|
|
123
123
|
const data = permit2_sdk_1.AllowanceTransfer.getPermitData(permitSingle, permitContract.address, chainId);
|
|
124
124
|
const signature = await owner._signTypedData(data.domain, data.types, data.values);
|
|
125
|
+
const { v, r, s } = hardhat_1.ethers.utils.splitSignature(signature);
|
|
126
|
+
if (compact) {
|
|
127
|
+
return '0x' + amount.toString(16).padStart(40, '0') + expiration.toString(16).padStart(12, '0') +
|
|
128
|
+
BigInt(nonce).toString(16).padStart(12, '0') + sigDeadline.toString(16).padStart(64, '0') +
|
|
129
|
+
BigInt(r).toString(16).padStart(64, '0') + (BigInt(s) | (BigInt(v - 27) << 255n)).toString(16).padStart(64, '0');
|
|
130
|
+
}
|
|
125
131
|
const permitCall = await permitContract.populateTransaction.permit(owner.address, permitSingle, signature);
|
|
126
132
|
return cutSelector(permitCall.data);
|
|
127
133
|
}
|
package/dist/src/permit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permit.js","sourceRoot":"","sources":["../../src/permit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"permit.js","sourceRoot":"","sources":["../../src/permit.ts"],"names":[],"mappings":"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"}
|