Bitcoin Forum
August 13, 2026, 06:07:28 PM *
News: Latest Bitcoin Core release: 31.1 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: [1]
1  Other / Beginners & Help / Bitcoin Genesis Block - 17 year anniversary. on: January 03, 2026, 03:37:23 AM
17 years ago, Bitcoin blockchain began with the Bitcoin Genesis Block that was mined by Satoshi Nakamoto.

Genesis block
Satoshi Nakamoto added this message to the Coinbase text
Quote
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
It's possible to check it with any Bitcoin block explorers, for example I use Blockchain.com explorer for checking the Block #0 (Genesis Block).
https://www.blockchain.com/explorer/blocks/btc/0

With Blockchain.com explorer, you can see the Coinbase message as above and descriptions, notes from the explorer.
Quote
Coinbase Message
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

Bitcoin Genesis
On January 3rd 2009, the Bitcoin network was created when Satoshi Nakamato (the project's mysterious creator) mined the “Genesis” block. The 50 bitcoin coinbase reward is unredeemable, as it was omitted from the transaction database. This means any attempt to spend it would be rejected by the network. Whether this was intentional or not still remains unknown.
A total of 0.00 BTC ($0.00) were sent in the block with the average transaction being 0.0000 BTC ($0.00). Satoshi earned a total reward of 50.00 BTC $0.00. The reward consisted of a base reward of 50.00 BTC $0.00 with an additional 0.0000 BTC ($0.00) reward paid as fees of the 1 transactions which were included in the block.

For anyone especially newbies who don't know, it is a headline on The Times newspaper on that day.

Some photos about that newspaper on 3 January 2009.

If you want a collectible, you can get one at the following site.
https://www.thetimes03jan2009.com/

In the Tyke's book on Bitcoin history, at page 54, you will get some information about The Bitcoin Genesis Block.
https://drive.google.com/file/d/1M8z4M4oV4WC_aIGWkn-tO_T7Nkllj47C/view

History was made on 3 January 2009, and we have all inherited big gifts from Satoshi Nakamoto.
2  Other / Meta / Please pin the Welcome message. Theymos! on: January 02, 2026, 04:26:42 AM
With many topics ask for or discuss about basic things like these.
Wait! What does this forum gives?
Forum For Fun.
The legendary and the newbie.
I think this forum is toxic for newbies.
Even more similar topics.

While there is a Writing a welcome message that was written years ago in 2018. Why is that topic not pinned in either Meta board or Beginners & Help board?

Pinning it and welcoming 2026 will be meaningful.
3  Bitcoin / Bitcoin Discussion / Ki Young Ju's posts, what do you think? on: May 10, 2025, 03:41:56 AM
Ki Young Ju is a founder and CEO of Cryptoquant and two months ago he made some posts with on chain data he got and made his predictions that Bitcoin bull market was over.

Now he changed his thinking and publicly admitted that he was wrong about it two months ago.

This is his post.
https://x.com/ki_young_ju/status/1920738436887310582
Quote
Two months ago, I said the bull cycle was over, but I was wrong. #Bitcoin selling pressure is easing, and massive inflows are coming through ETFs.

In the past, the Bitcoin market was pretty simple. The main players were old whales, miners, and new retail investors, basically passing the bag to each other. When retail liquidity dried up and old whales started cashing out, it was relatively easy to predict the cycle peak. It was like a game of Musical Chairs—everyone tried to cash out at once, and those who didn’t ended up stuck with their holdings.

But now, the Bitcoin market has become much more diverse. ETFs, MicroStrategy (MSTR), institutional investors, and even govt agencies are considering buying and selling Bitcoin. In the past, profit-taking cycles were triggered when whales cashed out at the peak, leading to a chain reaction of sell-offs and a price drop.

However, It feels like it’s time to throw out that cycle theory. New liquidity sources and volume are becoming more uncertain, signaling a transition as the Bitcoin market merges with TradFi. Now, instead of worrying about old whales selling, it’s more important to focus on how much new liquidity is coming from institutions and ETFs since this new influx can outweigh even strong whale sell-offs.

Honestly, I still think the market is sluggish while absorbing new liquidity. Most indicators are hanging around the borderline. It doesn’t feel like a clear bullish or bearish market right now. Of course, the recent price action is extremely bullish, but I’m talking about the profit-taking cycle.

Just because I was wrong doesn’t mean on-chain data is useless. On-chain analysts can have different opinions, and back then, many analysts, including @mignoletkr, disagreed with me. Data is just data, and perspectives vary.

I apologize for the incorrect prediction. I will strive to provide higher-quality analyses in the future. Thank you.


Everyone can be wrong and predicting Bitcoin market is difficult for everyone, so I don't accuse Ki Young Ju with his inaccurate prediction on the market trend. As Bitcoin investors, we must learn something from this post that we must focus on long term and have investment vision and never let our psychology and decisions depended on any analysis like technical or on-chain one.
4  Bitcoin / Bitcoin Discussion / Bitcoin is stronger with time, and there are less "Bitcoin is dead" calls! on: November 25, 2024, 02:43:20 AM
https://99bitcoins.com/bitcoin-obituaries/
https://bitcoindeaths.com/

These websites are for Bitcoin obituaries in different years and we can see numbers of "Bitcoin is dead" obituaries decrease with years.
In 2024, there are only 6 "Bitcoin is dead" obituaries.

With time, Bitcoin becomes stronger, more popular in adoption and acceptance, more governments accept it, more companies and people accept and use bitcoins, and it's logic to see a decrease of "Bitcoin is dead" obituaries.

Details of "Bitcoin is dead" with timeline.
https://bitcoindeaths.com/posts/

By year we have
2010: 1
2011: 6
2013: 2
2014: 24
2015: 29
2016: 23
2017: 93
2018: 73
2019: 40
2020: 20
2021: 39
2022: 27
2023: 14
2024: 6
5  Economy / Speculation / Google search trend on Bitcoin globally hits 2024 yearly low on: October 13, 2024, 09:43:29 AM
In 2024, Bitcoin search trend on Google hits its yearly low in September and can continue its low search volume in October.

https://trends.google.com/trends/explore?date=2009-01-09%202024-10-13&q=bitcoin
https://www.theblock.co/data/alternative-crypto-metrics/web-traffic/google-search-volume-bitcoin

This cycle has lower interest on Bitcoin with Google search than two previous market cycles in 2017 and 2021.
Figures in 2024 months are not too higher than months in 2023 and even lower than months in 2022 with worst time of bear market.

Is this low interest on Bitcoin, in Google Search Volume, a signal of accumulation finish, and will Bitcoin be ready for its next phase in this cycle?

Quote
2023-01   19
2023-02   19
2023-03   22
2023-04   20
2023-05   19
2023-06   18
2023-07   17
2023-08   17
2023-09   15
2023-10   18
2023-11   20
2023-12   24
2024-01   26
2024-02   26
2024-03   40
2024-04   30
2024-05   22
2024-06   19
2024-07   21
2024-08   23
2024-09   18
2024-10   17
6  Other / Beginners & Help / Bitcoin monthly returns. Some ideas for Oct, Nov and Dec in 2024 on: October 01, 2024, 03:13:42 AM
Bitcoin Monthly Return on X

The table has Monthly Returns of Bitcoin price in months, since 2010. It has figures for average monthly return of each year and total return of each year.

It can help to have ideas on possible movements in 3 ending months of 2024, October, November and December with October and November months are very good while December is in green but not less impressive than October and November.

I notice on red figures for 3 years, 2014, 2018 and 2022 which are bearish years and if history repeats, we will have a 2026 bad year too. That year, 2 years ahead, will be dangerous for people who bought in 2024 and 2025 bull market but don't exit and don't have plan to hold bitcoin in long term or worse if they borrow money for Bitcoin purchase. 2026 will be good year for DCA investors because they will have good prices for entries in Q3 and Q4 2026.
7  Other / Beginners & Help / Events made you scare about custodial wallets, centralized exchanges. on: September 20, 2024, 04:19:02 AM
In cryptocurrency, advice goes to going with non custodial, open source wallet, run your full node to gain many important things.

Security of your fund.
Full control on your coins.
Privacy with full node.

Leaked Chainalysis video suggests Monero transactions may be traceable
Tracing Monero via malicious nodes

The report from Chainalysis shows that if you don't use a full node, don't use Tor, they can collect your IP address and it breaks your privacy.
Importance of running a Bitcoin full node and use it for your transaction broadcast.
Why everyone should run a node
Why should I run a Bitcoin full node

Guides to run a Bitcoin full node.
How to run a Bitcoin Core full node for under 50 bucks!
The simplest Full Node guide ever.

Reminder on Bitcoin users from forum admin theymos, Antonopoulos, and Lopp.
Reminder: do not keep your money in online accounts
Not your keys, not your coins.
How the SEC nearly destroyed my retirement account

Governments can suddenly shut down all exchanges in batch like this or seize all your money like that.
47 crypto exchange shutdown by Germany
Court freezes N548.6 Million belonging to ‘ByBit, KuCoin’ Nigerian crypto users

Some scary stories and you don't want to experience a same terrible story.
Be careful using Binance & Centralized Exchange
The risk of posting your exchange's address publicly
Sanctioned Services and the service traceability to this forum, Any danger?

Recent events should make everyone withdraw all their coins to their own wallets: Part 1
Recent events should make you withdraw all your coins to your own wallet: Part 2
Recent events should make you withdraw all your coins to your own wallet: Part 3
Get your coins out of custodial wallets now: Part 4

Use non custodial, open source wallet. Move your coins out of any centralized exchange, any custodial wallet.
Back up your wallet too.

[Guide] How to back up a wallet seed phrase.

Use a non custodial wallet can help you to control your transaction fee, and avoid expensive withdrawal fee from centralized exchanges or custodial wallets.
You don't want this.
Problems with Coinbase withdrawal fees.

It is advised that centralized exchanges are risky to use and they're not recommended places for storage of your cryptocurrency funds. If you follow this valuable advice, you will not deposit your cryptocurrency to centralized exchanges and I hope that you do it well practically.

If you did not follow this great advice, and actually deposited your fund to centralized exchanges, then unfortunately your acount and fund had problems, you can report it in the following thread.

[INFO] Updated Summary of malpractices and abuses of exchanges with a latest report on MEXC exchange.
8  Bitcoin / Bitcoin Discussion / Bitcoin ownership distribution break down on: September 11, 2024, 12:40:55 PM
This data in the graphics is from Bitcointreasury.net and BitMEX research.

- Bitcointreasuries.net has this information at Treemap chart.
- I can not find original source from BitMEX research.
Some other sources I can find on Bitcoin distributions.
Demystifying Bitcoin's Ownership Landscape
Bitcoin distribution rich list.

Bitcoin distribution are not static but dynamic and changes with every new Bitcoin block that contains thousands of new Bitcoin transactions. Information here is for reference at writing time of these resources.

There is only about 6% of Bitcoin total supply to be mined until all 21 millions of bitcoins will be all mined. If you don't trust the graphics, you can check with
https://coinmarketcap.com/currencies/bitcoin/


9  Bitcoin / Bitcoin Discussion / Bitcoin Price History 2010-2021 in 2 minutes can help you to be less panic on: August 05, 2024, 08:41:31 AM
The video is there
https://www.youtube.com/watch?v=cxrffRNJNKM

It is for Bitcoin price history from 2010 to 2021, not till today in 2024, in live action. By watching this live price video, we can feel how challenge it was for people who owned and held bitcoin previous years, especially in very earliest years.

By watching this, it can help newbies to feel more confident on Bitcoin survival and its strength, to give them own strength to be less panic, and hold their bitcoin.

Be strong and keep holding your bitcoin. If you sale off in panic, you will be like many people in the past.
10  Other / Beginners & Help / A bitcoiner’s guide to organized crime on: July 21, 2024, 02:46:54 AM
The content is copied from A bitcoiner’s guide to organized crime and there are three more for reading about dangerous physical attacks.

Known physical Bitcoin attacks
All known physical attacks on Bitcoin and other cryptocurrencies from 2014 to 2022
Over 100 Physical Attacks Against Bitcoin Holders And Infrastructure Recorded Since 2014

Quote
Bitcoin is mainstream and organized crime has taken notice.

Recently, we learned about an organized crime ring that operated in the United States and carried out multiple home invasions that specifically targeted bitcoin holders. This is the first such crime ring to be caught, but it’s by no means the only one employing strategies to relieve people of their bitcoin. What can we learn from the types of attacks that have been perpetrated? How can you protect yourself from becoming a target?


Know the enemy: An example of a crime ring
Beginning in September 2022, a group of robbers roamed the U.S. in search of crypto owners to attack and extort. Wired reported on this series of crimes in great detail in this feature.

The robbers hacked into email accounts, learned about victims’ holdings, and physically surveilled them to determine their routines before breaking into houses. Once the group made entry, they held victims hostage, tortured them, gave death threats, and used family members as leverage.

The goal? Coerce the victims into giving up hardware wallets, passwords, and private keys by any means necessary. If thieves could get access to keys and/or exchange accounts, they could drain a victim’s crypto wallets, and that happened in at least one case in this spree, netting the thieves a score of more than $150,000 in bitcoin and ether.

But crime doesn’t pay, at least not for long. Despite their ruthless tactics, the thieves had trouble replicating their schemes across multiple victims. Their ringleader was eventually caught and convicted in federal court in 2024.

Why you need to prepare against organized crime
The events described above are by no means an isolated incident. I’ve been logging physical attacks on crypto holders going back a decade, and these are just the crimes we know about. Many attack victims are reluctant to come forward for fear of further exposure.

Physical attacks are unfortunately on the rise all around the world. As bitcoin increases in value, it grabs the attention of criminals, especially tech-savvy ones. With organized crime rings entering the mix, it can be expected that attacks will become more cunning, sophisticated, and brutal.

But one shouldn’t be daunted to the point of being complacent. You can take steps to drastically reduce your exposure and your chances of being targeted. First, you need to develop an understanding of how you can wind up on a criminal’s radar.

How criminals identify victims
Privacy is an important aspect of security. While it’s not a complete solution to securing one’s wealth, it’s a good strategy to include in your security toolkit. Strong security solutions consist of multiple separate layers of security controls; consider privacy as the outermost layer of your security. The general premise is that if criminals are less aware of you, they are less likely to target you. Here are some ways criminals can learn about your crypto holdings:

  • Social media posts about crypto
  • Discussing crypto in public places
  • Meetups and conferences
  • Complex data harvesting from known and unknown breaches

I bring these factors up not to scare you, but to simply point out ways a person can attract unnecessary attention. We can’t change the past, but we can prevent risk from compounding in the future. It is common for thieves to track victims for months, sometimes years, in preparation for the opportune time, so it’s best to take a long-term approach to your security.

If you hold the key(s) to your bitcoin on your person, you become a single point of failure. This means if you have bitcoin on an exchange, mobile wallet, or single hardware device, you can be forced against your will to send it to an attacker’s address.

To anticipate how an attack could occur, it’s wise to put yourself in the mind of a thief, focusing on the most likely threats first. Here are some of the tactics criminals use to get within proximity of victims and exploit them:

  • Seek out targets by offering to perform high-value OTC (face-to-face deals) and rob the victim when they show up.
  • Mug passers-by in the middle of the night, force them to unlock their phone, and search for any crypto apps.
  • Find targets on dating apps and drug them into submission so they unlock their phone and any other apps used to access bitcoin.
  • Identify high-value targets via social media, social engineering, data leaks, etc and attack them with a home invasion.

Organized crime rings are highly effective at performing complex dragnet operations in which they acquire a large set of potential victims from the Dark Web and narrow that band with more information over time as they assess the risks and potential rewards of an attack. It is much more profitable for a robber to choose a victim who doesn’t pay any attention to their security at all, including their privacy. So, let’s discuss how to avoid being easy pickings.

Protect yourself: Don’t make yourself a target
Privacy and security are two sides of the same coin. While security mechanisms will hopefully stop an attacker from being able to achieve their goal, strong privacy will hopefully prevent an attacker from targeting you in the first place.

Today, as many as 17% of U.S. adults hold crypto, and that trend is even larger in other countries. Seek to “blend in with the crowd” and not stand out as a wealthy bitcoin adopter. I myself have been targeted due to being a public figure associated with bitcoin, and I took steps to prevent further occurrences. The security considerations for public figures are an entirely separate discussion and a tailor-made service Casa offers for our Private Clients.

For everyday bitcoiners, here are several other tips for lowering your profile:
  • I advise against wearing any branded clothing or displaying other items that would signal your interest in bitcoin, such as stickers on laptops.
  • Don’t conduct face-to-face trades with people you don’t trust highly. Only conduct trades in public spaces with surveillance and preferably some sort of physical security.
  • Don’t wander around alone at night or put yourself in dangerous situations like drug deals that invite mugging.
  • Avoid posting the exact time and place you will be at a given moment. Share vacation pictures after the fact, and avoid real-time location tracking in exercise apps, such as Strava.
  • Don’t use dating apps if you’re a foreigner in a high-risk country like Colombia. You should assume you have no anonymity due to the availability of tools like reverse image search.
  • Don’t flaunt wealth on social media.
  • Don’t steal people’s bitcoin — there is no honor among thieves. There have been multiple incidents in which the victims who were attacked were targeted because they had committed thefts such as via SIM swapping and were known to have amassed a lot of BTC.

Final thoughts
When adversaries are highly organized, you should be equally organized in your response. Minimizing your known association to crypto will reduce your exposure to organized crime.

On top of a thoughtful approach to privacy, consider adding more keys to your cold storage for more robust security. Casa vaults spread your protection across multiple devices and locations to eliminate single points of failure for your bitcoin and other assets.

With a distributed multi-key vault, you can enjoy peace of mind that your bitcoin is safe. Learn more here.
11  Other / Beginners & Help / Bitcoin Core Software Lifecycle on: July 17, 2024, 05:43:15 AM
I read some questions, ask for information like what Bitcoin Core version to use, should I upgrade my Bitcoin Core.

The answers are it's possible to use old versions because if you have private keys, you have coins. It is recommended to upgrade to newest versions if you are running business with Bitcoin payments, use scripts ...

The most recent version is the version the foremost experts on the software think you ought to be running, otherwise it wouldn't exist.  So unless you've got a really good reason to do otherwise, that's what you ought to be running.

Revisions of old major numbers are primarily useful for parties that are carrying patches against their nodes or require qualification for new versions that might have changed behavior in incompatible ways, so that they can more rapidly deploy fixes.  It might take them longer to forward port their patches to the new major version or to test it against their usage.  If you're in one of those situations you'll know it.


I find answers on Bitcoin Core website too.

Software Life Cycle

Please read the Maintenance Period and Schedule table if you are wondering should upgrade your Bitcoin Core wallet.

Quote
Software Life Cycle

This document describes the life-cycle of the Bitcoin Core software package released by the Bitcoin Core project. It is in line with standard maintenance policy across commercial software.

Major releases
We aim to make a major release every 6-7 months.

These will be numbered 22.0, 23.0 etc.

Maintenance releases
We will provide maintenance “minor releases” that fix bugs within the major releases. As a general rule we do not introduce major new features in a maintenance release (except for consensus rules). However, we may add minor features where necessary, and we will back-port consensus rule changes such as soft forks.

Minor releases will be numbered 22.1, 22.2, 23.1, 23.2 etc.

Maintenance period
We maintain the major versions until their “Maintenance End”. We generally maintain the current and previous major release. For example, if the current release is 23.0, then 22.0 is also considered maintained. Once 24.0 is released, then 22.0 would be considered at its “Maintenance End”. As a major release ages, issues have to be increasingly critical to be backported to it, and an increasing amount or severity of issues is required to warrant a new minor release. Once software has reached the “Maintenance End” period, it will only receive critical security fixes until the End-of-Life (EOL) date. After EOL, users must upgrade to a later version to receive security updates, even though the community may provide fixes for critical issues on a best effort basis. Generally, it is recommended to run the latest maintenance release (point release) of the current or previous major version.

Please note that minor versions get bugfixes, translation updates, and soft forks. Translation on Transifex is only open for the last two major releases.

For example, major version 22.0 was released on 2021-09-13 and we provided maintenance fixes (point releases) until 2022-11-15. Critical security issues would still be continued to be fixed until the EOL date of 2024-04-01. However, to take advantage of bug fixes, you would have to upgrade to a later major version.

Schedule
Once EOL is reached, you will need to upgrade to a newer version.

VersionRelease dateMaintenance EndEnd of life
___________________________________________________________
28.xTBA*after v30.0after v31.0
27.x2024-04-16after v29.0after v30.0
26.x2023-12-06after v28.0after v29.0
25.x2023-05-182024-04-16after v28.0
24.x2022-11-242023-12-122024-04-02
23.x2022-04-252023-05-182023-12-01
22.x2021-09-132022-11-242023-04-01
0.21.x2021-01-152022-04-252022-10-01
0.20.x2020-06-032021-09-132022-02-01
0.19.x2019-11-242021-01-152021-08-01
0.18.x2019-05-022020-06-032021-02-01
0.17.x2018-10-032019-11-242020-08-01
0.16.x2018-02-262019-05-022020-02-01
0.15.x2017-09-152018-10-032019-08-01
0.14.x2017-03-082018-02-262019-02-01
0.13.x2016-08-232017-09-152018-08-01
0.12.x2016-02-232017-03-312018-02-28
0.11.x2015-07-122016-08-232017-08-01
0.10.x2015-02-162016-02-292017-02-28
0.9.x2014-03-192015-06-162016-02-28
0.8.x2013-02-192014-03-192015-12-31
___________________________________________________________
* We aim to make a major release every 6-7 months

TBA: to be announced


And more to read on that page.
12  Other / Beginners & Help / Guide on finding centralized exchanges by nation, fees. on: July 16, 2024, 08:39:33 AM
There are some websites that are popularly used by cryptocurrency enthusiasts but they mainly provide Trust score, reputation score, trading volume besides exchange names and links to websites, fee pages.

If you want to filter centralized exchanges by nations, use this one.
https://github.com/ccxt/ccxt/wiki/Exchange-Markets-By-Country

It probably does not include all centralized exchanges because the list is short. If you know other websites that can help filtering CEX by country, please share it with me and community.

For trust score, reputation score, use these websites.
https://www.bitdegree.org/top-crypto-exchanges?type=centralized
https://www.coingecko.com/en/exchanges
https://coinmarketcap.com/rankings/exchanges/

For trading fees, withdrawal fees.
https://www.cryptowisser.com/exchanges/
https://exchangewar.info/
https://dailycoin.com/crypto-exchange-fees-comparison/
13  Other / Beginners & Help / Electrum wallet Customer Care Service Number - Scam!!! on: July 16, 2024, 03:20:22 AM
I am trying to learn about Electrum wallet, after reading some posts about problems with Electrum connection, server, proxy settings.

I am surprised when I found this article on Medium by Google Search.

https://medium.com/@metamask.2999/comprehensive-guide-to-electrum-wallet-customer-care-and-support-information-e80ea7819e41

First the username is strange: @metamask.2999 and I started to be cautious.
Second I scan the article and see
Code:
Electrum Wallet Customer Care Service Number《1–844–914–1904》
It is repeated written in the article and scanning through the article, no guide at all. Only repeatedly direct to that phone number.

Newbies, if searching and finding this article, be very careful because it's scam guide.

The official website of Electrum wallet is https://electrum.org/
No phone number for customer care at all.

I don't know what will they do to scam people if people contact via that phone number but make sure you are careful with your action.

If you need support, you can create thread in a board for Electrum wallet https://bitcointalk.org/index.php?board=98.0
14  Bitcoin / Bitcoin Discussion / A Schaback, Paxful's ex-CEO, pleads guilty by failed AML on: July 11, 2024, 10:53:33 AM
https://paxful.com/university/artur-schaback-paxful/
https://www.justice.gov/opa/pr/paxful-inc-co-founder-pleads-guilty-conspiracy-fail-maintain-effective-anti-money-laundering

Artur Schaback is a co-founder of Paxful, took over CEO position in Paxful after departure of Ray Youssef to launch a new brand P2P Noones. DOJ are targeting many centralized exchanges, their CEOs, and plead guilty on these platforms and head people in charge of CEO positions.
Quote
He is scheduled to be sentenced on Nov. 4 and faces a maximum penalty of five years in prison.
I wonder how they did it with Artur Schaback but did not do anything to Ray Youssef because Paxful has a long history of operation.

Will it be another step to close no KYC P2P marketplaces and no KYC centralized exchanges?
Will DOJ do more attacks to Decentralized exchanges and their CEOs?
15  Bitcoin / Development & Technical Discussion / Effects of DBcache Size on Bitcoin Node Sync Speed on: June 28, 2024, 02:56:18 AM
https://blog.lopp.net/effects-dbcache-size-bitcoin-node-sync-speed/

Jameson Lopp did another test and this time, he did it with DBcache to test optimal parameter for DBcache to get best Bitcoin node syncing speed.

Related discussions and resources like data sheets.
https://github.com/jlopp/bitcoin-core-config-generator/issues/69?ref=blog.lopp.net
https://docs.google.com/spreadsheets/d/15ZxywThjwJdRMKrj3wF1pkyyD5ZY9_ia4vfyEIp30ao/edit?ref=blog.lopp.net&gid=0#gid=0
https://github.com/bitcoin/bitcoin/blob/aa2ce2d64696c030fb39f4e63b12271bb700eb28/src/kernel/chainparams.cpp?ref=blog.lopp.net#L108

Quote
An investigation into tradeoffs between different dbcache sizes when performing a full bitcoin node sync.

I recently had someone point out on my Bitcoin Core Config Generator project that there are tradeoffs with high dbcache settings and initial block download performance on low powered devices.

What is dbcache?
It's not exactly a cache in the traditional sense - it's mostly a write buffer and it prevents you from needing to regularly write the current state of the UTXO set to disk. This can be a performance improvement when syncing many blocks because you're avoiding having to make a ton of disk operations that are relatively slow.

What's the problem?
In short, if your node crashes before the initial full sync is completed but you have a high enough cache setting that you never completely filled it, the node never flushes the UTXO set to disk. This means if you restart an interrupted sync it requires an incredibly resource intensive process of reindexing the blockchain in order to rebuild the UTXO set that you failed to persist to disk.

The discussion around these tradeoffs led to an interesting claim:

Quote
With a modern SSD there is very little reason to change the default especially because OS will use free RAM to opportunistically cache the filesystem in the free RAM anyway so a machine with higher RAM will always get an implicit speedup.
This claim made sense to me at a high level but I wasn't completely sure if it would hold true.

Testing Time
Naturally, I set forth to determine whether or not the theory could be proven with real world data. So I ran several node sync tests on my benchmark machine I've been using for 6 years. The raw results can be found in this spreadsheet.



If you're wondering why it takes the node ~5 minutes to start syncing, that's because it's doing the synchronization of the block headers first before starting to download any blocks.

We can see here that the huge dbcache sync was 24% faster than the default cache sync: 452 minutes versus 597 minutes with default cache size. Whereas with a moderate 4 GB dbcache it's only 10% faster than the default, taking 536 minutes.

If you look closely at the chart you might notice that the slope / rate of syncing slows down a bit around block 820,000. As we can see from the code here, the "assumed valid block" for the Bitcoin Core v27.1 release was at height 824,000. So at that point the node starts having to perform more CPU intensive operations by verifying all of the signatures on transaction inputs. However, disk I/O still remains a larger factor (bottleneck) when it comes to sync performance.

Let's visualize the sync times slightly differently so that we can more easily compare the performance gap. This chart shows the delta between how many minutes it took my benchmark machine to reach a given block height with a 28 GB dbcache size versus with the default dbcache size of 450 MB.



We can see they're pretty much neck and neck until block ~485,000 which takes my machine 100 minutes to reach. After that point, the large dbcache performance breaks away and never looks back. If I were to speculate as to why, my bet is that the default 450MB dbcache doesn't fill up until you hit that part of the blockchain, so after that point the default sync will start flushing the chainstate to disk regularly, thus slowing down the sync.

Conclusion
The theory doesn't appear to hold true, and I think the reason for that is because dbcache is not primarily used as a (read) cache. As such, node sync performance can not benefit from opportunistic filesystem caching at the operating system level.

However, the problem with interrupted initial node syncs is quite real. If you're performing a sync on low end hardware like a Raspberry Pi, it's probably worth the slightly slower sync time in order to protect against having to reindex the whole blockchain if the sync gets interrupted.

I understand it like if we want to run a Bitcoin Core full node, sync it, we need something as high-end hardware, SSD, high RAM, and pay attention an parameter for DBcache to avoid node crash and reindex issue.

Lopp has 2023 Bitcoin Node performance test article too.
16  Other / Meta / Pascal666 user. Please delete posts, threads or nuke the spammer. on: June 02, 2024, 03:06:54 AM
Pascal666

Faggots!

You hacked me you stalked me you gave me cancer you denied my healthcare so whatever bitch

Fucking die, you all belong in the gaschamber

Om kanker van te krijgen

But not without pain, you all deserve to be beheaded

Manipulations of the dollar vigilante, a notorious criminal! Earth got raided by a bunch of sadistic losers

Now it is time for you to suffer dumb fucks, rob is playing another one bites the dust on twitch. Evil fucking criminals

Blockchain was ment for blood killing people and anarchy, I got killed by satoshi nakamoto

So he rented some hitmen, poisoned me gave me cancer and ignited russian american conflict hurray

I hope you all die you fucking losers, let there be armageddon
17  Bitcoin / Bitcoin Discussion / Bitcoin halving is hours ago. Will you hold your BTC to April 2028? on: April 20, 2024, 02:47:48 AM
Bitcoin halving a fourth time is at block 840,000. It happened hours ago.

A next halving will be at block 840,000 + 210,000 = block 1,050,000. Estimated time is in April 2028.
https://www.bitcoinblockhalf.com/

Will you hold your bitcoins to 2028?

Bitcoin block rewards now is 3,125 BTC and after 2028 halving, it will be 3,125/2 = 1,5625 BTC.

After the 5 epoch completes, 96,875% of all bitcoins in total supply will be available in circulating supply.
https://en.bitcoin.it/wiki/Controlled_supply

Now Bitcoin already has Stock-to-Flow rate is smaller than Gold.
18  Bitcoin / Bitcoin Discussion / Archived emails of Satoshi Nakamoto to some Cypherpunks on: February 26, 2024, 03:18:51 AM
Gavin Andresen

This email, or email excerpt, was quoted by Gavin Andresen in an interview in 2014.
Quote
I wish you wouldn’t keep talking about me as a mysterious shadowy figure, the press just turns that into a pirate currency angle. Maybe instead make it about the open source project and give more credit to your dev contributors; it helps motivate them.


Mike Hearn
Quote
Mike Hearn <mike@plan99.net>   Sun, Apr 12, 2009 at 12:46 PM
To: satoshin@gmx.com

Hi Satoshi,

I read your paper on BitCoin with great interest. I found it a bit
confusing though - I believe it may be easier to follow if you provide
some examples.

Specifically, it's not quite clear to me what blocks contain. If I understand correctly, there is only one (or maybe a few) global chain(s) into which all transactions are hashed. If there is only one chain recording "the story of the economy" so to speak, how does this scale? In an imaginary planet-wide deployment there would be millions of even billions of transactions per hour being hashed into the chain. I realize that each PoW can wrap many transactions in one block, nonetheless, that's a large amount of data to hash. If there are many chains, how are transactions assigned to each chain such that it is still difficult to overpower the network? Eg, if there are 10 global chains, the amount of cpu power you need to beat the system is only 10% of what it was previously.

I also wonder if the assumption of 1 core = 1 vote is sound. If the majority of nodes are on standard computers, it seems likely that an attacker could use FPGA or custom ASICs to get significantly better performance. What are your thoughts on using custom hardware to beat the chain?

I found the section on incentives hard to follow. In particular, I'm not clear on what triggers the transition from minting new coins as a reason to run a node, to charging transaction fees (isn't the point of BitCoin largely to zero transaction costs anyway?). Presumably there's some human in charge of the system - eg, you decided somehow that 24 million coins was a good number to have, and would distribute some kind of rules file saying "coins minted after this timestamp must have an N+1 zero bits prefix", which honest nodes enforce.

