DEVELOPER TECH NEWS #1
A few days ago I received some wonderfully pithy advice on my Twitter account — “Less Tolstoy, more tech please!”. Of course I’d give my right arm to write like Tolstoy. I mean who wouldn’t? But as Golem’s new Chief Communications Officer, I can see that the demand is clear; our community wishes to be better informed about technical development issues. After all, more than anything else Golem is a technological project, and one of today’s most innovative companies in the blockchain sphere. So that’s why with this post we are starting a new weekly blog series with news from our developers’ team. This won’t replace our regular bi-weekly video dev update series, which is meant for a broader audience. Instead, this weekly post will be dedicated to discussing the core technology we’re both creating and integrating, and is therefore aimed at the technically minded.
Before we get into the specific challenges and progress updates — there is a lot of great news contained below — Golem’s lead software engineer, Aleksandra Skrzypczak remarked that many of the challenges in developing Golem’s p2p network could make the basis of several PhD theses. That hasn’t discouraged her or the team. Sometimes Golem developers have had to face these problems head on. But it has also meant, as Aleksandra says, that Golem’s roadmap has shifted to steer around some of these issues so we’re not stuck in “endless research”. So if it has seemed recently like our roadmap has changed and modified this is true. All good plans must be flexible in the face of reality. But I do hope that these series of posts will make those roadmap changes, and why they have been necessary, better understood by our community of enthusiasts, specialists, investors and friends.
DEVP2P — GEVENT/REACTOR INTEGRATION
As a critical part of Golem going forward, we’re keeping a close eye on the pydevp2p implementation. However, there are a few easily observable snafus since the entire Golem platform is based on Twisted reactors, and pydevp2p uses the gevent system. After some recent, difficult changes, we decided to connect those two parts via an asyncio loop: Since the gevent loop can be easily switched, it can use an asyncio loop as well. This in turn gives us the ability to utilize Twisted’s extant asyncio reactor. Thus we can now deliver without yet another major refactoring.
STATS MONITOR BUGFIXING
We have moved to event base reporting as opposed to current aggregate based reporting, which will ensure more flexibility in formulating conclusions and improving Golem. We know that reporting client crashes can help improve product quality and will lessen the burden on less technical users when reporting problems. And this task has also been completed.
A Sybil attack occurs when a system is subverted by forging identities. For Golem as a peer-to-peer network it is a big threat. By creating a large number of pseudonymous identities an offender may gain a disproportionately large influence. Our research has told us that resistance to Sybil attacks depends on at least three possible things: how difficult it is for identities to be generated, nodes may accept a remote identity based on a central authority, or nodes may force some proof of work to be done before direct connection.
GUI CHANGES: TASK DETAILS, CODE REVIEW AND CLEANING
There was a little bug on the estimated price field in task details/new task form. If the task was too long it was affecting the width of the screen. We have fixed this and improved it in a more human-readable way. We have also cleaned some unused constants/variables. We have also made some changes in Preview Navigation. Users can now click navigation arrows in preview mode to switch between HQ frames for multiframes tasks. Also, we have prepared some updates related to the feedback. (We are going to report on that in our next DEV UPDATE MOVIE to be released this week so stay tuned!).
HyperG: BUGFIXING, UPLOAD PROGRESS METER
We have solved problems with different bugs on the HyperG, our resource sending mechanism — when adding multiple data as parameters and while deleting data.
SIMPLE FAKE TASK IMPLEMENTATION FOR TESTS
For last couple of days we’ve been working on a so called “fake task” which will serve a number of different purposes. Running more complicated tasks for testing is not only time-consuming, these tasks can also fail for reasons beyond what can be described as “core Golem” issues. The task should also serve as a reference implementation for people writing more complicated tasks and it should be helpful in machine learning. In addition to testing, its other purpose is to create as a convenient template which can fill with other computational code.
We hope this starts to satisfy the desire for information from our non-Tolstoy/pro-Tech community. Of course we still have a lot to say and to prove it, we will be back with DEVELOPER TECH NEWS #2 next week.
Marek Osiecimski, CCO & DEVS TEAM