Approval Facet

Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference.

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.

Last updated