Skip to main content

Overview

The OrderSigningUtils class provides cryptographic utilities for signing CoW Protocol orders and cancellations according to EIP-712 specifications. It supports multiple signing schemes including standard wallets and smart contract wallets.

Installation

Usage

All methods are static and can be called directly on the class.

Methods

signOrder

Sign an order intent using EIP-712.
UnsignedOrder
required
Unsigned order to sign
SupportedChainId
required
Chain ID (e.g., 1 for Mainnet, 100 for Gnosis Chain)
Signer
required
Wallet signer instance
SigningResult
Signature and signing scheme
Ensure the chainId is correct for your network. An incorrect chainId will result in an invalid signature.

Example


signOrderCancellation

Sign a cancellation for a single order.
string
required
Unique order identifier to cancel
SupportedChainId
required
Chain ID
Signer
required
Signer who created the order
SigningResult
Signature and signing scheme

Example


signOrderCancellations

Sign a cancellation for multiple orders in a single signature.
string[]
required
Array of order UIDs to cancel
SupportedChainId
required
Chain ID
Signer
required
Signer who created the orders
SigningResult
Signature and signing scheme
More gas-efficient than signing cancellations individually when cancelling multiple orders.

Example


getDomain

Get EIP-712 typed domain data for a chain.
SupportedChainId
required
Chain ID
TypedDataDomain
EIP-712 domain data

Example


getDomainSeparator

Get the domain separator hash.
SupportedChainId
required
Chain ID
string
Hex-encoded domain separator hash

Example


generateOrderId

Generate deterministic order ID from order data.
SupportedChainId
required
Chain ID
Order
required
Order data
{ owner: string }
required
Order parameters with owner address
object
Order ID and digest

Example


getEIP712Types

Get the EIP-712 type definitions for CoW Protocol orders.
object
EIP-712 type definitions

Example


getEip1271Signature

Encode order and ECDSA signature for EIP-1271 verification.
UnsignedOrder
required
Order to encode
string
required
ECDSA signature (65 bytes)
string
ABI-encoded signature for EIP-1271
Useful for smart contract wallets that implement EIP-1271 signature verification.

Example


encodeUnsignedOrder

Encode unsigned order for hashing.
UnsignedOrder
required
Order to encode
Record<string, string>
Encoded order fields

Example

Signing Schemes

CoW Protocol supports multiple signing schemes:

EIP-712 (Default)

Standard wallet signature using typed structured data.

EthSign (EIP-191)

Legacy signing method using eth_sign.

Pre-sign

For smart contract wallets that cannot sign directly.

EIP-1271

For contracts implementing EIP-1271 signature verification.

Integration Examples

With OrderBookApi

With TradingSdk

Cancelling Orders

Error Handling

Best Practices

  1. Always verify chain ID - Incorrect chain ID results in invalid signatures
  2. Set global adapter - Required for utilities to function properly
  3. Use typed data (EIP-712) - More secure than eth_sign
  4. Batch cancellations - Use signOrderCancellations for multiple orders
  5. Handle rejections - Users can deny signature requests

See Also