Skip to content

Commit

Permalink
Merge pull request #37 from ronin-chain/implement-feature/bump-gas/ad…
Browse files Browse the repository at this point in the history
…d-default-addition-gas
  • Loading branch information
TuDo1403 authored Jun 19, 2024
2 parents f0637ae + 9cd56ad commit 784a833
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
6 changes: 6 additions & 0 deletions src/extensions/RONTransferHelper.sol
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ abstract contract RONTransferHelper {
* @dev Same purpose with {_unsafeSendRONLimitGas(address,uin256)} but containing gas limit stipend forwarded in the call.
*/
function _unsafeSendRONLimitGas(address payable recipient, uint256 amount, uint256 gas) internal returns (bool success) {
// When msg.value = 0, the forwarding gas will not be auto-added 2300.
// We add an extra 2300 to make sure all calls will have the same amount of gas.
if (amount == 0) {
gas += 2300;
}

(success,) = recipient.call{ value: amount, gas: gas }("");
}
}
4 changes: 3 additions & 1 deletion src/ronin/gateway/BridgeReward.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import { TUint256Slot } from "../../types/Types.sol";
import { ErrSyncTooFarPeriod, ErrInvalidArguments, ErrLengthMismatch, ErrUnauthorizedCall } from "../../utils/CommonErrors.sol";

contract BridgeReward is IBridgeReward, BridgeTrackingHelper, HasContracts, RONTransferHelper, Initializable {
/// @dev Configuration of gas stipend to ensure sufficient gas after the London Hardfork
uint256 public constant DEFAULT_ADDITION_GAS = 6200;
/// @dev value is equal to keccak256("@ronin.dpos.gateway.BridgeReward.rewardInfo.slot") - 1
bytes32 private constant $_REWARD_INFO = 0x518cfd198acbffe95e740cfce1af28a3f7de51f0d784893d3d72c5cc59d7062a;
/// @dev value is equal to keccak256("@ronin.dpos.gateway.BridgeReward.rewardPerPeriod.slot") - 1
Expand Down Expand Up @@ -316,7 +318,7 @@ contract BridgeReward is IBridgeReward, BridgeTrackingHelper, HasContracts, RONT
return false;
}

if (_unsafeSendRONLimitGas({ recipient: payable(operator), amount: reward, gas: 0 })) {
if (_unsafeSendRONLimitGas({ recipient: payable(operator), amount: reward, gas: DEFAULT_ADDITION_GAS })) {
_iRewardInfo.claimed += reward;
emit BridgeRewardScattered(period, operator, reward);
return true;
Expand Down

0 comments on commit 784a833

Please sign in to comment.