Introducing Jeshka — The Quest Network — Part 2

that-rainbow
7 min readOct 12, 2018

--

So what is this again?

As part of the IOTA community, I decided to tackle a problem that I have wanted to solve since writing my first line of code collaboratively, now more than 15 years ago. This article is a continuation of Introducing the Jeshka Internet of Tasks (JIoT) — Part 1/5. Now roughly 6 months later, Jeshka became a big architecture. In this article, I’m going to talk about all the different moving parts on Jeshka.

Jeshka Desktop Alpha 0.1.9

Just whistle it!

Our signature scheme is inspired by the way dolphins identify each other. Whistles are the core for authentication and authorization on Jeshka. We all have different seed whistles that nobody else in this universe can ever forge.

A seed whistle on Jeshka is a 174 character string of random letters A-Z and the number 9. We can derive everything we’ll ever need to participate in the network from this seed whistle.

For instance, we sign Quests with quest specific private whistles that we derive from our original seed whistle. It is the first thing we do to prove to everyone in the universe that our signatures are authentic and that by consensus on the network the author of the Quest has to be the WhistleID connected to our permanent address, i.e. us.

We can also derive whistles that help us decrypt messages and files. The seed whistle is in the same format as IOTA seeds, so the first 81 characters can just be my IOTA seed, etc, etc. Literally every key we’ll ever need can be derived from this seed whistle.

Our WhistleID is a collection of important data about us. It is connected to all the whistles we generate to sign Quests on network. While we interact on Jeshka, we collect signatures that prove our WhistleID is indeed ours. The most important piece of data in our WhistleID is our unique and human readable permanent address.

Our address inherently describes how we can be found if someone loses sight of us and helps to verify unique one time whistles. Our addresses start with a list of all the parent domains down to our Home Domain from left to right.

For me this is jeshka://universe.vec1.sol1.earth.jeshka.collective.rainbow
and since we are all on the same planet here, most Jeshka apps allow a shorthand version and internally compute the full address, like so: jeshka.collective.rainbow or rainbow@jeshka.collective

This is my receiving address for all Quests directed at me. It can be used to send anything from encrypted text messages, financial transactions to terabytes of data. It’s not to be mixed up with old-timey email addresses.

For more information see:
https://jeshka.readthedocs.io/en/latest/protocol.html#whistles

I’m on a Quest!

Every piece of information that leaves our devices is wrapped up in something we call a Quest. This can be a simple text message, a financial transaction or references to an extremely complicated problem with many different moving parts that you are looking to get solved. Not just theoretical problems that is, we can even start Quests to build and furnish houses!

Imagine a Quest like a box with a set of instructions and in some cases with many different (financial) rewards. Whoever helps to resolve this Quest or parts of it will be able to unlock some of the instructions and some of the rewards from it. Well, maybe that example is not so great. If you can think of a better one, please let me know! ;-)

A regular financial transaction on Jeshka, “bring this amount of this currency that I own to this other person” is always a Quest signed with a unique one time whistle and your unique and permanent address.

Quests resolved in less than 5 seconds.

The five-second rule. If you start a Quest with a target that’s accessible within your economic cluster/domain, and a financial transaction or text message hasn’t resolved (is not confirmed) within 5 seconds*, we consider it failed or rejected.

With a modern laptop, a Quest for a financial transaction usually resolves within 500–2500ms within a given domain/economic cluster.

* refers to the timeframe during which a Quest is considered hot. A Quest is considered hot, starting when it has reached the first peer we connect to. We expect simple Quests to resolve within a maximum of 5000ms from now.

Once a Quest has resolved anywhere on the network it is considered resolved and the countdown stops. It may still take some time until we are informed that it resolved.

For more in-depth technical information see:
https://jeshka.readthedocs.io/en/latest/protocol.html#quest

“They say if you want to go fast, go alone. If you want to go far, go together. With Jeshka we can go fast together.”

How do peers on Jeshka reach consensus? While Jeshka allows us to establish blazing fast and highly secure peer to peer connections that can not be intercepted, a Quest is never resolved by just one person. We want to make sure the result is what we wanted, that our Quest hasn’t been altered and that nobody is trying to remove a reward from the box without having done their part correctly. Some people are better at some things than others and for some parts of our specific Quest, AI may be more suitable. If it doesn’t take the entire reward to resolve our Quest, we’re always happy to get some back and if the result exceeds all of our expectations, we’re free to tip the remainder to the people who did the best job on the entire Quest.

For all of that Jeshka uses Assemblies. The dictionary definition of an Assembly is “a group of people gathered together in one place for a common purpose.” and that’s just what an Assembly is on Jeshka. An Assembly is a very diverse group of participants, some who are proven to be very good at what they are doing, some have just started out and are resolving parts of our Quest as they are advancing on their learning curve. A Quest can be resolved by different Assemblies for different parts of it or if it involves moving objects across a large geographical distance, for different legs of the journey. An Assembly is a group of people, who are helping us assemble whatever our Quest is about on whichever network is the most suitable.

For more in-depth technical information see:
https://jeshka.readthedocs.io/en/latest/protocol.html#consensus

Wait, we can use every network?

Jeshka is network and consensus agnostic. We’re aiming to make use of IOTA’s capabilities. But really almost every network that meets our security and energy standards can be plugged into Jeshka and Quests as well as Resource Streams can leave the core networks and may get transported in ways we can’t even imagine right now. For example, a group of people in Cuba has recently resolved a Jeshka Quest only by using their own physical USB flash drive exchange network. Usually, the first Assembly or Assemblies that receive(s) your Quest decide(s) where and how to transport it from there.

Jeshka is a truly decentralized and distributed architecture.

It’s easy to build apps for Jeshka. On top of the core functionality on Jeshka, the Quest Machine, the official Jeshka Desktop App features a multi-currency wallet, a decentralized marketplace for virtual and physical items, a decentralized solution for couchsurfers, resource streams for data and media content, a decentralized replacement for irc and many other plugins.

Jeshka Wallet Alpha 0.1.8

You can create, import and distribute UI Templates. Take control over the look and feel when people visit your domain, flow or channel.

dIRC Plugin — Jeshka Desktop Visual Demo 0.1.4

For more in-depth information see:
https://jeshka.readthedocs.io/en/latest/applications.html

Easy to use for developers.

If you want to build an app for Jeshka, don’t think twice! We’re maintaining a JavaScript library that enables you to start a Quest in 5 easy steps. Just use:
jeshka = new JeshkaNode(); jeshka.startQManager(); jeshka.unlockWallet(seed Whistle); quest = new JeshkaQuest(); and put together your quest with easy setters and getters.

When you’re ready, let Jeshka whistle it jeshka.whistle(quest) for you, if you use this method, Jeshka will automatically sign and distribute the Quest. Jeshka is asynchronous, you can await jeshka.whistle(quest). You can also build a Quest that listens to a resource (stream) on the network!

Jeshka is non-profit and makes life hard for commercial enterprises.

Jeshka is a non-profit organization; All parts of Jeshka are released under the AGPL v3.0 license, that means any service that uses Jeshka has to publish the relevant source code.

Jeshka Desktop Alpha 0.1.9 — New Quest is locked, user has not enough balance

This account and all stories are a work of fiction. Names, characters, businesses, places, events, locales, and incidents are either the products of the authors’ imagination or used in a fictitious manner. Any resemblance to actual persons, living or dead, or actual events is purely coincidental.

--

--