Unverified Commit 87673cc3 authored by anonimal's avatar anonimal
Browse files

Moneropedia: initial commit for monero-project/kovri#256

- 12 new entries as they relate to Kovri
- They're mostly needed to satisfy the address book entry

References monero-project/monero-site#155
parent 7c2e62b3
---
layout: moneropedia
entry: "Address Book"
tags: ["kovri"]
terms: ["address-book"]
summary: "List of pairings: locally unique hostnames to Base64 I2P destinations"
---
### The Basics
In order to browse @I2P sites or services with @Kovri, you'll need an address book. An address book will allow you to translate @I2P websites/services that use the `.i2p` [top-level domain](https://en.wikipedia.org/wiki/Top_level_domain) into an address that @I2P network will understand.
Without an address book, you would be stuck using a @base32-address every time visited an @I2P website/service - and that's not fun!
### In-depth information
Since [DNS](https://en.wikipedia.org/wiki/DNS) does not exist on the @I2P network, @Kovri also does **not** use DNS or any sort of @canonically-unique-host resolution. Instead, Kovri pairs a @locally-unique-host to a @base64-address @destination in a @subscription. Once your address book is filled with a @subscription, you can resolve your favorite `.i2p` domain site into a usable @I2P destination.
### Creating an address Book
By default, your installation will come with a default public @subscription called `hosts.txt` in your @data-directory. When @Kovri starts, it loads this subscription and fetches any other subscriptions you've specified. Once loaded, your address book will be appropriately filled. For details on how to manage subscriptions, see @subscription.
### Updating the address book
Currently, there are several ways to update your address book:
1. Use a @jump-service to insert into address book
2. Use a @jump-service to copy/paste an address into your private @subscription
3. Manually add or subtract from a private @subscription
**Note: Kovri is in heavy development. In the future there *will* be easier ways to update the address book**
### Address Book / Naming specification
For specification details and more, visit the [Address Book and Naming Specification](https://geti2p.net/en/docs/naming)
---
layout: moneropedia
entry: "Base32 address"
tags: ["kovri"]
terms: ["base32-address"]
summary: "Base32 encoded hash of a Base64 address"
---
### The Basics
A Base32 address is a shortened, encoded version of an @I2P address. The Base32 address is the first part in a `.b32.i2p` hostname.
Example:
`i35yftyyb22xhcvghmev46t5knefur5v66qzekkajatwfwhyklvq.b32.i2p`
where
`i35yftyyb22xhcvghmev46t5knefur5v66qzekkajatwfwhyklvq` is the Base32 address.
### In-depth Information
Ultimately, a Base32 address is a 52 character [Base32 encoded representation](https://en.wikipedia.org/wiki/Base32) of the full SHA-256 hash of an @I2P @base64-address.
TODO(anonimal): finish (256 bits, etc.)
### Notes
**Note: `.b32` is not a sub-domain of `.i2p`**
---
layout: moneropedia
entry: "Base64 address"
tags: ["kovri"]
terms: ["base64-address"]
summary: "Base64 encoded I2P destination"
---
### The Basics
A Base64 address is a 516-character [Base64 encoded](https://en.wikipedia.org/wiki/Base64) @I2P @destination.
Example:
{:.cli-code}
AQZGLAMpI9Q0l0kmMj1vpJJYK3CjLp~fE3MfvE-e7KMKjI5cPOH6EN8m794uHJ6b09qM8mb9VEv1lVLEov~usVliTSXCSHuRBOCIwIOuDNU0AbVa4BpIx~2sU4TxKhoaA3zQ6VzINoduTdR2IJhPvI5xzezp7dR21CEQGGTbenDslXeQ4iLHFA2~bzp1f7etSl9T2W9RID-KH78sRQmzWnv7dbhNodMbpO6xsf1vENf6bMRzqD5vgHEHZu2aSoNuPyYxDU1eM6--61b2xp9mt1k3ud-5WvPVg89RaU9ugU5cxaHgR927lHMCAEU2Ax~zUb3DbrvgQBOTHnJEx2Fp7pOK~PnP6ylkYKQMfLROosLDXinxOoSKP0UYCh2WgIUPwE7WzJH3PiJVF0~WZ1dZ9mg00c~gzLgmkOxe1NpFRNg6XzoARivNVB5NuWqNxr5WKWMLBGQ9YHvHO1OHhUJTowb9X90BhtHnLK2AHwO6fV-iHWxRJyDabhSMj1kuYpVUBQAEAAcAAA==
TODO(anonimal): finish
### In-depth Information
TODO(anonimal): finish
---
layout: moneropedia
entry: "Canonically-unique host"
tags: ["kovri"]
terms: ["canonically-unique-host"]
summary: "A host that is canonically resolved to an address or set of addresses"
---
### The Basics
A canonically-unique host is a [FQDN](https://en.wikipedia.org/wiki/FQDN) that will canonically resolve to a designated address or set of addresses. Not to be confused with a @locally-unique-host.
### In-depth information
A canonically-unique host is defined by remote authoritative sources; usually through [DNS](https://en.wikipedia.org/wiki/DNS). When resolving a peer's hostname, you will most likely use an external source for resolution unless have the following implemented:
- a database file similar to a [hosts file](https://en.wikipedia.org/wiki/etc/hosts)
- an internal-network resolver (which eventually pulls from external sources)
### Notes
- Monero primarily uses @canonically-unique-host resolution while @I2P only uses @locally-unique-host resolution.
- @I2P's and @Kovri's assigned top-level domain is currently `.i2p` and @Kovri intends to only process/use the `.i2p` [top-level domain](https://en.wikipedia.org/wiki/Top_level_domain)
---
layout: moneropedia
entry: "Data Directory"
tags: ["kovri"]
terms: ["data-directory"]
summary: "Where essential kovri data for runtime is stored"
---
### The Basics
Depending on your OS, @Kovri currently stores all run-time data in the following directory:
- Linux/FreeBSD:
- `$HOME/.kovri`
- OSX:
- `$HOME/Library/Application\ Support/Kovri`
- Windows:
- `"$APPDATA"\\Kovri`
This includes all configuration files, @address-book, certificates, and resources.
---
layout: moneropedia
entry: "Destination"
tags: ["kovri"]
terms: ["destination"]
summary: "A Kovri/I2P address that serves as a final endpoint"
---
### The Basics
A destination is the @I2P address of the final endpoint you are trying to connect to (an @I2P website or service).
TODO(anonimal): finish
### In-depth Information
An @I2P destination can be encoded into a @base32-address or @base64-address. Most users will only care about @base32-address or a `.i2p` hostname while, internally, @Kovri will use the @base64-address.
TODO(anonimal): finish
---
layout: moneropedia
entry: "I2P"
tags: ["kovri"]
terms: ["I2P"]
summary: "The Invisible Internet Project: an anonymizing overlay network"
---
### The Basics
From @Java-I2P's [website](https://geti2p.net/):
>The I2P network provides strong privacy protections for communication over the Internet. Many activities that would risk your privacy on the public Internet can be conducted anonymously inside I2P.
### In-depth information
From @Java-I2P's [website](https://geti2p.net/):
>I2P is an anonymous overlay network - a network within a network. It is intended to protect communication from dragnet surveillance and monitoring by third parties such as ISPs.
>I2P is used by many people who care about their privacy: activists, oppressed people, journalists and whistleblowers, as well as the average person.
>No network can be "perfectly anonymous". The continued goal of I2P is to make attacks more and more difficult to mount. Its anonymity will get stronger as the size of the network increases and with ongoing academic review.
Details and specifications are available [here](https://geti2p.net/docs/).
---
layout: moneropedia
entry: "Java I2P"
tags: ["kovri"]
terms: ["Java-I2P"]
summary: "The original implementation of I2P; written in Java"
---
### The Basics
The term "Java I2P" is often used to describe the original @I2P implementation currently most known and used today.
There are various other @I2P implementations, including @Kovri; all of which look up to this original implementation.
To download/learn more about the Java implementation, visit their [website](https://geti2p.net/).
---
layout: moneropedia
entry: "Jump Service"
tags: ["kovri"]
terms: ["jump-service"]
summary: "An I2P website service that adds addresses to your address book"
---
### The Basics
In your @I2P configured web browser, you can use a Jump Service to *jump* to an @I2P address that you don't have in your @address-book. Once you've *jumped* to the address, the address will be saved into your @address-book.
### In-depth Information
In an @I2P configured browser, visit: http://stats.i2p/i2p/lookup.html (courtesy of @Java-I2P's lead developer *zzz*)
Then, you'll have two options:
1. *Hostname lookup* the address you wish to visit and then manually copy/paste the result
2. *Jump* to the @I2P website by entering the @I2P hostname (**recommended**)
### Using hostname lookup
For example, entering `pinkpaste.i2p` into the *Hostname lookup* box (and then submitting) will return:
{:.cli-code}
pinkpaste.i2p=m-HrPrIAsdxts0WM~P4mE8mt9P7g-QTaBvu7Gc6Nl0UX7Vwck-i~RvOPfK6W~kfdRvwhNTqevkBL2UF5l36We02Aiywu7kB2xOHRkze68h-Tg2ewvRVwokohguCD2G3wwAEz~7FVda2avYDCb9-N6TfuzxKLnmhPMvbNSjGL7ZsD2p-h207R3-2kvuMV9bfu-K~w9NI9XJhIyufvUnFYc2jnTVg8PbaR4UP57cNaOO2YIMPkbr6~yTcIu9B1sUfHK6-N~6virQDOxW4M-62rjnZkLpaCtkOsXslmCwZI--TkZ6hKi1kXZvNmJRE1rYfffYRFn38zhaqszeETX8HiIvahZhXF5fNumBziYdmLdw8hkuN1A~emU6Xz9g~a1Ixfsq1Qr~guYoOtaw-0rOFxNRS9yMehE-2LCb8c-cAg6z5OdlN4qJDl~ZHgru4d~EHp~BpAK3v7u2Gi-8l1ygVW-1CHVna~fwnbOPN3ANPwh6~~yUit0Cx1f54XiNRn6-nPBQAEAAcAAA==
Copy/paste this [email protected] pairing into your **private** @subscription.
### Directly jumping
For example, entering `pinkpaste.i2p` into the *Jump* box (and then submitting) will automatically redirect you to the website **and** insert the @locally-unique-host into @address-book.
---
layout: moneropedia
entry: "Kovri"
tags: ["kovri"]
terms: ["Kovri"]
summary: "Monero's C++ router implementation of the I2P network"
---
### The Basics
TODO(anonimal): finish
### In-depth information
TODO(anonimal): finish
@Kovri @address-book
- Kovri Eepsite (hidden-service, garlic-site, garlic-service)
- Kovri Clearnet
- Kovri Cryptography (encryption, signatures, etc.)
- Kovri Network Database (RI, lease-sets, floodfill, etc.)
- Kovri Reseed
- Kovri Transports (SSU/NTCP)
- Kovri Tunnels (garlic routing, I2NP, etc.)
- Kovri I2PControl (links to API, clients + qtoopie)
- ...more/what else?
---
layout: moneropedia
entry: "Locally-unique host"
tags: ["kovri"]
terms: ["locally-unique-host"]
summary: "A host defined by you and resolved only by you"
---
### The Basics
A locally-unique host is a [FQDN](https://en.wikipedia.org/wiki/FQDN) defined by **you** and resolved only by you; similar to how a [hosts file](https://en.wikipedia.org/wiki/etc/hosts) is implemented. Not to be confused with @canonically-unique-host.
### In-depth information
You have the option to share your interpretation of how the host is resolved (e.g., `localhost` always resolves to `127.0.0.1`) but the resolution is not canonically enforced (e.g., someone else can map `localhost` to any arbitrary IP address).
Hosts in a public subscription can be considered @canonically-unique-host's within the @I2P network but, ultimately, you are free to re-define them as you wish.
### Notes
- Monero primarily uses @canonically-unique-host resolution while @I2P only uses @locally-unique-host resolution.
- @I2P's and @Kovri's assigned top-level domain is currently `.i2p` and @Kovri intends to only process/use the `.i2p` [top-level domain](https://en.wikipedia.org/wiki/Top_level_domain)
---
layout: moneropedia
entry: "Subscription"
tags: ["kovri"]
terms: ["subscription"]
summary: "A file used by address book which contains I2P hosts paired with I2P destinations"
---
### The Basics
A subscription is a file which contains a list of `.i2p` hosts paired with their respective @destination. Subscriptions are used by the @address-book.
### In-depth information
Similar to how a [hosts file](https://en.wikipedia.org/wiki/etc/hosts) can map an internet hostname to a specified address, a subscription matches a `.i2p` address to @base64-address by using the following format (no spaces allowed): `host=address`
More specifically, a subscription pairs a @locally-unique-host to @base64-address.
Example:
{:.cli-code}
anonimal.i2p=AQZGLAMpI9Q0l0kmMj1vpJJYK3CjLp~fE3MfvE-e7KMKjI5cPOH6EN8m794uHJ6b09qM8mb9VEv1lVLEov~usVliTSXCSHuRBOCIwIOuDNU0AbVa4BpIx~2sU4TxKhoaA3zQ6VzINoduTdR2IJhPvI5xzezp7dR21CEQGGTbenDslXeQ4iLHFA2~bzp1f7etSl9T2W9RID-KH78sRQmzWnv7dbhNodMbpO6xsf1vENf6bMRzqD5vgHEHZu2aSoNuPyYxDU1eM6--61b2xp9mt1k3ud-5WvPVg89RaU9ugU5cxaHgR927lHMCAEU2Ax~zUb3DbrvgQBOTHnJEx2Fp7pOK~PnP6ylkYKQMfLROosLDXinxOoSKP0UYCh2WgIUPwE7WzJH3PiJVF0~WZ1dZ9mg00c~gzLgmkOxe1NpFRNg6XzoARivNVB5NuWqNxr5WKWMLBGQ9YHvHO1OHhUJTowb9X90BhtHnLK2AHwO6fV-iHWxRJyDabhSMj1kuYpVUBQAEAAcAAA==
1. `anonimal.i2p` is the @locally-unique-host
2. `=` is the seperator
3. Everything that remains is the @base64-address
### Subscription types
For @Kovri, there are two types of subscription files: *public* and *private*.
A *public* subscription:
- is used when bootstrapping to use essential services (IRC, email, monero, etc.)
- is static and is refreshed every 12 hours from Monero's @address-book server
- allows you to safely share the subscription with everyone as it is publically available (anyone who shares the same public subscription will also be able to resolve the same hostname to the same destination as you)
A *private* subscription:
- is used exclusively by you and is not shared with others unless you explicitely choose to share the file
- default file is `private_hosts.txt` in your @data-directory
### Updating a private subscription
You can use a @jump-service to manually update your private subscription. The updated subscription will be then fed into the @address-book for you to use.
### Notes
To learn how subscribe to multiple subscriptions, see the [user-guide](https://github.com/monero-project/kovri/blob/master/doc/USER_GUIDE.md).
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment