Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Refactor documentation, remove unused protocols, and update payment f…
…eature status
  • Loading branch information
nullchinchilla committed Jul 10, 2025
commit 3e031ed312032e6c5ec5ddfa729ccef15c1136ca
23 changes: 0 additions & 23 deletions en/FAQ/many-nodes-same-machine.md

This file was deleted.

4 changes: 2 additions & 2 deletions en/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@
* [Type-I and II censorship resistance](wiki/type-i-and-ii-censorship-resistance.md)
* [Network architecture](wiki/architecture.md)
* [Protocols](wiki/protocols/README.md)
* [N2R (node-to-relay) protocol](wiki/protocols/n2r-protocol.md)
* [Mixnet protocol](wiki/protocols/mix-protocol.md)
* [GlobalRPC](wiki/protocols/globalrpc.md)
* [Haven protocol](wiki/protocols/haven-protocol.md)
* [Link protocol](wiki/protocols/link-protocol.md)
* ["LowNet" transport protocol](wiki/protocols/lownet-protocol.md)
* [Stream protocol](wiki/protocols/stream-protocol.md)
* [WIP: Debt accounting](wiki/protocols/debt-accounting.md)
* [Onion packet format](wiki/onion-packet-format/README.md)
Expand Down
23 changes: 22 additions & 1 deletion en/faq/1+-nodes-on-1-machine.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,23 @@
# 1+ nodes on 1 machine
# Running 1+ nodes on 1 machine

Running more than 1 Earendil node on the same machine is quite easy:

1. Create a separate config file for each node. Be sure to add the following 3 fields, with different values, to each config file:

```yaml
# where to store this Earendil daemon's database.
# make sure the Earendil daemon can access this location
db_path: /your/path/node1.db

# listen port for this daemon's control protocol
control_listen: 127.0.0.1:<node1_control_port>

# listen port for socks5 proxy
socks5:
listen: 127.0.0.1:<node1_socks5_port>
fallback: pass_through
```

Manually specifying these fields is necessary when you're running more than 1 Earendil node on the same machine, because otherwise the different nodes will try to use the same default value. And two daemon cannot use the same database or listen to the same port!

2. Start a separate daemon for each node using the config files.
11 changes: 0 additions & 11 deletions en/getting-started/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,6 @@ out_routes:
# - `sosistab3`: a TCP-based obfuscated transport with a symmetric cookie, defined by the relay. This obfuscation protocol is developed as a part of [geph5](https://github.com/geph-official/geph5)
obfs:
sosistab3: shove-mistake-wish-endless-antique-citizen-filter-employ-cigar-clip-acid-defense
# price and debt config for this link
price_config:
# how much you charge per incoming packet, in µMELs
inbound_price: 0
# debt limit for inbound packets, in µMELs
inbound_debt_limit: 0
# max price you're willing to pay per outgoing packet, in µMELs
outbound_max_price: 10
# min debt limit you accept for outbound packets, in µMELs
# Negative debt limit means prepayment is required
outbound_min_debt_limit: -100
# more relays to connect to
relay-2:
connect: ...
Expand Down
10 changes: 0 additions & 10 deletions en/getting-started/havens.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,6 @@ out_routes:
fingerprint: 4b7a641b77c2d6ceb8b3fecec2b2978dfe81ae045ed9a25ed78b828009c4967a
obfs:
sosistab3: "randomly-generated-cookie-lala-doodoo"
price_config:
inbound_price: 0
inbound_debt_limit: 0
outbound_max_price: 0
outbound_min_debt_limit: 0
```

Then, set your browser to use `localhost:30003` as a SOCKS5 proxy. For Firefox this looks like:
Expand Down Expand Up @@ -79,11 +74,6 @@ out_routes:
fingerprint: 4b7a641b77c2d6ceb8b3fecec2b2978dfe81ae045ed9a25ed78b828009c4967a
obfs:
sosistab3: "randomly-generated-cookie-lala-doodoo"
price_config:
inbound_price: 0
inbound_debt_limit: 0
outbound_max_price: 0
outbound_min_debt_limit: 0

# havens we're hosting
havens:
Expand Down
5 changes: 0 additions & 5 deletions en/getting-started/host-proxy.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,6 @@ out_routes:
fingerprint: 4b7a641b77c2d6ceb8b3fecec2b2978dfe81ae045ed9a25ed78b828009c4967a
obfs:
sosistab3: "randomly-generated-cookie-lala-doodoo"
price_config:
inbound_price: 0
inbound_debt_limit: 0
outbound_max_price: 0
outbound_min_debt_limit: 0

exit_config: # you want to be an exit node
allowed_ports: # destination ports that your exit node will allow; to only allow browsing http and https websites through your proxy, only put 80 and 443 here
Expand Down
4 changes: 4 additions & 0 deletions en/getting-started/pay.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Pay and get paid

{% hint style="warning" %}
This is a **design document** for an _unimplemented_ feature.
{% endhint %}

In the Earendil network, nodes pay and get paid by their _immediate neighbors_.

This creates a free market for bandwidth --- if one neighbor is too expensive or unreliable, simply disconnect from them and find a cheaper or more reliable provider. Once you pay your neighbor, it's their responsibility to route your packets to their destinations. This is just like using the internet: you pay your ISP (like T-Mobile) and don't worry about the rest.
Expand Down
13 changes: 1 addition & 12 deletions en/getting-started/run-relay.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Run a relay

We currently only support running relays using the CLI version. Relays should be run on machines with public IP addresses.
We currently only support running relays using the CLI version. **Relays should be run on machines with public IP addresses**.

Relays and clients nodes use the same `earendil` executable. The defining difference is in their config file: relay configs have a `relay_config` section that specifies `identity_file` (to store the relay's long-term identity) and `in_routes` (where and how to accept incoming connections), while client configs do not.

Expand All @@ -14,11 +14,6 @@ out_routes:
fingerprint: 4b7a641b77c2d6ceb8b3fecec2b2978dfe81ae045ed9a25ed78b828009c4967a
obfs:
sosistab3: "randomly-generated-cookie-lala-doodoo"
price_config:
inbound_price: 0
inbound_debt_limit: 0
outbound_max_price: 0
outbound_min_debt_limit: 0

# relay-only settings
relay_config:
Expand All @@ -32,12 +27,6 @@ relay_config:
sosistab3: <your_random_seed>
# port where this in-route listens
listen: 0.0.0.0:19999
# price, debt limit etc. for this in-route
price_config:
inbound_price: 0
inbound_debt_limit: 0
outbound_max_price: 0
outbound_min_debt_limit: 0
```

