Pages:
Author

Topic: Bitcoin Address Balance Checker (Web) - Check balance of addresses in a browser (Read 810 times)

legendary
Activity: 2212
Merit: 5622
Non-custodial BTC Wallet
I have added a new function.

Now the unconfirmed balance also shows up:



This tool is still climbing up in google searches, and I use it a lot to check for quick balances of my hardware wallet.

I was missing this feature, so just added it.

I would like to hear more suggestions
legendary
Activity: 2212
Merit: 5622
Non-custodial BTC Wallet
bump after several months. I am happy to see a lot of people is using this tool and it is slowing climbing its way up in google searches

legendary
Activity: 2212
Merit: 5622
Non-custodial BTC Wallet
The only issue with this is if you end up looking up one address which received coins ten minutes ago, and 20 addresses which have been dormant for months or years, then it remains entirely obvious which address you are actually interested in.

How difficult would it be to filter for addresses which have been used within the last couple of weeks and only use a subset of them for the 20 random addresses?

One option could be to get random addresses from some list. It could even be an csv file from LoyceV data for example.
All those old addresses with balance. I get can something like 1000 and get random there
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
How difficult would it be to filter for addresses which have been used within the last couple of weeks and only use a subset of them for the 20 random addresses?
That's actually a lot faster to do Smiley
legendary
Activity: 2268
Merit: 18507
The only issue with this is if you end up looking up one address which received coins ten minutes ago, and 20 addresses which have been dormant for months or years, then it remains entirely obvious which address you are actually interested in.

How difficult would it be to filter for addresses which have been used within the last couple of weeks and only use a subset of them for the 20 random addresses?
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
Code:
shuf -n 20 all_addresses_with_balances.txt

Would give you 20 random lines from the file with all addresses.
I used shuff before, and it takes 10 seconds reading from RAM. That's too much to update once a minute.
I'll try something else though: every day (or hour), I get 100,000 random addresses. From that subset, I get 20 addresses each minute. This will use significantly less resources.

