Bit of a technical question: are parties (and/or witnesses) limited to just three? Or is it an extensible list?

Also, what is the rationale behind specifying upfront the types of contract that are allowed?

Reply to this note

Please Login to reply.

Discussion

No, is an array of parties the witnesses are optionals

Regarding the rationale behind specifying the types of contracts upfront:

Standardization: By defining types, you create a standardized way to categorize and interpret contracts within the Nostr protocol. This can make it easier for applications built on top of Nostr to understand and process different contract types.

Clarity: Specifying types can provide clarity to the parties involved. Knowing whether an agreement is a legally binding "Contract" versus a less formal "Agreement" or a specific "Covenant" can set clear expectations for all parties.

Filtering & Searching: If there are many contracts within the Nostr network, having predefined types can make filtering and searching more efficient. Users or applications can quickly find all "Covenants" or all "Agreements" without having to parse the content of every contract.

Extensibility: While the initial types are predefined, the system can be designed to be extensible, allowing for the addition of new types in the future as the needs of the community evolve.

However, there are also arguments against specifying types upfront:

Flexibility: Restricting to predefined types might limit the flexibility of the system. Some contracts might not fit neatly into one of the predefined categories.

Overhead: Introducing types adds an additional layer of complexity to the system. Every contract will need to be categorized, and disputes might arise over which category is appropriate.

Evolution: As the protocol and its use cases evolve, the initially defined types might become obsolete or insufficient, requiring updates or revisions to the NIP.

In the end, the decision to specify contract types upfront depends on the goals of the Nostr protocol and the needs of its user community. If the aim is to keep things simple and flexible, it might be better to avoid predefined types. If the goal is to provide structure and standardization, then defining types can be beneficial.

Maybe the problem of evolution could be solved via adding a 'Basic' agreement type, kind of a catch-all?

Why not use labels (nip-32) for the type value? That would give you the ability to be more specific (with ontologies etc) but also remain more flexible going forward.

Overall I like the nip. I’ll try and add this label question directly to the nip shortly as well.

Interesting! What do you think about this label structure?

```

["L", "tipopakto"]

["l", "Contract", "tipopakto"]

["l", "Agreement", "tipopakto"]

["l", "Covenant", "tipopakto"]

```

I've chosen to use "tipopakto" as a namespace, which translates from Esperanto to "type of pact." I find using Esperanto for primary namespaces to be more neutral, given its universal and non-nationalistic nature.

Mi amas vin.

Small correction, *pact type* in Esperanto would be *pakttipo* or *paktotipo.*

Tipopakto would mean pact of types.

Yeah. I guess that works. You can suggest that label but I guess it’s really up to the dev building whatever use case to decide.

Mais l''esperanto même s'il existe depuis longtemps n'a pas beaucoup d'adeptes , les seules fois où j'ai rencontré des gens qui l'utilisent et le maîtrisent c'est au niveau de personnes sur j'accompagne qui ont un handicap de type du syndrome Asperger une population très surprenante à côtoyer ...très enrichissant

Kio estas via celo?

Il y a en effet un nombre étonnant d'autistes dans la communauté d'espérantophones et un grand nombre d'entre eux est affligé de perversions sexuelles.