Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App Submission: Fulcrum #1531

Merged
merged 10 commits into from
Oct 30, 2024
Merged

Conversation

sahilph
Copy link
Contributor

@sahilph sahilph commented Sep 25, 2024

App Submission

App name

Fulcrum

Closes #613, also possibly resolves #134

For those who want to try it now, Fulcrum is also available on my personal app store

256x256 SVG icon

https://svgshare.com/i/1Acv.svg

https://svgshare.com/i/1Acv.svg

Gallery images

1.jpg:

1.jpg

2.jpg:

2.jpg

3.jpg:

3.jpg

4.jpg:

4.jpg

I have tested my app on:

  • umbrelOS on a Raspberry Pi
  • umbrelOS on an Umbrel Home
  • umbrelOS on Linux VM

@sahilph
Copy link
Contributor Author

sahilph commented Sep 25, 2024

Regarding app IPs in exports.sh, is there any logic to set the IPs ?

Currently I have just selected them randomly so as to not conflict with existing Electrs.

@nmfretz
Copy link
Contributor

nmfretz commented Oct 3, 2024

Thanks for submitting Fulcrum @sahilph!

We've got our heads down on some other aspects of the codebase, but we have this on our radar and will get to it soon.

One quick thought (as a reminder to myself when I come back to this) is that since this is essentially a drop-in replacement for Electrs, we may want to wait until we've implemented a way to choose which app you want to use for a certain protocol (e.g., the electrum protocol). This is on our roadmap. This would allow users to switch to whatever Electrum implementation they want and have it work with all their other bitcoin ecosystem apps that rely on Electrum.

Right now, if we bring Fulcrum to the app store, apps like Mempool, BTC RPC Explorer, etc. that depend on an electrum server would not be able to use Fulcrum. Maybe this is okay for now.

@sahilph
Copy link
Contributor Author

sahilph commented Oct 3, 2024

apps like Mempool, BTC RPC Explorer, etc. that depend on an electrum server would not be able to use Fulcrum.. Maybe this is okay for now.

@nmfretz Yes, right. Initially I had set the export variables names to be same as that of Electrs, so that they will be able to use Fulcrum directly, but then I saw the Bitcoin Knots Submission #953, and changed the variables names and also added a note that Fulcrum will be integrated later on, very similar to how it was done for Knots.

@nmfretz
Copy link
Contributor

nmfretz commented Oct 24, 2024

Thanks for your patience @sahilph 🙏

@nmfretz Yes, right. Initially I had set the export variables names to be same as that of Electrs, so that they will be able to use Fulcrum directly, but then I saw the Bitcoin Knots Submission #953, and changed the variables names and also added a note that Fulcrum will be integrated later on, very similar to how it was done for Knots.

Perfect, really nice work digging in and implementing this. Let's get this shipped then as-is, and in a future umbrelOS update where the apps framework is upgraded (hopefully quite soon) Fulcrum will become hot-swappable with Electrs such that it can be used by apps like mempool, etc.


I am currently testing Fulcrum now. Is the UI working for you?

Fulcrum is currently building the index:

$ sudo docker logs fulcrum_fulcrum_1 -n 3
[2024-10-24 11:05:25.627] <Controller> Processed height: 406000, 46.8%, 3.27 blocks/sec, 4466.2 txs/sec, 17017.3 addrs/sec
[2024-10-24 11:08:44.605] <Controller> Processed height: 407000, 46.9%, 5.03 blocks/sec, 7069.9 txs/sec, 24965.1 addrs/sec
[2024-10-24 11:14:04.246] <Controller> Processed height: 408000, 47.1%, 3.13 blocks/sec, 4383.5 txs/sec, 15625.9 addrs/sec

But the UI is showing:
image

And is erroring with:

$ sudo docker logs fulcrum_app_1 -n 12
umbrel-middleware
syncPercent error:  Error: connect ECONNREFUSED 10.21.21.200:50002
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '10.21.21.200',
  port: 50002
}
::ffff:10.21.0.8 - - [Thu, 24 Oct 2024 11:18:39 GMT] "GET /v1/fulcrum/syncPercent HTTP/1.1" 500 94 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"

