Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 46 additions & 35 deletions AGENTS.md

Large diffs are not rendered by default.

75 changes: 37 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Boardwalk Launchpad

Permissionless token launch protocol with embedded transfer tax, time-weighted presale, permanently burned liquidity, LP staking, community ranking, and (on Arbitrum) onchain governance over protocol revenue.
Permissionless token launch protocol with embedded transfer tax, time-weighted presale, permanently burned liquidity, LP staking, community ranking, and (on Ethereum) onchain governance over protocol revenue.

Deployed across Ethereum, Base, Arbitrum, Ink, Katana, and Fraxtal. The protocol token is BWS (fixed 3.15M supply), which replaced BMX via a 1:1 migration; governance and the revenue hub moved from Base to Arbitrum with it. Membership NFTs bridge between chains via Chainlink CCIP, and source-chain protocol revenue is consolidated to the hub.
Deployed on Ethereum, Base, Arbitrum, and Robinhood Chain, with canonical Uniswap V2 as the underlying DEX on every chain. The protocol token is BWLK (fixed 3.15M supply), which replaces BMX via a 1:1 migration; Ethereum mainnet is its economic home. Membership NFTs bridge between chains via Chainlink CCIP, and source-chain protocol revenue is consolidated to Ethereum.

See [SPEC.md](SPEC.md) for the full spec, including the *BWS token and migration* section.
See [SPEC.md](SPEC.md) for the full spec.

## Architecture

Expand All @@ -18,10 +18,10 @@ graph LR
LPM[BoardwalkLPManager]
FC[BoardwalkFeeCollector]
BB[BoostBurn]
DEX[DEX Factory + Router]
DEX[Uniswap V2 Factory + Router]
end

subgraph GOVERNANCE [Arbitrum-only]
subgraph GOVERNANCE [Ethereum-only]
direction TB
GV[GovernanceVoter]
LPL[LPLocker]
Expand All @@ -46,8 +46,8 @@ graph LR
TK -. tax callback .-> FD
FD -. LP fees .-> LS
FD -. protocol fees .-> FC
FC -. 30% treasury .-> TR[Treasury]
FC -. 70% governance .-> GV
FC -. 10% treasury .-> TR[Treasury]
FC -. 90% governance .-> GV
PM -. seeds liquidity .-> DEX
LPM -. tax-free LP ops .-> DEX
```
Expand All @@ -68,29 +68,28 @@ src/
LPStaking.sol staking with vesting + fee epochs + MP
VestingStream.sol linear vesting with 7-day cliff
BoardwalkLPManager.sol tax-exempt LP wrapper (RAISE_TOKEN pairs only)
BoardwalkFeeCollector.sol protocol fee aggregation + 30/70 governance split
BoardwalkFeeCollector.sol protocol fee aggregation + 10/90 governance split
IntegratorFeeCollector.sol per-chain protocol singleton with frozen integrator slots, 25%/24h rate-limited claims
BoostBurn.sol community token ranking via BWS burn
token/ BWS + the BMX→BWS migration (Arbitrum only)
BWS.sol fixed-supply protocol token, no minter/owner
BwsMigration.sol 1:1 migration: burns BMX, stakes BWS, credits voter points
UnsoldBurner.sol CCA launch unsold-token sink; BWS only ever moves to dead
governance/ Arbitrum only
BoostBurn.sol community token ranking via protocol-token burn
token/ BWLK + the BMX→BWLK migration (Ethereum mainnet)
BWLK.sol fixed-supply protocol token, no minter/owner
BwlkMigration.sol 1:1 migration: burns BMX, stakes BWLK, credits voter points
UnsoldBurner.sol CCA launch unsold-token sink; BWLK only ever moves to dead
governance/ Ethereum only
GovernanceVoter.sol weekly voting + execution + vault
LPLocker.sol permanent Uniswap v4 LP lock with fee harvest
ParticipationDistributor.sol 7-day BWS streaming for Option 4
ParticipationDistributor.sol 7-day BWLK streaming for Option 4
nft/ cross-chain membership NFT (Chainlink CCIP bridge)
BoardwalkClub.sol (deprecated) soulbound membership NFT; superseded by BoardwalkClubMirror
BoardwalkClubBridgeBase.sol shared CCIP send/receive plumbing
BoardwalkClubLockbox.sol Base side: lock/release of the original collection
BoardwalkClubMirror.sol spoke side: burn/mint transferable mirror
crosschain/ weekly consolidation of source-chain revenue to the hub
RevenueBridger.sol source lanes: forward revenue to the hub via LiFi (Across/Symbiosis/Glacis)
BaseRevenueSwapper.sol hub: swap delivered tokens to WETH, forward to the FeeCollector
crosschain/ weekly consolidation of source-chain revenue to Ethereum
RevenueBridger.sol source lanes (Base/Arbitrum/Robinhood): forward revenue via LiFi (pure Across V4)
EthereumRevenueSwapper.sol hub: swap delivered tokens to WETH, forward to the FeeCollector
interfaces/ cross-contract interfaces
dex/ forked Uniswap V2 (0.1% pair fee)
test/ unit, fuzz, invariant, fork
script/ deployment scripts (script/bws/ = the Arbitrum BWS deployment + CCA launch)
script/ deployment scripts (script/bwlk/ = the Ethereum BWLK deployment + CCA launch)
snapshot/ off-chain merkle pipeline for the migration's voter-point snapshot (TS)
```

