Giter Site home page Giter Site logo

darthgus / contracts-aggregator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from looksrare/contracts-aggregator

0.0 0.0 0.0 1.16 MB

LooksRare aggregator contracts

License: MIT License

Shell 0.03% JavaScript 0.15% TypeScript 7.39% Solidity 92.43%

contracts-aggregator's Introduction

@looksrare/contracts-aggregator

Tests License: MIT SDK

This repo contains an aggregator smart contract system that allows NFT sweepers to buy NFTs from multiple sources in a single transaction (LooksRare, Seaport, X2Y2, Sudoswap, etc).

About this repo

Structure

It is a hybrid Hardhat repo that also requires Foundry to run Solidity tests powered by the ds-test library.

To install Foundry, please follow the instructions here.

Deployments

Network LooksRareAggregator ERC20EnabledLooksRareAggregator LooksRareProxy LooksRareV2Proxy SeaportProxy
Ethereum 0x00000000005228B791a99a61f36A130d50600106 0x0000000000a35231D7706BD1eE827d43245655aB 0x0000000000DA151039Ed034d1C5BACb47C284Ed1 0x000000000074f2e99d7602fCA3cf0ffdCa906495 0x0000000000aD2C5a35209EeAb701B2CD49BA3A0D
Goerli 0x00000000005228B791a99a61f36A130d50600106 0x0000000000a35231D7706BD1eE827d43245655aB 0xd23F81a978E8F88F1c289C69D87fFC7D0b56b3c0 0x5AAf7A47A96f4695b4c5F4d4706C04ae606FA59f 0x0000000000aD2C5a35209EeAb701B2CD49BA3A0D

Architecture

ETH order ERC20 order

  • LooksRareAggregator is the entrypoint for a batch transaction with orders paid only in ETH. Clients should submit a list of trade data for different marketplaces to the aggregator.

  • ERC20EnabledLooksRareAggregator is the entrypoint for a batch transaction with orders paid in ERC20 tokens. Clients should submit a list of trade data for different marketplaces to the aggregator. The purpose of this aggregator is to prevent malicious proxies from stealing client funds since ERC20 approvals are not given to LooksRareAggregator.

  • The proxies folder contains the proxy contracts for each marketplace. All proxies should be named in the format of ${Marketplace}Proxy and inherit from the interface IProxy.

  • The libraries folder contains various structs and enums required. Objects that are specific to a marketplace should be put inside the ${marketplace} child folder.

  • In order to create more realistic tests, real listings from real collections are fetched from each marketplace.

  • Any contract that's prefixed with V0 will not go live. They come from our first iteration. We are only keeping them for now for reference.

Run tests

  • TypeScript tests are included in the typescript folder in the test folder at the root of the repo.
  • Solidity tests are included in the foundry folder in the test folder at the root of the repo.

In order to speed up build time without running into the notorious "stack too deep" issue, use the local Foundry profile to run the tests.

FOUNDRY_PROFILE=local forge test

Gas benchmark

forge test --match-contract GemSwapBenchmarkTest
forge test --match-contract LooksRareProxyBenchmarkTest
forge test --match-contract SeaportProxyBenchmarkTest

Static analysis

pip3 install slither-analyzer
pip3 install solc-select
solc-select install 0.8.17
solc-select use 0.8.17
slither --solc solc-0.8.17 .

Coverage

forge coverage --report lcov
LCOV_EXCLUDE=("test/*" "contracts/prototype/*")
echo $LCOV_EXCLUDE | xargs lcov --output-file lcov-filtered.info --remove lcov.info
genhtml lcov-filtered.info --output-directory out
open out/index.html

contracts-aggregator's People

Contributors

0xhiroshi avatar dependabot[bot] avatar 0xjurassicpunk avatar 0xshisui avatar

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.