How did you decide on the inflation schedule for v1? Where did 24 million coins come from? What denominations are these coins? You
mention a way to combine and split value but I'm not clear on how this works. For instance are bitcoins always denominated by an integer or can you have fractional bitcoins?

So many questions Smiley But it's rare that I encounter truly revolutionary ideas. The last time I was this excited about a new monetary scheme was when I discovered Ripple. If you have any thoughts on Ripple, I'd also love to hear them.

thanks -mike

Satoshi Nakamoto <satoshin@gmx.com>   Sun, Apr 12, 2009 at 10:44 PM
To: Mike Hearn <mike@plan99.net>

Hi Mike,

I'm glad to answer any questions you have.  If I get time, I ought to write a FAQ to supplement the paper.

There is only one global chain.

The existing Visa credit card network processes about 15 million Internet purchases per day worldwide.  Bitcoin can already scale much larger than that with existing hardware for a fraction of the cost.  It never really hits a scale ceiling.  If you're interested, I can go over the ways it would cope with extreme size.

By Moore's Law, we can expect hardware speed to be 10 times faster in 5 years and 100 times faster in 10.  Even if Bitcoin grows at crazy adoption rates, I think computer speeds will stay ahead of the number of transactions.

I don't anticipate that fees will be needed anytime soon, but if it becomes too burdensome to run a node, it is possible to run a node that only processes transactions that include a transaction fee.  The owner of the node would decide the minimum fee they'll accept.  Right now, such a node would get nothing, because nobody includes a fee, but if enough nodes did that, then users would get faster acceptance if they include a fee, or slower if they don't.  The fee the market would settle on should be minimal.  If a node requires a higher fee, that node would be passing up all transactions with lower fees.  It could do more volume and probably make more money by processing as many paying transactions as it can.  The transition is not controlled by some human in charge of the system though, just individuals reacting on their own to market forces.

