Skip to content

Latest commit

 

History

History
348 lines (329 loc) · 20.7 KB

File metadata and controls

348 lines (329 loc) · 20.7 KB
mode title description
custom
CoW DAO Documentation
Documentation for CoW Protocol, CoW AMM, and CoW DAO — the most user-protective trading protocol in DeFi.

Do what you want, build what you want

CoW Protocol is the most user-protective trading protocol in DeFi. Sign your intent, let solvers compete, and get the best price — MEV-free.

<div className="flex items-center justify-center">
  <div className="w-full max-w-[470px]">
    <svg
      viewBox="0 0 458 438"
      fill="none"
      xmlns="http://www.w3.org/2000/svg"
      className="h-auto w-full"
      aria-hidden="true"
    >
      <rect x="346" y="328" width="26" height="38" rx="13" stroke="white" strokeWidth="16"></rect>
      <rect x="294" y="328" width="26" height="38" rx="13" stroke="#B3D4FF" strokeWidth="16"></rect>
      <rect x="294" y="264" width="26" height="38" rx="13" stroke="white" strokeWidth="16"></rect>
      <rect x="78" y="130" width="16" height="50" fill="#B3D4FF"></rect>
      <rect x="52" y="130" width="16" height="50" fill="#B3D4FF"></rect>
      <path
        fillRule="evenodd"
        clipRule="evenodd"
        d="M189.64 346C173.805 346 159.793 335.839 155.006 320.884L130.392 244H115.259C99.4244 244 85.4129 233.839 80.6253 218.884L66 173.2L120.858 173.2L91.9237 130H366.076L337.142 173.2L392 173.2L377.375 218.884C372.587 233.839 358.576 244 342.741 244H327.608L302.994 320.884C298.207 335.839 284.195 346 268.36 346H189.64ZM171.044 223C171.044 234.598 179.784 244 190.565 244C201.345 244 210.085 234.598 210.085 223C210.085 211.402 201.345 202 190.565 202C179.784 202 171.044 211.402 171.044 223ZM286.956 223C286.956 234.598 278.216 244 267.436 244C256.655 244 247.915 234.598 247.915 223C247.915 211.402 256.655 202 267.436 202C278.216 202 286.956 211.402 286.956 223Z"
        fill="#3F80FF"
      ></path>
      <rect x="346" y="8" width="26" height="38" rx="13" stroke="#3F80FF" strokeWidth="16"></rect>
      <rect x="242" y="8" width="26" height="38" rx="13" stroke="#3F80FF" strokeWidth="16"></rect>
      <rect x="294" y="8" width="26" height="38" rx="13" stroke="#3F80FF" strokeWidth="16"></rect>
      <rect x="8" y="136" width="26" height="38" rx="13" stroke="white" strokeWidth="16"></rect>
      <rect x="346" y="72" width="26" height="38" rx="13" stroke="#3F80FF" strokeWidth="16"></rect>
      <rect x="-8" y="8" width="26" height="38" rx="13" transform="matrix(-1 0 0 1 78 320)" stroke="#6BA3FF" strokeWidth="16"></rect>
      <rect x="-8" y="8" width="26" height="38" rx="13" transform="matrix(-1 0 0 1 52 256)" stroke="#B3D4FF" strokeWidth="16"></rect>
      <rect x="242" y="72" width="26" height="38" rx="13" stroke="#FF6B35" strokeWidth="16"></rect>
      <rect x="-8" y="8" width="26" height="38" rx="13" transform="matrix(-1 0 0 1 156 384)" stroke="#FF6B35" strokeWidth="16"></rect>
      <rect x="294" y="72" width="26" height="38" rx="13" stroke="#6BA3FF" strokeWidth="16"></rect>
      <rect x="138" y="72" width="26" height="38" rx="13" stroke="#6BA3FF" strokeWidth="16"></rect>
      <rect x="-8" y="8" width="26" height="38" rx="13" transform="matrix(-1 0 0 1 260 384)" stroke="#6BA3FF" strokeWidth="16"></rect>
      <rect x="86" y="72" width="26" height="38" rx="13" stroke="#6BA3FF" strokeWidth="16"></rect>
      <rect x="-8" y="8" width="26" height="38" rx="13" transform="matrix(-1 0 0 1 312 384)" stroke="white" strokeWidth="16"></rect>
      <rect x="192" y="8" width="26" height="38" rx="13" stroke="#6BA3FF" strokeWidth="16"></rect>
      <rect x="424" y="8" width="26" height="38" rx="13" stroke="#B3D4FF" strokeWidth="16"></rect>
      <rect x="424" y="328" width="26" height="38" rx="13" stroke="#B3D4FF" strokeWidth="16"></rect>
      <rect x="390" y="2" width="16" height="50" fill="#3F80FF"></rect>
      <rect x="390" y="322" width="16" height="50" fill="#B3D4FF"></rect>
      <rect width="16" height="50" transform="matrix(-1 0 0 1 432 66)" fill="white"></rect>
      <rect width="16" height="50" transform="matrix(-1 0 0 1 458 66)" fill="#B3D4FF"></rect>
      <rect x="390" y="66" width="16" height="50" fill="#3F80FF"></rect>
      <rect width="16" height="50" transform="matrix(-1 0 0 1 16 322)" fill="white"></rect>
      <rect width="16" height="50" transform="matrix(-1 0 0 1 16 258)" fill="white"></rect>
      <rect x="208" y="66" width="16" height="50" fill="#3F80FF"></rect>
      <rect width="16" height="50" transform="matrix(-1 0 0 1 198 386)" fill="#3F80FF"></rect>
      <rect width="16" height="50" transform="matrix(-1 0 0 1 120 386)" fill="#6BA3FF"></rect>
      <rect x="26" y="322" width="16" height="50" fill="white"></rect>
      <rect width="16" height="50" transform="matrix(-1 0 0 1 94 386)" fill="#3F80FF"></rect>
      <rect width="16" height="50" transform="matrix(-1 0 0 1 120 322)" fill="#3F80FF"></rect>
      <rect x="52" y="4" width="16" height="50" fill="#B3D4FF"></rect>
      <rect x="182" y="66" width="16" height="50" fill="#3F80FF"></rect>
      <rect width="16" height="50" transform="matrix(-1 0 0 1 224 386)" fill="#3F80FF"></rect>
      <rect width="16" height="50" transform="matrix(-1 0 0 1 354 386)" fill="white"></rect>
      <mask id="mask0_hero" maskUnits="userSpaceOnUse" x="66" y="130" width="326" height="216" style={{ maskType: 'alpha' }}>
        <path
          fillRule="evenodd"
          clipRule="evenodd"
          d="M189.64 346C173.805 346 159.793 335.839 155.006 320.884L130.392 244H115.259C99.4244 244 85.4129 233.839 80.6253 218.884L66 173.2L120.858 173.2L91.9237 130H366.076L337.142 173.2L392 173.2L377.375 218.884C372.587 233.839 358.576 244 342.741 244H327.608L302.994 320.884C298.207 335.839 284.195 346 268.36 346H189.64ZM171.044 223C171.044 234.598 179.784 244 190.565 244C201.345 244 210.085 234.598 210.085 223C210.085 211.402 201.345 202 190.565 202C179.784 202 171.044 211.402 171.044 223ZM286.956 223C286.956 234.598 278.216 244 267.436 244C256.655 244 247.915 234.598 247.915 223C247.915 211.402 256.655 202 267.436 202C278.216 202 286.956 211.402 286.956 223Z"
          fill="#3F80FF"
        ></path>
      </mask>
      <g mask="url(#mask0_hero)">
        <rect x="294" y="264" width="26" height="38" rx="13" stroke="#FF6B35" strokeWidth="16"></rect>
        <rect x="260" y="258" width="16" height="50" fill="#013a8f"></rect>
        <rect x="234" y="258" width="16" height="50" fill="#012F7A"></rect>
        <rect x="-8" y="8" width="26" height="38" rx="13" transform="matrix(-1 0 0 1 234 128)" stroke="#012F7A" strokeWidth="16"></rect>
        <rect width="16" height="50" transform="matrix(-1 0 0 1 276 130)" fill="#013a8f"></rect>
        <rect width="16" height="50" transform="matrix(-1 0 0 1 302 130)" fill="#013a8f"></rect>
        <rect width="16" height="50" transform="matrix(-1 0 0 1 328 130)" fill="#012F7A"></rect>
        <rect width="16" height="50" transform="matrix(-1 0 0 1 198 130)" fill="#012F7A"></rect>
        <rect x="104" y="130" width="16" height="50" fill="#6BA3FF"></rect>
      </g>
      <rect x="346" y="264" width="26" height="38" rx="13" stroke="#3F80FF" strokeWidth="16"></rect>
      <rect x="390" y="258" width="16" height="50" fill="#3F80FF"></rect>
      <rect x="416" y="258" width="16" height="50" fill="white"></rect>
      <rect x="442" y="258" width="16" height="50" fill="#B3D4FF"></rect>
    </svg>
  </div>
