Funding request Grin Node meets UmbrelOs, EmbassyOs

What is the idea?
This is the beginning of the funding request for the implementation of a Docker image containing a grin node and a web UI.
The web UI should display the functions of the owner and foreign api in the browser. It should also be used to configure the node.
The image should be made available in the UmbrelOs or EmbassyOs environment as an app in the store (the idea comes from our member @Anonymous).

Keyfacts:

  • One Click Installation
  • Node-View
    o Owner
    o Foreign
  • Idea: Map with connected peers
  • Idea @Anonymous: QR code to connect the wallet

The resulting software will be cross-compile capable (linux, web (wasm), windows).

The child must also have a name, right?
I baptize the child with the name:

GrinMesh - Fair at Heart. Built to Scale. Magic in Every Node.

I asked another community member if he could design a logo and a background image for the project.

Why invest in the implementation?
The motivation is simple, we need grin nodes.
The network is currently relatively small and we hope to increase the number of nodes in the network by making installation as easy as possible. I think the app store (UmbrelOs) will also help us with this.
Key points:

  1. low barrier = more nodes = stronger network
  2. umbrel is open source & extensible
  3. synergies with other apps
    a. Umbrel users often already operate other nodes
  4. visibility & reach
  5. community push for Grin
    a. Grin is technically brilliant (Mimblewimble, privacy, scalability), but not very visible.
  6. decentralization

What do we need from the community members?
It would be desirable if a few community members could test the implementation in advance and provide feedback before the image is made available to the public.

What do we get?

  • Finished Docker app for Umbel
  • Documentation
    o Architecture structure
    o Public Github Repo
  • Web UI with API
  • Easy wallet connection

Funding amount
[Based on the discussion]

=========================================================================

Flowchart
Here are my initial ideas in a flowchart

Current status
Here are a few ideas and initial test examples

11 Likes

I fully support making this funding request a reality🚀.
I would consider it a bonus if people could chose wether they want to use the grin (written in Rust) or the grin++ node (written in C++) as backend. I do not know if this possible but @davidtavarez worked on making Grin++ more modular by unifying the API from the Grin++ node with the API from Rust node, so perhaps it is possible, for example by including both the latest rust and C++ nodes in the docker image.

3 Likes

it would be really great if grin could appear in the umbrel app store.

2 Likes

From today’s GGC meeting, we have taken the following financing amounts:

@wiesche: 5000 USD
@anynomous: 5000 - 7500 USD

What is your suggestion?

2 Likes

Hi, does the middleware have to be written in C++ or are languages/frameworks like Go or Node.js accepted?

Is this funding request for UmbrelOS or EmbassyOS or both?

You wrote:
“The resulting software will be cross-compile capable (linux, web (wasm), windows).”

I’m not fully understand this. I thought the app (grin node) would run inside UmbrelOS UI, why would a user need to compile anything?

I would prefer to call it Grin Node instead of GrinMesh.

Could you elaborate regarding the screenshots you’ve attached? It looks like those are standalone apps, are you going to combine them into one app inside UmbrelOS UI: Grin node + dashboard + map? What’s the plan?

I was even thinking if it would be possible to include grincoin.org UI blockexplorer so users have 100% of the function they need in one App.

I find the name also a difficult topic. I like the name GrinMesh, but if we would call in Grin node more people might trust it and install it and what it is essentially about, a Grin Node.

Perhaps the trick is to call it Grin node in the App store, but just present them with GrinMesh upon install.

Regarding the bounty, I think we better have a higher bounty but make the App do everything we need/want it to do than go cheapskate. So 7500 or 10.000 euro would be fine by me, but then I would expect an integration of the explorer and everything to work smooth.

@bruges Umbrell uses a docker image that contains a web interface, so you can combine a lot of stuff in a single App with a single interface.

3 Likes

I examined the Bitcoin ecosystem’s structure and noticed they use separate apps for different functions: node, explorer, Electrum, lightning node, and so on. For instance, when installing a lightning wallet, UmbrelOS alerts you that a dependent lightning node app is also required. This modular approach feels similar to Linux, and I prefer it over a single app that combines everything (like a node and explorer in one app). This way, I’m not forced to install the explorer if I only want the node.

To have some seperation makes sence. However for me having a node that also shows a map of connected nodes and a blockexplorer in one makes sence since it is all part of running a node. What I encountered in Umbrell is that it is a bit too much seperation and to little customizability. E.g the graph shown by running a Bitcoin node is for a fixed time period and rather useless. If it would be unpractical to integrate the node and explorer, sure just keep them seperated.

