GithubHelp home page GithubHelp logo

cowprotocol / cowswap Goto Github PK

View Code? Open in Web Editor NEW
108.0 8.0 73.0 129.08 MB

๐Ÿฎ CowSwap: First CoW Protocol UI

Home Page: https://swap.cow.fi/

License: GNU General Public License v3.0

HTML 0.18% JavaScript 0.36% TypeScript 99.46% Shell 0.01%

cowswap's Introduction

Tests

CoW Swap is the first trading interface built on top of CoW Protocol.

It allows you to buy and sell tokens using gasless orders that are settled peer-to-peer among its users or into any on-chain liquidity source while providing MEV protection.

Platform Link
๐Ÿฎ CoW Swap ๐Ÿฎ swap.cow.fi
CoW Swap (IPFS) Every release is deployed automatically to IPFS (Releases)
CoW Swap (ENS) ens://cowswap.eth or (cowswap.eth.limo)
CoW Protocol cow.fi
Docs docs.cow.fi
Governance (Snapshot) snapshot.org/#/cow.eth
Stats dune.com/cowprotocol/cowswap
X/Twitter @CoWSwap
Discord discord.com/invite/cowprotocol
Forum forum.cow.fi

๐Ÿฎ Run CoW Swap

First install Dependencies:

yarn

Run

Start CoW Swap on http://localhost:3000

yarn start

Build

Build the project. The static files will be generated in the build folder.

yarn build

Unit testing

yarn test

๐Ÿ”Ž Explorer

Start the Explorer on http://localhost:4200

Read more about the Explorer

Start

yarn start:explorer

Build

yarn build:explorer

๐Ÿ„ cow.fi

Start CoW.fi on http://localhost:3001

Start

yarn start:cowfi

Build

yarn build:cowfi

๐Ÿ–ผ๏ธ Widget Configurator

Start the Widget Configurator on http://127.0.0.1:4200/widget-configurator

# Start
yarn start:widget

# Build
yarn build:widget

๐ŸŒŒ Cosmos UI Library

Start the Cosmos UI Library on http://localhost:5000

yarn run cosmos

๐Ÿค“ Development

Integration test

โš ๏ธ To run the tests. Make sure you add the required environment varianbles to your .env.local file with:

  • INTEGRATION_TEST_PRIVATE_KEY=<your-private-key>: Private key
  • INTEGRATION_TESTS_INFURA_KEY=<your-infura-key>: Infura key

To launch it with our development server (so you have live-reloading):

yarn start
yarn cypress

Alternatively, you can build the project and launch the integration test.

yarn build
yarn integration-test

If we want to use the Cypress UI:

yarn build
yarn serve
yarn cypress

Build/test UI Library

CoW Swap has a library of reusable components.

yarn ui:build
yarn ui:test

Build

yarn build

Analyze CoW Swap bundle:

# Use one of the following templates: "sunburst" | "treemap" | "network" | "raw-data" | "list";
ANALYZE_BUNDLE=true ANALYZE_BUNDLE_TEMPLATE=sunburst yarn build

โš™๏ธ Configuration

RPC Endpoints

You should set your own RPC endpoints.

One simple way to do this, is by defining your own REACT_APP_INFURA_KEY environment var.

Alternatively you can define the RPC URLs directly with the following environment variables:

REACT_APP_NETWORK_URL_1: https://...
REACT_APP_NETWORK_URL_11155111: https://...
REACT_APP_NETWORK_URL_100: https://...
REACT_APP_NETWORK_URL_42161: https://...

Additionally, if you plan to run the integration tests locally you must define:

INTEGRATION_TESTS_INFURA_KEY: YOUR_INFURA_KEY
INTEGRATION_TESTS_PRIVATE_KEY: YOUR_TEST_WALLET_PRIVATE_KEY

Orderbook API Endpoints

Fee quote requests and posting orders are sent to the Orderbook API. This API has the responsibility of collecting orders and handing them to the solvers.

The reference implementation of the API is CoW Protocol Services.

The API endpoint is configured using the environment variable REACT_APP_ORDER_BOOK_URLS:

REACT_APP_ORDER_BOOK_URLS='{"1":"https://YOUR_HOST","100":"https://YOUR_HOST","5":"https://YOUR_HOST"}

BFF API Endpoints (Backend for Frontend)

The BFF API is a helper API that provides some additional data to the frontend. It is a API that is used to enhance the frontend experience enabling some features. It is not consider a required API for CoW Swap core functionality, the app will still allow the user to place order and will have some fallback logics in case this API is not available.

