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:
low barrier = more nodes = stronger network
umbrel is open source & extensible
synergies with other apps
a. Umbrel users often already operate other nodes
visibility & reach
community push for Grin
a. Grin is technically brilliant (Mimblewimble, privacy, scalability), but not very visible.
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
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.
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.
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.
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:
The proposal refers to the UmbrelOs environment.
EmbassyOs would then be the next step, if necessary.
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.
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.
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.
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 BeamGitHub - 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.
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.
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.
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.
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.