Eventually, most nodes may be run by specialists with multiple GPU cards.  For now, it's nice that anyone with a PC can play without worrying about what video card they have, and hopefully it'll stay that way for a while.  More computers are shipping with fairly decent GPUs these days, so maybe later we'll transition to that.

A key aspect of Bitcoin is that the security of the network grows as the size of the network and the amount of value that needs to be protected grows.  The down side is that it's vulnerable at the beginning when it's small, although the value that could be stolen should always be smaller than the amount of effort required to steal it.  If someone has other motives to prove a point, they'll just be proving a point I already concede.

My choice for the number of coins and distribution schedule was an educated guess.  It was a difficult choice, because once the network is going it's locked in and we're stuck with it.  I wanted to pick something that would make prices similar to existing currencies, but without knowing the future, that's very hard.  I ended up picking something in the middle.  If Bitcoin remains a small niche, it'll be worth less per unit than existing currencies.  If you imagine it being used for some fraction of world commerce, then there's only going to be 21 million coins for the whole world, so it would be worth much more per unit.  Values are 64-bit integers with 8 decimal places, so 1 coin is represented internally as 100000000.  There's plenty of granularity if typical prices become small.  For example, if 0.001 is worth 1 Euro, then it might be easier to change where the decimal point is displayed, so if you had 1 Bitcoin it's now displayed as 1000, and 0.001 is displayed as 1.