The reference implementation of the API is BFF (Backend For Frontend).

The API endpoint is configured using the environment variable REACT_APP_BFF_BASE_URL:

REACT_APP_BFF_BASE_URL=https://bff.cow.fi

Price feeds

CoW Swap tries to find the best price available on-chain using some price feeds.

All price feeds are enabled by default, but they can be individually disabled by using an environment variable:

Name Environment variable Type Description
1inch REACT_APP_PRICE_FEED_1INCH_ENABLED boolean (default = true) Paraswap price estimation. Used for all price estimations.
0x REACT_APP_PRICE_FEED_0X_ENABLED boolean (default = true) 0x price estimation. Used for all price estimation.

Metadata attached to orders (AppData)

The app will attach some metadata to all orders.

This metadata will be sent to the smart contract as a hexadecimal value in an order field called AppData. This value comes from hashing the content of a metadata JSON containing some information about the trade (using keccak256 on the UTF-8 bytes).

The format of the JSON follows the format defined in @cowprotocol/app-data.

To set your own AppData, change REACT_APP_FULL_APP_DATA_<environment> environment variable. For more details, check out the environment file (<.env>)

๐Ÿ”Ž SEO

Sitemap

The sitemap can be found in <./public/sitemap.xml>

To update its content:

  1. Edit the list of pages in <./src/sitemap.js>
  2. Run yarn sitemap
  3. Commit the changes to git

๐Ÿ”ซ Troubleshooting

Service worker

In case of problems with the service worker cache you force a reset using emergency.js The plan:

  1. const resetCacheInCaseOfEmergency = false - change false to true
  2. Deploy a new version to production

emergency.js is not cached by browser and loaded before all.

๐Ÿ“š Technical Documentation

  1. Oveall Architecture
  2. Amounts formatting
  3. ABIs

cowswap's People

Contributors

alfetopito avatar alongoni avatar anxolin avatar avsavsavs avatar callil avatar chikeichan avatar crowdin-bot avatar dependabot[bot] avatar fairlighteth avatar github-actions[bot] avatar haydenadams avatar henrypalacios avatar ianlapham avatar jfrankfurt avatar kennyt avatar lint-action avatar lynnshaoyu avatar maria-vslvn avatar matextrem avatar moodysalem avatar nenadv91 avatar noahzinsmeister avatar ramirotw avatar shoom3301 avatar tukantje avatar velenir avatar vm avatar w3stside avatar willhennessy avatar zzmp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cowswap's Issues

Better differentiation of pop up modals

Description
This is only a suggestion:
I noticed the icon for the different pop up modals are the same eventhough the action is different

Placed Swap:
Bildschirmfoto 2021-07-06 um 12 00 10

Traded Swap:
Bildschirmfoto 2021-07-06 um 12 00 59

Canceled Swap:
Bildschirmfoto 2021-07-06 um 12 07 10

The tikmark reflects that the action was successful but it might also be cool to reflect the actual action with a corresponding icon:
Proposal
e.g.

Submitted:
Bildschirmfoto 2021-07-06 um 12 06 03
The spining wheel similar to the Explorer
Bildschirmfoto 2021-07-06 um 12 09 33

Traded:
as before
Bildschirmfoto 2021-07-06 um 12 00 59

Cancled:
Bildschirmfoto 2021-07-06 um 10 50 41
also see #860

Original issue gnosis/cowswap#867 by @MareenG

Allow to add token alias

During the trading challenge, we were working with CRC tokens.
The tricky bit is that everyone had their own CRC, and we couldn't differentiate between each other.

When adding a custom token to the UI, we'd like to be able to give an alias to it.

Original issue gnosis/cowswap#403 by @alfetopito

Token search address - Case sensitive

Describe the bug
The search input for token addresses is case sensitive

How to Reproduce
Steps to reproduce the behavior:

  1. Go to select token
  2. Insert token address (e.g. Copied from Etherscan) - you can use 0x6B175474E89094C44Da98b954EedeAC495271d0F for DAI.
  3. Change cases of the inserted address
  4. See error

Expected behavior
Ideally, the search bar shouldn't be case sensitive

Screenshots
Pasted from Etherscan:
Bildschirmfoto 2021-04-20 um 10 41 28
Change Cases
Bildschirmfoto 2021-04-20 um 10 41 41
Bildschirmfoto 2021-04-20 um 10 41 53

Additional context
I assume this is low priority as I guess most people will copy and paste from Etherscan
Note: Uniswap inherited

Original issue gnosis/cowswap#461 by @MareenG

Don't wait for the approval

Description
Don't wait for the approval to allow the user to sign transaction

Details
Technically, you can send the offchain transaction before the approval/allowance is done.

In order to allow a quicker flow, it would be good to allow to send orders right after the user sends the approval.

Describe alternatives you've considered
It would be good to consider how is the best flow. We could make some wireframes, but the rough idea is:

  • The "Approval button" is only visible if the allowance.
  • Once signed the transaction, the approval shows the spinner, but also the UI enables the trading button.
  • We could consider have a message that would clear inform, that the order is consider inactive while the transaction is not mined. Note that this might impact in the expire time (20 min by default).
  • Ideally, in the pending transactions, we could see how the order is inactive (while the approve is not mined). We could consider even grouping together the transactions.
  • Once the approval is mined, the order becomes active. Open question, would we show this already in the success toast message?

Additional context
Feedback:
https://twitter.com/austingriffith/status/1387429951935111171?s=20

Original issue gnosis/cowswap#556 by @anxolin

Properly MOD swap/hooks in custom

All this stuff is copy paste,

I believe u didn't create a Mod in this case, becase src/state/swap/hooks.tsexisted already, and had some copy paste.

I won't stop the approve, but only if we promise a refactor, where we create the Mod version of this hook, and only override the parts we need to change.

Could you open an issue for this?

Originally posted by @anxolin in gnosis/cowswap#200 (comment)

Original issue gnosis/cowswap#205 by @W3stside

Rounding in fee overview

Describe the bug
The displayed to value does not always follow rounding rules.
In some cases it was just cut and in other cases it is rounded

How to Reproduce
Steps to reproduce the behavior:

  1. try different values and tokens for trading
  2. observe fee overview

Expected behavior
A consistent approach should be followed. Either cut off the numbers after a certain amount of significant digits or apply rounding rules.

Screenshots

Bildschirmfoto 2021-04-07 um 13 18 15

Additional context
Could this be due to the fact that the before fee value is a cut/ rounded value and the to value is calculated with the exact amount?

Original issue gnosis/cowswap#389 by @MareenG

[wallet] Crypto.com Defi wallet cant sign eth_signTypedData_v4

Using Wallet Connect, not able to sign the swap message.
To be more precise, there's no prompt at all in the wallet app when a signature is requested from the web interface.

I couldn't yet found any reference regarding their app.
There are a few repos available on github, but none that I could link to the mobile wallet, so I assume it's all closed source.

I've reached out to their support through the website (help.crypto.com)
screenshot_2021-05-07_12-31-38

It says it takes a day to reply. Let's wait for it ๐Ÿคž

Original issue gnosis/cowswap#610 by @alfetopito

Additional analytics solution.

Possible issue:

  • The GA metric data might be skewed, because of the assumption a good chunk of users are blocking GA requests.

Possible solution:
A very simple self-hosted analytics script could be used in parallel. Either self built or by self hosting solutions. This allows use to compare metrics from two different sources and ensure our metrics are less skewed. Especially if feature decisions will be taken based on metric data.

Possible alternatives (in parallel):

My assumption is, it needs to be self hosted or simply resort to some type of server logs (if available). Reason being that it's likely these alternatives are blocked as well if not self hosted. Even then, some blockers also match for more than just originating domains for the requests (e.g. pattern/script matching).

Original issue gnosis/cowswap#591 by @fairlighteth

ETH/WETH workflow- further improvement suggestions

Is your feature request related to a problem? Please describe.
The new workflow works nicely.
However, after one wrapped ETH it might be cool to set the from token automatically to WETH.

So instead remaining here:
Bildschirmfoto 2021-04-23 um 11 41 01

It would be cool to be directed to this screen
Bildschirmfoto 2021-04-23 um 11 41 15

Just a suggestion :) as I felt stuck for a second after wrapping ETH.
Not sure if this can be done

Original issue gnosis/cowswap#508 by @MareenG

Improve UI feedback when selling ETH for buy orders

Description
It can be confusing for the user that the amount being used for wrapping is the MAXIMUN SOLD, in the case of buy orders.

See this example, here:

image

Describe the solution you'd like
Give a better feedback to the user. Not sure what's the best option, we could do some wireframes and test it out.

Original issue gnosis/cowswap#569 by @anxolin

