Golem
Official Rust implementation of Golem. Golem is a network of nodes that implement the Golem Network protocol. We provide the default implementation of such a node in the form of the Golem daemon, Yagna.
A flexible, open-source platform for democratised access to digital resources.
Golem Network has officially gone on Ethereum Mainnet with the Beta I release in March 2021.
Golem democratizes society’s access to computing power by creating a decentralized platform where anyone can build a variety of applications, request computational resources and/or offer their idle systems in exchange for cryptocurrency tokens (GLM). The actors in this decentralized network can assume one of the three non-exclusive roles:
-
Requestor
Has a need to use IT resources such as computation hardware. Those resources are purchased in the decentralized market. The actual usage of the resources is backed by Golem's decentralized infrastructure.
-
Provider
Has IT resources available that can be shared with other actors in the network. Those resources are sold in the decentralized market.
-
Developer
Builds applications to run for requestors on the network. Golem's potential goes much beyond a singular application. See Awesome Golem for just a taste of the various types of applications that can be built and run on Golem!
Documentation
For a more in-depth look at how Golem works, head over to our documentation.
Project Layout
- agent/provider - provider agent implementation based on core services.
- core - core services for the open computation marketplace.
- exe-unit - ExeUnit Supervisor - a common part of all runtimes for yagna.
- test-utils - some helpers for testing purposes
- utils - trash bin for all other stuff ;)
- docs - project documentation including analysis and specifications.
Public API
The public API rust binding with data model is in the
ya-client repo.
High Level APIs
The public high-level API for Python is in
yapapi repo and the JS/TS port is contained in the @golem-sdk/golem-js repo.
Runtimes
We call our runtime ExeUnit. As for now we support
Other ExeUnit types are to come (see below).
Golem Beta Release(s)
Important milestones for Golem development were Beta I and most recent Beta II. With those releases we have delivered:
- MVP (minimum viable product), though not feature rich yet, it is usable for early adopters
- Clean and easy experience for new and existing users.
- Support for GLM payments (both L1 & L2 on Ethereum Mainnet)
- Production-ready and easy to maintain code base.
- Modular architecture with all the building blocks being replaceable.
- Small binaries (under 30Mb).
- Documentation and SDK for Golem app developers.
List of implemented and planned functionality
- Distributed computations
- Computational environment (aka ExeUnit)
- Payment platform
- Transaction system
- Network
- Verification
Road ahead
We are actively working on improving Yagna and extending its functionality, check upcoming releases and other news on our blog.