Blog‎ > ‎

Agoras, Voting, and JSON

posted Mar 1, 2015, 8:46 PM by Ohad Asor   [ updated Mar 3, 2015, 10:39 AM by Felicity Perry ]
I'd like to explain the tau node from the JSON point of view, which is nowadays perhaps the most compatible and popular protocol for client server communication and is very human readable.

JSON-LD was designed to be compliant with RDF as can be seen here, for example. We can go straight from JSON to RDF (Ontologies) easily, and in fact many parsers support it.

JSON is mainly used now to transfer data between machines. What if we could write our computer programs themselves in this syntax, in the very language programs speak with each other, yet make them human readable?

To make JSON-LD a programming language we have to add to it the semantics of implication: the ability to express "A implies B". Then we can define a process: input->A->B->C->output. Mathematically, once we take the expressiveness of JSON-LD and the semantics of implication, we can build any computer program. 

The knowledge base contains two types of records: facts and rules. Facts are a quad [context,subject,verb,object] and rules are facts where the verb is implication (log:implies). The reasoner's role is to find an answer to a given query and supply a proof (a chain of implications) of how this result is followed by the facts and rules.

Tau's client, which we're working hard on now and will be delivered soon, is a C++ program including a JIT reasoning engine (written from scratch) that is wrapped with DHT and networking builtins. The wrapper will log events to the knowledge base such as received messages, and query the reasoner for actions to be taken now, where actions are basically TCP/UDP connect/listen/send/receive (hence able even to implement a local web application with HTTP server), DHT get/set, and local store get/set. All in JSON.

Tau node will be ran with any "root" or "genesis", at the choice of the user. Everyone can create a genesis. This is nothing but a DHT hash key to a JSON document, and the client will bootstrap from that code. We will provide a genesis that will implement blockchain timestamping, but it is not obligated for the client to bootstrap from it.

A middle-note about voting: as known, there's no distributed and trustless voting mechanism that solves the problem of creating many identities. This is unsolvable because the very truthful answer is: it depends. Sometimes you want majority of citizens carrying an official ID, sometimes you want majority of nodes, sometimes majority of hashing power and so on. 

There's also the not-always-easy question of what is it we want to vote over. No off-the-shelf majority-wins scheme exists because many things vary from case to case. In this sense, tauchain is indeed the ultimate solution: you can design voting in the most general and flexible way.

Now I'd like to give some explanation about what Agoras is. Agoras is like tau in that it has the notions of proofs and communication, but with additional notions of time, ledger, and reward. It is basically implementing a Bitcoin-like thing over tau, but it has far reaching powers: the ability to prove now gets a new meaning.

The strength of Agoras over existing cryptocurrencies is based on the logical properties and strengths of the representations and the network, mainly this logic being decidable, so every truth statement can be proved, yet is expressive enough.

On say Bitcoin, you can reward coins to one who provides a cryptographic signature proof. In tau we can express our own rules and demand a proof that the rules have met. You can set a rule that one will get coins if they, for example:
  • Write a code that passes a given unit-test.
  • Prove a fact or a consequence from wikipedia's data (dbpedia).
  • Run some code by supplying an execution proof.
  • Meet some custom achievements e.g. financial or educational tests.
You can also create a DAC with your own custom rules and combine methods from different sources (code reuse): like some auctioning or trading or voting or pricing algorithms that were already implemented over tau. 

Once everything can be expressed in human comprehensible knowledge and rules, and given a software that is able to figure out by itself from this data what to do and can communicate with others, electronic markets get a whole new meaning.

Much more to say, and will say more.

Until next time,

A few days ago I uploaded a new version of the PDF to