PartyB Group Actions Facet (0.8.4)
PartyB Group Actions Facet (0.8.4)
The PartyB Group Actions Facet allows Party B users to secure a quote by locking it and then immediately opening a position using that locked quote. This atomic operation simplifies the process by combining two sequential steps—locking and opening—into a single transaction.
Context:
Lock Quote: Once a user submits a quote, any Party B may lock the quote by providing sufficient funds based on their expected profit and loss. This reserves the quote so that no other Party B can act on it until the lock is released.
Open Position: After locking a quote, Party B may open a position. In doing so, they can choose to fill the entire requested amount or only a fraction. The process checks that the open portion of the quote meets the minimum value requirements, and it emits events based on the outcome (e.g., if a new quote is generated or if a cancellation request is accepted).
lockAndOpenQuote()
The lockAndOpenQuote
function is an atomic operation that first locks a specified quote and then opens a position for that quote. The function requires the caller to provide appropriate Muon signatures for both the locking and the opening steps.
Upon execution, it performs the following steps:
Locking the Quote: It calls the internal
lockQuote
function (from the PartyBQuoteActionsFacetImpl) with aSingleUpnlSig
signature to secure the quote. This step reserves the funds needed to open the position and prevents other Party B users from accepting the same quote.Emits a
LockQuote
event with the Party B address and the quote ID.
Opening the Position: It then calls the internal
openPosition
function (from the PartyBPositionActionsFacetImpl) with:filledAmount
: The amount with which Party B chooses to open the position. This can be the full amount requested or only a fraction.openedPrice
: The price at which the position is opened.A
PairUpnlAndPriceSig
signature that includes both UPnL and price data for verification.Emits an
OpenPosition
event with details including the quote ID, Party A and Party B addresses, the filled amount, and the opened price.
Handling New Quotes: If the
openPosition
call returns a new quote ID (i.e. if a residual or new quote is generated due to partial filling), the function:Emits a
SendQuote
event if the new quote remains in the pending state.Otherwise, if the new quote has been canceled (indicating Party B accepted a cancel request), it emits an
AcceptCancelRequest
event.
Function Signature:
Parameters:
quoteId: The identifier of the quote to be locked and used for opening the position.
filledAmount: The amount (or fraction) of the position that Party B chooses to open.
openedPrice: The price at which the position is opened.
upnlSig: A
SingleUpnlSig
structure containing the Muon signature for UPnL data, used during the locking step.
pairUpnlSig: A
PairUpnlAndPriceSig
structure containing the Muon signature for both UPnL and price data, used during the opening step.
Example Usage:
Events Emitted:
LockQuote: Emitted immediately after the quote is successfully locked.
OpenPosition: Emitted after opening the position, providing details such as the quote ID, Party A, Party B, filled amount, and opened price.
SendQuote (optional): If a new quote is generated and its status is PENDING, a
SendQuote
event is emitted with full quote details.AcceptCancelRequest (optional): If the new quote is canceled, an
AcceptCancelRequest
event is emitted indicating that the cancellation was accepted.
Last updated