Skip to main content

LooksRareProtocol

This contract is the core smart contract of the LooksRare protocol ("v2"). It is the main entry point for users to initiate transactions with taker orders and manage the cancellation of maker orders, which exist off-chain.

WETH

address WETH

Wrapped ETH.

chainId

uint256 chainId

Current chainId.

domainSeparator

bytes32 domainSeparator

Current domain separator.

constructor

constructor(address _owner, address _protocolFeeRecipient, address _transferManager, address _weth) public

Constructor

Parameters

NameTypeDescription
_owneraddressOwner address
_protocolFeeRecipientaddressProtocol fee recipient address
_transferManageraddressTransfer manager address
_wethaddressWrapped ETH address

executeTakerAsk

function executeTakerAsk(struct OrderStructs.Taker takerAsk, struct OrderStructs.Maker makerBid, bytes makerSignature, struct OrderStructs.MerkleTree merkleTree, address affiliate) external

This function allows a user to execute a taker ask (against a maker bid).

Parameters

NameTypeDescription
takerAskstruct OrderStructs.TakerTaker ask struct
makerBidstruct OrderStructs.MakerMaker bid struct
makerSignaturebytesMaker signature
merkleTreestruct OrderStructs.MerkleTreeMerkle tree struct (if the signature contains multiple maker orders)
affiliateaddressAffiliate address

executeTakerBid

function executeTakerBid(struct OrderStructs.Taker takerBid, struct OrderStructs.Maker makerAsk, bytes makerSignature, struct OrderStructs.MerkleTree merkleTree, address affiliate) external payable

This function allows a user to execute a taker bid (against a maker ask).

Parameters

NameTypeDescription
takerBidstruct OrderStructs.TakerTaker bid struct
makerAskstruct OrderStructs.MakerMaker ask struct
makerSignaturebytesMaker signature
merkleTreestruct OrderStructs.MerkleTreeMerkle tree struct (if the signature contains multiple maker orders)
affiliateaddressAffiliate address

executeMultipleTakerBids

function executeMultipleTakerBids(struct OrderStructs.Taker[] takerBids, struct OrderStructs.Maker[] makerAsks, bytes[] makerSignatures, struct OrderStructs.MerkleTree[] merkleTrees, address affiliate, bool isAtomic) external payable

This function allows a user to batch buy with an array of taker bids (against an array of maker asks).

Parameters

NameTypeDescription
takerBidsstruct OrderStructs.Taker[]Array of taker bid structs
makerAsksstruct OrderStructs.Maker[]Array of maker ask structs
makerSignaturesbytes[]Array of maker signatures
merkleTreesstruct OrderStructs.MerkleTree[]Array of merkle tree structs if the signature contains multiple maker orders
affiliateaddressAffiliate address
isAtomicboolWhether the execution should be atomic i.e. whether it should revert if 1 or more transactions fail

restrictedExecuteTakerBid

function restrictedExecuteTakerBid(struct OrderStructs.Taker takerBid, struct OrderStructs.Maker makerAsk, address sender, bytes32 orderHash) external returns (uint256 protocolFeeAmount)

This function is used to do a non-atomic matching in the context of a batch taker bid.

This function is only callable by this contract. It is used for non-atomic batch order matching.

Parameters

NameTypeDescription
takerBidstruct OrderStructs.TakerTaker bid struct
makerAskstruct OrderStructs.MakerMaker ask struct
senderaddressSender address (i.e. the initial msg sender)
orderHashbytes32Hash of the maker ask order

Return Values

NameTypeDescription
protocolFeeAmountuint256Protocol fee amount

updateDomainSeparator

function updateDomainSeparator() external

This function allows the owner to update the domain separator (if possible).

Only callable by owner. If there is a fork of the network with a new chainId, it allows the owner to reset the domain separator for the new chain id.

updateETHGasLimitForTransfer

function updateETHGasLimitForTransfer(uint256 newGasLimitETHTransfer) external

This function allows the owner to update the maximum ETH gas limit for a standard transfer.

Only callable by owner.

Parameters

NameTypeDescription
newGasLimitETHTransferuint256New gas limit for ETH transfer

_executeTakerAsk

function _executeTakerAsk(struct OrderStructs.Taker takerAsk, struct OrderStructs.Maker makerBid, bytes32 orderHash) internal returns (uint256)

This function is internal and is used to execute a taker ask (against a maker bid).

Parameters

NameTypeDescription
takerAskstruct OrderStructs.TakerTaker ask order struct
makerBidstruct OrderStructs.MakerMaker bid order struct
orderHashbytes32Hash of the maker bid order

Return Values

NameTypeDescription
[0]uint256protocolFeeAmount Protocol fee amount

_executeTakerBid

function _executeTakerBid(struct OrderStructs.Taker takerBid, struct OrderStructs.Maker makerAsk, address sender, bytes32 orderHash) internal returns (uint256)

This function is internal and is used to execute a taker bid (against a maker ask).

Parameters

NameTypeDescription
takerBidstruct OrderStructs.TakerTaker bid order struct
makerAskstruct OrderStructs.MakerMaker ask order struct
senderaddressSender of the transaction (i.e. msg.sender)
orderHashbytes32Hash of the maker ask order

Return Values

NameTypeDescription
[0]uint256protocolFeeAmount Protocol fee amount

_payProtocolFeeAndAffiliateFee

function _payProtocolFeeAndAffiliateFee(address currency, address bidUser, address affiliate, uint256 totalProtocolFeeAmount) internal

This function is internal and is used to pay the protocol fee and affiliate fee (if any).

Parameters

NameTypeDescription
currencyaddressCurrency address to transfer (address(0) is ETH)
bidUseraddressBid user address
affiliateaddressAffiliate address (address(0) if none)
totalProtocolFeeAmountuint256Total protocol fee amount (denominated in the currency)

_transferFungibleTokens

function _transferFungibleTokens(address currency, address sender, address recipient, uint256 amount) internal

This function is internal and is used to transfer fungible tokens.

Parameters

NameTypeDescription
currencyaddressCurrency address
senderaddressSender address
recipientaddressRecipient address
amountuint256Amount (in fungible tokens)