# 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.