Ripple is interesting in that it's the only other system that does something with trust besides concentrate it into a central server.

Satoshi
[Quoted text hidden]
Mike Hearn <mike@plan99.net>   Mon, Apr 13, 2009 at 1:39 PM
To: Satoshi Nakamoto <satoshin@gmx.com>

Thanks Satoshi,

I tried the app yesterday. It seems to work pretty well running on Wine (I tried it on MacOS but it should run on Linux too, and will try that next week when I am back at work).

In the lower right hand corner it has a block count which increases rapidly and then stops. Is this the length of the global chain? It seems to advance far too fast for that. Or is this the number of genesis blocks that have been tried but did not result in a partial collision? I'm not sure if the way it stops and starts is expected, or some glitch caused by it running under emulation. My best guess - it is the length of the global chain, and the rapid advance at the start is as the software downloads and verifies the preceding blocks in the chain as being valid.

With regards to the buyer/seller experience, I understand that the global chain advances at about 6-7 blocks per hour under the current settings. If we assume that 0.1% is a good risk rate, then z=5 thus any transaction must wait a bit less than an hour before being solidified in the chain. As micropayments for things like web content or virtual goods are by definition something that requires low overhead, waiting an hour seems like quite a significant hurdle.

I understand that nodes attempt to find a POW to advance the global chain in an uncoordinated fashion. This sentence however:

    "If a majority of CPU power is controlled by honest nodes, the honest chain will grow the  fastest and outpace any competing chains."

