05 — The Golem System

Golem is a platform to earn digital currency by renting out your computer’s resources — idle CPU cycles, free RAM, free HDD, network bandwidth, and more in the future. The Brass release is focused mainly on idle CPU cycles and RAM. Below we’ll outline the main parts of the Golem system

05.1 Nodes

The Golem network consists of nodes. Each node is a device which either shares resources (mostly CPU and RAM in the Brass release) for which it gets paid by the network or a device which can be used to send tasks to the network and have them computed for a negotiated fee. Nodes form a P2P network which represent the Golem platform. For more, see Golem Nodes

05.2 Actors

At this point there are there are three types of actors in the system and a single node can represent one or more types

Requestor

A core actor which sends computational task to the network, and specifies the task constraints (e.g. number of subtasks, the way a task is split into subtasks, timeouts and fees)

Provider

A core actor which shares resources and calculates requestors’ tasks for a fee. Currently resources are shared as Docker containers running software required to compute tasks

Software provider

Either a node or an external entity which provides proprietary software that can be used in the Golem network (e.g. providers run this software inside Docker containers and the software providers get additional remuneration for each computed task)

More actors can be introduced to the system in the future

05.3 Tasks

Tasks sent by a requestor are formally described computation requests consisting of:

Conducting a test which allows the system to estimate the task and subtasks complexity (in terms of required computational resources and estimated time that may be required using some predefined CPU power)

Required software that provider must run (e.g. specified renderer)

Subtask specification (how a task is split into subtasks). Subtasks are supposed to be computed in parallel by provider nodes

Estimated performance for the task/subtask

Timeouts (timeout for the whole task, timeout for a single subtask)

Fee - depends on the model but at the very least it must specify the fee for the whole task and a fee for single subtask.

If proprietary software is to be used then additional payments to the software provider may also be included. In the future additional payment schemes may require additional fees or include additional actors

05.4 Computation

Task computation consists of the following steps

Task specification is broadcast to the Golem network by a requestor (this may include communication with 3rd party services in the cases where proprietary software is used)

Provider nodes decide whether they want to compute the task (taking into account the timeouts and required software and resources) and accept or decline the subtask. In case a subtask is accepted, the provider computes the result, sends it back and gets paid for either used resources or computed task (additional schemes are possible)

Requestor node accepts the task and pays the fee

05.5 Fees

The way fees are paid within the Golem is implemented by the transaction framework which specifies all contracts and protocols required to perform all payments in the Golem network