Although I am still working hard and we are still far from a "working product" here my update for this weekend.
0. Disclaimer:
Forgive me, if something is not 100% perfect. But please understand that I am doing this absolutely voluntarily and in my spare time (usually a few hours after my day time job and on the weekends) and that I do not get paid for any of my work here (i really do not want so). I hope we get more people to help and create this wonderful piece of software. The reason why I eagerly want this project to succeed is that I regularily need large amounts of computational power "on demand" and Elastic would be my number one tool to do so.
1. General Technology:
I have been experimenting with the mini-blockchain approach that I have taken from Cryptonite's implementation and changed it so it supports our new (and in this thread developed) exponential proof-of-stake scheme. I have got it working pretty good, however I don't like the old bitcoin-client look. I felt we need something more "modern".
So I have taken the NRS as a basis (from NXT) and have performed the steps vice versa. I have taken their proof-of-stake mining approach, changed it to be exponential and implemented Cryptonite mini-blockchain instead of their old full bloated blockchain approach.
Sidenote: The "Nothing at Stake" attack, that we have been discussing a few month ago has been solved here. The approach is not field-tested nor is it peer-reviewed. I hope Lannister can kick off some reviewers to take a deeper look at it (if you read this, PM me).
Anyway, this way we have the same functionality (as we have discussed excessively here in this thread) but in a lot nicer and better looking "costume".
Alone these steps have taken me almost 10 days, and I hope you believe me that these are already 25% of the coin even though they mostly are details that happen under the hood and are not visible.
Furthermore, I have stripped everything unneccessary from the NRS. We can decide this here in the community, but I think it's better to have one coin that does one particular thing very good, instead of an "allrounder". So any kind of digital goods stores, monetary systems, etc. are gone. Pruning them cleanly from the source code took a while.
Then, I have extended the system with completely new features. We have now a "Cloud Computing" system that is both operable under the hood at protocol level, as well as operable through the GUI. The latter point is still under heavy development, but please check out the screenshots below for the first impressions. This operation is very basic at the moment (you can create work packages, you can send them to the network, and others can submit both the proof-of-works as well as the bounty-payment-requests as described in the white paper). That means that currently there is no correctness checks of either the work, nor of what is submitted by the workers that work on it. Think of it, currently, as a dummy functionality where all necessary adjustments to the protocol have been made, but the details "under the hood" are still missing. Those will be the "verifiable computation part" which is still ahead of us and which will take a huge amount of time to get it done correctly.
2. LUA:
Open for discussion as well. I have decided to use the LUA script language for the users to develop their works/tasks/to-be-solved algorithms in. Our client is written in Java, and there are many very good and long-tested LUA virtual machines / interpreters out there.
The goal, for the verifiable computation part (the part that ensures that the work which other "workers" perform and for which they want to get paid) can be verified easily and at a much lower cost. This will be done by an alternative virtual machine implementing the techniques as we described them in the whitepaper and as we (hopefull) will discuss here in the thread.
Lua additionally has the advantage, that there are efficient Lua-to-C or Lua-to-ASM compilers which, at a later point in time, will allow us to create more efficient and a lot faster "mining software" (not sure whats the right term here, mining? working? solving?).
These compilers will of course also need some adjustments, to implement our verifiable computation scheme.
3. Nice little details: Hashvatar:
I was a bit bored and I realized that there is something like randomly generated avatars based on your unique account ID.
I call them "Hashvatars" here, maybe you guys have a better term.
This not only looks cool, but also helps to avoid mistakes. So you always see your Hashvatas above your name and somehow get familiar with it. Now, when you want to withdraw/send XEL coins to your wallet, you can quickly verify that you have entered the correct destination address: this is the case if the Hashvatar looks the same.
4. The Cloud Computation Interface:
Here you see the pending work on the UI for the cloud computation feature.
The left sidebar allows you to enter two areas, the "Get Your Work" done, which allows you to create and submit new work packages, and the "Contribute and Earn" where you can see your efficiency, check out which work you have priorly contributed to, and see a live chart of your Computer Performance Statistics (CPU usage general vs. CPU usage for Elastic).
Here, I am still developing heavily. Right now you can view a list of work packages that you have already submitted to the network.
That is you see is they are active or they have been either solved or canceled, and you can see how much percent of them have been worked off already. The percentage basically means: When you have attached 1000 XEL to your program, and people have been paid 500 XEL of it already, then your work package is done 50%. If you cancel it, you get refunded with the remainder of 50%. You can also see in the UI how many bounties have been submitted: that means, how many (for you) relevant solutions already have been found by the users. This is indepentent of the periodic proof-of-work messages that the users generate to claim a payment for their work.
We have to write that down more technically, so everyone can understand that.
Anyway, the next parts that I am working on is:
- LUA Code Editor directly in the UI, so people can develop their work packages directly in the browser and so they immediately see how expensive it will be to push that task to the network. Also, I would like to have a "test" function so users can test and verify the correctness of their work package before they submit it to the network.
- Then I will finish the "Getting Your Work Done" interface, so you can actually view more details for your work packages: like for example detailed statistics, the rate at which the network is solving your work, the total CPU power involved and possibilities to beautifully extract the "relevant work submission". Also, the basic controls such as "renew this work" or "cancel and refund" will be done shortly.
5. Why are you working so much on the UI right now?
Well, the first (and time consuming part) was the mini-blockchain with exponential proof-of-stake. This is something that happens under the hood, and people cannot actually see the progress which may be frustrating. I have decided to spend 2-3 weeks on the GUI, get it ready, and then (while people can play with it) i will focus on the technical difficulties again which will take weeks of thinking and little visible changes.