jakerockland / party-protocol

Party Protocol is an open protocol for on-chain group coordination.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Party Protocol

Version License Test Docs Discussions Discord

Party Protocol

A protocol for group coordination. The Party Protocol provides on-chain functionality for group formation, coordination, and distribution, with the goal of making Ethereum multiplayer.

Table of Contents

Documentation

For more information on Party Protocol, see the documentation here.

Contributing

This is an open protocol, so if you are interested in contributing see here for more details about how you could get involved.

Layout

docs/ # Start here
├── overview.md
├── crowdfund.md
└── governance.md
contracts/
│   # Used during the crowdfund phase
├── crowdfund/
├── gatekeepers/
├── globals/
│   # Used during the governance phase
├── party/
├── proposals/
├── distribution/
|   # Used to render crowdfund and governance NFTs
└── renderers/
test/ # Foundry tests

Deployments

Below are the latest deployments of each contract of the Party Protocol. For addresses of previous releases, see here.

Contract Ethereum Goerli
Globals 0x1ca20040ce6ad406bc2a6c89976388829e7fbade 0x753e22d4e112a4d8b07df9c4c578b116e3b48792
TokenDistributor 0x49a3caab781f711ad74c9d2f34c3cbd835d6a608 0x8714EA9C2BC5a8f2d26D7c3F86558331c16145B5
ProposalExecutionEngine 0xaec4d40045daf91bc3049ea9136c7df04bd8a6af 0xfC49C3b69c6E1bE79B11A9a7D4791663f4B8b4D3
Party 0xb676cfeeed5c7b739452a502f1eff9ab684a56da 0x72a4b63eceA9465e3984CDEe1354b9CF9030c043
PartyFactory 0xc0e0ec5541e26e93d5a9f5e999ab2a0a7f8260ae 0x8d1C04E6873F232dB570F75948799128dB3Ae6f5
AuctionCrowdfund 0xcf8ab207e1b055871dfa9be2a0cf3acaf2d1b3a7 0x631D392073330f0573AD18Fc64305768657D0D60
RollingAuctionCrowdfund 0x1b5cb8bb71eda9059d39c98348095b008b67e734 0x989Fb364065a80d732837742f960924f343C6E04
BuyCrowdfund 0x104db1e49b87c80ec2e2e9716e83a304415c15ce 0x712Dca72Cc443A5f5e03A388b69ab09b4CDAC428
CollectionBuyCrowdfund 0x8ba53d174c540833d7f87e6ef97fc85d3d9291b4 0x884561d34e6B98a11DaF9Cc5d0d50cEFC664262F
CollectionBatchBuyCrowdfund 0x05daeace2257de1633cb809e2a23387a2742535c 0x9926816276CFE4E7c230E14d5a8808C9709Fa51a
CrowdfundFactory 0x2e8920950677f8545b4ef80315f48e161cb02d1c 0x37A711acc924AE303EFd07f4c94ABE7e8b1562be
CrowdfundNFTRenderer 0x0d05169e6e84bde47145b03ec2e6ba9af4d3cb7c 0x64014855f8bdC9f3f95235C7d4821fA124D0015b
AllowListGateKeeper 0x50c58f8bd97c1845c8e8ff56117dbce8a5b009b2 0xadcec7b4db7969dff00b9e5304be8e0d1261d6b4
TokenGateKeeper 0x26a7bd6161e4c6ae44620cfc6f7b9c3daf83ad0b 0xa6fbce9898a34a1e6db5dab699b20b6bfefda8c3
PartyNFTRenderer 0x19bcac3761df79c9b242ebe6670898da7d4bdcb3 0xc651c3e62Ae4072CDc1dA189f681a94B5b3E729A
MetadataRegistry 0x175487875f0318edbab54bba442ff53b36e96015 0x5976806Ae2F42e0c1fD23EAC20c49F1A63c73530
InitialETHCrowdfund 0x23c886396cfbadb0f3bac4b728150e8a59dc0e10 0xDB59b3AAFFb5569B39206308A3629A47e4C31C97
CollectionBatchBuyOperator 0xe06e71867bb25fe6b56b854500961d4d9dd7c12e 0x039d2e6AEf994445b00b6B55524bAcA0B0Be78DB

Install

First, install Foundry.

forge install
yarn -D
yarn build
yarn build:ts

Testing

Run tests (except fork tests):

forge test -vv
# If you want gas reports:
forge test --gas-report -vv

Run forked tests

forge test --mt testFork --fork-url $YOUR_RPC_URL -vv

Run all tests

forge test --fork-url $YOUR_RPC_URL -vv

Audits

The following auditors were engaged to review the protocol before launch:

  • Code4rena (report here)
  • Macro (report here)

Bug Bounty

All contracts except tests, interfaces, dependencies, and those in renderers/ are in scope and eligible for the Party Protocol Bug Bounty program.

The following are known and are not eligible for a bug bounty:

  • Crowdfund host uses their crowdfund's balance to buy their own NFT
  • Forcing a BuyCrowdfund or CollectionBuyCrowdfund to use its entire balance to acquire an NFT above its listed price
  • Free or gifted NFTs being locked in a crowdfund after the crowdfund lost

The rubric we use to determine bug bounties is as follows:

Level Example Maximum Bug Bounty
6. Critical - Draining or freezing of holdings protocol-wide (e.g. draining token distributor, economic attacks, reentrancy, MEV, logic errors) Let's talk
5. Severe - Contracts with balances can be exploited to steal holdings under specific conditions (e.g. bypass guardrails to transfer precious NFT from parties, user can steal their party's distribution) Up to 25 ETH
4. High - Contracts temporarily unable to transfer holdings
- Users spoof each other
Up to 10 ETH
3. Medium - Contract consumes unbounded gas
- Griefing, denial of service (i.e. attacker spends as much in gas as damage to the contract)
Up to 5 ETH
2. Low - Contract fails to behave as expected, but doesn't lose value Up to 1 ETH
1. None - Best practices

Any vulnerability or bug discovered must be reported only to the following email: security@partydao.org.

License

The primary license for the Party Protocol is the GNU General Public License 3.0 (GPL-3.0), see LICENSE.

  • Several interface/dependencies files from other sources maintain their original license (as indicated in their SPDX header).
  • All files in test/ remain unlicensed (as indicated in their SPDX header).

About

Party Protocol is an open protocol for on-chain group coordination.

License:GNU General Public License v3.0


Languages

Language:Solidity 99.5%Language:TypeScript 0.5%