is confusing for me, because it appears the only way the honest chain can grow faster than a chain worked on by 1 attacking cpu is if the keyspace to scan looking for a partial collision is sharded evenly amongst the participating honest nodes. That way the speed at which collisions are found would be proportional to the number of nodes. Yet I don't see any discussion of such work sharding, which obviously adds complexity. Likewise:

   "To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour.  If they're generated too fast, the difficulty increases."

How is the required difficulty of each block communicated through the network and agreed upon?

Thanks once again. I have yet more questions but this is enough for one email Smiley I will be happy to summarize these discussions into an FAQ-like document at some point. Apologies if the questions seem trivial.

-mike
[Quoted text hidden]

Mike Hearn <mike@plan99.net>   Mon, Apr 13, 2009 at 10:51 PM
To: Satoshi Nakamoto <satoshin@gmx.com>


Something else that isn't clear to me - does the global chain only get extended when there is actual work to do? Currently it seems to grow
all the time, although there are only a few people in the network. So presumably it gets extended with null blocks. Is this actually required? The timestamping doesn't have to be actually in parallel with real time does it ... it's merely establishing an ordering of events.
[Quoted text hidden]

Satoshi Nakamoto <satoshin@gmx.com>   Mon, Apr 13, 2009 at 11:00 PM
To: Mike Hearn <mike@plan99.net>

Mike Hearn wrote:
My best guess - it is the length of the global chain, and the rapid advance at the start is as the software downloads and verifies the preceding blocks in the chain as being valid.

Right.  I'm trying to think of more clear wording for that, maybe "%d network blocks" or "%d block chain".


If we assume that 0.1% is a good risk rate, then z=5 thus any transaction must wait a bit less than an hour before being solidified in the chain. As micropayments for things like web content or virtual goods are by definition something that requires low overhead, waiting an hour seems like quite a significant hurdle.

For the actual risk, multiply the 0.1% by the probability that the buyer is an attacker with a huge network of computers.

For micropayments, you can safely accept the payment immediately.  The size of the payment is too small for the effort to steal it. Micropayments are almost always for intellectual property, where there's no physical loss to the merchant.  Anyone trying to steal a micropayment would probably not be a paying customer anyway, and if they want to steal intellectual property they can use the file sharing networks.

Currently, businesses accept a certain chargeoff rate.  I believe the risk with 1 or even 0 confirming blocks will be much less than the rate of chargebacks on verified credit card transactions.

The usual scam against a merchant that doesn't wait for confirming blocks would be to send a payment to a merchant, then quickly try to propagate a double-spend to the network before the merchant's copy. What the merchant can do is broadcast his transaction and then monitor the network for any double-spend copies.  The thief would not be able to broadcast during the monitoring period or else the merchant's node would receive a copy.  The merchant would only have to monitor for a minute or two until most of the network nodes have his version and it's too late for the thief's version to catch up and reach many nodes.  With just a minute or two delay, the chance of getting away without paying could be made much too low to scam.  A thief usually needs a high probability of getting an item for free to make it worthwhile.  Using a lot of CPU power to do the brute force attack discussed in the paper in addition to the above scam would not increase the thief's chances very much.

Anything that grants access to something, like something that takes a while to download, access to a website, web hosting, a subscription or service, can be cancelled a few minutes later if the transaction is rejected.


is confusing for me, because it appears the only way the honest chain can grow faster than a chain worked on by 1 attacking cpu is if the keyspace to scan looking for a partial collision is sharded evenly amongst the participating honest nodes. That way the speed at which collisions are found would be proportional to the number of nodes. Yet I don't see any discussion of such work sharding, which obviously adds complexity.

The keyspace is huge, 2^256.  The thing being hashed includes the node's public key and a random nonce, so the chance of any two nodes duplicating work on the same space is negligible.


How is the required difficulty of each block communicated through the network and agreed upon?

It's not communicated.  The formula is hardcoded in the program and every node does the same calculation to know what difficulty is required for the next block.  If someone diverged from the formula, their block would not be accepted by the majority.


Thanks once again. I have yet more questions but this is enough for one email Smiley I will be happy to summarize these discussions into an
FAQ-like document at some point. Apologies if the questions seem trivial.

No problem, thanks for testing it on Mac Wine.

Satoshi
[Quoted text hidden]

Satoshi Nakamoto <satoshin@gmx.com>   Mon, Apr 13, 2009 at 11:11 PM
To: Mike Hearn <mike@plan99.net>

It keeps getting extended all the time.  If it stopped, an attacker would have time to catch up.  Don't worry, empty blocks aren't very big.

As you say, it's the order of events that matters.
[Quoted text hidden]

Mike Hearn <mike@plan99.net>   Mon, Apr 13, 2009 at 11:18 PM
To: Satoshi Nakamoto <satoshin@gmx.com>


Oh yes, of course, that's fundamental. Silly me. Thanks for your answers. I'd recommend being over-explicit for early versions of the software, something like  "Global chain is currently %d blocks long".

I guess the key problem right now is that once you generate coins, there's nobody to test it with, even for dummy transactions. Is there a plan for a mailing list or some kind of trivial marketplace to give people something to do with their newly minted bitcoins?

Satoshi Nakamoto <satoshin@gmx.com>   Tue, Apr 14, 2009 at 7:41 PM
To: Mike Hearn <mike@plan99.net>

I started implementing a marketplace feature earlier that facilitates offering things for sale and taking orders, it's only half done though.  A bit like e-bay but without auctions, just "buy now".  Among other things, it would make it easy for anyone to offer currency exchange.

If you send to 1PhUXucRd8FzQved2KGK3g1eKfTHPGjgFu and e-mail me your bitcoin address, or IP if you can accept incoming connections, I'll send back the same amount +50.
[Quoted text hidden]

Mike Hearn <mike@plan99.net>   Sat, Apr 18, 2009 at 3:08 PM
To: Satoshi Nakamoto <satoshin@gmx.com>

Hi Satoshi,

I sent you 32.51 coins, my bitcoin address is 1JuEjh9znXwqsy5RrnKqgzqY4Ldg7rnj5n

My IP is currently 84.73.233.199, however, it's a laptop so may or may not be online at the time you act on this mail. I suggest using the bitcoin address instead. It'd be convenient if the same comment functionality was available via indirect transfer. Can the comment be encrypted using the public key of the receiver and placed into a block?
[Quoted text hidden]

Satoshi Nakamoto <satoshin@gmx.com>   Sat, Apr 18, 2009 at 6:16 PM
To: Mike Hearn <mike@plan99.net>

