Skip to content

Latest commit

 

History

History
233 lines (128 loc) · 13.3 KB

File metadata and controls

233 lines (128 loc) · 13.3 KB

I believe there are 2 avenues that are the best choice of time, that you may take to achiveve some certain goals.

  1. Mass adoption of an easily deployed, performant, decentralied services, protocols.
  2. Rejuvenation of Anonymous networks, or systems in general.

There is also the 3rd problem, or avenue, or topic, that is parallel to both concerns.

  1. The direct connectivity problem.

For easier illustration of the 3rd problem, I'll start with Yggdrasil.

It provides no anomymity, or encryption, or any guarantee of decentralization in the manner that the super-paranoid wants. It only tries its best to route any node from one point on the globe, to another point.

One interesting finding I want to add to (2), at the beginning of this writeup, is the inception of Verifiable Shuffle.

https://github.com/kwonalbert/riffle

The fundamental working of mixnets, is the delinking of IPs.

When some communication happens, the observer can link the source of a packet, to the destination.

There is this leak of information that happens at the routing aspect of IP protocol. Yes, I have read about anonymity network designs that tries to directly address this problem at this layer.

We continue to formulate the notion of observers.

We consider observers anyone who is not part of the communication process, eg, two nodes.

Mixnets cause that even strongest observers that log all the traffic that happen in public, unable to link one IP to another IP when it intercepts a packet, unable to link one IP to another IP when a node sends a packet.

This entire thing can be done on a single server/node with Verifiable Shuffle.

All packets are uploaded to the server, they can verifiably shuffled and re-delivered to designated recipients.

All the packets are encrypted. To this node, which holds all the observable data in public, it's impossible to find the recipient IP given a pending packet, and impossible to find the sender IP when the shuffle has been done.

Mixnets are probabilistic. That is to say, given an omnipotent observer is possible to de-anonymous all traffic. Verifiable Shuffle is NOT probablistic.

Another idea is, one-sided anomymity. We can develop tools to faciliate this kind of anonymity.

Take FHE for example, it's possible to query an encrypted database, get the data associated with a key, without revealing what the key is to the server.

  1. The specialized firewall evaders.

https://gfw.report/

There is an entire literature regarding the caveats connected to the designs of systems that are compatible with users in censored regions.

I recommend you make the worst assumptions. That the user doesn't have a stable connection. Massive delays, frequent changes of relay nodes, etc.

These problems easily make usual system package managers non-functional.

Here, I introduce Freenet2 which is fundamentally compatible with this suite of assumptions.

Unlike the great old internet, Freenet2 works on the basis of states and their updates. The great old internet works on the basis of peer-to-peer, or recently, the peer-to-datacenter, structures.

You can see how TCP specification deals with how the packets are resent and how the connection should be maintained; the underlying thing is that they work with connections

They are connection oriented protocols/paradigms. I never implied they should be phased out or anything or TCP should be dropped. No I specifically meant the paradigm not any specific protocol.

The demand of users are, I mean the technnological requirement of their Apps are intrinsically mixed.

What I mean by mixed is that they can not be characterized by one overarhcing protocol primitive/goal.

Say, a chat App, may require state-persistent text chat logs and real time voice calls.

And on the other dimension the user may need the firewall evasion, the anonymity, the direct-connectivity (which haunts the modern internet).

Let's break down the demand analytically like some mathematical decomposition

  • Persistent-state
    • solution, Freenet2
  • Real time calls
  • State fidelity
    • Cryptocurrency based verifiers
  • Stickers, public resources that are shared widely
    • IPFS (I have negative impression about thsi thing if anything. It's routing is slow. I think it's just not taking my concerns into consideration)

The main point I wanna say is that I've seen peoeple who kind of want one technological notion to cover all the demands and be super narcissistic about it.

Empirically, (as in from the angle of observation and statistics), users tend to use a combination of methods to reach their goals.

Secondly I hate the people that want to bundle everything together naively to present a 'universal solution'.

The workings2 of Freenet2

To understand freenet2, the notion of state machine must be introduced.

It's everywhere.

