Skip to content

Latest commit

 

History

History
20 lines (13 loc) · 2.61 KB

README.md

File metadata and controls

20 lines (13 loc) · 2.61 KB

Seaport 1.6 Development Repo

Welcome to the home of Seaport 1.6 development. For the most part, it's safe to treat this repo like you'd treat Seaport. The documentation found there will substantialy serve for this repo.

Structure

The ./src directory is broken up into /core, /main, /sol, and /types, which closely correspond to the seaport-core, "main", seaport-sol, and seaport-types repos, respectively.

The remappings in the foundry.toml file are configured to use the same import style found in the production repos (e.g. from "seaport-types/src/..."), but instead of pointing to a dependency in ./lib, they point to some portion of ./src. The idea is to duplicate the experience of working in Seaport, but without the headache of keeping cross-repo changes synced. The tradeoff is that comile times will be longer, but the intial experience of working across multiple repos and fighting git submodules strongly suggested that this approach is preferable.

When 1.6 is ready, we'll create 1.6 branches on all of the seaport repos and move the changes over from this repo to those repos.

Differences between this repo and the production repos

  • This repo has the authorizeOrder interface added to zones.
  • This repo uses 0.8.21 instead of 0.8.17. Note that the decision on which compiler version to use, and whether to utilize the PUSH0 opcode, is still being debated.
  • Some files that appear in multiple repos, such as the Transfer Helper have been removed or modified to inherit from a single source of truth.
  • Some files were lightly jiggled around internally to avoid yul stack too deep errors during the optimized build.
  • The Hardhat tests are gone. If we need to add them back, we can.
  • Styling is now handled with forge fmt instead of prettier. The forge fmt bug affecting functions that return functions still exists, but it's possible to work around it, which this repo now does. It's recommended to handle the issue with // forgefmt: disable-start and // forgefmt: disable-end until the issue is fixed.