_addToBalanceOf
Contract: JBPayoutRedemptionPaymentTerminal
- Step by step
 - Code
 - Events
 - Bug bounty
 
Receives funds belonging to the specified project.
Definition
function _addToBalanceOf(
  uint256 _projectId,
  uint256 _amount,
  bool _shouldRefundHeldFees,
  string memory _memo,
  bytes memory _metadata
) private { ... }
- Arguments:
_projectIdis the ID of the project to which the funds received belong._amountis the amount of tokens to add, as a fixed point number with the same number of decimals as this terminal. If this is an ETH terminal, this is ignored and msg.value is used instead._shouldRefundHeldFeesis a flag indicating if held fees should be refunded based on the amount being added._memois a memo to pass along to the emitted event._metadatais extra data to pass along to the emitted event.
 - The function is private to this contract.
 - The function doesn't return anything.
 
Body
- 
Refund any held fees. This is useful to allow a project to distribute funds from the protocol and subsequently add them back without paying eventually having to pay double fees.
// Refund any held fees to make sure the project doesn't pay double for funds going in and out of the protocol.
uint256 _refundedFees = _shouldRefundHeldFees ? _refundHeldFees(_projectId, _amount) : 0;Internal references:
 - 
Record the added funds.
// Record the added funds with any refunded fees.
store.recordAddedBalanceFor(_projectId, _amount + _refundedFees);Internal references:
External references:
 - 
Emit a
AddToBalanceevent with the relevant parameters.emit AddToBalance(_projectId, _amount, _refundedFees, _memo, _metadata, msg.sender);Event references:
 
/**
  @notice
  Receives funds belonging to the specified project.
  @param _projectId The ID of the project to which the funds received belong.
  @param _amount The amount of tokens to add, as a fixed point number with the same number of decimals as this terminal. If this is an ETH terminal, this is ignored and msg.value is used instead.
  @param _shouldRefundHeldFees A flag indicating if held fees should be refunded based on the amount being added.
  @param _memo A memo to pass along to the emitted event.
  @param _metadata Extra data to pass along to the emitted event.
*/
function _addToBalanceOf(
  uint256 _projectId,
  uint256 _amount,
  bool _shouldRefundHeldFees,
  string memory _memo,
  bytes memory _metadata
) private {
  // Refund any held fees to make sure the project doesn't pay double for funds going in and out of the protocol.
  uint256 _refundedFees = _shouldRefundHeldFees ? _refundHeldFees(_projectId, _amount) : 0;
  // Record the added funds with any refunded fees.
  store.recordAddedBalanceFor(_projectId, _amount + _refundedFees);
  emit AddToBalance(_projectId, _amount, _refundedFees, _memo, _metadata, msg.sender);
}
| Name | Data | 
|---|---|
AddToBalance | 
  | 
| Category | Description | Reward | 
|---|---|---|
| Optimization | Help make this operation more efficient. | 0.5ETH | 
| Low severity | Identify a vulnerability in this operation that could lead to an inconvenience for a user of the protocol or for a protocol developer. | 1ETH | 
| High severity | Identify a vulnerability in this operation that could lead to data corruption or loss of funds. | 5+ETH |