I sent back 32.51 and 50.00.

I badly wanted to find some way to include a comment with indirect transfers, but there just wasn't a way to do it.  Bitcoin uses EC-DSA, which was essential for making the block chain compact enough to be practical with today's technology because its signatures are an order of magnitude smaller than RSA.  But EC-DSA can't encrypt messages like RSA, it can only be used to verify signatures.
[Quoted text hidden]

Mike Hearn <mike@plan99.net>   Sat, Apr 18, 2009 at 9:25 PM
To: Satoshi Nakamoto <satoshin@gmx.com>

Thanks. I sent you back 50, so now we're even.

For some reason your transfer to me shows up as "From: unknown" even though I added you to my address book.

I have a "Generated (not accepted)" line in my transaction list, it seems like an attempt to generate a coin went wrong somehow. Not sure
what happened here - presumably my node successfully solved a block but then I went offline before it was sent to the network?

I suppose for sending metadata with a transaction some other mechanism will be needed, for instance, broadcast of encrypted messages associated with a transaction that persist for (say) a month, with some kind of budget on how much storage a node can use for messages.
Alternatively, a payee could generate some reference number which is of some significance to themselves but otherwise opaque, and give it to the payer, thus it does not need to be encrypted and can be put into the block directly.
[Quoted text hidden]

Satoshi Nakamoto <satoshin@gmx.com>   Sat, Apr 18, 2009 at 10:52 PM
To: Mike Hearn <mike@plan99.net>

Got the 50.

Transactions sent to a bitcoin address will always say "from: unknown".  The transaction only tells who it's to.  Sending by bitcoin address has a number of problems, but it's so nice having the fallback option to be able to send to anyone whether they're online or not.  There are a number of ideas to try to improve things later.  For now, if things work out like the real world where the vast majority of transactions are with merchants, they'll pretty much always make sure to set up to receive by IP.  The P2P file sharing networks seem fairly successful at getting a large percentage of their users to set up their firewalls to forward a port.

The "Generated (not accepted)" normally happens if two nodes find a block at close to the same time, one of them will not be accepted.  It's normal and unavoidable.  I plan in v0.1.6 to hide those, since they're just confusing and annoying and there's no reason for users to have to see them.  While the network is still small like it is now, if you can't receive incoming connections you're at more of a disadvantage because you can't receive block announcements as directly.
[Quoted text hidden]

Mike Hearn <mike@plan99.net>   Sat, Apr 18, 2009 at 11:23 PM
To: Satoshi Nakamoto <satoshin@gmx.com>

Yes, I believe most P2P clients use the UPnP protocol to get routers to open up the port automatically. That would probably improve the listen rate significantly. I just discovered DMZ wasn't enabled on my router, though I thought it was. That's now fixed.

Is there a way to be told of new versions? Does the app auto update itself? Again, some kind of mailing list would be excellent.

I was thinking through how a practical micropayment implementation for the web might work in the last few days. One key issue is ensuring micropayments are fully automatic, yet can't be easily abused to drain the users account. I think the right approach would be to allow any website that presents an EV SSL cert to automatically request a micropayment, by default the browser always accepts as long as the charge is "low" and displays a small notification of what has occurred. Sites can then show that content requires payment in any way that suits their site design. Abusive sites that don't meet some simple guidelines (eg, showing unambiguously that clicking a link will trigger payment, or taking payment from direct search engine links) would simply have their SSL cert blacklisted, much like anti-phishing filters work today.

The protocol could be very straightforward and implemented by a Firefox extension or an IE BHO. Some static file (eg, a protocol buffer) is hosted on the site. It specifies the charge, a transaction description, the target IP and a URL for the browser to load after the transaction was accepted by the target node, to which the user
identifier is sent in a URL parameter.  The site can then give back a cookie and the paywalled content. The entire process is automatic and simply results in, say, a little coin animation in the URL bar. Thus it's as convenient as regular web browsing. The users software would have some limit on what payments are automatically accepted.

The main problem with this approach is that somebody has to decide what the user interface guidelines are, then enforce them via blacklisting, as well as decide what payment requirements are low enough to be automatic vs requiring a user prompt. This introduces a trusted authority back into the system. However, it's one that the user can choose in an open market.

By the way, if you're not already using protocol buffers for the node-to-node traffic, I recommend them. We use them here at Google for everything, they solve a lot of versioning problems simply and efficiently.

Satoshi Nakamoto <satoshin@gmx.com>   Sun, Apr 19, 2009 at 2:14 AM
To: Mike Hearn <mike@plan99.net>

The list is:
bitcoin-list@lists.sourceforge.net
Subscribe/unsubscribe page:
http://lists.sourceforge.net/mailman/listinfo/bitcoin-list
Archives:
http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-list

I'll always announce new versions there.  Automatic update, or at least notification of new versions, is definitely on the list.  There could potentially be necessary changes in the future where nobody will want to talk to you until you upgrade, and there needs to be code in the older version to convey that to the user.  This is all the harder in the context of not trusting anyone.

Your approach to micropayments sounds right.  At first, it might be a good idea to default to asking permission until the user gets comfortable and is ready to set it to automatic.  The end goal though should get to something like you describe, where it's similar to using your cell phone without really having to think about the per minute charges.

I looked at Google protocol buffers when they were released last year, but I had already written everything by then.  What I did was something similar to Boost Serialisation.  For this application, where I was parsing messages from strangers who might have extreme incentive to hack the protocol, it was necessary to make it as basic as possible so I could crawl over every line of code to convince myself it was airtight.  It became clear that any unnecessary degrees of freedom in the binary format multiplied the potential angles of attack.  You guys are so right though to standardize across the company on protocol buffers.  I think you've got the optimal solution in the general case.


Hal Finney

Quote
The following are a series of emails from Satoshi Nakamoto to Hal Finney, written in January 2009 as the two were working on early versions of the bitcoin software. Mr. Finney supplied these emails to The Wall Street Journal in the spring of 2014.
Since these emails were all coming from Nakamoto to Mr. Finney, they are Nakamoto’s responses to Mr. Finney’s emails, the body of which is marked by the > symbol. The exchange begins on Jan. 10, 2009, and ends on Jan. 24, 2009, and comprises the time they were working on versions 0.1.0 through 0.1.3 of the
bitcoin software.

---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Sat, Jan 10, 2009 at 11:52 AM
Subject: RE:Crash in bitcoin 0.1.0
To: hal.finney@gmail.com


Normally I would keep the symbols in, but they increased the size of the EXE from 6.5MB to 50MB so I just couldn't justify not stripping them. I guess I made the wrong decision, at least for this early version. I'm kind of surprised there was a crash, I've tested heavily and haven't had an outright exception for a while. Come to think of it, there isn't even an exception print at the end of debug.log. I've been testing on XP SP2, maybe SP3 is something. I've attached bitcoin.exe with symbols. (gcc symbols for gdb, if you're using MSVC I can send you an MSVC build with symbols)
Thanks for your help!

>Hi Satoshi - I tried running bitcoin.exe from the 0.1.0 package, and
>it crashed. I am running on an up to date version of XP, SP3. The
>debug.log output is attached. There was also a file db.log but it was
>empty.
>
>The crash allowed me to start up a debugger, but there were no
>symbols. The exception was at address 00930AF7. The displayed call
>stack was 942316 called by 508936.
>
>When I have a chance, I'll try building it, although it looks like it
>would take me a while to acquire all the dependencies.
>
>Hal


From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Sat, Jan 10, 2009 at 2:59 PM
Subject: Re: Crash in bitcoin 0.1.0
To: hal.finney@gmail.com


I was temporarily able to reproduce the bug and narrowed it down to the "mapAddresses.count" in the following code. It was absolutely the last piece of code to go in and mainly only got tested with the MSVC build. It's not essential and I'm inclined to turn off optimization and delete the section of code
until I figure out what's going on. I'm attaching a dbg exe you can try that deletes the line of code and turns off optimization. I'm not able to reproduce it anymore at the moment.

irc.cpp:
if (pszName[0] == 'u')
{
CAddress addr;
if (DecodeAddress(pszName, addr))
{
CAddrDB addrdb;
if (AddAddress(addrdb, addr))
printf("new ");
else
{
// make it try connecting sooner
CRITICAL_BLOCK(cs_mapAddresses)
if (mapAddresses.count(addr.GetKey()))
mapAddresses[addr.GetKey()].nLastFailed = 0;
}
addr.print();
}
else
{
printf("decode failed\n");
}
}

>Yes, actually the version with MSVC symbols would be better, that is
>the one I am using.
>
>I found that if I launched this one from a cygwin shell, it does not
>crash. But if I launch it from Windows, double-clicking on the file,
>it does crash similarly to the previous version. However, I am pretty
>sure that the previous version did crash even when I launched it from
>cygwin.
>
>I have to go out but I'll leave this version running for a while.
>
>Hal

