Skip to main content

GPv2VaultRelayer API

The GPv2VaultRelayer contract serves as an intermediary between CoW Protocol’s settlement system and Balancer Vault, facilitating fund transfers and swap execution with protocol fees.

State Variables

address public immutable creator;
IVault public immutable vault;

Access Control

modifier onlyCreator {
    require(msg.sender == creator, "GPv2: not creator");
    _;
}
All external functions are restricted to the creator (settlement contract) through the onlyCreator modifier.

Functions

transferFromAccounts

Moves sell token amounts from user accounts to the settlement contract.
function transferFromAccounts(
    GPv2Transfer.Data[] calldata transfers
) external onlyCreator;
Supports three balance types:
Balance TypeDescription
ERC20Standard ERC20 token transfers
ExternalBalancer Vault external balances
InternalBalancer Vault internal balances

batchSwapWithFee

Executes multi-step swaps through Balancer pools and simultaneously collects protocol fees.
function batchSwapWithFee(
    IVault.BatchSwapStep[] calldata swaps,
    IERC20[] calldata tokens,
    IVault.FundManagement calldata funds,
    int256[] calldata limits,
    uint256 deadline,
    GPv2Transfer.Data calldata feeTransfer
) external onlyCreator returns (int256[] memory tokenDeltas);
Parameters:
NameTypeDescription
swapsBatchSwapStep[]Batch swap steps to execute
tokensIERC20[]Token addresses involved
fundsFundManagementFund management configuration
limitsint256[]Maximum token amounts
deadlineuint256Transaction deadline
feeTransferTransfer.DataFee collection transfer
Returns: int256[] - Token deltas indicating amounts sent and received. The function handles both sell orders (GIVEN_IN) and buy orders (GIVEN_OUT) swap kinds.

Security

  • Access restricted exclusively to the creator through onlyCreator
  • Unauthorized calls revert with "GPv2: not creator"
  • Immutable state prevents tampering
  • Users never interact with this contract directly
Last modified on March 4, 2026