</div>

Quick Start

Move from orientation to implementation with a short path through the docs.

CoW Protocol uses **intents** and **batch auctions** to give traders MEV protection, better prices, and gasless execution. Solvers compete to fill your orders.
    <CardGroup cols={3}>
      <Card title="Intents" icon="file-signature" href="/cow-protocol/explanation/introduction/intents">
        What you want to trade, not how
      </Card>
      <Card title="Batch Auctions" icon="layer-group" href="/cow-protocol/explanation/introduction/fair-combinatorial-auction">
        Orders grouped for optimal settlement
      </Card>
      <Card title="Solvers" icon="gears" href="/cow-protocol/explanation/introduction/solvers">
        Professional third parties compete for you
      </Card>
    </CardGroup>
  </Step>

  <Step title="Pick your integration path">
    Decide whether you want to integrate with the API, SDK, or widget depending on your product surface and level of control.

    ```bash
    npm install @cowprotocol/cow-sdk
    ```

    Go deeper with the [Integration overview](/cow-protocol/explanation/integration-overview), [TypeScript SDK](/cow-sdk/quickstart), [Python SDK](/cow-py/quickstart), or [Widget guide](/cow-swap/widget/overview).
  </Step>

  <Step title="Follow a working tutorial">
    Use a concrete walkthrough to place orders, inspect explorer data, or test solver flows end to end.

    <Accordion title="Suggested starting tutorials">
      - **Traders**: [Place a swap](/cow-swap/tutorials/swap), then [set a limit order](/cow-swap/tutorials/limit), then [create a TWAP](/cow-swap/tutorials/twap)
      - **Developers**: [SDK Quickstart](/cow-sdk/quickstart), then [create a swap order](/cow-sdk/guides/creating-swap-orders), then [widget integration](/cow-swap/widget/overview)
      - **Solver operators**: [Test locally](/cow-protocol/tutorials/solvers/local_test), then [onboard](/cow-protocol/howto/solvers/onboard)
      - **Live coding**: Try the [interactive tutorials at learn.cow.fi](https://learn.cow.fi) — browser-based, no install needed
    </Accordion>
  </Step>

  <Step title="Dive into the reference">
    Once you know your use case, move into contracts, APIs, and SDK references to implement against stable interfaces.

    <CardGroup cols={3}>
      <Card title="API Reference" icon="square-terminal" href="/cow-protocol/reference/apis/orderbook">
        Orderbook, Solver, and Driver APIs
      </Card>
      <Card title="Contracts" icon="file-contract" href="/cow-protocol/reference/contracts/core">
        Settlement, VaultRelayer, AllowList
      </Card>
      <Card title="SDK Reference" icon="code" href="/cow-sdk/api/trading-sdk">
        Full TypeScript API docs
      </Card>
    </CardGroup>
  </Step>
</Steps>

Explore Order Types

Jump directly into the parts of the ecosystem that match your role, workflow, or product area.

Set a target price and let CoW Swap execute when the market reaches it — gasless and free. Spread a trade across fixed intervals to reduce price impact and timing risk. Schedule a future trade with oracle-based pricing for DAOs and smart contracts. Encode custom trading logic directly into an ERC-1271 smart contract. Trigger orders automatically when your chosen on-chain conditions are met. Connect trades to actions like bridging, staking, deposits, or vault flows.

Find Your Path

Pick your role and follow the links that match what you're trying to do.

You are a... Start here
Trader What is CoW Protocol? then place a swap
Developer Integration overview, TypeScript SDK, or Python SDK
Solver operator Test locally then onboard
Contract developer Contracts reference or ComposableCoW
Contributor Services or BFF architecture and dev setup
DAO participant Mission and how to apply for a grant

Resources

Reach the community, source repositories, and governance channels.

Explore the public source code for docs, SDKs, contracts, services, and integration examples. Ask questions, discuss integrations, and connect with builders working across the CoW ecosystem. Follow governance discussions, improvement proposals, and community coordination in the DAO forum. Review live and historical voting activity for CoW DAO proposals and governance decisions.

Ready to build?

Go from concepts to implementation with tutorials and references that map directly to CoW Protocol, CoW AMM, and governance workflows.