LeXscroWLite
LeXscroWLite is the atomic deal-closing escrow. It is implemented as the LexScrowStorage library, linked into the deal and round managers; the repository has no standalone LeXscroWLite.sol contract.
src/storage/LexScrowStorage.solis the escrow library:EscrowandTokenstructs,EscrowStatus(PENDING → PAID → FINALIZED, orVOIDED), per-escrowIConditionlists, payment intake (handleCounterPartyPayment, with exact-amount checks against fee-on-transfer tokens),finalizeEscrow(asset delivery plus platform-fee distribution),voidAndRefund, andconditionCheck. The library declares the escrow events (DealPaidAt,DealVoidedAt,DealFinalizedAt,FeeDistributed). Linked library functions run in the manager's context byDELEGATECALL, so those logs come from the manager's address.src/interfaces/ILexScrowStorage.solis the interface both managers implement: the escrow views (getEscrowDetails,conditionCheck), the fee hooks each manager supplies (computeFee,getPlatformPayable), and the sharedAgreementConditionsNotMeterror.
Both managers expose the escrow on their own proxies:
DealManagerescrows payment and Ledger Entry Token (LET) effects across a deal'sproposeDeal→signDealAndPay→finalizeDeallifecycle, withsignToVoid,revokeDeal,voidExpiredDealandrefundVoidedDealfor stale or voided deals. It runs a parallelSecondaryEscrowfor secondary-trade settlements. Primary escrows pay the DealManager's primary fee; secondary settlements pay its separate secondary fee.RoundManagerdoes the same acrosssubmitEOI→allocate/reject/recallEOI.
On each, getEscrowDetails(agreementId) returns the Escrow struct and conditionCheck(agreementId) evaluates the attached conditions. Both managers also implement onERC721Received / onERC1155Received, so assets can be safe-transferred into escrow.
Last updated
Was this helpful?
