Clone this wiki locally
How and why Golem will change the world (or at least the Internet)
What is Golem?
Golem connects computers in a peer-to-peer network, enabling both application owners and individual users ("requestors") to rent resources of other users’ ("providers") machines. These resources can be used to complete tasks requiring any amount of computation time and capacity. Today, such resources are supplied by centralized cloud providers which, are constrained by closed networks, proprietary payment systems, and hard-coded provisioning operations. Also core to Golem’s built-in feature set is a dedicated Ethereum-based transaction system, which enables direct payments between requestors, providers, and software developers.
The function of Golem as the backbone of a decentralized market for computing power can be considered both Infrastructure-as-a-Service (IaaS), as well as Platform-as-a-Service (PaaS). However, Golem reveals its true potential by adding dedicated software integrations to the equation. Any interested party is free to create and deploy software to the Golem network by publishing it to the Application Registry. Together with the Transaction Framework, developers can also extend and customize the payment mechanism resulting in unique mechanisms for monetizing software.
Who and why uses Golem?
The short answer is that Golem can be used (and should be used) by everyone who owns a computer.
The long answer is that how you use Golem depends on what you use your computer for.
If you are an average user, you are probably a provider only. Golem gives yours computer work to do when it is not used and you earn money this way. The money comes from requestors, paying providers for using their machines.
If for any purpose you need more computing time than you have on your machine - because you are CGI professional, scientist, financial market tycoon, cryptocurrency miner or anyone else fitting in the wide range of Golem’s use cases - then you use Golem as the requestor. You submit your task to the network, you get it done and you pay the providers for theirs machines time. Additionally, if the task you want to perform needs proprietary software - you can get it through the store.
And if you are owner of open source or proprietary software (like rendering engine, analytical packages, trading robots, specialised scientific packages, Dapp), you may want to use Golem as a distribution channel and (if you opt to charge for use) as a marketplace.
What is the state of the project and the way ahead?
The alpha version was launched in August 2016, with the code available for review in the next few days. The alpha version (codename Brass Golem) will be focused on CGI rendering in Blender (blender.org) and is mainly proof of concept, although we expect it will be useful for blender users and once we move to release version will have a group of dedicated users.
We provide the following plan:
...these are created to fulfill one goal
Brass Golem is where we are at the moment with our proof-of-concept, in alpha testing now. This current version of Golem is only focused on rendering in Blender and LuxRender, and although it will be useful to CGI artists, we consider CGI rendering to be a proof of concept primarily, and also a training ground. Brass Golem should be frozen within 6 months after end of crowdfunding period and a full battery of tests. Even though we do not expect that Blender CGI rendering will create enough turnover to justify all the work we have put into the project, this will be the first decentralised compute market.
There is a chance (...) that a Clay Golem will be possessed by a chaotic evil spirit.
Clay Golem is a big leap from the Brass milestone. Clay milestone introduces the Task API and the Application Registry, which together are going to make Golem a multi-purpose, generalized distributed computation solution. Developers now have the means to integrate with Golem. This advance, however, may come at the cost of compromised stability and security, so this version should be considered an experiment for early adopters and tech enthusiasts. Prototype your new ideas and solutions on Clay. Clay Golem should be delivered within 15 months after end of crowdfunding period.
Stone Golems do not revoke their creators control like (...) Clay Golems.
Stone Golem will add more security and stability, but also enhance the functionalities implemented in Clay. An advanced version of the Task API will be introduced. The Application Registry will be complemented by the Certification Mechanism that will create a community-driven trust network for applications. Also, the Transaction Framework will create an environment that will allow Golem to be used in a SaaS model. Clay Golem should be delivered within 24 months after end of crowdfunding period.
Iron Golems are made of iron and are among the strongest type of Golem. They never revoke the control of the wizard that created them.
Iron is a deeply tested Golem that gives more freedom to developers, allowing them to create applications that use an Internet connection or applications that run outside the sandbox. Of course, the decision to accept higher-risk applications will still belong to the providers renting their compute power. Iron Golem should be robust, highly resistant to attacks, stable and scalable. Iron will also introduce various tools for developers that will make application creation far easier. Finally, the Golem Standard Library will be implemented. Assuming that maximum financing will be reached, Iron Golem should be delivered within 48 months after end of crowdfunding period.
How Golem will help to build a new Internet of tomorrow?
We believe that the future Internet will be a truly decentralized network, enabling users to securely and directly exchange content, without sharing it with corporations or other middlemen. Accordingly, Golem will be used not only to compute specific tasks, but also to bulk-rent machines in order to perform operations within a self-organizing network. Of course, this will require the simultaneous development of other technologies, many of which have gained significant traction in recent years.
Better data-sharing technologies are necessary, but taking into account the ongoing development of IPFS/Filecoin and Swarm, the appropriate solutions seem to be within reach. Eventually, the Ethereum network will become more scalable, more efficient, and include a fully functional network of micropayment channels. Once these technologies become available, it is easy to imagine Golem primarily as a platform for microservices, allowing users to run both small (e.g. a note-taking app) and large (e.g. a streaming service) applications in a completely decentralized way. Although ambitious, this vision seems to be the ultimate argument for Golem’s long-term potential.
How Golem works?
Golem is a p2p network, ie. there is no central server and users are equally privileged. People who want to compute some tasks in the network and people who have computer power to rent broadcast their offers in the network. Golem transaction system matches providers and requestors, taking into account prices, reputations and machines' performances. Resources, ie. files needed for computation are sent to provider's machine. After computation provider's app send back results to the requestor's app. If result passes verification process, provider is paid. If someone tries to cheat, for instance sends bad results or doesn't pay, he/she will lose reputation and won't be chosen again for computation.
Check our blog post to learn more.
How are your going to verify computations?
There will be different methods depending on the task type. User who adds a new task can implement a new verification method that suits for this new problem. Possible solution may involve:
- simple correctness checking of the result, eg. proof-of-work,
- redundant computation, ie. few providers compute same part of the task and their results are compared,
- computing small, random part of the task and comparing this part with result send by provider, ie. comparing color of few random pixels in rendered picture,
- analysis of output logs.
Why are you making it decentralized?
We believe that decentralization will be the direction in which future of internet development will be going. With the decentralization of the system it will be possible to achieve full scalability without expanding and maintaining of own network and server infrastructure; the solution will also be free from single points of failure and resistant to attempts to disable and censorship.
Why are you using Ethereum?
We are building the transaction framework on top of Ethereum. Ethereum gives us expressive power, which is much-needed when implementing advanced, trustless schemes. Check our blog post to learn more.
Are you using some external solutions / libraries?
Golem business model
How will payments work in Golem?
When creating something new and exciting, it’s hard if not impossible to predict all the opportunities which the new artifact will suddenly make possible. Golem is a generalized global supercomputer, and as such, it will no doubt find its niche with vastly varied applications. They might need very diverse remuneration models. We are not able to design a one-size-fits-all payment system for Golem, nor will we attempt to force one upon application authors. When a developer integrates her application with Golem, she has the freedom to decide which transaction model she implements, as long as it is compliant with Golem's Transaction Framework. The Transaction Framework will take the form of a set of requirements to follow; basic requirements may include:
- Entry in the Application Registry;
- Use of open source and/or deterministic environment, such as EVM;
- Community approval or rating of transaction model;
- Use of GNT for remunerating software and resource providers We are building the transaction framework on top of Ethereum. Ethereum gives us expressive power, which is much-needed when implementing advanced, trustless schemes. Example transaction framework components:
- Diverse payout schemes such as nanopayments, batching
- Off-chain payment channels
- Custom receipts
- Payment to software developer
- Per-unit use of software (per-node, per-hour, etc.)
It is also possible to introduce more sophisticated components into the transaction model design, to meet specific goals not related to payments. For example: Requestor escrow for tasks where a higher level of commitment is required (high price because of specialized hardware or long running subtasks); the requestor may create a two-party escrow account and require providers to take part in it.
- Provider deposit: the requestor may require to be in control of some amount of timelocked GNT.
- Requestor deposit: the provider may accept tasks only from requestors who are in control of some amount of timelocked GNT.
- Registration of a task as an anchor for a TrueBit-style conflict resolution fallback mechanism.
What are use cases for Golem?
The first and very illustrative use case of Golem is CGI rendering. Other technically similar to implement use cases are scientific, engineering, statistical and financial tasks which need extensive computing and are (technically) feasible to distribute. Check our blog post to learn more about potential ideas.
We are not going to explore and develop all possible use cases, but we will rather focus on delivering task API, Golem Standard Library to give developers ability to integrate any software with the Golem Network. Many use cases will need proprietary software, either existing or designed specially for Golem. To facilitate the use of both open and proprietary software, we will introduce Application Registery to enable any requestor to use Golem-ready software. If the software is proprietary, then requestor will be able to use it in a software-as-a-service model. This way Golem will act not only as a market for computing power, but also as a distribution channel for software creators.
Why price of computing will be lower in Golem Network?
The prices are expected to be low because the market will be very close to textbook perfect competition concept: the product (compute) is homogenous, the information for both requester and provider is almost complete, all requestors and providers have very small market share and have negligible impact on overall prices, barriers to entry and exit are very low. And on the market with near perfect competition the prices are as low as they can be to have producers (providers) still on the market - which means that Golem Network will create situation very different to the today's internet infrastructure - with a few large providers and a market close to the monopolistic competition.
Check our blog post to learn more.
Why Golem is unlikely to be successfully copied?
Golem software is open-source and as such it can be forked by other parties. We are sure that over time many Golem forks will emerge either for specialised or general purposes. We believe that in its core business Golem will not be endangered by this process because:
- Golem business model strongly favors larger network over the smaller network, so the first and largest network will always be preferable solution over the smaller networks.
- What Golem Network delivers is an infrastructure, open for any project, software, dapp, community etc. willing to use it. So any individual or organisation interested in building own decentralised solution (or own decentralised market place) will be able to use Golem as a platform, without a need of copying it. Therefore developers of software will not be interested in copying Golem as long as we will be able to provide all features they need.
- Requestors choose where to buy compute based on price and functionality. Our real competitors are Amazon Web Services, Google Cloud and other cloud providers. Our aim is to provide similar functionality at much lower prices.
Can you use private data for computation? Can providers see your data?
Unfortunately, right now Golem cannot support private data. Computing application usually needs direct access to the data and they have to be decrypted at some point. Therefore, curious providers may see what exactly is computed on their machines and see their part of the data.
What if someone would like to use Golem for DDoS, Botnet or other illegal activities?
Computations takes place in an isolated environment that doesn’t have access to the network, so Golem can’t be used for DDoS or Botnet this way. We'll consider preparing special type of tasks that may have access to external data, but they won't be executed on machines if the provider doesn't deliberately agree to this.
Is it safe?
Every new technology is exposed to attacks, especially, new and unpredicted ones. All components of Golem application will be designed to be robust to the attacks.
Key security elements will be:
- computation taking place in isolated environments with minimal privileges and lack of external network connectivity.
- Well-known safety cryptography based on elliptic curves.
- Signed and encrypted messages inside the Golem network ensuring authenticity, which protects against man-in-the-middle attacks and passive data collection.
- Reputation system helping to detect malicious nodes and mitigate them and additionally evaluating metrics to assist in secure, efficient and correct task routing.
- Whitelist and blacklist mechanisms allowing providers to build trust networks and run only applications prepared by trusted developers.
- Together, the application registry and transaction framework mitigates Sybil and whitewashing attacks by providing an incentive to participate, introducing an economic and computational cost to participation, and providing a metric for reputation in order to maintain optimal connectivity.
- The Ethereum integration and transaction framework makes possible custom payment-based security mechanisms, eg. escrows, deposits, insurance and audit proofs.
- Security audits will be conducted for every release, performed by external contractors.