Skip to content

Commit

Permalink
check for broken links (#25)
Browse files Browse the repository at this point in the history
* check for broken links

* cleanup

* finetune ci output

* specs update

* fixes
  • Loading branch information
metachris authored Oct 31, 2023
1 parent 3964663 commit 48d4c46
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 46 deletions.
16 changes: 0 additions & 16 deletions .github/workflows/broken-link-check-cron.yml.txt

This file was deleted.

53 changes: 40 additions & 13 deletions .github/workflows/pr-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
8 changes: 3 additions & 5 deletions docs/how-to/run-suave.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ cd suave-geth/
```
3. Run SUAVE:
```bash
make devnet-up
make devnet-up
```

<details>
Expand Down Expand 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
Expand Down Expand Up @@ -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
Expand All @@ -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:

Expand Down
10 changes: 5 additions & 5 deletions docs/novel-use-cases.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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.
Expand All @@ -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).

Expand All @@ -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.

Expand All @@ -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

Expand Down
6 changes: 3 additions & 3 deletions docs/understand/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,17 @@ 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.
For instance, MEV can also be characterised as a phenomenon that occurs if there is an ["overlap in user preferences"](https://www.youtube.com/watch?v=l_gkFntA1cA&t=1126) and some actor responsible for allocating resources to those overlapping preferences. This lens may lead us to more specific behavioural economic models than the framework described above, and we welcome any explorations in that direction. You will likely end up investigating [how power functions](/understand/power) in either case, but the different trail you blaze to get there will be valuable to us all.

## 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.

Expand Down
6 changes: 3 additions & 3 deletions docs/what-is-suave.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand All @@ -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.

Expand Down

0 comments on commit 48d4c46

Please sign in to comment.