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.
Golem Network has officially gone on mainnet with the Beta I release.
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!
For a more in-depth look at how Golem works, head over to our documentation.
- agent/provider - provider agent implementation based on core services.
- core - core services for the open computation marketplace.
- exe-unit - ExeUnit Supervisor.
- service-bus - portable, rust-oriented service bus for IPC.
- test-utils - some helpers for testing purposes
- utils - trash bin for all other stuff ;)
- docs - project documentation including analysis and specifications.
The public API rust binding with data model is in the ya-client repo.
The public high-level API for Python is in yapapi repo and the JS/TS port is contained in the yaJSapi repo.
We call our runtime ExeUnit. As for now we support
- Light VM - QEMU-based ExeUnit.
- and WASM in two flavours:
- wasmtime - Wasmtime-based ExeUnit.
- emscripten - SpiderMonkey-based ExeUnit.
Other ExeUnit types are to come (see below).
With the MVP out, in the form of the Beta I, Grace Hopper release. The release includes:
- Clean and easy UX, most specifically during onboarding.
- GLM-centric.
- Production-ready, modular and easy to maintain architecture and code base.
Modular means that all the building blocks can be easily replaceable. - Documentation and SDK for developers.
- Small footprint binaries.
- Distributed computations
- Batching
- Services (optional)
- Computational environment (aka ExeUnit)
- Wasm computation
- Light vm-s (optional)
- Docker on Linux (optional)
- SGX on Graphene (optional)
- Payment platform
- Payments with GLM
- Gasless transactions
- ERC20 token
- payment matching (optional)
- Transaction system
- Usage market
- Pay per task
- Pay for dev (optional)
- Network
- P2P (Hybrid P2P)
- Ability to work behind NAT (Relays)
- Verification
- Verification by redundancy
- No verification
- Verification by humans (optional)
- Back compatibility
- Golem Brass/Clay interoperability (optional)