It takes a while, my gzip archives were incomplete, probably due to disk space limitations.
newbie
Activity: 14
Merit: 11
Glad you like the idea! Obviously scaling could be an issue (20 random addresses doesn't add a lot of privacy/noise if the user inputs 5000 addresses)
I can use List of all Bitcoin addresses with a balance to get a list of random addresses. I'd like to make one file on my server that gets updated every minute, but I haven't found a method to just grep the addresses without reading the entire file, which is too resource intensive for frequent updates. Putting all data in a database would no doubt be the solution. But if you can pull that off, you're close to getting rid of the external API completely.

You could use shuf to randomly grab n number of rows from your list of all addresses with a balance, I've found it to be fairly quick with large files in the past.

Code:
shuf -n 20 all_addresses_with_balances.txt

Would give you 20 random lines from the file with all addresses.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
Glad you like the idea! Obviously scaling could be an issue (20 random addresses doesn't add a lot of privacy/noise if the user inputs 5000 addresses)
I can use List of all Bitcoin addresses with a balance to get a list of random addresses. I'd like to make one file on my server that gets updated every minute, but I haven't found a method to just grep the addresses without reading the entire file, which is too resource intensive for frequent updates. Putting all data in a database would no doubt be the solution. But if you can pull that off, you're close to getting rid of the external API completely.
legendary
Activity: 2212
Merit: 5622
Non-custodial BTC Wallet
Glad you like the idea! Obviously scaling could be an issue (20 random addresses doesn't add a lot of privacy/noise if the user inputs 5000 addresses) and there's going to be a lot of extra calls to the sochart API which could suck if they limit. I haven't looked at their API but if they give your limits in the response header I guess you could still keep it pretty quick by only adding a setTimeout when you're close to the limit?

I wonder if there's a trusted public API that lets you send a list of address instead of one address at a time? Obviously you could set one up yourself, but then you get back into the issue of sending data to your own server and thus losing trust.  Cry

I get some nice limit on sochain API.
It is a public API, free to use

Quote
Rate Limits
The public infrastructure for SoChain allows 300 requests/minute free-of-charge. Additional tiers are coming soon.
https://www.sochain.com/api#rate-limits

I looked some APIs and this was the one i liked the most for this tool.

I don't think users that need to search for 5000 address are going to use this tool.. that's way too much addresses to track!!

If bitcoindata.science goes well, There will come a time when I will need to host my own node and provide API data. But for that I need some that this domain pay for its costs, which I am far from it now.

For now, i need to work on improvements in the projects I have and to create new ones.
newbie
Activity: 14
Merit: 11
Glad you like the idea! Obviously scaling could be an issue (20 random addresses doesn't add a lot of privacy/noise if the user inputs 5000 addresses) and there's going to be a lot of extra calls to the sochart API which could suck if they limit. I haven't looked at their API but if they give your limits in the response header I guess you could still keep it pretty quick by only adding a setTimeout when you're close to the limit?

I wonder if there's a trusted public API that lets you send a list of address instead of one address at a time? Obviously you could set one up yourself, but then you get back into the issue of sending data to your own server and thus losing trust.  Cry
legendary
Activity: 2212
Merit: 5622
Non-custodial BTC Wallet
bitmover what about using a random block to add privacy?

When someone hits the page, you use JS to reach out to an API and grab a random block. Then use addresses from that block to salt the address list the user has provided. Then you get the results back from the sochain API and remove the salted addresses from what is shown to the user.

You can even show the user the block/addresses that will be used to augment the sochain api call so they know it's on the up and up.

Edit: Obviously check that none of their addresses are part of what got salted in before you remove it from what is show in the balance haha, could see that being a weird collision that might not ever happen

Well, that is certainly an interesting approach and something I can do easily.

I could make a request to some other API to get like 10-20 random address. I would mix that 20 address to the API request to sochain, get the results and delete those random address from the output.

Easily done. I will implement it in the next days when i get more time.
Thanks
newbie
Activity: 14
Merit: 11
bitmover what about using a random block to add privacy?

When someone hits the page, you use JS to reach out to an API and grab a random block. Then use addresses from that block to salt the address list the user has provided. Then you get the results back from the sochain API and remove the salted addresses from what is shown to the user.

You can even show the user the block/addresses that will be used to augment the sochain api call so they know it's on the up and up.

Edit: Obviously check that none of their addresses are part of what got salted in before you remove it from what is show in the balance haha, could see that being a weird collision that might not ever happen
copper member
Activity: 28
Merit: 0
Thank you for sharing this, it is a really cool project. Have been looking for something like this for a while!
copper member
Activity: 14
Merit: 0
I've never seen anything like that before, nice work
legendary
Activity: 2212
Merit: 5622
Non-custodial BTC Wallet
If you have a github account or any open source platform then I'll be glad to contribute.
You can see the source just by clicking View Page source in any browser

What would you like to do as a contribution? Any suggestion?
newbie
Activity: 17
Merit: 2
If you have a github account or any open source platform then I'll be glad to contribute.
newbie
Activity: 12
Merit: 0
This balance checker is way faster than easybalance which is what I use, thanks for the share OP will be saving this and sharing it around.
legendary
Activity: 2212
Merit: 5622
Non-custodial BTC Wallet
Just thinking out loud: you could make 2 input fields on the site: one with real addresses, and one where the user inputs funded addresses they don't own. If this is all handled client side, and all addresses are requested from the server (in no specific order), the "dummy addresses" can be ignored and only the requested addresses are shown. It wouldn't be perfect, but I think it can be called "improved privacy".

yes, i was thinking about something like that.

Everything done in JS is done client side. The problem is that on the client side users are making specific calls to sochain website. I cannot see what addresses you are calling when you use it, but sochain ofc does.

If I could somehow solve this privacy problem (with a solution like this one you mentioned), this solution could be also be implemented in SPV wallets for increased privacy.

Did Samourai wallet has a solution for this? Samourai is an improved privacy wallet, so maybe they already found a solution for this which I could implement in JS in this tool.

Thinking out loud as well Smiley
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
Can give me more details about your configuration? which browser are you using? Tor? Are you using any VPN?
I used Tor Browser. There's not much more to add Tongue No VPN.

EasyBalance shows only 0.00000547 BTC
Your checker has the correct balance of 50.00000547 BTC
I don't know the site, but you should probably report this to the site owner so they can fix it.
legendary
Activity: 2212
Merit: 5622
Non-custodial BTC Wallet
Your balance checker is much faster than EasyBalance. I checked 25-30 addresses from the list LoyceV posted and the speed of EasyBalance isn't comparable.   

I also notice that EasyBalance made mistakes when calculating the balance of certain addresses. This one for exampe > 1BtCdfQB8q4H8dwTECg2nwbvimUEvFFwqn

EasyBalance shows only 0.00000547 BTC
Your checker has the correct balance of 50.00000547 BTC

Any idea why that happens? And have you noticed similar behavior from your checker?

yes. EasyBalance is a great website. His tool also checks for balances in other blockchains/coins.
He used a bigger setTimeout than I did (he is more worried about IP blocks, probably). This is why searches from there takes too long.

That being said, I had a lot of troubles using this easybalance (this is why I created mine)
I also had problems with balances and bugs using his website. I cannot search for more than 5 addresses there (it freezes), and I can't search for native segwit addresses there as well.

 He also go through all dozens of explorers api checking for balances. I don't know why he does that, mybe they are backups in case one of them goes down. Whichi is a lot worse for privacy.

So his tools is not useful to me, as I have many native segwit and I need to search for many addresses. You can check hundreads of address without any problem in this tool (bitcoin balance checker)

Pages:
Jump to: