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, called yagna.
The nodes in the network can act as providers or requestors. Both the requestor and the provider share the same implementation of the Golem daemon.
The diagram above shows the architecture of the network. For the sake of simplicity, it shows just one requestor and one provider.
The requestor logic is implemented as a requestor agent, which is a piece of code that runs on the requestor's machine and communicates via REST with the Golem daemon's http server, usually running on the same machine.
A requestor agent can be written in any language as long as it's able to talk to the daemon's REST API. To make things easy for the developers though, we provide two high-level API libraries: yapapi for Python 3.6+ and yajsapi, our JS/TS API runnable under nodejs.
Please note the "ALT" frames in the left part of the diagram above: there are two APIs that we support but a typical requestor agent contains application code in only one language and hence, will use only one of those alternatives.
For more information regarding a Golem requestor, have a look at:
The payments between requestors and providers are made through Polygon, a Layer2 solution that greatly improves cost-effectiveness. However, a user can also opt to use the Ethereum mainnet if they should wish so.