From 48d4c46222a9192be67fcb711bb62724ba2c7b73 Mon Sep 17 00:00:00 2001 From: Chris Hager Date: Tue, 31 Oct 2023 13:16:35 +0100 Subject: [PATCH] check for broken links (#25) * check for broken links * cleanup * finetune ci output * specs update * fixes --- .../workflows/broken-link-check-cron.yml.txt | 16 ------ .github/workflows/pr-tests.yml | 53 ++++++++++++++----- docs/how-to/run-suave.mdx | 8 ++- docs/novel-use-cases.mdx | 10 ++-- docs/technical | 2 +- docs/understand/index.mdx | 6 +-- docs/what-is-suave.mdx | 6 +-- 7 files changed, 55 insertions(+), 46 deletions(-) delete mode 100644 .github/workflows/broken-link-check-cron.yml.txt diff --git a/.github/workflows/broken-link-check-cron.yml.txt b/.github/workflows/broken-link-check-cron.yml.txt deleted file mode 100644 index e1b833e5..00000000 --- a/.github/workflows/broken-link-check-cron.yml.txt +++ /dev/null @@ -1,16 +0,0 @@ -name: Check for broken links (cron) - -on: - workflow_dispatch: - schedule: - - cron: '0 10 * * *' - -jobs: - check-for-broken-links: - runs-on: ubuntu-latest - steps: - - uses: actions/setup-node@v1 - with: - node-version: '16.x' - - run: npm install -g linkinator - - run: linkinator https://docs.flashbots.net --recurse --timeout 3000 --concurrency 10 --retry -s https://dune.com/ChainsightAnalytics,'https://.*etherscan.io/tx.*','https://twitter.com.*','https://.*imgur.com.*' diff --git a/.github/workflows/pr-tests.yml b/.github/workflows/pr-tests.yml index e0a7dc7e..06e84c2e 100644 --- a/.github/workflows/pr-tests.yml +++ b/.github/workflows/pr-tests.yml @@ -11,23 +11,50 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: token: ${{ secrets.SPECS_TOKEN }} submodules: recursive - - uses: actions/setup-node@v1 + - name: Set up Go + uses: actions/setup-go@v3 with: - node-version: '16.x' - - name: Test build + go-version: ^1.21 + + - uses: actions/setup-node@v3 + with: + node-version: '20.x' + cache: 'yarn' + + - name: Installing dependencies + run: yarn install --frozen-lockfile + + - name: Building the docs env: - TARGET_URL: "https://docs.flashbots.net" - BASE_URL: "/" + TARGET_URL: "http://localhost:3000" + BASE_URL: "/docs/" + run: yarn build + + - name: Check for broken links + env: + TARGET_URL: "http://localhost:3000" + BASE_URL: "/docs/" run: | - yarn install --frozen-lockfile - yarn build - # - name: Check for broken links - # run: | - # cd build - # npm install -g linkinator - # linkinator "**/*.html" --recurse --timeout 3000 --concurrency 10 --retry -s https://dune.com/ChainsightAnalytics,'https://.*etherscan.io/.*','https://twitter.com.*','https://.*imgur.com.*' + go install github.com/raviqqe/muffet/v2@latest + + yarn serve & + sleep 5 + + echo "Checking for broken links..." + muffet --version + muffet http://localhost:3000/docs/ \ + --ignore-fragments \ + --skip-tls-verification \ + --exclude="notion[.]so" \ + -e "github[.]com/flashbots/suave-specs" \ + -e "github[.]com/flashbots/suave-bridge" \ + -e "algolia[.]net" \ + -e "arxiv[.]org" \ + -e "docs[.]google[.]com/presentation/d/19km1xqXrp6HClAOmyUwtq7lADM7BEUsPbTUE7zCwhCw" \ + -e "pathoram[.]jimdofree[.]com/files/" \ + -e "flashbots[.]notion[.]site" diff --git a/docs/how-to/run-suave.mdx b/docs/how-to/run-suave.mdx index 28fe6e1d..683c5306 100644 --- a/docs/how-to/run-suave.mdx +++ b/docs/how-to/run-suave.mdx @@ -36,7 +36,7 @@ cd suave-geth/ ``` 3. Run SUAVE: ```bash -make devnet-up +make devnet-up ```
@@ -80,8 +80,6 @@ Step 3: Send backrun If you'd like to examine the Go code responsible for deploying contracts and sending transactions, you can do so [here](https://github.com/flashbots/suave-geth/blob/main/suave/devenv/cmd/main.go). -You can also navigate to [http://localhost:8080](http://localhost:8080) in your browser to see a local block explorer. - 5. You can stop your docker containers with: ```bash make devnet-down @@ -173,7 +171,7 @@ make suave ``` 2. Run this command: ```bash -./build/bin/suave --suave.dev +./build/bin/suave --suave.dev ``` ### What to do next @@ -194,7 +192,7 @@ You can also run any familiar Geth command you like. Start by generating a new a If the `--datadir` flag is not set, a geth client stores data in the `$HOME/.ethereum` directory. Depending on the chain you use, it creates a subdirectory. For example, if you run Sepolia, geth creates `$HOME/.ethereum/sepolia/`. So, if you use the `--suave` flag, your data ends up in `$HOME/.ethereum/suave/...`. -#### Using the console +#### Using the console You can attach to the usual Geth javascript console to get any interactive data you need with: diff --git a/docs/novel-use-cases.mdx b/docs/novel-use-cases.mdx index 4b3f5d3f..c51941f3 100644 --- a/docs/novel-use-cases.mdx +++ b/docs/novel-use-cases.mdx @@ -22,7 +22,7 @@ The [SUAVE core team ideas are here](https://www.notion.so/flashbots/Hackathon-I Our research team suggests that [interoperability with web2 services may be one key](https://www.notion.so/flashbots/Concrete-Ideas-On-Novel-SUAPPs-b6857caf58b94eaebf1852317594a219) to novel SUAPP design, given that these use cases have a big total addressable market (TAM), and no cold-start problem. -They suggest thinking about [anti-mechanisms](https://www.youtube.com/watch?v=5v_wBkrIJhs) for web2 services as a fun, productive use of DarkDAOs. That is, instead of building collusion rings to buy votes, we can build collusion rings to allow permissionless interaction with web2. +They suggest thinking about [anti-mechanisms](https://www.youtube.com/watch?v=5v_wBkrIJhs) for web2 services as a fun, productive use of DarkDAOs. That is, instead of building collusion rings to buy votes, we can build collusion rings to allow permissionless interaction with web2. ## Start here @@ -32,7 +32,7 @@ Ticketmasters sell things like Taylor Swift concert tickets. Currently, their UX An application for this would be similar to ad auctions, but the latency requirements are not as brutal, and can be relaxed to perhaps even a few minutes. -Frens from Pantera built an example [here](https://github.com/lstephanian/SUIFT). The basic idea: +The basic idea: 1. Deploy NFT contract on ETH L1. Accepts face value of tickets in ETH. 2. Once I have sent face value of ticket to NFT contract, I send my real, confidential bid to the Bid contract on SUAVE. This is just a number. @@ -44,7 +44,7 @@ Frens from Pantera built an example [here](https://github.com/lstephanian/SUIFT) 1. Deadman switch. A contract that posts a message on the L1 if it doesn’t get (stealth) heartbeats. 2. Liquidations based on sensitive information, like ZK Collateral. Check someone’s ZK Credential of some kind (twitter account, etc.) and keep it in SUAVE [Confidential Data Storage](/technical/specs/rigil/confidential-data-store). Let other people bid on revealing it, or reveal it in case of undercollateralization. - 1. Not directly related, but revealing information in the case of "bad behaviour" has wide applicability, the most interesting of which is likely [Rate Limiting Nullifiers](https://vac.dev/publications), which could be useful for the SUAVE chain design itself. + 1. Not directly related, but revealing information in the case of "bad behaviour" has wide applicability, the most interesting of which is likely [Rate Limiting Nullifiers](https://vac.dev/publications), which could be useful for the SUAVE chain design itself. 3. Bribe Twitter accounts to post certain tweets in certain time periods. Check results and post to chain with an oracle. Hide what the content the account was bribed to say was using [Confidential Data Storage](/technical/specs/rigil/confidential-data-store). @@ -62,7 +62,7 @@ This likely entails a simple builder solidity contract, with working Forge and V We take inspiration from [Filecoin actors](https://docs.filecoin.io/basics/the-blockchain/actors/) and may wish to replicate something like this to make DevEx a breeze. -### Generalized intents +### Generalized intents Deploy [this](https://blog.essential.builders/introducing-erc-7521-generalized-intents/) to SUAVE. Do something intense with it. @@ -76,7 +76,7 @@ Inspired by [Andrew's shitposts](https://flashbots.notion.site/flashbots/SuApp-s 1. We know that UniswapV2 and Compound are interesting when they’re ported to TEE beacuse of how Sienna Swap and [Sienna Lend on secret network](https://sienna.network/lend/) are cool. [FuturesMEX](https://securitylab.disi.unitn.it/lib/exe/fetch.php?media=sp18.pdf) is quite similar to this too. 2. Write path ORAM in [builder solidity](/builder-solidity). It should be [easy](https://pathoram.jimdofree.com/files/) -3. Steal any and all ideas from contestants in [Oasis](https://oasisprotocol.org/p4w3-hackathon) and [Phala](https://github.com/Phala-Network/amsterDOT-2022) hackathons. +3. Steal any and all ideas from contestants in [Oasis](https://oasisprotocol.org/p4w3-hackathon) and [Phala](https://github.com/Phala-Network/amsterDOT-2022) hackathons. ### Telegram bot diff --git a/docs/technical b/docs/technical index c63ddf59..668f4d22 160000 --- a/docs/technical +++ b/docs/technical @@ -1 +1 @@ -Subproject commit c63ddf59a22af6dfaed7042346101f30c633b75b +Subproject commit 668f4d22d7078ed5b2f01146e6ddd3008ed93450 diff --git a/docs/understand/index.mdx b/docs/understand/index.mdx index 149334d8..12ce5a25 100644 --- a/docs/understand/index.mdx +++ b/docs/understand/index.mdx @@ -25,9 +25,9 @@ We seek to understand MEV from first principles and so we will assess the above ## Goals -This section of our documentation is _discussion-oriented_. It is intended for all of you who feel like you really should read all those [academic papers](https://arxiv.org/pdf/1904.05234.pdf) on [arXiv](https://arxiv.org/pdf/2109.04347.pdf), and have them open somewhere in your tabs, but somehow never seem to get to them. +This section of our documentation is _discussion-oriented_. It is intended for all of you who feel like you really should read all those [academic papers](https://arxiv.org/abs/1904.05234) on [arXiv](https://arxiv.org/abs/2109.04347), and have them open somewhere in your tabs, but somehow never seem to get to them. -We want to study MEV from first principles, but with less proofs and more relatable language. This means that what we say here will be more contentious than our research papers, precisely because it is intended to get you thinking and discussing the ideas _with other people_. +We want to study MEV from first principles, but with less proofs and more relatable language. This means that what we say here will be more contentious than our research papers, precisely because it is intended to get you thinking and discussing the ideas _with other people_. > This section does not present answers, or the "right" way of thinking about MEV. It presents interesting and different ways to think about what MEV really is and why it matters. @@ -35,7 +35,7 @@ For instance, MEV can also be characterised as a phenomenon that occurs if there ## SUAVE specifics -SUAVE is specifically intended to create an open marketplace for mechanisms. +SUAVE is specifically intended to create an open marketplace for mechanisms. Well designed mechanisms for the exchange of information can help ensure that rational actors profit more, aligning our incentives around shared ownership rather than private economies of scale. diff --git a/docs/what-is-suave.mdx b/docs/what-is-suave.mdx index c0c9efd7..f6f1740b 100644 --- a/docs/what-is-suave.mdx +++ b/docs/what-is-suave.mdx @@ -12,13 +12,13 @@ keywords: # What is SUAVE? -SUAVE - the *Single Unifying Auction for Value Expression* - is a platform for building better mechanisms (such as OFAs and block builders) in a decentralized and private way. +SUAVE - the *Single Unifying Auction for Value Expression* - is a platform for building better mechanisms (such as OFAs and block builders) in a decentralized and private way. SUAVE does not replace other blockchains: it is intended to aggregate and coordinate all the things that ultimately change the state of other chains. ## Unified, decentralized -After [formalizing the threat posed by MEV](https://arxiv.org/pdf/1904.05234.pdf), and creating [MEV-Geth](https://github.com/flashbots/mev-geth) to begin addressing it, [Flashbots](https://medium.com/flashbots/frontrunning-the-mev-crisis-40629a613752) has collaborated with many people and organizations to build neutral, open-source software like [MEV-Boost](https://github.com/flashbots/mev-boost) and protocols like [MEV-Share](https://github.com/flashbots/MEV-Share). Our work has prevented the worst effects of MEV, though many problems remain. +After [formalizing the threat posed by MEV](https://arxiv.org/abs/1904.05234), and creating [MEV-Geth](https://github.com/flashbots/mev-geth) to begin addressing it, [Flashbots](https://medium.com/flashbots/frontrunning-the-mev-crisis-40629a613752) has collaborated with many people and organizations to build neutral, open-source software like [MEV-Boost](https://github.com/flashbots/mev-boost) and protocols like [MEV-Share](https://github.com/flashbots/MEV-Share). Our work has prevented the worst effects of MEV, though many problems remain. SUAVE is our means of _keeping block building decentralized_ by creating an _open marketplace for mechanisms_, which we call "SUAPPs". A SUAPP is an application deployed on SUAVE which requires one (or many) of the following: @@ -28,7 +28,7 @@ SUAVE is our means of _keeping block building decentralized_ by creating an _ope 4. **commitments** of various kinds, e.g., shared sequencers for rollups, new kinds of DEXes and bridges 5. **too much gas to do on-chain** because of how much compute they use. -Any SUAPP that strikes a meaningful balance between revenue optimality and efficiency will have broad application. SUAVE is a blockchain for many such applications and so exhibits second-order effects. For instance, keeping block building decentralized by creating an open marketplace for mechanisms could result in SUAVE being an effective, unified sequencing layer for other blockchains. +Any SUAPP that strikes a meaningful balance between revenue optimality and efficiency will have broad application. SUAVE is a blockchain for many such applications and so exhibits second-order effects. For instance, keeping block building decentralized by creating an open marketplace for mechanisms could result in SUAVE being an effective, unified sequencing layer for other blockchains. We expect that SUAVE will find increasingly wider application as more people build better mechanisms with it.