Think of OOP languages (on a tangent I'd rather consider it a form of type system not OOP or some cool paradigms)

You create an object, and it has some methods.

The internal variables of an object as a whole, is called the state of the object, and you perform state changes through the methods.

This notion is extended in Actor Model, actor systems, because this form of system is intrinsically amenable to async programming. Each object is then called an actor, and all state changes happen through an act of communication, which can be exactly framed as bytes passed around.

Rust uses state machines for the async system. State machines, constructed to encode the data, are also used in some data strcutures to represent a set.

Freenet2 is a distributed database, that contains a sea of state machines, where each state machine has a ruleset defining the set of acceptable states.

This is a good enough assumption to work with when we want to address the routing problem independent of specific Apps.

Federated networks such as Mastodon and Matrix have no routing. They are just a cluster of servers that communicate with each other whenever the RFCs demand it.

Oftentimes they form a fully connected network, where each state update is passed to every other server. Denote the number of nodes as n, we get n packets for one update, which for all nodes, is n^2.

In the worst case a server can receive n redundant copies from all other servers, as all other servers have this new state and are not aware of each other.

This does not happen in DHT-like systems in general, as state updates are only passed to nodes that are deeemed responsible for it.

DHT systems like torrents are optimized for static files, which is out of scope for now. If X is not optimized for Y, we don't talk about it. That's a general truth.

Bluesky, Nostr, ...

There is one central feature I like about Freenet2 is its purity, as in minimal assumptiions about state machines.

Bluesky contains a graph, like IPFS, and Nostr is just a very simple thing built around 20 years old cryptography.

There will not be any need for RFCs. You want a new protocol. You just compile it and deploy it to the network with a oneliner.

Freenet2 is naturally compatible with novel cryptography. Again, due to the minimalism. You can put novel cryptosystems in the compiled WASM blob that faciliates whatever n-signer anonymous voting.

Discrete and open problems

Discrete as in unrelated. For the same topic, decentralized protocols, there are many, apparently disconnected, unrelated, topics. We trivillay consider it an apparent thing because we know that they are going to converge to one singleton of codebase, so they are, unavoidably related.

  1. The anonymous credibility transfer problem.

There are many cases of high profile anonymous people getting caught due to the need to prove credibility. Like when you tip a journalist and you have to show credibility which makes you liable to state violence or other coercion.

  1. The distributed, anonymous crowd-sourced rating problem

When people seek solution to a problem, when they demand an eventual answer, there will be a list of candidates. And in the absence of crowd-sourced ratings, the candidates will be from either, (1) some sort of state, offical answers, (2) chaotic answers without specific features that we can reason here.

I call this the theorem of necessary solution.

The very common pitfall with average distributed networks platforms you see showing up on github is that they have massive leaks of personal, metadata clustered around each user. In the other case they make imageboards that have no rating system whatsoever.

I do have solutions in mind but in this section I believe its a greater priority to organize a list of problems.

random idea about state machine and zkp

When I worked with levenshentein automata, the automata were used to represent sets.

Maybe we can construct a state machine in ZKP, and proves it reaches accept or deny state by executing it in the VM.

https://github.com/BurntSushi/fst

Current decision on selection of the ZKVM

Either

  • Cairo with STWO (unstable)
  • Powdr (unstable)
  • OpenVW with not-well-supported instruction (production-ready)

Selection criterion

  • Prover can be run in browser, or outside browser but easily installed
  • Verifyer is preferably in Rust, compiled to WASM and easily integrated in freenet2 contracts.

Architectural choice on network routing

The contemplation should deliver an answer to, where do we start coding.

In the typical P2P softwares development you would use a Kademlia library and add custom logic and thats it.

Alternatively, you can use Libp2p's stack and join a larger DHT network, which may offer more service availabiltiy if your network would be small. Libp2p also provides many services like pubsub network. You benefit by joining a larger network, ie. amortized load.

The freenet2 thing is, it decouples netwrok transport from business logic. The line is drawn by a concept called state-machine-model. Specifically a state machine that doesn't have blockchain-like consensus.

If you develop apps based on this model, the app can be easily ported to any platform, freenet2 forks, any such transport that adopts the wasm runtime. And all of them will be inter-operable, by definition, by design. If freenet2 is currently non functional, it's trivial to make a federated platform based on the runtime.

The model puts constraints on what you can do in the code, and in turn offers logical implications. The machine itself, is hermetic that you can not access resources out of this state machine. This means if you put a chat room inside a contract you can not have it moderate messages based on source IP.

Why should we adhere to this model

I don't expect future apps, however fancy, to deviate much from this model. If this model is to stay, it means lower transports will have to adhere to this model too.

I believe the limits the model chooses are well founded, necessary.

Integration with AI assistant

a whim but I should note this down

This is mainly a motivation that I want to stress. There is high value in language-tutoring in live environments.

Anonymous Isomorphism

Hereby I introduce a construct. people perform activity X, which often leak their identities.

What I want to illustrate here is that X matters when its, hiring, businesss cooperation, covert political operations.

For most activities X, people can not conceal their identities, except censors themselves.

The construct of Anonymous Isomorphism is that in this thought experiment, we do everything anonymously.

The property of anonymity annihilates power.

Example:

  • You contact an online person who scores high as to your ideological alignment - The process by which you find this person leaks your intentions, which means it's difficult to find him without risking yourself in the first place. - You have to know a lot about him, which makes you valuable to interrogators, but in fact the minimum requirement for you to hire him, is the score.
  • You are an HR, or have some connections.
  • You give him favor.

From the perspective of censors, let's analyse the case of mixnets.

  • You connect with servers and cooperate
  • The activity sponsors criminial activity with 1% probability.
  • Punishment is impossible due to the dilution.

Then we go back to the hiring case

  • The person shows an ZKP proof of set membership where he is one of A+B where A is normal citizens and B is a violent group of criminals that you support.
  • You hire him.

We can infer that when this act is done on a massive scale, it will change things,

The state and its credentials

The state, or in other words, the apparatus by which a group of people rule over others, relies extensively on credentials. One single person can have a lot of connections, knowing them personally, but the state is too big to not rely on, abstract credentials of power that have the details removed.

In a corporation you may fear a person because he is an HR, but in the largest the scale of society, it's money. Money is the credential of power, with least information possible, ever. I do not say this for the usual case of money where transactions are monitored. It's only as such in the most idealized case. There are implementations of it like ZCash.

Society evolved to use abstractions. The point is we in turn utilize such abstractions to confer anonymity on us.