ethereum / solidity

Solidity, the Smart Contract Programming Language
https://soliditylang.org
GNU General Public License v3.0
23.43k stars 5.79k forks source link

Add new external tests #5956

Open chriseth opened 5 years ago

chriseth commented 5 years ago
Project compiler framework Remarks
iExec 0.6.x Truffle
Polymath 0.5.8 Truffle
erc20-meta-token 0.7.4
Augur 0.5.15 eth-tester
Kyber 0.6.6 Truffle
Veil 0.4.24 Truffle dead?
Compound ^0.5.16 Saddle
0x various 0.5.x and 0.6.x Truffle
makerdao/dss >= 0.5.12 dapptools
Trust Token 0.6.10 Hardhat
delphy ^0.4.11 Truffle dead?
gitcoin governance 0.6.12 Brownie
StandardBounties 0.5.12 Truffle dead?
centre-tokens 0.6.12 Truffle
~trident~ 0.8.x + 0.6.12 Hardhat PR: #12197
solmate 0.8.10 dapptools
spartanswap 0.8.3 Hardhat BSC
~Uniswap v3~ 0.7.6 Hardhat PR: #12532
~element-fi~ ^0.7.0 0.8.0 Hardhat PR: #12574
OlympusDAO 0.5.16 0.7.5 0.8.10 Hardhat
yearn-lens ^0.6.12 0.8.2 0.8.6 Brownie Lens Architecture
Overlay 0.8.7 Brownie
~Bleeps~ 0.8.9 Hardhat or dapptools PR: #12531
Tornado Cash ^0.7.0 Truffle
Liquity ^0.4.23 0.6.11 Hardhat or Brownie
DSA connectors ^0.6.0 0.7.6 Hardhat
Gnosis Zodiac ^0.6.0 ^0.8.0 Hardhat
Gnosis CoW Token 0.8.10 Hardhat
~Gnosis Protocol v2~ ^0.7.6 Hardhat PR: #12575
Unlock Protocol 0.5.17 ^0.8.4 Hardhat
Raiden 0.8.10 eth-tester
~PoolTogether V4~ 0.8.6 Hardhat PR: #12560
~Perpetual Pools~ 0.8.7 Hardhat PR: #12561
~Yield Protocol Liquidator~ 0.8.6 Hardhat PR: #12530
Yield Protocol Vault V2 0.8.6 Hardhat
~PRBMath~ >=0.8.4 Hardhat PR: #12542
Rarible >=0.7.6 Truffle
~Euler~ ^0.8.0 Hardhat PR: #12529
~Brink~ =0.8.10 Hardhat PR: #12562
~Chainlink~ 0.4, 0.5, 0.6, 0.7, 0.8 Hardhat PR: #12580
UMA ^0.8.9 Hardhat
Optimism 0.8.x, 0.6.x, 0.5.x Hardhat
memmove 0.8.13+ Foundry
seaport 0.8.13 Hardhat

A few places where we might find projects that use modern compiler versions, suitable to hook up as tests:

erak commented 5 years ago

After a quick test, adding these seems to need more effort to be put into our script then just adding the URLs:

chriseth commented 5 years ago

6104 could fix the polymath requirements.

erak commented 5 years ago

Ah, nice. I will give it a try!

chriseth commented 5 years ago

Let's re-try at least PoCo.

chriseth commented 5 years ago

We should also try 0x: https://github.com/0xProject/0x-monorepo - it seems to use a different test setup, perhaps that is also not the right repository.

axic commented 5 years ago

Some interesting ones: veil.co, kyber.network, bounties.network, gitcoin contracts (such as the grant eip1337), compound.finance, 0x, dai contracts (cdp portal, etc.), delphy, ens contracts, cent.co

Not fully sure if all of them have open sources, like cent.co probably doesn't.

Also USDC (https://www.centre.io/usdc) and TUSD (https://www.trusttoken.com/trueusd/) could be interesting, but they are only regular token contracts with a (un)lock, mint and burn functions.

erak commented 5 years ago

Verfied that these can't be added yet, since they do not meet one or more requirement:

Still on Truffle 4.x.x (forcing the compiler version does not work):

pre-0.5.0:

Depend on node 9.3 (we could add another Circle job with node 9 installed):

Do not support petersburg:

No single Truffle project /w contracts:

erak commented 5 years ago

Testing ABIEncoderV2 with any new external project that we add is also important: https://github.com/ethereum/solidity/issues/5956

chriseth commented 5 years ago

@erak what is the status here?

erak commented 5 years ago

@chriseth I checked the the list again and all of them seem to be still blocked. I'd try to get in touch with the people behind those projects in order to see if they're interested in being part of our test infrastructure and if they would make some effort in supporting us with that.

axic commented 4 years ago

Is this still relevant for 0.6.0?

axic commented 4 years ago

Moved #3127 here.

cameel commented 3 years ago

I have updated the description to add more details, some projects we brainstormed with @hrkrshnn on gitter yesterday and some links for finding more projects.

cameel commented 3 years ago

Added tokens from @erak's comment to the description. Unfortunately all of them seem to have remained on older versions. None of them is even on 0.7.x yet.

cameel commented 2 years ago

Added 11 more projects to the list in the issue description.

Unfortunately I'm not sure what to choose to integrate next - every one has some minor downside. Many rely on multiple Solidity versions which often requires workarounds. Some use a framework other than Hardhat or Truffle which will require extra work to add support for that framework in our external tests. Others are quite small and don't exercise the compiler very much.

cameel commented 2 years ago

I checked these projects in a bit more detail and here's what I'd pick based mostly on ease of integration and how important or interesting they are:

Other important/interesting projects, which look like they'll require more work. I think it would be good to integrate them eventually:

Others that require extra work and do not seem as important/interesting:

Too old or not interesting:

cameel commented 2 years ago

@hrkrshnn rightly pointed out that cow-token is really just a token and not a token + DEX as I thought. So I'm demoting it to non-interesting but I'll try to integrate gp-v2-contracts instead, which seems to be the set of contracts behind cowswap.

hrkrshnn commented 2 years ago

Some contracts that are 0.8.*

  1. https://github.com/pooltogether/v4-core (0.7.6 used for some contracts :(
  2. https://github.com/tracer-protocol/perpetual-pools-contracts
  3. https://github.com/yieldprotocol/yield-utils-v2, https://github.com/yieldprotocol/yield-liquidator-v2 and https://github.com/yieldprotocol/vault-v2. Seems to 0.8.6 exclusively.
  4. https://github.com/paulrberg/prb-math (we already have semantic tests for this). Might be still useful.
cameel commented 2 years ago

Looks like Optimism's contracts are mostly 0.8.9. Contracts targetting L2 would be an interesting addition.