Skip to main content


See source implementation here.

Establishing a collective hub within the realm of web3, our initiative serves as a centralized space for groups to unite around a shared goal, without the need for a multisig requirement and waiting for approvals. The primary objective is to empower individuals within a group to collectively maintain a unified on-chain identity while retaining the autonomy to take independent actions, without relying on multisig structures for decision-making.


Create a collective

public static async create(caller: ethers5.providers.Web3Provider, poolParam: createPoolsParam, salt : ethers.BigNumberish) {}


Join a collective

public static async join(caller: ethers5.providers.Web3Provider, cMetadata: CMetadata, JoinParam:JoinCollectiveParam) {}


Leave a collective

public static async leave(caller: ethers5.providers.Web3Provider, cMetadata: CMetadata) {}


Check if an address belongs to a collective

public static async isMember(caller: ethers5.providers.Web3Provider, cMetadata: CMetadata, member: string) {}

Refund deposit

How to refund your collective deposit


When minting through a collective, users have to deposit some funds to the collective address first. If the second minting transaction fails, there is a refund() function that can be called below to retrieve the lost funds that the user deposited to the collective.

public static async refund(caller: ethers5.providers.Web3Provider, cMetadata: CMetadata, recipient: string) {}