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.
The Party Protocol powers secure commercial transactions through crowdfunding, on-chain payments and transactions, and distributions to Party members.
For more information on Party Protocol, see the documentation here.
This is an open protocol, so if you are interested in contributing see here for more details about how you could get involved.
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
Below are the latest deployments of each contract of the Party Protocol. For addresses of previous releases, see here.
First, install Foundry.
forge install
yarn -D
yarn build
yarn build:ts
forge test -vv
# If you want gas reports:
forge test --gas-report -vv
forge test --mt testFork --fork-url $YOUR_RPC_URL -vv
forge test --fork-url $YOUR_RPC_URL -vv
The following auditors were engaged to review the protocol before launch:
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
orCollectionBuyCrowdfund
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. 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: [email protected].
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).