You can learn about paying and getting paid on the Earendil network, as well as the `price_config` [here](pay.md).
Expand Down
2 changes: 1 addition & 1 deletion en/wiki/protocols/globalrpc.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: RPC protocol that any node can call any node

# GlobalRPC

GlobalRPC is the primary RPC protocol exposed by all relays, that any node can call. It runs over the node-to-relay protocol (N2R).
GlobalRPC is the primary RPC protocol exposed by all relays, that any node can call. It runs over the [mixnet protocol](mix-protocol.md).

Like all RPC protocols in Earendil, it is based on JSON-RPC 2.0.

Expand Down
4 changes: 2 additions & 2 deletions en/wiki/protocols/haven-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ In this example, Bob is a haven, Rob is the rendezvous relay, and Alice is a cli

There is one RPC method exposed in the global RPC: `alloc_forward` which takes in a signed request from a particular fingerprint and instructs the relay to process forwarding packets to this particular fingerprint. Bob must call this method before any of the following happens:

* Alice sends N2R messages to Rob to a special, well-known dock (**dock number 100002**). The messages are of the format `(bob_endpoint, inner)`. The inner part is separately end-to-end encrypted between Alice and Bob, using the same packet format as the [N2R protocol](n2r-protocol.md), but without the padding and onion encryption.
* Alice sends N2R messages to Rob to a special, well-known dock (**dock number 100002**). The messages are of the format `(bob_endpoint, inner)`. The inner part is separately end-to-end encrypted between Alice and Bob, using the same packet format as the [N2R protocol](mix-protocol.md), but without the padding and onion encryption.
* Rob sends to Bob the messages with the inner part verbatim, tagged as `(inner, bob_endpoint)`.
* Bob sends messages to Alice by sending messages of the format `(inner, alice_endpoint)` to Rob. Rob's internal state is something like a NAT table --- it allows anyone to send messages to Bob, and it allows Bob to send messages to anybody who has talked to Bob, but it refuses to forward any other messages, so it's not an open proxy. Rob identifies "backwards" messages because they are coming from Bob, somebody who has registered forwarding with Rob.

## Socket abstraction

Similar to sockets in the [N2R protocol](n2r-protocol.md), we have a socket abstraction for haven communication.
Similar to sockets in the [N2R protocol](mix-protocol.md), we have a socket abstraction for haven communication.

Both havens and clients who wish to talk to havens use the same protocol:

Expand Down
42 changes: 0 additions & 42 deletions en/wiki/protocols/link-protocol.md

This file was deleted.

51 changes: 0 additions & 51 deletions en/wiki/protocols/n2r-protocol.md

This file was deleted.

4 changes: 4 additions & 0 deletions zh-cn/ru-men-zhi-nan/zhi-fu.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# 支付与获得支付

{% hint style="warning" %}
支付系统目前仍在开发中,以下只是一个简短的设计文档!
{% endhint %}

在 Earendil 网络中,节点通过他们的**直接邻居**进行支付与受支付。

这创造了一个带宽的自由市场 --- 如果一个邻居太贵或不可靠,只需断开连接并找到一个更便宜或更可靠的提供者。一旦你支付你的邻居,就由他们负责将你的数据包路由到目的地。这就像使用互联网一样:你支付你的 ISP(例如 T-Mobile),然后不用担心其余的。
Expand Down