Skip to content

What's a "network" in nucypher? #1564

@cygnusv

Description

@cygnusv

What are we talking about when we say "NuCypher network"? Is it a network, in the communications sense (i.e., a P2P network of Ursula nodes that run the Discovery Loop)? Or is it a set of entities that interact with each other according to the rules established by a set of smart contracts? Is it perhaps both? What's the difference between them? Should there be a 1:1 mapping between them? Is a testnet part of "NuCypher network" or is it a separate "network"? What if we have several testnets?

This type of questions are not being currently answered in our codebase.

We need to clarify and unify our naming scheme regarding both the "smart contract"-level and discovery-level "domains" or "networks", because they're not well-defined and interlinked.

Anyway, here's a more complete description of my thoughts on the matter, in the form of questions:

First (and somewhat silly) question: What's the name for the set of smart contracts governing the on-chain behavior of NuCypher entities? If one sees our set of smart contracts as a body of law (continuing the "contract" metaphor), then each deployment of this set of contracts can be thought as a "constitution" (like the US or Spanish Constitution). In the same way as real-life constitutions, they can be superseded by new ones, potentially establishing a whole new regulatory framework, independent from the previous one. I'm sure there are better names for that, but ... there's that.

Second question: How should "constitutions" and learning domains be interrelated? My current understanding is that there should be a 1:1 mapping between them; otherwise, those Ursulas would be talking about different things (e.g., a Staker from one constitution may not be staking in another).

Third question: This one is more philosophical. How does this relate to the "NuCypher network" concept? The way I see it "NuCypher network" is actually a loose grouping of constitutions/networks, tied by the use of the same software.

Bonus question: How does all of this relate to the Ethereum network (e.g., mainnet, goerli, etc.) we use to run our networks ? So far, we've "goerli" hardcoded as our learning domain, and also as the name of our current registry's folder in the repo.

Super-bonus question: How does this affect our problem with federated mode (#466)?

Metadata

Metadata

Labels

Naming stuffThe hardest part about code authorshipScopingClosed by decision making, not codequestionThis is a question

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions