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?
This is my first contribution to NIP
https://github.com/nostr-protocol/nips/pull/755
Thanks nostr:npub1gcxzte5zlkncx26j68ez60fzkvtkm9e0vrwdcvsjakxf9mu9qewqlfnj5z and Brand Espinoza
CC nostr:npub19mduaf5569jx9xz555jcx3v06mvktvtpu0zgk47n4lcpjsz43zzqhj6vzk
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?
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.
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
https://github.com/xemuj/nips/blob/DigitalContracts/79.md
Please check the last version