Party Protocol
A protocol for group coordination. Party Protocol provides on-chain functionality for group formation, coordination, and distribution. Currently focused on making NFTs 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 contributioning 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/
sol-tests/ # Foundry tests
tests/ # TS tests
Deployments
Install
First install Foundry.
forge install
yarn -D
yarn build
Testing
Run all tests (except fork tests):
yarn test
Run only TypeScript tests
yarn test:ts
Run only Foundry tests
yarn test:sol
# If you want gas reports:
yarn test:sol --gas-report
Run Foundry forked tests
forge test -m testFork --fork-url $YOUR_RPC_URL
Audits
The following auditors were engaged to review the protocol before launch:
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
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. Severe | - Draining or freezing of holdings protocol-wide (e.g. draining token distributor, economic attacks, reentrancy, MEV, logic errors) | Let's talk |
5. Critical | - 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: [email protected].
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
sol-tests/
andtests/
remain unlicensed (as indicated in their SPDX header).