|
Title: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: franklin2058 on August 10, 2021, 01:19:21 AM There are a lot of update to bitcoin software, can bitcoin 0.1.0 code (the original Satoshi Nakamoto version) still interact with the blockchain? Or I have to compile the latest version?
Thanks a lot! Title: Re: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: jackg on August 10, 2021, 01:36:31 AM No there have been too many changes for the 0.1.0 version to be compatible with the current bitcoin blockchain.
Running anything other than the latest version is kind of asking for getting vulnerabilities, I think there was a version a few years ago that had a few critical vulnerabilities that had to be patched (partly to do with DDoS and something else)... I think there's a version around 8.8 or 12 that is compatible with the most recent blockchain, however, doesn't benefit from the lower transaction fees the newer software has that makes it able to segregate signatures away from the transaction making it quite a bit smaller. I also think the original (0.1.0) version used a public key for identifying who funds were being sent to (making it much bigger than just using a hash of the key) There have also been releases with the more recent versions to increase initial block download time and client synchronisation (since it's around 350GB now I think). Title: Re: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: ranochigo on August 10, 2021, 02:06:42 AM No. Bitcoin 0.1.0's peer discovery mechanism has been deprecated for quite awhile, namely the IRC. You won't be able to discover any peers to connect to when running 0.1.0. Tons of protocol changes since then as well.
There isn't any reason why you should attempt to run 0.1.0, other than to perhaps satisfy your curiosity. Title: Re: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: pooya87 on August 10, 2021, 02:53:41 AM There is also another issue with old client's protocol version. When the current existing nodes receive the version message during handshake and see the protocol version is below 31800 they will reject the connection right away.
https://github.com/bitcoin/bitcoin/blob/8193294caba03b996370873db79cf4fc22a1e95b/src/net_processing.cpp#L2516-L2521 There is another issue which I can think of which involves the database that the early version was using. I don't quite remember the issue but it was something about the db not being able to sync after a certain number of blocks. Other than that as far as the consensus rules go all the blocks mined so far are backward compatible (the ones containing witness will be stripped). Title: Re: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: BlackHatCoiner on August 10, 2021, 07:19:46 AM I really wonder, though.
If we install the v0.1.0 in two computers and let them connect through the GetMyExternalIP (https://bitcointalk.org/index.php?topic=5321606.msg56487991#msg56487991), assuming “72.233.89.199:80” or any other IP they decide works, will they start mining the chain from the genesis block? Is there anything that'd prevent them from having their own chain since they'd not be interacted with the current nodes even if they connected somehow? Title: Re: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: NotATether on August 10, 2021, 07:55:04 AM Is there anything that'd prevent them from having their own chain since they'd not be interacted with the current nodes even if they connected somehow? No, but the beauty about the consensus is that, ignoring the fact that they will never catch up to the main chain, these nodes are effectively orphaned from the rest of the network (see pooya87 reply above). Title: Re: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: hugeblack on August 10, 2021, 08:26:15 AM you have CVE-2010-5139 (https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures#CVE-2010-5139) when block 74638 contained a transaction that created over 184 billion bitcoins for two different addresses. after this block chain had to be forked and all old nodes need to update them code. so bitcoin 0.1.0 can't work then.
Title: Re: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: pooya87 on August 10, 2021, 08:32:27 AM will they start mining the chain from the genesis block? As far as I know bitcoin core never automatically started mining, you had to manually start mining new blocks.you have CVE-2010-5139 (https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures#CVE-2010-5139) when block 74638 contained a transaction that created over 184 billion bitcoins for two different addresses. after this block chain had to be forked and all old nodes need to update them code. so bitcoin 0.1.0 can't work then. That block no longer exists so the node should technically be able to sync since it follows the longest chain. Also mining a new block with the bug is too expensive an attack for someone to pull off today just to affect the 0.1.0 version.Title: Re: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: vjudeu on August 10, 2021, 10:36:21 AM Quote can bitcoin 0.1.0 code (the original Satoshi Nakamoto version) still interact with the blockchain? It probably can, but not directly. Maybe creating a chain of localhost clients with different versions passing data from one node to another will be able to do that, but I'm not sure even about that, something like v1 connected with v2 connected with v3, ..., connected with the latest version (not necessarily each version, just versions when there were major changes). So, technically maybe it is possible to use version 0.1.0, but there will be many issues and workarounds needed to make it usable, it's better to run the latest version.Title: Re: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: gmaxwell on August 10, 2021, 03:29:46 PM I haven't tried anything as old as 0.1.0 but you can take 0.3.2-ish (one of the last before satoshi left) and sync as far as 2013 but then gets stuck because of blocks >500KB exceeding the bdb locks limit. To do so you need to work around some p2p incompatiblities, and not let it see any new blocks while its syncing because the sync process effectively starts over when it gets sent a new block.
Anything 0.8 from 2013 or newer doesn't have the BDB flaws and can sync all the way to the tip but there are enough bugs exposed by the more resource heavy chain that it can be a bit hard-- so you still need to protect it from seeing reorgs or newly added blocks while it's syncing. Title: Re: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: jackg on August 10, 2021, 04:23:06 PM I really wonder, though. If we install the v0.1.0 in two computers and let them connect through the GetMyExternalIP (https://bitcointalk.org/index.php?topic=5321606.msg56487991#msg56487991), assuming “72.233.89.199:80” or any other IP they decide works, will they start mining the chain from the genesis block? Is there anything that'd prevent them from having their own chain since they'd not be interacted with the current nodes even if they connected somehow? Well yes, but you might want to look into testnet (https://en.bitcoin.it/wiki/Testnet) instead or as well as that - I think the download is quite a bit smaller too but that's a public chain. I think there's a version around 8.8 or 12 that is compatible with the most recent blockchain You're talking about Bitcoin-qt 0.8.0I also think the original (0.1.0) version used a public key for identifying who funds were being sent to (making it much bigger than just using a hash of the key) To be specific, it's uncompressed public key which barely used these days. As well as the ripemd160 hash that also gets used which probably means the address is quite a lot smaller than an uncompressed public key. I think there was a pay to IP option at some point too that got removed (it had quite a lot of problems associated with it - especially since communcations weren't encrypted). Title: Re: Can bitcoin 0.1.0 code still interact with the blockchain? Post by: ranochigo on August 10, 2021, 04:33:29 PM I also think the original (0.1.0) version used a public key for identifying who funds were being sent to (making it much bigger than just using a hash of the key) To be specific, it's uncompressed public key which barely used these days.I think there was a pay to IP option at some point too that got removed (it had quite a lot of problems associated with it - especially since communcations weren't encrypted). |