At the end of the day, the explorer is just an API call to the node. I don’t see why it would be less modular to have some information displayed on a web UI. It’s a Grin explorer, not an Ethereum explorer, it’s not like there’s a lot to show. Displaying some data seems reasonable.

2 Likes

I did check the Bitcoin app for Umbrell OS store, the architecture is quite minimalist. It’s an easy fit for Grin given the API endpoints. I’m surprised that no one has come up with a solution that leverages those endpoints in a clean Web UI.

The Bitcoin app was coded using Fastify Node.js. I think this would be a better fit than C++ for the middleware.

I was thinking of something like this for the architecture:

1 Like
  1. The proposal refers to the UmbrelOs environment.
    EmbassyOs would then be the next step, if necessary.

  2. Yes, the resulting software would be cross-compile capable.
    The user (UmbrelOs) gets a finished image, that’s right.
    However, it’s nice if there is a need for another project to be able to build the tool natively as well.

  3. We are happy to call the project Grin Node.
    I just wanted to give the child a name.
    It was important to me to have a slogan that sticks, such as:
    Fair at Heart. Built to Scale. Magic in Every Node.

  4. Ultimately, it is an app/container that runs in the Umbrel environment. The UI should then be accessible via the browser (Grin Node + Dashboard + Map, and all functions available via the API include Config (Owner and Foreign)).

If anything is unclear, please feel free to contact me.

1 Like

For me, C++ is the obvious choice, as I also have the APIs in C++. Here, I use the Qt framework in a similar way to Beam GitHub - BeamMW/beam-ui: Beam Desktop Wallet (Win / Mac / Linux)
For this reason, I would like to implement it this way.
Since I have already implemented the interface for the wallet, it also makes sense to provide a lightweight wallet as an UmbrelOs image in the future.

Another key fact for me is that you can create native builds for other operating systems.

Two things I don’t understand:

  • The need of cross compatibility in the context of a containerized environment

  • The use of C++ as a backend and its role in API communication

    • What do you mean by this? As far as I know, it’s an HTTP request. Whether you choose to write it in C++ or not, it’s still an HTTP request.

the CrossCompile functionality is a nice add-on and not important for the Docker solution.
It is only interesting for people who want to work locally with their Grin++ or Rust node independent of umbrel.

And yes there are only HTTP requests and response with json body, but I already have a class model for the response and request with errorhandling. Why shouldn’t I use that in conjunction with Qml.

On the other hand, the Wallet Owner API is different and the content is encrypted:

Initializes the secure JSON-RPC API. This function must be called and a shared key established before any other OwnerAPI JSON-RPC function can be called.

I have also implemented this and it could also be used in the future.

Many paths lead to the goal

1 Like

You can have both, Umbrell OS rely on docker-compose for his store, but the same docker-compose file could be used to run the node locally and independently of Umbrell OS.

See the architecture I shared:

Just to be sure, who is doing what right now ?

I don’t quite understand your question.

In my case, the middleware and the frontend / Ui would be a joint project. And I would implement it together in a container if necessary.

Your approach may also work, but I don’t understand why the frontend is outside the container context.

My question was about project development. I did not understand the following quote:

Was it a discussion about pricing, such as determining the right amount if someone is willing to do it, or was it about the actual funding of the proposal for you and anonymous?

Yes, it’s necessary, and you should start with that before going any further. Setting up docker at the end, when you want to deploy, is a pain…

I agree, I could have been more explicit.

  • Frontend/Web UI: The browser contacts the backend, which is mapped to the host machine.

  • Backend/Middleware: Receives the request from the browser and fetches the necessary data from the node.

  • Grin Node: Receives the request from the backend and sends the necessary data back.

The reason the node is in a standalone container, rather than within the backend container, is for modularity purposes. The backend container acts as middleware during communication between the client and the node.

However, this communication is only necessary when the client interacts with the node through the Web UI, which might be about 1% of the time. To minimize power consumption and avoid unnecessary usage, the backend container can be stopped and then restarted when communication is needed between the client and the node.

This is a niche optimization and unnecessary in the context of an Umbrell OS app, as the end user does not care about containers. However, for those who wish to run it locally and independently from Umbrell OS, this kind of eco mode would be possible with a simple docker-compose command.

1 Like

The work would be done by @wiesche. He suggested being paid $5K for the work and @Anynomous suggested paying him $7.5K in the meeting then $7.5-$10K in this thread.

It looks like a lot of work so the higher amounts would provide contingency. If anyone else has any detailed comments, please share.

I also prefer the name Grin Node. Users in the crypto space would immediately know what it is. I don’t think the user should see a different name after downloading though.

4 Likes

We are proposing a total of 7,500 euros for the financing proposal.

1 Like