Skip to content

cowprotocol/ethflowcontract

Repository files navigation

ETH flow contracts

Smart contracts that enable native ETH sell orders on CoW Swap.

Deployed contracts

The ETH-flow contract has been deployed on all networks that are supported by CoW Swap (currently Ethereum mainnet, Gnosis Chain, Arbitrum One, Base, Avalance, Optimism, BNB, Polygon and Sepolia). There are two deployments of the ETH-flow contract for each network: one is used in the production environment and one is used in the barn (staging/testing) environment. The bytecode and parameters are the same for all contracts in the same network.

You can find deployment details by network id in broadcast/Deploy.sol/.

We also release all current contract addresses together with our build artifacts. The addresses of the ETH-flow's latest deployments can be found here (production) and here (barn)

You can also retrieve the deployed contract for any tagged version. For example, for version v1.0.0 you can find the contract addresses for production here and for barn here.

Development

Install

This project uses Foundry for development and testing. Instructions on how to install this framework can be found here.

Other required NPM-based dev toolings can be installed using yarn.

yarn install

Build

forge build

Build artifacts

Build artifacts are automatically generated for every tagged version.

A version of the code at tag tag-name with build artifacts included can ba found at tag tag-name-artifacts. Artifacts are stored in the folder artifacts in the root directory.

The tag main-artifacts is kept up to date with the latest working version of current main and provides up-to-date artifacts.

To manually generate the build artifacts, run:

forge build -o artifacts

Deploy

The ETH flow contract has a dedicated deployment script. To simulate a deployment, run:

forge script script/Deploy.sol --rpc-url "$RPC_URL" -vvvv --private-key "$PK"

You can find a list of supported RPC URLs in foundry.toml under [rpc_endpoints].

To broadcast the deployment onchain, append --broadcast to the command above.

You can verify a contract you deployed with the deployment script on the block explorer of the current chain with:

export ETHERSCAN_API_KEY=<your Etherscan API key> # Only needed for etherscan-based explorers
forge script script/Deploy.sol --rpc-url "$RPC_URL" -vvvv --private-key "$PK" --verify

Code formatting

yarn fmt

Test

forge test

Add an increased number of verbosity flags for debugging. For example:

forge test -vvv

For seeing line coverage results, run:

forge coverage

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 10