Inspiration

To make blockchain technology more usefull in the real world.

What it does

Allows people to be assigned tasks, for them to perform the tasks, and then their payment automatically gets taken care of on the blockchain. Multiple independent people check the same thing, and those who are not in concensus with the others, they get slashed to ensure they are incentivised to perform the task correctly.

How we built it

A python external adapter which acts as an bot on the xmpp network.

Challenges we ran into

Getting up to speed with ABI's was interesting. I definitely leveled up on python classes.

Accomplishments that we're proud of

It's quite easy to use. I think even my grandmother could use it (from the normal user's perspective that is, the smart contract could do with a front end).

What we learned

XMPP is a very cool protocol. XMPP | The universal messaging standard. We put a lot of effort into decentralising our block chain systems, why dont we prioritise our communication systems in the same way?

Having good tools is so important. Without them you're blind. Using tcpflow to watch the packets as they flowed in and out of the node allowed me to see where the two sides wheren't getting what they were expecting.

What's next for Real World Auditor

There is only one node and one external adapter that is reporting on what is being said, which isn't very trustless. The next step for the Real World Auditor is to add the functionality that when a new person requests to join an audit, a temporary chat room is opened up between the person interacting and the bot that initiated the audit. This chat room's address is then broadcast to the other nodes that want to participate. They then join the chat room. Then the nodes themselves can ensure there is consensus as they all receive the data at the same time, and if someone lies, they get slashed. Which then creates a base platform for reaching concensus on real time data coming from a single source. XMPP can transport all kinds of data. Would be a great adapter to record information coming from an IoT device. XMPP is a very flexible protocol, and ideal for transporting data from such small devices.

I also see this as a single tool in a chain of tools that I want to build that work on a similar basis to this one. This one garners truth about whether some statement is correct or not. "Has been done?" .

The next step is "What is the reading of ?" This could allow a city to put meter readings out for anyone to go and do. There would have to be some avg done etc.

The next is "Go do this". This one would be only redeemable by one person.

This then allows a city for example, to add a task of "Go remove the leaves from this piece of land". Someone applies for it, and then responds that they've done the task. The system then initiates an audit, that says "Have the leaves over there been removed?". A bunch of people grab that task and go and check. If there consensus says it has been done, then payment is transfered to the person who removed the leaves. If not, they get slashed and loose money for lying.

This could be used as a way for a charity to try and uplift a community as well. Say for example there is an area that needs some financial help. Someone could go and log a whole bunch of tasks that need doing in their area. For example, pick up litter here, weed flower bed there, go fetch the old lady next door some water. Then the charity makes funds available for the tasks to be done. Anyone who is willing is then able to have a source of income, and have that income help improve their living conditions in the long run.

The next step is "I have identified this problem". Someone could be walking down the street, and they see a pothole. They take their phone out, open their xmpp chat client, take a quick picture and send it to the city's EA Bot.

The Real World Auditor can then be used to check whether the reported problem is a real problem or not. If it is deemed to be a problem, then it is parsed to the next step. If not, the person who reported the problem incorrectly gets slashed. Slashing will be necessary to prevent spammers.

The next step then is still a bit blurry to me, but basically I need to convert a problem into an action. Some sort of problem/solutions market, I'm not sure.

However, assuming the previous step created an action, that action can be put out as a task to be done.

A good test case would be a festival of some sorts. You pay your fee, and you go to the festival, however, if you do odd jobs at the festival, you can get your ticket money back. That makes festivals more accessible to those who can't necessarily afford to go, and it decreases the staff demand for the organisers. A festival goer would see some rubbish piling up, take a photo, and reports it, that then gets assigned to 3 other festival goers to check whether it is a real problem or not? This can be done using the photo that was initially sent in. If it is a problem, it gets past on to the central control. If it is not, the person who reported the problem gets slashed, so they loose money. At central control, they check what the problem is, and then they issue the next action as a task, which can be picked up by any festival goer. If a festival goer says they have done the task, eg picked up the rubbish, then 3 other festival goers are tasked to go an check whether or not the task has been done. If it has, the tasker is paid, if not, they are slashed. Some sort of auction mechanism could be applied to pricing, so eventually the money is going to be so good to go do that thing, that someone is going to do it. Would be a great experiment.

Another possible use is for voting for DAO's. The topic to be voted on can be sent to all registered DAO voters as a chat message. They can then respond with their vote. The counting could be done off chain, as there will be multiple nodes watching the individual chat rooms counting everyone's votes, so gas free except for the chainlink calls. Could decrease the barrier for community participation in voting.

XMPP <-> Chainlink <-> Gnosis Safe

Due to the node operator actually receiving an income in the form of LINK, that could pay them to run a XMPP server that is available to the public to use. The people that use that server for a chat server, then also use the financial services that the server offers, such as coordinating events, or simple escrow contracts etc. You could even go so far as to running an ethereum node, and then use xmpp to link your metamask or whatever client you're using to your local node via xmpp, instead of everyone relying on infura. These forms of income could make it financially viable to run smaller chat servers, which could help decentralize our communication networks.

Built With

Share this project:

Updates