So for some reason fulcrum is refusing connections on port 50002.

@sahilph
Copy link
Contributor Author

sahilph commented Oct 24, 2024

Perfect, really nice work digging in and implementing this.

Thank you !

Let's get this shipped then as-is, and in a future umbrelOS update where the apps framework is upgraded (hopefully quite soon) Fulcrum will become hot-swappable with Electrs such that it can be used by apps like mempool, etc.

Awesome. Hot Swapping will be great.

I am currently testing Fulcrum now. Is the UI working for you?
...
And is erroring with:
...
So for some reason fulcrum is refusing connections on port 50002.

Oh yes, I had noticed the errors too during the index building. It keeps on giving those errors. It turns out that, Fulcrum must first fully index the blockchain and compact its database before you can connect to it.

@nmfretz
Copy link
Contributor

nmfretz commented Oct 25, 2024

Oh yes, I had noticed the errors too during the index building. It keeps on giving those errors. It turns out that, Fulcrum must first fully index the blockchain and compact its database before you can connect to it.

Ah, ya I see. I don't want to overstep my role here, since I'm really just making sure that the app is packaged correctly for the umbrelOS app store, but could I suggest that the UI be tweaked slightly to avoid user's getting confused? Right now the user will see Waiting for Bitcoin Node to finish syncing... for the entire time that Fulcrum is building the index which could take a very long time (e.g., I'm about 60% in at 24 hours on an 8GB Pi 5).

I'm thinking that user's are going to see this message, notice that their Bitcoin Node is already synced, and think that something is wrong. They have no feedback on what is actually happening behind the scenes.

What if you just simplify that component to show something like Fulcrum is currently indexing... when the UI can't connect? A little hacky, but it's a simple change that will probably prevent you from being spammed with support queries.

e.g.:
image

@sahilph
Copy link
Contributor Author

sahilph commented Oct 25, 2024

Right now the user will see Waiting for Bitcoin Node to finish syncing...

I took the existing umbrel's Electrs app as the base and made some changes to it for Fulcrum.. and that's what it says when it cant connect to Electrs (Yeah, strange !) But it quickly goes aways as Electrs accepts connections even during the initial building..

I'm thinking that user's are going to see this message, notice that their Bitcoin Node is already synced, and think that something is wrong. They have no feedback on what is actually happening behind the scenes.

Oh, I didn't think from that perspective..

What if you just simplify that component to show something like Fulcrum is currently indexing... when the UI can't connect? A little hacky, but it's a simple change that will probably prevent you from being spammed with support queries.

Yes that sounds good, I will make that change to the frontend and then reply back..

@sahilph
Copy link
Contributor Author

sahilph commented Oct 25, 2024

@nmfretz I have updated the docker image which contains the new wording for the wait message. Please check.

@getumbrel getumbrel deleted a comment from github-actions bot Oct 30, 2024
@nmfretz
Copy link
Contributor

nmfretz commented Oct 30, 2024

Excellent, thanks for changing that @sahilph. I have pushed a few changes to finalize this submission sahilph/umbrel-apps@09fdef5...9dee7d6

I have tested, and it is working well for me. I have also tested successfully connecting sparrow wallet:
image

The icon and gallery images now live here: https://github.com/getumbrel/umbrel-apps-gallery/tree/master/fulcrum

We updated the background of the gallery images to complement the fulcrum logo:

image

Thanks again for all your work bringing Fulcrum to the official app store!

@getumbrel getumbrel deleted a comment from github-actions bot Oct 30, 2024
@nmfretz nmfretz merged commit 1affa7b into getumbrel:master Oct 30, 2024
1 check passed
@sahilph
Copy link
Contributor Author

sahilph commented Oct 30, 2024

Awesome Thanks. 👍

@sahilph sahilph deleted the fulcrum-app-submission branch October 30, 2024 03:00
@Funman2
Copy link

Funman2 commented Nov 17, 2024

You guys are awesome! Thx

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[App Request] - Fulcrum mempool times out loading ₿itcoin addresses
3 participants