Overview
A Party is the core unit of the protocol and functions like a group Ethereum account. Each Party has members, an inventory, and governance capabilities that allow it to perform actions on-chain.
A Party's members hold membership NFTs, each of which has a specific amount of voting power associated with it. Party members can create and vote on proposals, which define possible actions for the Party to execute. If the Party was started via a crowdfund, contributors will have membership NFTs in the Party with voting power proportional to their crowdfund contribution.
Key Concepts
- Precious: A set of ERC-721 tokens custodied by the governance contract (
Party
), conventionally acquired in the crowdfund phase. These are protected assets and are subject to extra restrictions in proposals. - Party Cards: NFTs (ERC721) representing membership in a specific Party. Each Party Card has its own amount of voting power.
- Party: The core Party contract itself, which controls governance logic, custodies the Precious, tracks voting power, manages the lifecycle of proposals, and is simultaneously the token contract for Party Cards.
- Proposals: On-chain actions for the Party to execute, which must progress through the entire governance lifecycle in order to to be executed.
- Distributions: A mechanism by which Parties can make ETH and ERC-20 tokens available for members to claim, proportional to their relative voting power (Party Cards). The way a Party can create distributions depends on its specific
ProposalExecutionEngine
settings. - Party Hosts: Predefined accounts that can unilaterally veto proposals in the Party and configure Rage Quit. Conventionally defined when the Party is created.
- Globals: A single contract that holds configuration values, referenced by several ecosystem contracts.
- Proxies: All
Party
instances are deployed as simpleProxy
contracts that forward calls to aParty
implementation contract. - ProposalExecutionEngine: An upgradable contract the
Party
contract delegatecalls into that implements the logic for executing specific proposal types. - Rage Quit: A mechanism by which a Party member can burn their membership NFT in exchange for a portion of ETH and ERC-20 tokens in the Party. Must be enabled by a Party Host.
Contracts
The main contracts involved in this phase are:
PartyFactory
Creates new proxified Party
instances.
Party
The contract that also custodies the Party's assets. This is also the ERC-721 contract for the Party Cards.
ProposalExecutionEngine
An upgradable logic (and some state) contract for executing each proposal type from the context of the Party
.
TokenDistributor
Escrow contract for distributing deposited ETH and ERC20 tokens to members of parties.