anproto -- authenticated non-networked protocol or another proto
sha256 blobs signed with ed25519 keypairs
anproto.com
ed25519
social
protocols
1<img src='https://raw.githubusercontent.com/evbogue/wiredove/master/doveorange_sm.png' style='width: 75px; height: 75px;' />
2
3# ANProto
4
5the **A**uthenticated and **N**on-networked protocol or **AN**other protocol
6
7ed25519 keypairs sign timestamp + hash in base64
8
9***
10
11[anproto.com](https://anproto.com)
12
13+ [JavaScript implementation](https://github.com/evbogue/anproto) [by Evbogue]
14+ [Golang implementation](https://github.com/vic/goan) [by Vic]
15+ [Rust implementation](https://github.com/vic/anproto-rs/) [by Vic]
16+ [Python implementation](https://github.com/macauleyjustin/ANproto-Python) [by Justin]
17
18try it at [anproto.com/try](https://anproto.com/try) or use a client such as [wiredove](https://wiredove.net/)
19
20***
21
22### What is ANProto?
23
24+ ANProto is the spiritual successor to [secure-scuttlebot](https://scuttlebot.io), but without all of the extra stuff that is difficult to maintain.
25+ ANProto is an attempt to argue that [ATProto](https://atproto.com) is too involved in it's own networking infrastructure to be usefully decentralized.
26+ ANProto operates under the working theory that [Nostr](https://fiatjaf.com/nostr.html) will never reach anyone besides Bitcoiners.
27
28***
29
30### Bring your own network!
31
32ANProto works over any networking stack. Open the messages from your URL bar! Email them to your friends! Load them on a USB stick an slingshot them over a river! ANProto is non-networked, so you can send and retrieve the messages anyway you want. Try the fetch API or Websockets if you want a good place to start. But maybe dork out trying to send ANProto messages via Bluetooth, LoRa, or sync them via local wifi like you did with Scuttlebot!
33
34***
35
36### the JavaScript library!
37
38use Deno or your browser
39
40```
41import { an } from './an.js'
42
43console.log(await an.gen())
44// BSY7/er4VJIu08o39NaRAiPY/MAvd7oQhlGCRDABjYU=tQa03kqUWG3VtHZ98++lHFBeQ4JKZwuTH2CjC/K6P8EFJjv96vhUki7Tyjf01pECI9j8wC93uhCGUYJEMAGNhQ==
45
46console.log(await an.hash('Hello World'))
47// pZGm1Av0IEBKARczz7exkNYsZb8LzaMrV7J32a2fFG4=
48
49console.log(await an.sign(hash, await a.gen()))
50// BSY7/er4VJIu08o39NaRAiPY/MAvd7oQhlGCRDABjYU=yVpD8i7d3d4dls3YThEg1x1vSdmqeEweV4e4Ejl/8yPoVG7JR0YAKDPagQOgxXMrlCVLNNqvlNvj4xRDOYDLBjE3NTUxOTc4NDEzMTlwWkdtMUF2MElFQktBUmN6ejdleGtOWXNaYjhMemFNclY3SjMyYTJmRkc0PQ==
51
52console.log(await an.open('BSY7/er4VJIu08o39NaRAiPY/MAvd7oQhlGCRDABjYU=yVpD8i7d3d4dls3YThEg1x1vSdmqeEweV4e4Ejl/8yPoVG7JR0YAKDPagQOgxXMrlCVLNNqvlNvj4xRDOYDLBjE3NTUxOTc4NDEzMTlwWkdtMUF2MElFQktBUmN6ejdleGtOWXNaYjhMemFNclY3SjMyYTJmRkc0PQ=='))
53
54//1755197841319pZGm1Av0IEBKARczz7exkNYsZb8LzaMrV7J32a2fFG4=
55```
56
57---
58
59MIT