Expand All @@ -99,39 +98,39 @@ snapshot/ off-chain merkle pipeline for the migration's voter
```bash
forge build
forge test
forge coverage --ir-minimum --skip "*/dex/*" --skip "script/*" --report summary
forge fmt src/base/ src/core/ src/interfaces/ src/governance/ src/nft/ src/crosschain/
forge lint src/base/ src/core/ src/interfaces/ src/governance/ src/nft/ src/crosschain/
forge coverage --ir-minimum --skip "script/*" --report summary
forge fmt src/base/ src/core/ src/interfaces/ src/governance/ src/nft/ src/crosschain/ src/token/
forge lint src/base/ src/core/ src/interfaces/ src/governance/ src/nft/ src/crosschain/ src/token/
```

## Deployment

The underlying DEX is the canonical Uniswap V2 deployment on each chain ([script/DexConfig.sol](script/DexConfig.sol)); nothing DEX-side is deployed by Boardwalk.

```bash
forge script script/01_DeployDEX.s.sol --rpc-url $RPC_URL --broadcast
forge script script/02_DeployFactory.s.sol --rpc-url $RPC_URL --broadcast
forge script script/03_DeployGovernance.s.sol --rpc-url $RPC_URL --broadcast # legacy Base governance; Arbitrum uses script/bws/02
forge script script/04_DeployNFTBridge.s.sol --rpc-url $RPC_URL --broadcast # Base lockbox + spoke mirrors
forge script script/05_WireLockboxPeers.s.sol --rpc-url $RPC_URL --broadcast # one-shot CCIP peer wiring
forge script script/06_DeployRevenueBridging.s.sol --rpc-url $RPC_URL --broadcast # hub swapper first, then each lane
forge script script/04_DeployNFTBridge.s.sol --rpc-url $RPC_URL --broadcast # mirror on a new spoke first (lockbox already live on Base)
forge script script/02_DeployFactory.s.sol --rpc-url $RPC_URL --broadcast # full per-chain launchpad stack (NFT_COLLECTION required: SeaDrop on Base, the mirror on spokes)
forge script script/05_AddLockboxPeer.s.sol --rpc-url $BASE_RPC --broadcast # wire the new spoke: SET_PEER signal, then execute after 7d
forge script script/06_DeployRevenueBridging.s.sol --rpc-url $RPC_URL --broadcast # Ethereum swapper first, then each source lane
```

BWS migration (Arbitrum, in this order; script `06` prints the post-launch steps — migrate, hook commit, position registration, unsold burn):
BWLK deployment (Ethereum mainnet, in this order; script `06` prints the post-launch steps — migrate, hook commit, position registration, unsold burn):

```bash
forge script script/bws/01_DeployBWS.s.sol --rpc-url $ARB_RPC --broadcast # token + genesis buckets
forge script script/bws/02_DeployBwsGovernance.s.sol --rpc-url $ARB_RPC --broadcast # voter + locker + distributor
forge script script/bws/05_DeployUnsoldBurner.s.sol --rpc-url $ARB_RPC --broadcast # before the CCA launch
forge script script/bws/06_LaunchBwsCca.s.sol --rpc-url $ARB_RPC --broadcast # the CCA launch (LiquidityLauncher, never the raw factory)
forge script script/bws/03_DeployBwsMigration.s.sol --rpc-url $ARB_RPC --broadcast # root before funding
forge script script/bws/04_AssertBwsDeploy.s.sol --rpc-url $ARB_RPC # go-live gate, reverts on any mis-wiring
forge script script/bwlk/01_DeployBWLK.s.sol --rpc-url $ETH_RPC --broadcast # token + genesis buckets
forge script script/bwlk/02_DeployBwlkGovernance.s.sol --rpc-url $ETH_RPC --broadcast # voter + locker + distributor
forge script script/bwlk/05_DeployUnsoldBurner.s.sol --rpc-url $ETH_RPC --broadcast # before the CCA launch
forge script script/bwlk/06_LaunchBwlkCca.s.sol --rpc-url $ETH_RPC --broadcast # the CCA launch (LiquidityLauncher, never the raw factory)
forge script script/bwlk/03_DeployBwlkMigration.s.sol --rpc-url $ETH_RPC --broadcast # root before funding
forge script script/bwlk/04_AssertBwlkDeploy.s.sol --rpc-url $ETH_RPC # go-live gate, reverts on any mis-wiring
```

The migration's merkle root comes from the `snapshot/` pipeline (`npm run snapshot && npm run validate`).

## Audits

Reports land in `./audits/` once available.
Reports are in `./audits/`.

## License

[BUSL-1.1](LICENSE), converts to MIT on 2030-02-13. The `src/dex/` fork retains its upstream license.
[BUSL-1.1](LICENSE), converts to MIT on 2030-02-13.
Loading