## 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.
<h5 align="center">
<a href='https://golem.network/'><img
width='500px'
alt=''
src="https://user-images.githubusercontent.com/35585644/111472751-939f5100-872a-11eb-8c26-926117080e35.png" /></a>
<br/>A flexible, open-source platform for democratised access to digital resources.
</a>
</h5>
</p>
<p align="center">
<a href="https://github.com/golemfactory/yagna/workflows/CI/badge.svg" alt="CI">
<img src="https://github.com/golemfactory/yagna/workflows/CI/badge.svg" /></a>
<a href="https://github.com/golemfactory/yagna/watchers" alt="Watch on GitHub">
<img src="https://img.shields.io/github/watchers/golemfactory/yagna.svg?style=social" /></a>
<a href="https://github.com/golemfactory/yagna/stargazers" alt="Star on GitHub">
<img src="https://img.shields.io/github/stars/golemfactory/yagna.svg?style=social" /></a>
<a href="https://discord.com/invite/golem" alt="Discord">
<img src="https://img.shields.io/discord/684703559954333727?logo=discord" /></a>
<a href="https://twitter.com/golemproject" alt="Twitter">
<img src="https://img.shields.io/twitter/follow/golemproject?style=social" /></a>
<a href="https://reddit.com/r/GolemProject" alt="Reddit">
<img src="https://img.shields.io/reddit/subreddit-subscribers/GolemProject?style=social" /></a>
</p>
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/).
Raw data
{
"_id": null,
"home_page": "https://github.com/golemfactory/yagna/core/serv",
"name": "golem-node",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "Golem",
"author": "Golem Factory <contact@golem.network>",
"author_email": "Golem Factory <contact@golem.network>",
"download_url": null,
"platform": null,
"description": "## Golem\n\nOfficial 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.\n\n<h5 align=\"center\">\n <a href='https://golem.network/'><img\n width='500px'\n alt=''\n src=\"https://user-images.githubusercontent.com/35585644/111472751-939f5100-872a-11eb-8c26-926117080e35.png\" /></a>\n <br/>A flexible, open-source platform for democratised access to digital resources.\n</a>\n</h5>\n\n</p>\n<p align=\"center\">\n <a href=\"https://github.com/golemfactory/yagna/workflows/CI/badge.svg\" alt=\"CI\">\n <img src=\"https://github.com/golemfactory/yagna/workflows/CI/badge.svg\" /></a>\n <a href=\"https://github.com/golemfactory/yagna/watchers\" alt=\"Watch on GitHub\">\n <img src=\"https://img.shields.io/github/watchers/golemfactory/yagna.svg?style=social\" /></a>\n <a href=\"https://github.com/golemfactory/yagna/stargazers\" alt=\"Star on GitHub\">\n <img src=\"https://img.shields.io/github/stars/golemfactory/yagna.svg?style=social\" /></a>\n <a href=\"https://discord.com/invite/golem\" alt=\"Discord\">\n <img src=\"https://img.shields.io/discord/684703559954333727?logo=discord\" /></a>\n <a href=\"https://twitter.com/golemproject\" alt=\"Twitter\">\n <img src=\"https://img.shields.io/twitter/follow/golemproject?style=social\" /></a>\n <a href=\"https://reddit.com/r/GolemProject\" alt=\"Reddit\">\n <img src=\"https://img.shields.io/reddit/subreddit-subscribers/GolemProject?style=social\" /></a>\n</p>\n\nGolem Network has officially gone on Ethereum Mainnet with the [Beta I release](https://blog.golemproject.net/mainnet-release-beta-i/) in March 2021.\n\nGolem democratizes society\u2019s 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:\n\n* **Requestor**\nHas 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.\n\n* **Provider**\nHas IT resources available that can be shared with other actors in the network. Those resources are sold in the decentralized market.\n\n* **Developer**\nBuilds 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!\n\n## Documentation\nFor a more in-depth look at how Golem works, head over to our [documentation.](https://docs.golem.network/)\n\n## Project Layout\n\n* [agent/provider](agent/provider) - provider agent implementation based on core services.\n* [core](core) - core services for the open computation marketplace.\n* [exe-unit](exe-unit) - ExeUnit Supervisor - a common part of all [runtimes](#runtimes) for yagna.\n* [test-utils](test-utils) - some helpers for testing purposes\n* [utils](utils) - trash bin for all other stuff ;)\n* [docs](docs) - project documentation including analysis and specifications.\n\n## Public API\nThe public API rust binding with data model is in the \n[ya-client](https://github.com/golemfactory/ya-client) repo.\n\n## High Level APIs\nThe public high-level API for Python is in \n[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.\n\n## Runtimes\nWe call our runtime **ExeUnit**. As for now we support\n * [Light VM](https://github.com/golemfactory/ya-runtime-vm) - [QEMU](https://www.qemu.org/)\\-based ExeUnit.\n * and WASM in two flavours:\n * [wasmtime](https://github.com/golemfactory/ya-runtime-wasi) - [Wasmtime](https://github.com/bytecodealliance/wasmtime)\\-based ExeUnit.\n * [emscripten](https://github.com/golemfactory/ya-runtime-emscripten) - [SpiderMonkey](https://github.com/servo/rust-mozjs)\\-based ExeUnit.\n\nOther ExeUnit types are to come (see below).\n\n## Golem Beta Release(s)\nImportant 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:\n* MVP (minimum viable product), though not feature rich yet, it is usable for early adopters\n* Clean and easy experience for new and existing users.\n* Support for GLM payments (both L1 & L2 on Ethereum Mainnet)\n* **Production-ready** and **easy to maintain** code base.\n* **Modular architecture** with all the building blocks being replaceable.\n* Small binaries (under 30Mb).\n* [Documentation and SDK](https://docs.golem.network/) for Golem app developers.\n\n## List of implemented and planned functionality \n\n1. Distributed computations\n * [x] **Batching**\n * [x] Services _(PoC stage)_\n1. Computational environment (aka ExeUnit)\n * [x] **Wasm computation**\n * [x] Light vm-s\n * [ ] Docker on Linux _(optional)_\n * [x] SGX on Graphene _(PoC stage)_\n1. Payment platform\n * [x] **Payments with GLM**\n * [x] [**ERC20 token**](https://blog.golemproject.net/gnt-to-glm-migration/)\n * [x] **Layer 1 & [Layer 2](https://blog.golemproject.net/new-golem-alpha-iii-reveal/) transactions**\n * [ ] Payment matching _(optional)_ (Ability for the invoice issuer to match the payment with Debit Note(s)/Invoice(s)).\n1. Transaction system\n * [x] **Pay as you go(lem)** ([see more](https://blog.golemproject.net/pay-as-you-use-golem-a-brief-but-effective-primer/))\n * [x] **Pay per task**\n * [ ] Pay for dev _(optional)_\n1. Network\n * [ ] **P2P** (Hybrid P2P; in progress) \n * [ ] **Ability to work behind NAT** (Relays; in progress)\n1. Verification\n * [ ] **Verification by redundancy** ([see also](https://blog.golemproject.net/gwasm-verification/))\n * [x] **No verification**\n * [ ] Verification by humans _(optional)_\n\n## Road ahead\n\nWe are actively working on improving Yagna and extending its functionality, check upcoming releases and other news on [our blog](https://blog.golem.network/).\n\n\n",
"bugtrack_url": null,
"license": "GPL-3.0",
"summary": "golem-node",
"version": "0.16.0",
"project_urls": {
"Homepage": "https://github.com/golemfactory/yagna/core/serv",
"repository": "https://github.com/golemfactory/yagna"
},
"split_keywords": [
"golem"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "67dad4d5a534a4e9620312fc69d857cc4090af6089aeb6dcb2e748da12ba7486",
"md5": "09c1849d89da6c75ded73d1bb9659a55",
"sha256": "9eeb6a7ae3c5d3c2e4c0d4322ba4fea204a968c681adce1965197ba00e131dce"
},
"downloads": -1,
"filename": "golem_node-0.16.0-py3-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "09c1849d89da6c75ded73d1bb9659a55",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 18671565,
"upload_time": "2024-08-29T06:31:04",
"upload_time_iso_8601": "2024-08-29T06:31:04.801077Z",
"url": "https://files.pythonhosted.org/packages/67/da/d4d5a534a4e9620312fc69d857cc4090af6089aeb6dcb2e748da12ba7486/golem_node-0.16.0-py3-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "12b3746b4fb3c359bbc7fc2f18dc8427216e8d91a2b0a996d0d942637caf56ed",
"md5": "d2f72026169ea2bf044fc69e0e8df8e3",
"sha256": "f3a3c1432add8d62a2885311b26192e178cb0440b7fcdb19a890524087b0fc16"
},
"downloads": -1,
"filename": "golem_node-0.16.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "d2f72026169ea2bf044fc69e0e8df8e3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 19625835,
"upload_time": "2024-08-29T06:31:06",
"upload_time_iso_8601": "2024-08-29T06:31:06.892388Z",
"url": "https://files.pythonhosted.org/packages/12/b3/746b4fb3c359bbc7fc2f18dc8427216e8d91a2b0a996d0d942637caf56ed/golem_node-0.16.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c846076c1eede07976e599ce5496ae08e5ff00bae958efb966eb5eb261bf29c1",
"md5": "b3682093cd4c74a1c1b9e5dc02b9056b",
"sha256": "8558e198469a25006886d1493e29880482977ac581d951c272eaeec70cd516c8"
},
"downloads": -1,
"filename": "golem_node-0.16.0-py3-none-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "b3682093cd4c74a1c1b9e5dc02b9056b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 20513339,
"upload_time": "2024-08-29T06:30:53",
"upload_time_iso_8601": "2024-08-29T06:30:53.280798Z",
"url": "https://files.pythonhosted.org/packages/c8/46/076c1eede07976e599ce5496ae08e5ff00bae958efb966eb5eb261bf29c1/golem_node-0.16.0-py3-none-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "607363ccf8043487fb6429fb86d9f98aef881eae171a0289d89a3f73f32d182b",
"md5": "8acdde4860a0c337ef0e6f5d2d595645",
"sha256": "f3614f7b2cdd0e43573e5e2b75e8bb1aa225805e6351cb94a0ed215abd9f69d2"
},
"downloads": -1,
"filename": "golem_node-0.16.0-py3-none-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "8acdde4860a0c337ef0e6f5d2d595645",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 20579525,
"upload_time": "2024-08-29T06:31:12",
"upload_time_iso_8601": "2024-08-29T06:31:12.446513Z",
"url": "https://files.pythonhosted.org/packages/60/73/63ccf8043487fb6429fb86d9f98aef881eae171a0289d89a3f73f32d182b/golem_node-0.16.0-py3-none-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-29 06:31:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "golemfactory",
"github_project": "yagna",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "golem-node"
}