CowSwap
https://swap.cow.fi/ (opens in a new tab)
Deployments
| Name | Address |
|---|---|
GPv2VaultRelayer | 0xC92E8bdf79f0507f65a392b0ab4667716BFE0110 (opens in a new tab) |
OrderSigner | 0x23dA9AdE38E4477b23770DeD512fD37b12381FAB (opens in a new tab) |
Action: swap
Parameters
| Name | Type | Description |
|---|---|---|
sell | string[] (required) | ETH | Token address |
buy | string[] (optional) | ETH | Token address |
feeAmountBp | int[] (optional) | Fee amount basis points (0-10000), where 0 is 0% and 10000 is 100% |
When using the Pilot Extension, all swaps will be routed through a delegate
call to the OrderSigner (opens in a new tab)
in order to facilitate parameter scoping and minimize risks.
To allow ETH as sell or buy token, either the "ETH" literal or the
0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE address can be used.
If buy is left undefined, there would be no restriction on the buy side of
the swap.
SELL_TOKEN below refers to the ERC-20 token address of each element given in
sell.
BUY_TOKEN below refers to the ERC-20 token address of each element given in
buy.
FEE_AMOUNT_BP specifies the fee amount in basis points given in
feeAmountBp. It accepts a value between 0 and 10000, where 0 represents 0%
and 10000 represents 100%.
SELL_TOKEN · approve
Approve GPv2VaultRelayer to spend SELL_TOKEN tokens on behalf of the avatar.
-
Contract:
SELL_TOKEN -
Function:
approve(address,uint256)Parameter Constraint spenderequal to GPv2VaultRelayeramount-
OrderSigner · signOrder
Sign order to swap SELL_TOKEN to BUY_TOKEN.
-
Contract:
OrderSigner -
Function:
signOrder((address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32),uint32,uint256)→ delegatecallParameter Constraint order.sellTokenequal to SELL_TOKENorder.buyTokenequal to BUY_TOKENorder.receiverequal to AVATARorder.sellAmount- order.buyAmount- order.validTo- order.appData- order.feeAmount- order.kind- order.partiallyFillable- order.sellTokenBalance- order.buyTokenBalance- validDuration- feeAmountBplower or equal to FEE_AMOUNT_BP
The signOrder function does not allow sending ETH. Therefore, ETH must be
wrapped in order to be sent as a sell token.
OrderSigner · unsignOrder
Unsign and cancel order.
-
Contract:
OrderSigner -
Function:
unsignOrder((address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))→ delegatecallParameter Constraint order.sellTokenequal to SELL_TOKENorder.buyTokenequal to BUY_TOKENorder.receiverequal to AVATARorder.sellAmount- order.buyAmount- order.validTo- order.appData- order.feeAmount- order.kind- order.partiallyFillable- order.sellTokenBalance- order.buyTokenBalance-
If ETH is SELL_TOKEN:
WETH · approve
Approve GPv2VaultRelayer to spend WETH tokens on behalf of the avatar.
-
Contract:
WETH -
Function:
approve(address,uint256)Parameter Constraint spenderequal to GPv2VaultRelayeramount-
WETH · deposit
Deposit ETH and receive WETH.
-
Contract:
WETH -
Function:
deposit()Ξ allow sending ETHParameter Constraint N/A N/A