BuyNow

BuyNow.sol is a module contract that enables users to buy assets within the Unlockd Protocol. It provides functionality for instant asset purchases, allowing users to buy assets using a combination of their own funds and borrowed funds from the protocol.

Key functions:

function getCalculations(
    DataTypes.SignBuyNow calldata signBuyMarket
) external pure returns (uint256, uint256)

Calculates the minimum amount required and the maximum amount that can be borrowed for a buy now operation based on the buy now data.

Parameters:

signBuyMarket: The signed buy now data.

Returns:

The minimum amount required from the user.

The maximum amount that can be borrowed.


function buy(
    uint256 amount,
    DataTypes.SignBuyNow calldata signBuyMarket,
    DataTypes.EIP712Signature calldata sig
) external 

Allows users to perform a buy now operation, purchasing an asset using the specified amount and creating a loan if necessary. It validates the signature, retrieves the user's Unlockd wallet and protocol owner addresses, updates the reserve state, transfers the user's contribution to the market adapter, creates a loan if necessary, and purchases the asset using the market adapter.

Parameters:

amount: The amount to contribute towards the purchase.

signBuyMarket: The signed buy now data.

sig: The EIP-712 signature for the buy operation.

Signature

signBuyMarket (type: DataTypes.SignBuyNow), it contains the following fields:

asset (type: DataTypes.SignAsset): The asset data, including the asset ID, collection address, token ID, price, nonce, and deadline.

assetLtv (type: uint256): The loan-to-value ratio of the asset.

assetLiquidationThreshold (type: uint256): The liquidation threshold of the asset.

from (type: address): The address from which the buy now action is initiated.

to (type: address): The address to which the asset is being bought.

data (type: bytes): Additional data for the buy now action.

value (type: uint256): The value being sent with the buy now action.

marketAdapter (type: address): The address of the market adapter used for the buy now action.

marketApproval (type: address): The address for market approval.

marketPrice (type: uint256): The market price of the asset.

underlyingAsset (type: address): The address of the underlying asset.

nonce (type: uint256): The nonce value is used to ensure the uniqueness of the signature and prevent replay attacks.

deadline (type: uint256): The deadline timestamp until which the signature is considered valid.

sig (type: DataTypes.EIP712Signature), it contains the following fields:

v (type: uint8): The recovery ID of the signature.

r (type: bytes32): The first 32 bytes of the signature.

s (type: bytes32): The second 32 bytes of the signature.

deadline (type: uint256): The deadline timestamp until which the signature is considered valid.

Last updated