Miles
Miles is built from four pieces working together:
Start with a common PKI for signing content. Every user gets a Miles keypair, and text, images, video, or audio can all be signed with a user's private key.
An application-independent unidirectional trust graph — like following someone on Instagram.
Content connected to the viewer through other human connections is marked as trusted — "six degrees of Kevin Bacon." Extensions to software can hit this, see Firefox extension below for example.
Signed content carries the metadata required to verify it. Extensions to software can save data in this format.
To verify content is human-generated, Miles checks if there is an unbroken chain of trust links from viewer to poster.
Miles includes protocols — the HGC file format — for signing content and including Miles metadata. Text, images, video, audio, anything can be signed by a user's Miles private key. The metadata includes a signed hash; during the check process, Miles verifies the hash against the user's public Miles key.
The green links form a complete trust chain (CTC): the viewer trusts their friend, who trusts the poster. Miles tells the platform the content is human-generated, and the platform loads and renders it, visually marking it as trusted. In the Firefox extension example, it enables a context menu option to view the trust chain between you and the content signer.
There is no complete trust chain from viewer to poster. Miles tells the platform the content cannot be verified as human-generated, and the platform does not load it or loads it and marks it as untrusted, depending on user preferences.
There's a growing interest among consumers that their video games not include AIGC. itch.io, for example, includes a tag game developers can apply to self-certify that their games contain only HGC — but it's not enforced or verified.
Miles provides a means of connecting game assets with the artists who created or collated them. A modern game consists of thousands or millions of files, which could be saved in HGC format. Once downloaded, the files can be verified once, with the platform (e.g. Steam) presenting the user with a percentage of assets confirmed to be HGC.
No matter how many automatically-generated accounts brigade the system and claim to trust Poster 2, it doesn't generate a CTC between Viewer and Poster 2.
If a trusted account is compromised (or the user controlling it isn't posting content honestly), a distrust link (red) can be added to the graph. This removes the distrusted account from the CTC computation. Simply removing a trust link isn't sufficient, since (as shown in green) another path to the compromised node could exist. Other users' distrust links are ignored during CTC computation.
By combining the trust graph with standard PKI, trust links can be both verifiable and non-repudiable. Without access to a user's private key, we can't fake trust links.
type node = {
id: string,
name: string,
pub_key: string,
hash: string
}
type edge = {
id: string,
kind: "t" | "d" // trust or distrust link
src: string, // src node id
dest: string, // dest node id
date: datetime,
sig: sign(private_key_of_src_node,
hash(concat(src, dest, date)))
}
Naturally and by design, hubs and authorities will develop. CTC-finding algorithms can be tuned to take advantage of this to massively reduce compute costs — see the video game voice actor case above. This is a thought experiment; Miles accounts are meant to be tied to an individual human, not an organization (like Valve).
Most users need verification of the same accounts over and over — people they follow, people they know. No need to verify these every time; cache a trusted list locally and refresh it periodically. Subgraphs and spanning trees can be pre-computed too: computing a CTC from blue to orange only requires finding a CTC into the purple subgraph — 3 degrees of separation instead of 5.
Social media platforms preload content before users see it. The viewer has set their preferences to show only human-generated content (HGC). The platform checks with Miles before loading it — if there's no complete trust chain, the post never renders.
Miles requires minimal storage and bandwidth, even at internet scale. Costs are storage for a graph database, compute for shortest path calculation, and bandwidth for serving json responses with API.
Research suggests costs are orders of magnitude lower than other internet-scale technologies and platforms. Estimated monthly infrastructure cost at each scale tier, under the optimized scenario using self-hosted deployment (the most cost-effective production approach):
| Scale (MAU) | Monthly cost (low) | Monthly cost (high) | Cost per MAU |
|---|---|---|---|
| 10,000 | $150 | $300 | $0.015–$0.030 |
| 100,000 | $600 | $1,500 | $0.006–$0.015 |
| 1,000,000 | $3,500 | $8,000 | $0.004–$0.008 |
| 100,000,000 | $180,000 | $400,000 | $0.002–$0.004 |
These cost ranges confirm the pitch's claim that Miles does not require massive infrastructure. Per-user infrastructure costs decline steadily at scale, reflecting the efficiency of the trust graph architecture.
See the full cost research →
See the subgraphs research paper →
Miles will be anchored in a non-profit. This has several reasons and several implications.
The primary reason for a non-profit is to present a non-threatening opportunity for social media platforms. A platform (like Instagram or Reddit) that wants to integrate support for hgc files would be naturally concerned that, once integrated, Miles would demand increasing licensing fees (or API fees or whatever) to leverage the integration against the platform and this fear would prevent them from integrating Miles. A non-profit has no incentive to maximize revenue through such slimy tactics, so the risk is mitigated.
I plan to build the first stage of Miles with donations from like-minded people and organizations concerned about the future of the internet, but eventually Miles will have to be self-solvent in order to resist steering pressure from large donors; Miles must provide sufficient value both for the social media platforms that integrate it and the users who trust it.
This means, ultimately, a monthly subscription fee. I plan to keep Miles free for as long as possible and charge perhaps a few dollars per month per user. As a non-profit, there's no need to maximize revenue, so I can confidently promise that Miles will never treat user data as a profit center; no ads, no selling to data brokers, just a simple service for a simple cost, just enough to keep the lights on. I can also promise transparency in how we price Miles for the same reasons.
I need software engineers, non-profiteers, designers, cryptographers, and all-around good people to make Miles work at scale. Not a lot of people, but more than zero.
Please contact me if you're interested in helping develop Miles.
Make an account and see it for yourself.
The Firefox extension currently has to be installed through about:debugging
while it's in development — a bit of a pain if you've never manually loaded an extension
before, but it works.
Below are two images, one with a .jpg.hgc src (which looks like a broken link without an extension) and one with a .jpg src. If you make an account, add the Firefox extension, and come back to the page, the extension will parse the hgc file, unpack it into a jpg, verify the signature, ask the api if you have a complete trust chain to me, and mark it trusted (green + right-click option) or untrusted (red).