struct Order {
address exchange;
address maker;
address taker;
uint makerRelayerFee;
uint takerRelayerFee;
uint makerProtocolFee;
uint takerProtocolFee;
address feeRecipient;
FeeMethod feeMethod;
SaleKindInterface.Side side;
SaleKindInterface.SaleKind saleKind;
address target;
AuthenticatedProxy.HowToCall howToCall;
bytes calldata;
bytes replacementPattern;
address staticTarget;
bytes staticExtradata;
address paymentToken;
uint basePrice;
uint extra;
uint listingTime;
uint expirationTime;
uint salt;
}
All of the following fields must be present in an order. Some have special sentinel values.
Address of the WyvernExchange contract. This is a versioning mechanism, ensuring that all signed orders are only valid for a particular deployed version of the Wyvern Protocol on a particular Ethereum chain.
Order maker (who may be buying or selling the contract call — the maker/taker differentiation is strictly a matter of fees).
Order taker, if a specific address must take the order, otherwise the zero-address as a sentinel value to indicate that the order can be taken by anyone.
Maker relayer fee, paid by the maker to the relayer upon execution if this is a maker order.
Taker relayer fee, paid by the taker to the relayer on execution if this is a maker order, or the maximum such fee if this is a taker order.
Maker protocol fee, paid to the protocolFeeRecipient
if this is a maker order.
Taker protocol fee, paid by the taker to the protocolFeeRecipient
if this is a maker order, or the maximum such fee if this is a taker order.
Address of the relayer who will receive the fee.
Method of fee calculation (see this discussion for context).
Side (buy or sell). Sell-side orders execute contract calls and receive tokens, buy-side orders purchase contract calls and pay tokens.
Kind of sale, FixedPrice
or DutchAuction
.
Target address of call.
Call method, CALL
or DELEGATECALL
.
Calldata (bytes).
Mask specifying which parts of the calldata can be changed, or an empty array for no replacement.
Target for STATICCALL
, or zero-address as a sentinel value to indicate no STATICCALL
.
Extra data for STATICCALL
(bytes).
Token used to pay for call, or the zero-address as a sentinel value for special-case unwrapped Ether.
Base price of the order, in units of the specified paymentToken
.
Extra parameter for price calculation, specifying starting/ending price difference for Dutch auctions. Could be used to specify minimum bid for English auctions in the future should those be implemented.
Order listing Unix timestamp.
Order expiration Unix timestamp or 0
as a sentinel value for no expiry.
Order salt to distinguish otherwise-identical orders.