Subsidize gas in the FE

There's an (unconfirmed) suggestion, that we might want to create an incentive for making a % of discount to users that hold GNO.

Most likely, this incentive should be done in the backend. Probably, we should move the whole FEE calculation to the backend.

Open questions:

  • Do we do it in FE/Backend?
  • Do we show in the UI that we applied a discount? how
  • The implementation would be just to sign an order with a smaller fee? Then the operator would check we are electible for discount?

Original issue gnosis/cowswap#203 by @anxolin

Tooltips in mobile could be easier to close

Description
Super minor request.

Tooltips open when you click in the question mark icon, but if you click again, they don't close.
You can click anywhere and it would close, well anywhere but the question mark icon.

Shouldn't we allow this? It made me think at first it was not working ok

Original issue gnosis/cowswap#697 by @anxolin

After ETH wrap I see "Insufficient ETH balance"

Describe the bug
After ETH wrap I see "Insufficient ETH balance".

I would expect to be able to click Swtich to ETH after wrapping ETH to continue the Swap

How to Reproduce
Steps to reproduce the behavior:

  1. With ETH in your wallet, select ETH as sell and any other token besides WETH as buy
  2. Enter half of your ETH balance in the sell input
  3. The wrap section should be displayed. Click on wrap my ETH
  4. Send the tx and wait for it to be confirmed
  5. Once it's confirmed, you will have less than half of your ETH in your balance, and it and Insufficient ETH balance is shown

Screenshots

  • I originally had 0.3 ETH
  • I chose to sell 0.15 ETH
  • I wrapped ETH using the modal
  • After the wrap tx is mined:
    screenshot_2021-05-07_10-33-07

Additional context
I believe somewhere in the state it's too eager to show you there's not enough balance for the order, without taking into account the wrap that was just performed to use WETH instead of ETH.

This happened in Mainnet. I expect this is harder to notice on Rinkeby given tx costs way less ETH

Original issue gnosis/cowswap#609 by @alfetopito

SDK for CoW Protocol

Description
There's many utilities, logics defined in CowSwap that are very interesting to extract to a generic SDK.

Context
Balancer replicated many of these logics by copy pasting, but long term it would be good to be able to provide a simple to use TS library that contains these basic utilities that every UI and service using JS/TS would need.

Proposal
Simple TS SDK that would expose all reusable pieces of code.

Example:

  • Calculate amount before/after fees
  • Constants
  • Links to blockexplorers, including our Gnosis Protocol explorer.
  • Get prices: from our API
  • Get prices from all different sources EDIT: Now that the backend already checks the best price, it might be just a good to have but not important anymore. I would leave it out for now
  • Post orders
  • Signature for posting orders/cancelations
  • Wallet workarounds, supported wallet list, ...
  • ...

Original issue gnosis/cowswap#793 by @anxolin

Soft loading: change timeout logic

original comment:
nit: you can count the time that has been shown, and if it's less than the minimum animation time, you hide after the time difference

const animationStart = Date.now()
...

if (showCow) {
    const timeRemainingAnimation = Math.max(0, LOADING_COW_TIMER - Date.now() - animationStart)
    setTimeout(hideCow, timeRemainingAnimation)
}

Originally posted by @anxolin in gnosis/cowswap#735 (comment)

Original issue gnosis/cowswap#752 by @W3stside

Placing order after approving token has no feedback

Description
Placing order after approving token has no feedback.

Order is placed but no pop up nor post confirmation modal was displayed.

It was observed on this version https://pr753--gpswapui.review.gnosisdev.com/

How to Reproduce

  1. Pick a sell token that you have not yet approved
  2. Fill in the relevant fields
  3. Send the approval tx
  4. Once that's mined, place the swap order
  • Post swap modal was not displayed
  • Cow sound did not play
  • Toast notification was not displayed

Expected behavior
After a swap order is sent:

  • Post swap modal should be displayed
  • Toast notification should be displayed
  • Cow sound should be played

Screenshots
N/A

Additional context
Reported by @avsavsavs during Kaffeasdasd testing https://pr753--gpswapui.review.gnosisdev.com/

Original issue gnosis/cowswap#765 by @alfetopito

Input Amount rounding is off (buy orders)

In some cases, the estimated amount to be sold calculated for buy orders shows rounding that is sometimes off

Notes:

  • should be using .toSignificant(6) on the trade.inputAmountWithFee which should round appropriately, but seems to truncate or round incorrectly.

