Beanstalk
  • Agronomics Handbook
  • Farmers' Almanac
  • Whitepaper
  • Contract Addresses
  • 🌱Overview
    • Introduction
    • Development Ethos
    • EIP-2535 Diamond
    • App Storage
    • Internal Balances
  • 🌾Protocol
    • Overview
    • Louper
    • Sun
      • Season Facet
    • Silo
      • Silo Facet
      • BDV Facet
      • Whitelist Facet
      • Convert Facet
      • Convert Getters Facet
      • Enroot Facet
      • Approval Facet
      • Metadata Facet
      • Migration Facet
      • Legacy Claim Withdrawal Facet
    • Field
      • Field Facet
      • Fundraiser Facet
    • Barn
      • Fertilizer Facet
      • Unripe Facet
    • Market
      • Marketplace Facet
    • Farm
      • Farm Facet
      • Depot Facet
      • Token Facet
      • Token Support Facet
      • Curve Facet
    • Diamond
      • Diamond Cut Facet
      • Diamond Loupe Facet
      • Ownership Facet
      • Pause Facet
  • 📜Misc.
    • Technical Recordings
    • Upgrade History
    • FAQ
    • Terminology Discrepancies
Powered by GitBook
On this page
  • Call Functions
  • Approvals
  • Approve Deposit
  • Increase Deposit Allowance
  • Decrease Deposit Allowance
  • Permits
  • Permit Deposits
  • Permit Deposit
  • Set Approval for All
  • View Functions
  • Deposit Permit Nonces
  • Deposit Permit Domain Separator
  • Deposit Allowance
  • Is Approved for All
  • Events
  • Deposit Approval
  • Approval for All
Edit on GitHub
Export as PDF
  1. Protocol
  2. Silo

Approval Facet

PreviousEnroot FacetNextMetadata Facet

Last updated 7 months ago

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

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);
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);
Parameter
Type
Description

account

address

Owner of the Deposit.

operator

address

Spender of the Deposit.

approved

address

Whether or not the Deposit was approved.

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

Returns the domain separator for the current chain ().

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

🌾
Approve Deposit
Increase Deposit Allowance
Decrease Deposit Allowance
EIP-2612 permits
Permit Deposits
Permit Deposit
Set Approval for All
Deposit Permit Nonces
Deposit Permit Domain Separator
link
Deposit Allowance
Is Approved for All
Deposit Approval
Approval for All
link