Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/golemfactory/yagna

An open platform and marketplace for distributed computations
https://github.com/golemfactory/yagna

golem

Last synced: 3 days ago
JSON representation

An open platform and marketplace for distributed computations

Awesome Lists containing this project

README

        

## 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](https://blog.golemproject.net/mainnet-release-beta-i/) 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](https://github.com/golemfactory/awesome-golem/blob/main/README.md#%EF%B8%8F-apps) 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.](https://docs.golem.network/)

## Project Layout

* [agent/provider](agent/provider) - provider agent implementation based on core services.
* [core](core) - core services for the open computation marketplace.
* [exe-unit](exe-unit) - ExeUnit Supervisor - a common part of all [runtimes](#runtimes) for yagna.
* [test-utils](test-utils) - some helpers for testing purposes
* [utils](utils) - trash bin for all other stuff ;)
* [docs](docs) - project documentation including analysis and specifications.

## Public API
The public API rust binding with data model is in the
[ya-client](https://github.com/golemfactory/ya-client) repo.

## High Level APIs
The public high-level API for Python is in
[yapapi](https://github.com/golemfactory/yapapi) repo and the JS/TS port is contained in the [@golem-sdk/golem-js](https://github.com/golemfactory/golem-js) repo.

## Runtimes
We call our runtime **ExeUnit**. As for now we support
* [Light VM](https://github.com/golemfactory/ya-runtime-vm) - [QEMU](https://www.qemu.org/)\-based ExeUnit.
* and WASM in two flavours:
* [wasmtime](https://github.com/golemfactory/ya-runtime-wasi) - [Wasmtime](https://github.com/bytecodealliance/wasmtime)\-based ExeUnit.
* [emscripten](https://github.com/golemfactory/ya-runtime-emscripten) - [SpiderMonkey](https://github.com/servo/rust-mozjs)\-based ExeUnit.

Other ExeUnit types are to come (see below).

## Golem Beta Release(s)
Important milestones for Golem development were [Beta I](https://github.com/golemfactory/yagna/releases/tag/v0.6.1) and most recent [Beta II](https://github.com/golemfactory/yagna/releases/tag/v0.7.0). 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](https://docs.golem.network/) for Golem app developers.

## List of implemented and planned functionality

1. Distributed computations
* [x] **Batching**
* [x] Services _(PoC stage)_
1. Computational environment (aka ExeUnit)
* [x] **Wasm computation**
* [x] Light vm-s
* [ ] Docker on Linux _(optional)_
* [x] SGX on Graphene _(PoC stage)_
1. Payment platform
* [x] **Payments with GLM**
* [x] [**ERC20 token**](https://blog.golemproject.net/gnt-to-glm-migration/)
* [x] **Layer 1 & [Layer 2](https://blog.golemproject.net/new-golem-alpha-iii-reveal/) transactions**
* [ ] Payment matching _(optional)_ (Ability for the invoice issuer to match the payment with Debit Note(s)/Invoice(s)).
1. Transaction system
* [x] **Pay as you go(lem)** ([see more](https://blog.golemproject.net/pay-as-you-use-golem-a-brief-but-effective-primer/))
* [x] **Pay per task**
* [ ] Pay for dev _(optional)_
1. Network
* [ ] **P2P** (Hybrid P2P; in progress)
* [ ] **Ability to work behind NAT** (Relays; in progress)
1. Verification
* [ ] **Verification by redundancy** ([see also](https://blog.golemproject.net/gwasm-verification/))
* [x] **No verification**
* [ ] Verification by humans _(optional)_

## Road ahead

We are actively working on improving Yagna and extending its functionality, check upcoming releases and other news on [our blog](https://blog.golem.network/).