• Stars
    star
    177
  • Rank 215,985 (Top 5 %)
  • Language
    Solidity
  • License
    GNU General Publi...
  • Created over 2 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

Party Protocol

Version License Test Docs Discussions Discord

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

Contract Ethereum Goerli
CrowdfundFactory 0x1cA200B6fa768d0CBe4b1C52B67dAEcad94838A6 0xa56b394E191dF03562d148216592d384F66bBa29
PartyFactory 0x1Ca2007D4F2BC0eC2A56ECB890e56e05f36182dF 0xD1bc5eED9a90911caa76A8EA1f11C4Ea012976FC
TokenDistributor 0x1CA2007a81F8A7491BB6E11D8e357FD810896454 0xE6F58B31344404E3479d81fB8f9dD592feB37965
AuctionCrowdfund 0xC45e57873C1a2366F44Cbe5851a376f0Ab9093DA 0xF620e947e5b664ee200996C7d74354BCfB39D1D9
RollingAuctionCrowdfund 0x0d212feaE711aE9a065649ca577b4d6F4d67A0C6 0x44D31e47F2287A791441b8F330E6F4237eFB2FAb
BuyCrowdfund 0x79EbABbF5afA3763B6259Cb0a7d7f72ab59A2c47 0xd380e07E277A03dfdB2E0fE44eaaA48621C588A0
CollectionBuyCrowdfund 0xe944ecd23Dd7839077e1Fe04872eF93BfDe58bB3 0xf175C25243E25b47E7a3Cdef52b923fc628828b6
CollectionBatchBuyCrowdfund 0x8e357490dC8E94E9594AE910BA261163631a6a3a 0xDe29e1A87f338B4B96c27Ca46195b5f9eda4a780
Party 0x52010E220E5C8eF2217D86cfA58da51Da39e8ec4 0xa3b4A7110b48FDFf1970D787D1cdCB9679176464
ProposalExecutionEngine 0x731Db043762729eA2dAe790a1C4a6AD78b86d67c 0xC0ECE4825578430C664B9ca6434857EeE055673a
CrowdfundNFTRenderer 0xf613b7202e627de4911e52c20b663a354db0dc3a 0x0bAE16929c02EF73EC2495B4cA7c2858d7E8D1FD
PartyNFTRenderer 0x1a9f341ba621d1b6143931d9946d5fbd994d1c85 0x5b0621B23CeEFCc4eF0FA4f52B6794f515E2954C
RendererStorage 0x9A4fe89316bf81a1e4549476b219c456703C3F62 0x35c3bD81F7b3E2ddCE70f2b9f2cA94aC9992EE23
AllowListGatekeeper 0x50c58f8bD97C1845C8E8ff56117DbCE8a5B009b2 0xADcec7b4Db7969DFf00b9e5304be8e0d1261d6B4
TokenGatekeeper 0x26A7bd6161e4C6aE44620CFC6f7b9C3Daf83AD0b 0xa6FbcE9898A34a1e6db5Dab699B20b6bfEfda8c3
Globals 0x1cA20040cE6aD406bC2A6c89976388829E7fbAde 0x753e22d4e112a4D8b07dF9C4C578b116E3B48792
FoundationMarketWrapper 0x96e5b0519983f2f984324b926e6d28C3A4Eb92A1 0xc1bb865106E3c86B1804FfAaC7795F82c93c8ceF
NounsMarketWrapper 0x9319DAd8736D752C5c72DB229f8e1b280DC80ab1 0x8633B1f69DA83067AB1Ec85a3411DE354fBF96cD
ZoraMarketWrapper 0x11c07cE1315a3b92C9755F90cDF40B04b88c5731 0x969Ee9Ea5cebc042b689bff8e5497F96808353AE

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:

  • 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. 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/ and tests/ remain unlicensed (as indicated in their SPDX header).