Skip to content

golemfactory/yagna-service-erigon

Repository files navigation

Erigolem

Erigon node as a Golem service

The purpose of this example is to demonstrate building a Golem service using a dedicated, self-contained runtime. It features an Ethereum network client, Erigon (f.k.a. Turbo-geth) started on provider nodes on user's demand. Interaction with the service, once it's running and its location and credentials have been passed to the requestor, is not facilitated by Golem though.


The application consist of three major components:

  1. User interface (client/)
    A browser-based interface written in TypeScript using React. It allows the end user to interact with the application, i.e. start an Erigon node after authenticating with their Metamask wallet, and later manage their node(s).
  2. Requestor server (requestor/)
    A Python application developed using Quart and yapapi-service-manager. It acts both as an HTTP server (handling requests from the user interface), and as a requestor agent (submitting tasks to the Golem network).
  3. Erigon runtime (ya-runtime-erigon/)
    A dedicated, self-contained runtime created with ya-runtime-sdk. It is a Rust binary wrapping Erigon service itself so that it can be orchestrated by yagna daemon. The runtime also controls the access to the service by managing Nginx configuration.

To use the application locally, run docker-compose up and open http://localhost:8000. You can provide your own subnet by setting up the SUBNET_TAG environment variable. The default docker-compose.yml config starts the requestor server and frontend. To start the network checker as well, include -f network-checker.yml.

Instructions how to run client and e2e tests are here. Instructions how to run and test the requestor server are here.

Full project documentation can be found in the Golem handbook.

About

Erigon (formely Turbo-Geth) node as a Golem long running service

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 7