---
# System prepended metadata

title: Membership by invitation

---

# Membership by invitation

This zome will use the Progenitor pattern, with a configurable property "progenitor_addresses". `validate_agent` will only return true if the agent provides a proof signed by one of the progenitors of the DNA in the form of: 

```rust
struct Certificate {
  progenitor_address: Address,
  dna_address: Address,
  agent_address: Address
}
```

that meets this conditions:
- Is signed by the progenitor_address
- The progenitor_address is included in the "progenitor_addresses" property
- The agent being validated is the one included in agent_address
- The dna_address matches the DNA_ADDRESS


This certificate will need to be generated outside this DNA, maybe with some kind of lobby DNA of the sorts.