[These are some preliminary thoughts subject to change — looking at ways to change the physics of the Internet in light of todays FCC decision to end net neutrality]
Today the FCC was captured by Verizon and used to end net neutrality — using a public agency against the public benefit in a boldfaced maneuver that is obvious to all stakeholders. In matters like this the public is playing against AlphaZero; on a long enough timeline corporations always win. Longer lived players capture markets not by competition but by corrupting the physics or rules which guide the market. In the book The Master Switch by Tim Wu reviews the last 100 years of similar kinds of regulatory capture, looking at everything from the telegraph to radio to telephone to television and this is highly recommended reading if you want to understand the historical context.
There has been much wringing of hands and pulling of hair over the expected FCC decision but in fact our beloved Internet faces several monsters not just one. This is a golden opportunity to fix deeper issues and rewrite the physics of the Internet back in our favor again.
Our infrastructure is aging. It was designed in an academic setting, somewhat insulated from banal day to day issues such as money. It was designed to be a network, where data could be dynamically routed around obstacles — not to deal with antagonistic activity within its boundaries.
In our current design we build monetization on top — we collect user account information, we do KYC (know your customer) tests in some cases and we then bill them. It’s not quite turtles all the way down, but from a technical viewpoint we can characterize the internet as a seven layer diagram:
The thesis of this essay is that in fact it should be the other way around — monetization should be built into the fabric of the Internet at the UDP level such that rewards can be paid to service providers directly. On initiating a connection to a service a small amount of money could be sent. This could pay for the cost of connection, help solve distributed denial of service attacks, and change the incentives which have led to Verizon attempting to capture the market.
Many massively multiplayer online video games already require new connections to do a small ‘proof of work’ to connect. In a sense requiring the expending of energy. Although this is not a formally monetized pattern yet we see how already existing strategies can merge with new technologies such as the blockchain and cryptocurrencies to solve some of our planetary communities growing pains.
The Grand Challenges
Let’s look at the big problems that we all ‘kind of put up with’ and see how adding a payments layer to the bottom of our protocols could help. What are some of the ‘grand challenges’ that the Internet faces?:
- Spam — The receiver is burdened by messages that are extremely low cost for the sender to send and which come in such volume that they occlude real information that the receiver is attempting to listen to. Spam is akin to noise and error, and interpreting spam for signal can cause serious problems especially for those who are older or less tech savvy. It’s a form of predation that we’ve grown used to but still causes us all grief.
- Monetization of work — If I build a compelling game or user experience on the web it is difficult to collect money from users. I can build a business, or license my product through an online service (such as Steam) but these are additional hoops which have a chilling effect on creativity. As well intermediaries take a cut of revenue and can chill freedom of speech.
- Apps — Apple and Android specifically played a healthy role in breaking down barriers to mobile experiences but mobile apps are missing features that are vital to an open web; urls, cut and paste, interoperability, open standards. As well apps don’t play well in emerging tech sectors such as Augmented Reality — where the user interface is just a thin layer over a shared data set rather than a vertical silo. As above as well, Apple and Android capture revenue and can chill freedom of speech.
- DDOS attacks or ‘kiss of death’. Online services such as your own web site or massively multiplayer online video games (MMOs) such as World of Warcraft can only sustain so many simultaneous visitors at one time. When too many visitors arrive all at once their clamor can cause slowdowns or even bring the experience to a grinding halt for everybody. Bad actors can exploit fundamental design flaws of our Internet protocols by creating many fake visitors at once — this is known as a distributed denial of service attack or a Sybil attack. Equally, online experiences can simply become very popular very fast and be crushed by their popularity (the virtual equivalent of launching a groupon and not being prepared for customers). These events reflect an asymmetrical burden on centralized game servers. Entire businesses such as cloudflare.com exist to sit in front of services and protect them. And many MMOs require new connections to do small amounts of ‘proof of work’ to connect — which hints at grander solutions for the whole class of problems here.
- Pay to play. Now with the FCC ruling there may also be new financial burdens for new services which we cannot conceive and which have not yet emerged. In a sense the ruling freezes the Internet in time where it is. Because new services won’t have a user base they won’t be able to pay the fees required to route their packets. This pattern is known as a self-induced criticality; a huge log jam has to build up to overcome the incumbents and when it does it creates disruptive influences on the rest of the system. It’s also reflected on forest fuel loads, gerrymandering and several other places where we build laws or structures that block strong natural forces.
- Trust — there is no way to easily filter clusters of bad actors today. Like a DDOS attack a large group of bad actors are often sock puppets for a single actor. Bad actors can conspire on Twitter to create visibility for themselves by engaging in an internal dialogue and this becomes mis-interpreted by the network as real chatter, and they surface all manners of disgusting fictions, opinions and yellow press to distort public will to their own less visible agenda.
- Centralization — Facebook and services like it offer efficiencies of scale, monetizing off of incidental consumer behavior. While these services offer high quality consistent user interfaces they in fact reduce the kinds of freedoms that individuals should have to choose how to filter, organize and evaluate their world. Their strength reduces incentives to strengthen federated solutions such as RSS, blogs and the like as a broader ecosystem.
- Advertising — Advertising is largely out of control. It’s ubiquitous and the primary means by which the beast is fed. We all acknowledge that advertising is grossly inefficient, and in fact we’re neurologically trained at this point to not even be able to see advertisements.
Playing to Win
There’s a business process called ‘playing to win’. It’s an idea of how to formalize a vision as opposed to merely a strategy or a technique. The idea posits that one should throw away goals that are incidental or not as close to final outcomes, and in a sense it is a business version of Occam’s Razor. The idea suggests that to the degree that one can actually afford it, one should pursue the longest term outcomes one can. This isn’t entirely different from Buckminster Fuller’s vision of maximizing system benefit, and at some level it is a systems perspective; similar to Finite and Infinite Games — that all boats rise when we help the world around us.
If our goal is to fix the Internet then we should fix it. We shouldn’t attempt to encode our policy in human laws but actually fix the fabric at the bottom.
Many of the challenges enumerated above are related by an issue of discriminating between signals and noise. In our creaky old internet we never designed any way to discriminate between truth or falsehood at a granular level or at a protocol level. Or rather at least, the cost to produce fake signals is the same as the cost to produce true signals.
The real world is fair because calorie consumption cannot be circumvented. All players must expend calories to play. But in the virtual world the physics are arranged such that bad actors can use the calories of good actors.
In natural systems, such as say a bird in a jungle, a bird expends energy to signal across that landscape. Other birds listening to bird call have some confidence that the signal is real — that it reflects a participant, that that participant is not lying. When the costs to utter a signal are non-zero then participants can’t afford to lie. When signaling is free a participant can utter any statements to manipulate the group. If costs are zero, or asymmetrical, then a bird could falsely signal a predator to scare other birds away, or signal fitness to attract more than a system healthy share of attention.
On the net we discriminate between signals ineffectively. Bad actors can form clusters on twitter and create disproportionate visibility for themselves through sheer volume of transactions — even though they are largely disconnected from the network graph of other actors as a whole. At almost every layer of our protocols we have serious problems because signaling is free. And while a multiplicity of solutions are required (to protect anonymity, whistle-blowers and the like) when people signal then their labor could energetically enrich the system rather than burden the system.
Proof of Work
We’re familiar with the idea of ‘proof of work’ as a way to allow independent miners to create bitcoin or other crypto-currencies without centralization. The idea of proof of work is that it forces a participant to expend some energy to participate. This makes it expensive for bad actors to hack the network and bias outcomes in their own favor.
Techniques like this are used in many places but have flaws:
- Recaptcha for example can be thought of as a kind of proof of work. A task is chosen that is hard to automate. Humans are forced to expend energy to participate, and thus reduce the likelihood of bad actors entering the network. A bad actor can try to enter but they have to spend money to do so. Often bad actors try to work at scale, and this makes it expensive to mass an attack. The problem with these approaches is that they are irritating to human users and create impedance bumps. If an automated gate-keeper sets a task that is too hard in some way it blocks user access.
- MMO Currencies. Many massively multiplayer online games (as mentioned) face serious attacks from bad actors who want to subvert the whole network for one reason or another. The basic attack is a ‘SYN flood’ to saturate low level protocol traffic. But it occurs at all levels. One strategy is to force new clients to use proof of work to log into game sessions. This is a recommended practice such as for example by Amazon and others. In this case they’re trying to prevent higher level DDOS attacks, where fake users attempt to create many sessions and thus slow down the game for all the other players. At this level join events can be made asymmetric or balanced in such a way that the server doesn’t bear disproportionate costs. When system becomes busy due to attackers hitting the server the proof of works increase. On good actors this is a small cost to do once, but on a DDOS actor this becomes a high cost to do often. There’s been a lot of discussion about connecting this to a token or currency system such that a DDOS attack becomes an income moment for a system rather than a cost moment. With a currency system many other attacks also become completely benign services that benefit the network. See https://kotaku.com/upcoming-mmos-cryptocurrency-marketplace-was-inspired-b-1797874103 and https://bitcoinmagazine.com/articles/cryptocurrencies-in-video-games-preview-roundup-1416609489/ and https://steemit.com/blockchain/@darkhog/why-we-need-blockchain-based-mmos — but a question or issue with these approaches is are they too high up the stack to prevent fundamental attacks on the physics of their network? Would they benefit from a new lower level protocol? Or could a new protocol work in concert with existing methods to round out their stability?
The proposition is to create a new cryptocurrency token type such as a UDPCoin or a DNSCoin which can be spent in initiating connections. In the way that we have entropy servers on the Internet, we should also be able to accumulate and spend trust. In a sense a currency backed attention economy is built — and there’s a lot of infrastructure to be built here to accomplish this.
The implementation is that we extend TCP handshaking with the initial datagram encoding an amount of money and one or more recipients of that money.
At this point the following behavior emerges by itself:
- Valuable connections. Rather than requiring proof of work, or other machinery at a higher level, the parties can exchange actual money (in the form of a crypto-currency) for each others consideration.
- Asynchronous proof of work. The money can be earned at some other time asynchronously — so there are no hiccups or delays at connection time (such as occurs when solving a proof of work on demand or solving a captcha on demand). Since these are small amounts of money a client browser or app can generate them in the background.
- Commitment on connection. The party initiating the connection (or client) loads a connection packet with money and sends it to the other party (or service) as a proactive payment for a service offered.
- Compute to play. Since this is a small amount of money the sender will not be reimbursed if the connection fails or if the receiver chooses to not provide a service.
- Dynamic Load Balancing. In a series of successive negotiations, or possibly at a higher protocol level, the service provider can demand more payment for the service — such as when the service is is overwhelmed.
- Scheduled Load Balancing. The service provider can encourage clients to follow a schedule.
- Dedicated Filter Hardware. This can happen inside the router or some kind of helper hardware so that content developers can focus on core experience.
- Paying for attention. The client can proactively pay more money for more attention.
- Distributed Revenue Moments. The more attention the service gets the stronger it becomes. A DDOS attack becomes a revenue moment.
- Anonymity. Tokens are a way to form a common language between different parties. We often track identity often because we’re attempting to track accountability. With actual tokens the identity is less critical. People can be sensitive about having their identity tracked in ways they don’t fully understand and a token based economy circumvents this; allowing interactions and privacy.
- Alternative currency production options. Mobile devices and IOT devices may not want to spend CPU on generating tokens. There should be multiple ways to generate tokens or load tokens onto devices.
- Currency Servers. I can also see patterns where you talk to a currency server and resolve a fee and then get a certificate that you then bring to the service… and it is clearly worth writing test implementations of various approaches to try them out.
Changing cost relationships is a way to solve some of the challenges we’re facing today, but there are several issues with existing crypto currencies — they just are not suited for low level transactions like this:
- Fungibility. Today there are many separate token markets.
- Expensive. Tokens themselves are expensive to produce — certainly mobile devices cannot generate bitcoin to prove participation for example.
- Too rigorous. The idea of a global blockchain may be too high a bar for an IOT device or other low power / low memory device to deal with; it may have to have a pile of naked one time keys that are basically small amounts of money.
- No interfaces. Our browsers and tools don’t offer ways for actual humans to add or remove tokens from the system; there are many plugins (such as metamask) but they don’t induce confidence in novices.
- Multiple currencies. It would be nice if there were more options around what constitutes proof of work. Solving captchas is very hard for some people… contributors should be able to approach a system with a request for the kinds of proofs they are willing to solve (or they should be able to bank trust elsewhere and then spend it on that service they want to connect to).
- Eco Tokens. Having more kinds of proofs of work would also allow a possibility for proofs of work that are not pure entropy losses (as bitcoin is criticized for) — such as solving protein folding problems, or solving mmo game decision points, or solving rendering engine issues — so that the proofs of work can themselves become markets.. however that can be externalized from the system as a fungible currency accumulated elsewhere.
Some of the challenges we face can now be rephrased in terms of a compute to play outcome:
- Spam. If for example you were compensated for each email you received then spam would probably be reduced (and people who really felt that you may be interested in what they have to say might put more thought into their spam). This is easily accomplished by setting a nominal price of say the caloric equivalent of a cube of sugar on each email sent to you. This may also be true of SMS spam and phone calls from telemarketers.
- Rewarding content creators. Right now incentives for content creators are perverse. The best way to foster good content is to pay people. People hosting a site or service should be able to be paid for that work and time based directly on the attention they receive. A direct low level token based payment system can do this possibly more easily than credit cards.
- MMO DDOS attacks. Clearly this is an ideal use case and seems like it would benefit this kind of content provider. Each connection pays money into the MMO which helps them pay for their service.
- Net neutrality circumvention. Without net neutrality new services will be charged at the higher rate than existing services — and new services cannot compete. Instead here new services are paid directly for their attention.
Making this happen
It feels like the right thing to do is to build some examples and then foster a community of services around this concept. Building and testing a calorie based internet where every connection has a cost will itself have a non-zero cost and will need funding. To interoperate with existing services load balancers that sit in front of services will need to exist. Developers of services do not want to deal with a connection token inside their game or product — they want to focus on their business. To foster these new protocols to a wider community the currency would need to be on major crypto exchanges and fungible so that people can earn tokens and then spend them later when they want to use a service.
It’s worth noting that a solution like this is only part of the answer. Bad actors can muster tremendous computational resources. It is outside the scope of this discussion but it looks like good actors that participate in the network probably need to be filtered by a contextual network graph of trust as well. Actors can only participate if a plurality of other actors agree that they are acting in the networks best interest.
As well we can see an ecosystem of proof of work emerging — where institutions pay users to access their computation (such as RenderCoin) or storage (such as IPFS). This will likely emerge anyway and it’s important to have inter token trading.
We can also see new ways of identifying popular services (where is all the money going?) and of establishing market prices (what does this service charge to connect to it?).
Here are a few other links that I’ve collected while writing these thoughts: