The public registry of verified groups used by Peer makers.
Groups are created and managed onchain. This repository adds the metadata that helps makers understand who operates a group, how membership is decided, and what they are opting into.
Published list:
https://zkp2p.github.io/groups-list/groups-list.json
Each group has its own source file:
groups/<curator-slug>/<group-slug>.json
The individual files are the source of truth. This lets different curators open PRs at the same time without editing one shared JSON file.
After changes reach main, GitHub Actions builds and publishes one aggregated
groups-list.json for applications to consume. Do not commit generated files.
A listed group has:
- A real group in the stated onchain registry.
- A curator address that matches the group's current onchain owner.
- Public, understandable membership criteria.
- Enough metadata for a maker to make an informed choice.
Listing is not an endorsement or a guarantee about every member. Group owners and resolvers can change membership over time. Makers should review the curator, criteria, and trust model before opting in.
The canonical identity of a group is:
(chainId, registryAddress, groupId)
Names and descriptions are metadata. They are not identifiers.
Anyone can create and operate a group in the permissionless
AddressGroupRegistry.
- Choose the wallet that will control the group. A Safe or other multisig is recommended for a production group.
- Call
createGroup(name)on the registry. - Wait for confirmation and record the
groupIdfrom theGroupCreatedevent. Do not predict the next ID fromgroupCount. - Manage membership with
addMembersandremoveMembers, or configure a resolver contract withsetResolver. - Publish clear membership criteria and keep the group operational.
- Submit the group to this repository once its onchain state can be verified.
Creating a group does not automatically add it to the verified list.
-
Fork this repository.
-
Copy
examples/group.example.json. -
Save it as:
groups/<curator-slug>/<group-slug>.json -
Replace every example value with the confirmed onchain and public metadata.
-
Run:
npm ci npm run check
-
Open a PR. Prefer one group per PR.
Do not edit groups-list.json or anything under dist/; the aggregate is
generated after merge.
Reviewers will confirm that:
- The group exists at the stated chain, registry, and ID.
curator.addressmatches the onchain group owner.- Any listed resolver matches the onchain resolver.
- The description and membership criteria are accurate and readable.
- The curator controls the linked accounts and resources where reasonably verifiable.
- The file path matches the curator and group slugs.
Materially misleading, abandoned, malicious, or unverifiable listings may be updated or removed.
{
"chainId": 8453,
"registryAddress": "0x1111111111111111111111111111111111111111",
"groupId": "0x0000000000000000000000000000000000000000000000000000000000000123",
"name": "Example Trusted Takers",
"slug": "trusted-takers",
"description": "Takers who meet the curator's published participation requirements.",
"curator": {
"address": "0x2222222222222222222222222222222222222222",
"name": "Example Curator",
"slug": "example-curator",
"links": {
"website": "https://example.com"
}
},
"membership": {
"description": "Membership is reviewed weekly against the published criteria.",
"criteriaURI": "https://example.com/group-criteria"
},
"tags": ["reputation"]
}See schema/group.schema.json for the complete format.
Requires Node.js 20 or newer.
npm ci
npm run validate
npm run buildnpm run validatechecks every group, example, file path, and duplicate identity.npm run buildproduces the public aggregate underdist/.npm run checkruns both.
schemaVersion describes the published data format:
- Major: breaking schema change.
- Minor: backward-compatible field addition.
- Patch: clarification or validation tightening.
Adding or updating a group does not require a schema version change.
The current schema version is 2.0.0. Version 2 uses canonical bytes32
group IDs encoded as 0x followed by 64 hexadecimal characters.
MIT