Skip to content

Latest commit

 

History

History
253 lines (193 loc) · 10.2 KB

approval-facet.md

File metadata and controls

253 lines (193 loc) · 10.2 KB

Approval Facet

The Approval Facet handles all approval and permit related functions for the Silo.

Call Functions

Approvals

function approveDeposit(
    address spender,
    address token,
    uint256 amount
) external payable nonReentrant;

Approves an address to access a Farmer's Deposit.

Parameter Type Description
spender address Address to be given approval.
token address Address of ERC20.
amount uint256 Amount to be approved.
function increaseDepositAllowance(
    address spender, 
    address token, 
    uint256 addedValue
) public virtual nonReentrant returns (bool);

Increases transfer allowance of a Deposit.

Parameter Type Description
spender address Address to increase approval for.
token address Address of ERC20.
addedValue uint256 Additional approval value to be given.
Return Value Description
bool If the allowance increase was successful.
function decreaseDepositAllowance(
    address spender, 
    address token, 
    uint256 subtractedValue
) public virtual nonReentrant returns (bool);

Decreases transfer allowance of a Deposit.

Parameter Type Description
spender address Address to decrease approval for.
token address Address of ERC20.
subtractedValue uint256 Amount of approval value to be removed.
Return Value Description
bool Success.

Permits

Farm balances and Silo Deposits support EIP-2612 permits, which allows Farmers to delegate use of their Farm balances and Silo Deposits through permits without the need for a separate transaction.

function permitDeposits(
    address owner,
    address spender,
    address[] calldata tokens,
    uint256[] calldata values,
    uint256 deadline,
    uint8 v,
    bytes32 r,
    bytes32 s
) external payable nonReentrant;

Permits multiple Deposits.

Parameter Type Description
owner address Owner of the Deposit.
spender address Address to permit.
tokens address[] Array of ERC20s to permit.
values uint256[] Array of amount (corresponding to tokens) to permit.
deadline uint256 Expiration of signature (Unix time).
v uint8 Recovery ID.
r bytes32 ECDSA signature output.
s bytes32 ECDSA signature output.
function permitDeposit(
    address owner,
    address spender,
    address token,
    uint256 value,
    uint256 deadline,
    uint8 v,
    bytes32 r,
    bytes32 s
) external payable nonReentrant;

Permits a single Deposit.

Parameter Type Description
owner address Owner of the Deposit.
spender address Address to permit.
token address ERC20 to permit.
value uint256 Amount of token to permit.
deadline uint256 Expiration of signature (Unix time).
v uint8 Recovery ID.
r bytes32 ECDSA signature output.
s bytes32 ECDSA signature output.
function setApprovalForAll(
    address spender, 
    bool approved
) external;

Set ERC-1155 approvals. Grants or revokes permission to operator to transfer the caller’s tokens, according to approved.

Parameter Type Description
spender address Address to approve spending for.
approved bool Whether or not to approve.

View Functions

function depositPermitNonces(address owner) public view virtual returns (uint256);

Returns the current nonce for Deposit permits.

Parameter Type Description
owner address Owner of the Deposit.
Return Value Description
uint256 Current nonce for Deposit permits.
function depositPermitDomainSeparator() external view returns (bytes32);

Returns the domain separator for the current chain (link).

Return Value Description
bytes32 The domain separator for the current chain.
function depositAllowance(
    address owner,
    address spender,
    address token
) public view virtual returns (uint256);

Returns how much of a token Deposit that spender can transfer on behalf of owner.

Parameter Type Description
owner address Owner of the Deposit.
spender address The address that can spend the Deposit.
token address The token Deposit that spender can transfer.
Return Value Description
uint256 The token Deposit amount that spender can transfer on behalf of owner.
function isApprovedForAll(
    address _owner, 
    address _operator
) external view returns (bool);

Returns true if _operator is approved to transfer _owner's Deposit.

Parameter Type Description
_owner address Owner of the Deposit.
_operator address Spender of the Deposit.
Return Value Description
bool True if _operator is approved to transfer _owner's tokens.

Events

event DepositApproval(
    address indexed owner,
    address indexed spender,
    address token,
    uint256 amount
);

Emitted when a Deposit is approved to spend by another account.

Parameter Type Description
owner address Owner of the Deposit.
spender address Spender of the Deposit.
token address Deposit token that can be spent.
amount uint256 Amount of the Deposit token that can be spent.
event ApprovalForAll(address indexed account, address indexed operator, bool approved);

Emitted when account grants or revokes permission to operator to transfer their tokens, according to approved (link).

Parameter Type Description
account address Owner of the Deposit.
operator address Spender of the Deposit.
approved address Whether or not the Deposit was approved.