SeriesNonceManager predicate
Make sure you have read and understand
Since Limit Order Protocol V3 nonce management are delegated to SeriesNonceManager smart contract in terms of usual Limit Orders and P2P (aka "private limit order"), there are two helpful classes:
SeriesNonceManagerFacade
— an interface for interacting with smart contractSeriesNonceManagerPredicateBuilder
— anLimitOrderPredicateBuilder
-compatible DSL for building predicate, which relays on SeriesNonceManager
SeriesNonceManagerFacade
#
See nonce
SeriesNonceManagerPredicateBuilder
#
Partially implements LimitOrderPredicateBuilder for same purpose, but for SeriesNonceManager smart contract.
Incompatible with Gasless!
For Gasless orders use
LimitOrderPredicateBuilder
.
#
Built-in operatorstimestampBelowAndNonceEquals
#
timestampBelowAndNonceEquals( timestamp: number | bigint, makerNonce: number | bigint, makerAddress: string)
The predicate checks the same as and(timestampBelow(), nonceEquals())
.
nonceEquals
#
nonceEquals( makerAddress: string, makerNonce: number | bigint)
The predicate checks that the makerNonce
is equal to the nonce of makerAddress
.
WARNING!
To save gas consider using one of
SeriesNonceManagerPredicateBuilder.timestampBelowAndNonceEquals(…)
– for everything but gaslessLimitOrderPredicateBuilder.timestampBelowAndNonceEquals(…)
– for gasless onlyinstead as it more optimal then separate
and(timestampBelow(), nonceEquals())
calls.
#
Examples// Because timestampBelowAndNonceEquals is method of another contract arbitraryStaticCall() is necessaryconst simpleLimitOrderPredicate: LimitOrderPredicateCallData = arbitraryStaticCall( seriesNonceManagerPredicateBuilder.facade, seriesNonceManagerPredicateBuilder.timestampBelowAndNonceEquals( NonceSeriesV2.LimitOrderV3, expiration, nonce, walletAddress, ),);
See LimitOrderPredicateBuilder
for more examples on using LimitOrderPredicateBuilder
and SeriesNonceManagerPredicateBuilder
together.