---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Sat, Jan 10, 2009 at 6:55 PM
Subject: Re: Crash in bitcoin 0.1.0
To: hal.finney@gmail.com


I isolated the problem. If I spawn a thread and do mapAddresses.count, even as the very first thing in the program,
it segfaults. The workaround is to needlessly call mapAddresses.count in the main thread once and it's fine from then
on. I hate to blame the compiler, and I've never had a GCC compiler bug before, but this feels like one. Maybe some bit of init code it tries to optimize out if it's not called at least once in the same thread, or some STL optimization that's not thread
friendly. I'm really dismayed to have this botch up the release after all that stress testing.
The attached file: bitcoin-0.1.1.rar (filesize 2,132,686) is the version where I deleted the mapAddresses.count line, and that should be the safest version. (that was the only use of mapAddresses.count) If you could try this version and confirm that the crash is fixed, I'd appreciate it.
Thanks,
Satoshi


---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Sat, Jan 10, 2009 at 7:11 PM
Subject: Re: Crash in bitcoin 0.1.0
To: hal.finney@gmail.com


OK, thanks. The one in bitcoin-0.1.1-exe-dbg.rar is the same build as in bitcoin-0.1.1.rar. I forgot, when you build debug on MSVC, it uses the debug versions of the runtime DLLs, which aren't included with Windows distributions. Actually, MSVC 6.0's runtime (MSVC60.DLL) is the last version that shipped preinstalled on Windows, which is why the continued interest in that ancient version of the compiler. Later Visual C versions can't create a standalone EXE that doesn't require additional runtime packages installed.
I can't use MSVC 6.0 for the release because its optimization of the SHA-256 routines is too slow.
I've attached a copy of the debug runtime DLLs. (They're redistributable)
>Hi Satoshi - The version with the .pdb file did not run for me, I got
>an error about MSVCP60D.DLL not being found. I imagine this is due to
>the version incompatibility you were worried about.
>
>The next version, that deleted the questionable line of code and
>turned off optimization, seems to run fine for me. So the problem may
>be related to that bit.
>
>Hal

---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Sun, Jan 11, 2009 at 4:36 PM
Subject: How's v0.1.2 going?
To: hal.finney@gmail.com


Well this doesn't look good. After you upgraded to 0.1.2, your node responded to one or two messages and then stopped replying to messages. It's still accepting connections and seems to be alive on IRC. That could happen if ThreadSocketHandler or ThreadMessageHandler is hung or crashed or blocked. Usually when there's an exception or other problem, it only stops the affected thread and everything else keeps running. I'm attaching the msvc debug version in case you need it.
Satoshi

---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Sun, Jan 11, 2009 at 4:49 PM
Subject: v0.1.2 gcc debug build attached
To: hal.finney@gmail.com


