Skip to content

Commit 30b5cf6

Browse files
committed
format: reduce complex code
1 parent 058bb26 commit 30b5cf6

File tree

2 files changed

+9
-47
lines changed

2 files changed

+9
-47
lines changed

src/transfers/LibNativeTransfer.sol

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,19 @@
11
// SPDX-License-Identifier: MIT
22
pragma solidity ^0.8.0;
33

4-
import { Strings } from "@openzeppelin/contracts/utils/Strings.sol";
54
import { LibErrorHandler } from "../LibErrorHandler.sol";
65

7-
using { toAmount } for Gas global;
8-
9-
enum Gas {
10-
Strictly,
11-
NoGriefing,
12-
ForwardAll,
13-
NoStorageWrite
14-
}
15-
16-
/// @dev see: https://github.com/axieinfinity/ronin-dpos-contracts/pull/195
17-
uint256 constant GAS_STIPEND_STRICT = 0;
18-
19-
/// @dev Suggested gas stipend for contract receiving NATIVE
20-
/// that disallows any storage writes.
21-
uint256 constant GAS_STIPEND_NO_STORAGE_WRITES = 2_300;
22-
23-
/// @dev Suggested gas stipend for contract receiving NATIVE to perform a few
24-
/// storage reads and writes, but low enough to prevent griefing.
25-
/// Multiply by a small constant (e.g. 2), if needed.
26-
uint256 constant GAS_STIPEND_NO_GRIEF = 100_000;
27-
28-
function toAmount(Gas gas) view returns (uint256) {
29-
if (gas == Gas.ForwardAll) return gasleft();
30-
if (gas == Gas.NoGriefing) return GAS_STIPEND_NO_GRIEF;
31-
if (gas == Gas.NoStorageWrite) return GAS_STIPEND_NO_STORAGE_WRITES;
32-
return GAS_STIPEND_STRICT;
33-
}
34-
356
/**
367
* @title NativeTransferHelper
378
*/
389
library LibNativeTransfer {
39-
using Strings for *;
4010
using LibErrorHandler for bool;
4111

4212
/**
4313
* @dev Transfers Native Coin and wraps result for the method caller to a recipient.
4414
*/
45-
function safeTransfer(address to, uint256 value, Gas gas) internal {
46-
(bool success, bytes memory returnOrRevertData) = trySendValue(to, value, gas.toAmount());
15+
function transfer(address to, uint256 value, uint256 gasAmount) internal {
16+
(bool success, bytes memory returnOrRevertData) = trySendValue(to, value, gasAmount);
4717
success.handleRevert(bytes4(0x0), returnOrRevertData);
4818
}
4919

test/transfers/LibNativeTransfer.t.sol

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,32 @@
22
pragma solidity ^0.8.23;
33

44
import { Test } from "forge-std/Test.sol";
5-
import { Gas, LibNativeTransfer } from "contract-libs/transfers/LibNativeTransfer.sol";
5+
import { LibNativeTransfer } from "contract-libs/transfers/LibNativeTransfer.sol";
66

77
contract LibNativeTransferTest is Test {
88
function testFork_RevertWhen_TransferNativeToContractWithoutFallback_safeTransfer(
99
address any,
1010
uint256 amount,
11-
uint8 v
11+
uint256 gas
1212
) external {
1313
vm.deal(any, amount);
1414
vm.expectRevert();
1515
vm.prank(any);
16-
LibNativeTransfer.safeTransfer(address(this), amount, _toGas(v));
16+
LibNativeTransfer.transfer(address(this), amount, gas);
1717
}
1818

19-
function testConcrete_TransferNative(uint8 v) external {
20-
LibNativeTransfer.safeTransfer(address(0xBEEF), 1e18, _toGas(v));
19+
function testConcrete_TransferNative(uint256 gas) external {
20+
LibNativeTransfer.transfer(address(0xBEEF), 1e18, gas);
2121
assertEq(address(0xBEEF).balance, 1e18);
2222
}
2323

24-
function testFork_TransferNativeToRecipient(address recipient, uint256 amount, uint8 v) external {
24+
function testFork_TransferNativeToRecipient(address recipient, uint256 amount, uint256 gas) external {
2525
// Transferring to msg.sender can fail because it's possible to overflow their ETH balance as it begins non-zero.
2626
if (recipient.code.length > 0 || uint256(uint160(recipient)) <= 18 || recipient == msg.sender) return;
2727

2828
amount = bound(amount, 0, address(this).balance);
29-
LibNativeTransfer.safeTransfer(recipient, amount, _toGas(v));
29+
LibNativeTransfer.transfer(recipient, amount, gas);
3030

3131
assertEq(recipient.balance, amount);
3232
}
33-
34-
function _toGas(uint8 v) internal view returns (Gas gas) {
35-
v = uint8(bound(v, 0, 3));
36-
if (v == uint8(Gas.Strictly)) gas = Gas.Strictly;
37-
if (v == uint8(Gas.NoGriefing)) gas = Gas.NoGriefing;
38-
if (v == uint8(Gas.ForwardAll)) gas = Gas.ForwardAll;
39-
if (v == uint8(Gas.NoStorageWrite)) gas = Gas.NoStorageWrite;
40-
}
4133
}

0 commit comments

Comments
 (0)