Original issue gnosis/cowswap#641 by @W3stside

Allow to approve tokens with no balance

Separate token Approval from Swap function

Currently token allowance approval happens only once all fields are set and the swap is ready to go, in order to separate the token approval from trading, the system could check for allowance as soon as the user fills the "from" field. This way the user can start approving tokens at any time without any commitment to trading them now.

Testing and if needed asking for approval at this stage
image

instead of this stage
image

Original issue gnosis/cowswap#763 by @NanoOrca

Informing User about Transaction Speed

Many users complain about long time period it takes for a transaction to be executed.

This issue asks to create a proposal how the UX around this topic can be improved for the user.

For example:

Once a transaction has not been executed for 60 seconds, a notification appears "The network currently experiences high congestion, don't worry, we are speeding up the transaction for you"

Or:
A button "Speed up the transaction", when clicked, it says "Don't worry, we already take care of it"

Original issue gnosis/cowswap#677 by @annamsgeorge

Custom slippage around 5% reverts for some values to a lower value

Describe the bug
When setting a custom slippage around 5% a wrong notification is shown for some values

How to Reproduce
Steps to reproduce the behavior:

  1. Go to settings
  2. Set custom value between 5.00 - 5.1% in 0.01% steps
  3. See error for 5.02% and 5.06% - Enter a valid slippage percentage

Expected behavior
Your transaction may be frontrun should be shown

Screenshots
Bildschirmfoto 2021-04-08 um 11 02 38
Bildschirmfoto 2021-04-08 um 11 02 32
Bildschirmfoto 2021-04-08 um 11 02 47
...
Bildschirmfoto 2021-04-08 um 11 02 58

Original issue gnosis/cowswap#395 by @MareenG

Solve the inneficient token lists, and add back coingecko

As mentioned in:
gnosis/cowswap#802 (comment)

There's some issues with the efficiency and reliability of the app related to token lists.