Could you send me your debug.log?
The gcc debug version is attached.
gdb is easier to use than you'd think. gdb.exe is the only file. You run
gdb bitcoin.exe
then type "run"
then if it crashes, type "backtrace" for a stack dump, or it may do it automatically. (The stack trace
doesn't always go far enough back unfortunately)

---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Sun, Jan 11, 2009 at 5:25 PM
Subject: Re: v0.1.2 debug.log
To: hal.finney@gmail.com


OK, so no crash or exception window or anything. debug.log is all I need then. It looks like there's a "select failed: 10038" error (the sockets select function failed) and then network communication goes quiet after that (except for IRC which is still working). I've never had select fail before. It looks like sockets is somehow partially hosed. At least now I know what's wrong now. You should restart it. It's not doing anything right now. I don't know if it'll just get the "select failed" error again, or be fine for a while.
If I can't think of anything else, I can always shut down and restart sockets if it gets hosed like that. I'm sure everyone who's written an internet app like a browser or p2p app had to slog through all the ways the Internet can trash you. The Internet is a brutal, rough and tumble place.
The issue of bitcoin.exe still running after you close it is a known issue. It does a careful shutdown of everything to be extra safe, in case some important transaction is in progress, but it's completely fine and totally safe to just kill it if it doesn't exit on its own. I'll have to work on figuring out what's getting hung up. I may just have it kill itself after a timeout.
Thanks!
>Hi Satoshi - debug.log attached. When I started 0.1.2 this afternoon,
>I first quit the previous version which was running. However, 0.1.2
>would not start up. Looking at the debug log, it said "Existing
>instance found". I ran task manager, and found two processes called
>bitcoin.exe running. I killed them both and started up the new one,
>and it seemed to run OK. It says at the bottom "3 connections". I
>haven't tried the debug version, I'm not sure what I would look for.
>
>Hal


---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Sun, Jan 11, 2009 at 9:31 PM
Subject: select failed 10038 fix
To: hal.finney@gmail.com


I believe I've fixed the bug related to "select failed: 10038" (error WSAENOTSOCK). The select error is not a big deal, but it led the communications thread to get blocked on a socket that should have been in non-blocking mode but wasn't. It never came up until now because as long as select never failed, receive would never be called unless there was data.
Without this fix, your node's communication sometimes goes dead. Connections are still made, but no data is passed. Any generated blocks would probably not be accepted since you can't broadcast them and other nodes will leave your branch behind. That's why
Generate doesn't run when you're not connected. This could also have caused bitcoin.exe to fail to exit. There's no reason for shutdown to wait for the com thread, so I made it only wait for the message processing thread. I'll do a more thorough forced shutdown later. Looks like your node's com thread just now got blocked on this bug again. It went for a few hours this time before it did.
Version 0.1.3 exe attached.


---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Mon, Jan 12, 2009 at 8:41 AM
Subject: Re: select failed 10038 fix
To: hal.finney@gmail.com


It definitely looks like 0.1.3 solved it. It was getting so there were so many zombie nodes, I was having a hard time getting a reply to any of my messages. Now, four inventory messages go out, four getdata messages come back.
Did you get any "not accepted" blocks? The connectivity bug could have caused a generated block not to be accepted if the node wasn't able to broadcast at the time. Once the status is above 5 or so it's safely accepted.
Unfortunately, I can't receive incoming connections from where I am, which has made things more difficult. Your node receiving incoming connections was the main thing keeping the network going the first day or two. You can send to my Bitcoin address if you want to, but you won't get to see the full transfer sequence:
1NSwywA5Dvuyw89sfs3oLPvLiDNGf48cPD
You could always findstr /c:"version message" debug.log and send a test to some random person you're connected to near the end of the
list. The ones ending in port 8333 can receive connections. I just thought of something. Eventually there'll be some interest in brute force scanning bitcoin addresses to find one with the first few characters customized to your name, kind of like getting a phone number that spells out something. Just by chance I have my initials.
Satoshi

>Thanks, Satoshi, this new version seems to be running much better.
>I've got 8 connections, and watching debug.log there seems to be quite
>a bit of activity. I see you sent me a payment, thanks! Let me know
>your address and I will try sending one to you. I managed to generate
>a block yesterday and the coins are about to mature, if I understand
>it correctly.
>
>Hal


---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Mon, Jan 12, 2009 at 10:50 AM
Subject: Re: select failed 10038 fix
To: hal.finney@gmail.com


Could you send me the debug.log from the 0.1.3 crash?
I can usually get a lot just from that.
I'll send you the debug builds shortly.
>Looks like 0.1.3 crashed during the night, unfortunately. Next time I
>will try running the debug version. Today I am working and will need
>to take this computer up and down quite a bit, so I won't be able to
>run it for most of the day. Tonight I will try to look at it a little
>bit.
>
>Hal


---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Mon, Jan 12, 2009 at 11:26 AM
Subject: Re: v0.1.3 msvc debug build
To: hal.finney@gmail.com


Here's the 0.1.3 MSVC debug build
>Looks like 0.1.3 crashed during the night, unfortunately. Next time I
>will try running the debug version. Today I am working and will need
>to take this computer up and down quite a bit, so I won't be able to
>run it for most of the day. Tonight I will try to look at it a little
>bit.
>
>Hal
>
>On Mon, Jan 12, 2009 at 8:41 AM, Satoshi Nakamoto <satoshi@vistomail.com> wrote:
>> It definitely looks like 0.1.3 solved it. It was getting so there
>> were so many zombie nodes, I was having a hard time getting a
>> reply to any of my messages. Now, four inventory messages go out,
>> four getdata messages come back.
>>
>> Did you get any "not accepted" blocks? The connectivity bug could
>> have caused a generated block not to be accepted if the node
>> wasn't able to broadcast at the time. Once the status is above 5
>> or so it's safely accepted.
>>
>> Unfortunately, I can't receive incoming connections from where I
>> am, which has made things more difficult. Your node receiving
>> incoming connections was the main thing keeping the network going
>> the first day or two.
>>
>> You can send to my Bitcoin address if you want to, but you won't
>> get to see the full transfer sequence:
>> 1NSwywA5Dvuyw89sfs3oLPvLiDNGf48cPD
>>
>> You could always findstr /c:"version message" debug.log and send a
>> test to some random person you're connected to near the end of the
>> list. The ones ending in port 8333 can receive connections.
>>
>> I just thought of something. Eventually there'll be some interest
>> in brute force scanning bitcoin addresses to find one with the
>> first few characters customized to your name, kind of like getting
>> a phone number that spells out something. Just by chance I have
>> my initials.
>>
>> Satoshi
>>
>>>Thanks, Satoshi, this new version seems to be running much better.
>>>I've got 8 connections, and watching debug.log there seems to be quite
>>>a bit of activity. I see you sent me a payment, thanks! Let me know
>>>your address and I will try sending one to you. I managed to generate
>>>a block yesterday and the coins are about to mature, if I understand
>>>it correctly.
>>>
>>>Hal
>>>
>>>On Sun, Jan 11, 2009 at 9:31 PM, Satoshi Nakamoto <satoshi@vistomail.com> wrote:
>>>> I believe I've fixed the bug related to "select failed: 10038"
>>>> (error WSAENOTSOCK). The select error is not a big deal, but it
>>>> led the communications thread to get blocked on a socket that
>>>> should have been in non-blocking mode but wasn't. It never came
>>>> up until now because as long as select never failed, receive would
>>>> never be called unless there was data.
>>>>
>>>> Without this fix, your node's communication sometimes goes dead.
>>>> Connections are still made, but no data is passed. Any generated
>>>> blocks would probably not be accepted since you can't broadcast
>>>> them and other nodes will leave your branch behind. That's why
>>>> Generate doesn't run when you're not connected.
>>>>
>>>> This could also have caused bitcoin.exe to fail to exit. There's
>>>> no reason for shutdown to wait for the com thread, so I made it
>>>> only wait for the message processing thread. I'll do a more
>>>> thorough forced shutdown later.
>>>>
>>>> Looks like your node's com thread just now got blocked on this
>>>> bug again. It went for a few hours this time before it did.
>>>>
>>>> Version 0.1.3 exe attached.


---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Mon, Jan 12, 2009 at 11:39 AM
Subject: Re: v0.1.3 gcc debug build
To: hal.finney@gmail.com


and the gcc debug build w/gdb.exe
>Looks like 0.1.3 crashed during the night, unfortunately. Next time I
>will try running the debug version. Today I am working and will need
>to take this computer up and down quite a bit, so I won't be able to
>run it for most of the day. Tonight I will try to look at it a little
>bit.
>
>Hal

---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Mon, Jan 12, 2009 at 11:59 PM
Subject: Re: select failed 10038 fix
To: hal.finney@gmail.com


Definitely the disk full. I completely put off disk full handling until a later version. Probably about time I did it now.
Well, that's a relief.
Satoshi

>Hi Satoshi - Sorry I have not been able to do more today, this looks
>like a busy week for me. I started 0.1.3 again under the MSVC debugger
>this time so if it crashes tonight I may be able to get some more
>information.
>
>I remember now that last night, my disk filled up. I had downloaded a
>bunch of the dependencies (boost, etc) with an eye towards trying to
>build it myself, and my disk was already pretty full. I'm pretty sure
>this is what caused 0.1.3 to crash. I've attached the debug.log, which
>also includes some other runs. The error is about 1/3 of the way down
>and says,
>
>EXCEPTION: NSt8ios_base7failureE
>CAutoFile::read : end of file
>
>Normally this should be a rare occurrence with the large disk sizes
>people have today.
>
>Hal
>
>On 1/12/09, Satoshi Nakamoto <satoshi@vistomail.com> wrote:
>> Could you send me the debug.log from the 0.1.3 crash?
>> I can usually get a lot just from that.
>>
>> I'll send you the debug builds shortly.
>>
>>
>>>Looks like 0.1.3 crashed during the night, unfortunately. Next time I
>>>will try running the debug version. Today I am working and will need
>>>to take this computer up and down quite a bit, so I won't be able to
>>>run it for most of the day. Tonight I will try to look at it a little
>>>bit.
>>>
>>>Hal

---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Tue, Jan 13, 2009 at 2:42 PM
Subject: Re: disk full
To: hal.finney@gmail.com

If you build the dependencies, let me know how that goes.
Everything is always harder to build on Windows than Linux. I've
always hated projects with a lot of big dependencies, but there's
no avoiding it, each one is essential.
I still haven't figured out how you managed to get a read
exception rather than a write exception when your disk filled up.
It's unlikely but maybe possible that the incident could have
messed up your block data file. In that case, it might manifest
as a similar exception again, or if your block count in the status
bar stopped going up, that would also indicate a problem. As of
this moment it's at 375 blocks.
If there is a problem, it could easily be solved by deleting your
block files, as follows:
(exit Bitcoin and make sure it's stopped)
cd /d "%appdata%\bitcoin"
(backup this directory first)
del blk0001.dat
del blkindex.dat
It'll then re-download the block chain. Your transactions and
generated blocks show as 0/unconfirmed until it's done downloading.
The crucial file to backup is wallet.dat. If bitcoin is running
then you have to backup the whole %appdata%\bitcoin directory
including the database subdirectory, but even if it's not running
it certainly feels safer to always backup the whole directory.
The database unfortunately names its files "log.0000000001". To
the rest of the world, "log" means delete-at-will, but to database
people it means delete-and-lose-everything-in-your-other-files. I
tried to put them out of harm's way by putting them in the
database subdirectory. Later I'll write code to flush the logs
after every wallet change so wallet.dat will be standalone safe
almost all the time.
Satoshi
>Hi Satoshi - Sorry I have not been able to do more today, this looks
>like a busy week for me. I started 0.1.3 again under the MSVC debugger
>this time so if it crashes tonight I may be able to get some more
>information.
>
>I remember now that last night, my disk filled up. I had downloaded a
>bunch of the dependencies (boost, etc) with an eye towards trying to
>build it myself, and my disk was already pretty full. I'm pretty sure
>this is what caused 0.1.3 to crash. I've attached the debug.log, which
>also includes some other runs. The error is about 1/3 of the way down
>and says,
>
>EXCEPTION: NSt8ios_base7failureE
>CAutoFile::read : end of file
>
>Normally this should be a rare occurrence with the large disk sizes
>people have today.
>
>Hal

---------- Forwarded message ----------
From: Satoshi Nakamoto <satoshi@vistomail.com>
Date: Sat, Jan 24, 2009 at 4:47 PM
Subject: Re: disk full
To: hal.finney@gmail.com


I hate duplicating code, but the compiler forces us. Copy the body
of the function above it, like this:
void insert(iterator it, const_iterator first, const_iterator last)
{
if (it == vch.begin() + nReadPos && last - first <= nReadPos)
{
// special case for inserting at the front when there's room
nReadPos -= (last - first);
memcpy(&vch[nReadPos], &first[0], last - first);
}
else
vch.insert(it, first, last);
}
#if !defined(_MSC_VER) || _MSC_VER >= 1300
void insert(iterator it, const char* first, const char* last)
{
if (it == vch.begin() + nReadPos && last - first <= nReadPos)
{
// special case for inserting at the front when there's room
nReadPos -= (last - first);
memcpy(&vch[nReadPos], &first[0], last - first);
}
else
vch.insert(it, first, last);
}
#endif
The modified version of serialize.h is attached.
BTW, in my tests, VC8 produced an EXE that would only run on
systems that had VC8 installed on them. The error it gives
is extremely vague. I think they expect you to install a
package during setup, but bitcoin doesn't have a setup.
My testing has been with MSVC 6.0 SP6 and GCC 3.4.5.
GCC is the release build. There's nothing wrong with the
MSVC 6.0 build other than its optimization of the SHA routines
for generating blocks is slow.

Satoshi


Satoshi - Sirus emails


Adam Back
19  Bitcoin / Bitcoin Technical Support / Can I add nodes to speed up Bitcoin Core syncing? on: January 09, 2024, 10:37:08 AM
I am running a prune node.

I read that Bitcoin Core will connect my node to most remote node.

Can I add extra nodes that are more close to me, to speed up the syncing?

2. Bitcoin Core happen connect to node with slow connection speed or physically very far from where you live (which cause slower download speed).

You can try close and reopen Bitcoin Core in order connect to different full nodes, but don't expect much difference.

Where to find the node list?
20  Bitcoin / Electrum / Three options for Electrum wallet on Windows? on: May 08, 2023, 01:18:57 PM
https://electrum.org/#download

Standalone Executable
Windows Installer
Portable version (security advice)

What option I should download and use it on my Windows computer?
Pages: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!