This issue would be to find solutions. Some initial ideas:

  • Endpoint for big lists. I would probably suggest a simple API used as a last resource where there's no tokens matching a name/symbol/address.
  • Improve efficiency of lists in the UI:
    • Don't break if the list get's to big. It's even an attack vector where someone can do a DOS.
    • More efficient rendering. The reduce function and logic looks very inefficient, avoid redrawing the UI often! (i think it's big part of the problem)

Original issue gnosis/cowswap#803 by @anxolin

Content page ideas

Let's keep track of some content page ideas that would help users understand better the Gnosis Protocol and Cow Swap.

The idea is being able to link this information resources in the web. For each content idea we have to decide where is the best place to add it: in the web, in the dev portal, or somewhere else.

I feel we discussed a few in comments and slack messages. So I'll leave this issue open to collect a few of these ideas.

Some that come to mind:

  • Explain why cow swap has Ethereum transaction and meta-transactions
  • Explain all the information that is signed. Also nice to add a small tool where you can past a raw order JSON, and it would explain in human readable way what are all the fields you are signing.
  • Why I can't sell ETH?
  • Explain why trading with WETH is cheaper than trading with ETH
  • Explain what is coincidence of wants, and why this is great for blockchain native apps
  • How to do your first trade: would explain how to receive some tokens, and do your first trade in COW. It would also highlight you don't need ETH to trade.
  • Do I need ETH to trade? The answer to this question should be very exposed in the website. We could have some small content modal page or tooltip we show in the relevant places. It also connects with "How to do your first trade"

Bonus, some tools that can help explain the protocol better and can be linked in the tutorials:

  • It would be nice if the Explorer shows you the signed message JSON and the signature
  • Nice to have a took that given a raw order, and a signature, it would tell you if the signature is correct.
  • Nice to have a tool that let you sign raw orders, and even send them to the operator. So it would allow to do just the signing or also the sending. This would allow to expose the protocol raw interface. It's great to explain the protocol and develop integrations. Also for accessing features not exposed in the UIs.

@biocom @annamsgeorge @MareenG @avsavsavs Please add any content materials you might think is relevant, or link to a relevant Google docs if this is better handled somewhere else.

Original issue gnosis/cowswap#366 by @anxolin

Improve ETH workflow confirm message

This issue, although is not a critical, it feels like low effort, and improves a little the ETH workflow.

The idea is that, instead of showing the balances, it would be nice to see the resulting balances AFTER I perform the Wrapping.

Also, if ETH balance is low, maybe it should even be red, like in this case:

image.png

Something like:

1.8 ETH                           ---->          1.8 WETH
balance after: 0.1 ETH                    balance after: 3.5 WETH (edited) 

(ofcourse in the example, i removed decimals to simplify the example, but it should have decimals)

Original issue gnosis/cowswap#804 by @anxolin

Unsupported token FAQ anchor link not working

How to re-produce:

  • Add an unsupported token 0x27dce1ec4d3f72c3e457cc50354f1f975ddef488
  • Click on the FAQ link:

Screen Shot 2021-06-21 at 09 09 02

- Should open a new page with this URL [](https://cowswap.exchange/#/faq#what-token-pairs-does-cowswap-allow-to-trade) - On open of the page, it doesn't scroll you automatically to the right section. The same anchor link on the FAQ page does work on click.

Suggestions how to fix:

  • Need to investigate first how to support incoming anchor URL's.

Responsible code:
<HashLink to={UNSUPPORTED_TOKENS_FAQ_URL} target="_blank" onClick={e => e.stopPropagation()}>

File:
src/custom/components/SearchModal/CurrencyList/index.tsx L91

Original issue gnosis/cowswap#787 by @fairlighteth

Improvement and Issue renewing fees

There's an issue renewing the fees, it doesn't always happen.

We can split this into 3 tasks if it makes it easier

Expected

Main workflow

  1. User load the page or selects a token
  2. We ask for the fee quote: this has the fee amount and the expiration time
  3. .... times goes by
  4. [x seconds/minutes before expiration] We ask again backend for a new quote
  5. .... repeat forever

Edge case 1:

  1. Fee expires in the confirmation modal (the one before sending the order to metamask to sign)
  2. We show the user that there was a change with the order, and make sure he agrees on the new conditions

Edge case 2:

  1. We receive an error from the backend, saying that the fee is no longer valid
  2. We try to recover from that, and go back to the confirmation modal, where we ask the user again if everything is fine with the new conditions

Notes:

  • I would suggest that the backend has something like 30 min of validity, for UX reasons. It's not nice to have to reconfirm with the user. We observe how it can take quite some time for them to sign it
  • I would suggest for the renewal process to renew when only 10 min are left for the validity of the fee.
  • if we have already a quote, and is not expired, make sure we don't ask again for the fee. Even in a page refresh

Original issue gnosis/cowswap#340 by @anxolin

[Uni-v3.2.3] Blocked addresses

#160 introduced a feature, to prevent "Specially Designated Nationals and Blocked Persons Ethereum addresses" from using the site

<Blocklist />

Consult with legal, and see if this is useful.
Basically, allows you to prevent an user from using the UI if it's in your BLOCKED_ADDRESSES

Original issue gnosis/cowswap#175 by @anxolin

Use our own Gas Estimation

From last test session

If possible to suggest gas price we should suggest a higher one as default is too low (e.g. on Opeara Mobile)

Suggestion
Add the average gas price in all Ethereum transactions instead of relying in the Wallet.

Nice to have
We could suggest a gas price. Some UIs also allow you to choose slow/medium/fast which is great.
This could even be done together with this proposal #571 so we, for Ethereum TX we present a nice UX where user selects his gas price. For meta-transactions we could use the gas price to show how much you are saving in gas.

Original issue gnosis/cowswap#708 by @anxolin

Clearly show when a transaction is gassless

Description
Show clearly when transactions are gasless, or if the transaction is not gassless, show an estimation on the cost on gas

Details
Cowswap is a gasless exchange, but in order to be gasless, you need to first enable tokens for trading.

Enabling token requires a regular Ethereum transaction, which needs ETH for gas.
Same applies for ETH. Since it cannot be sold directly, you have to wrap it first, which requires an Ethereum transaction.

Describe the solution you'd like
I would love to see clearly in every transaction details, when if is a:

  • Gassless transaction
  • Ethereum transaction

If it's an ethereum transaction, I would like to know, how much ETH should it cost, and what's the USD at current prices.

Additional context
Feedback:
image

Original issue gnosis/cowswap#571 by @anxolin

Explore some re-designs or alternative UIs

Low prio.

Some possible ideas on different directions:

  • DEX aggregator: Simpler swap UI on top, a table comparing prices/fees in different exchanges. We pick the best price of the list automatically for the swap part
  • Limit orders
  • Add more advanced elements: historic prices, open orders, past orders
  • Classical trading ui

Original issue gnosis/cowswap#598 by @anxolin

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.