Bitcoin Forum
May 02, 2024, 07:13:36 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2]  All
  Print  
Author Topic: Forking Blockchain for lost keys  (Read 1910 times)
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
March 03, 2014, 03:59:20 AM
Last edit: March 03, 2014, 04:11:21 AM by DeathAndTaxes
 #21

Users can choose, but, unless it faults the checkpoint system that bitcoin has in place (here's a list), then, by default, bitcoin-qt/bitcoind will auto-jump to the longest, valid, chain. In this case, assuming miners can generate a longer, valid (But ignoring gox's transaction), chain before the miners on the current chain can extend it, then, we'd all auto-jump and orphan the other blocks.

Each clients will independently select the longest VALID chain using the internal rules of the client.  An invalid block can never be in the longest chain.  A client on the current fork would see ANY "the gox block" as invalid and it would also see any block built off that blocks as invalid as well.  It would never be the valid longest chain even if it had a billion more blocks than our current longest chain.  Miners aren't the only element of the security model in Bitcoin.  Each node independently verifies all data according to the rules in that node and discards data which it deems is invalid.

Try imagining a simpler scenario, a miner mines a block with a trillion BTC reward.  By your statement above as long as it doesn't break the checkpoints and is in the longest chain all nodes would be forced to use it. A super cool way to mint a trillion new BTC into existence and an attack which would obviously have been attempted by now.  I think you can see how flawed that security model is.  Thankfully Bitcoin doesn't use a "miners are gods and anything they give us must be obeyed" security model, it uses a "trustless" security model where each node implicitly distrusts information received from other nodes until the node independently validates it.

So someone can make a "BailoutCoin" client and some miners (maybe even 51% or miners) can start mining that chain.  However the current chain will see blocks on that chain (after the bailout block) as no more valid than Litecoin blocks are valid on the Bitcoin network.  You can't force all users to use the new "BailoutCoin" client so users will have a choice (much like they do with 100+ altcoins today).

You can never changed Bitcoin all you can do is fork it and convince people to use the fork.  Unless 100% of users accept the new fork, then the existing fork will also co-exist.

Quote
I admit, I didn't just read the entire bitcoin source, so, I'm going mainly off comments & function names.

No offense but that is obvious.  
1714634016
Hero Member
*
Offline Offline

Posts: 1714634016

View Profile Personal Message (Offline)

Ignore
1714634016
Reply with quote  #2

1714634016
Report to moderator
"You Asked For Change, We Gave You Coins" -- casascius
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714634016
Hero Member
*
Offline Offline

Posts: 1714634016

View Profile Personal Message (Offline)

Ignore
1714634016
Reply with quote  #2

1714634016
Report to moderator
1714634016
Hero Member
*
Offline Offline

Posts: 1714634016

View Profile Personal Message (Offline)

Ignore
1714634016
Reply with quote  #2

1714634016
Report to moderator
embicoin
Sr. Member
****
Offline Offline

Activity: 249
Merit: 250


View Profile
March 03, 2014, 04:07:47 AM
 #22

This 7% of all bitcoins must be a cost for the lesson, that will remain forever. No forks, no nothing. If mtgox manages to recover the coins, congratulations. If they can't, then the law must decide.
Everything else from that is wrong from the basis.

That said, now then the bitcoin goal price may increase, because now the Bitcoin will be even more rare.
The human stupidity comes one more time, just compare with the Great Library of Alexandria lost, for example... We create our greed destroys... It happens. I am sorry for the people, but that is the fact.

There will be no possible universe where the community accepts to "rape" the bitcoin core feature (transaction irreversibility) just because some people was greed or incompetent...

If you want to support my contributions to the crypto space with some caffeine or a beer in form of satoshis: BTC 17z1x4gr1GsjM7Tgh5qYamDNrAx3LvrpTa Wink Thank you very much!!!
Parliament
Newbie
*
Offline Offline

Activity: 52
Merit: 0



View Profile
March 03, 2014, 10:21:08 AM
 #23

I really think someone should make a alt coin named gox coin with only 720.000 coins!

That way everyone who got goxxed can get their money back and it will be only up to them to keep their value!

I'm sure they will fail again!

This is the only "not horrible" idea in the thread so far.
ivroer
Member
**
Offline Offline

Activity: 89
Merit: 14


View Profile
March 03, 2014, 11:20:58 AM
 #24

I really think someone should make a alt coin named gox coin with only 720.000 coins!

That way everyone who got goxxed can get their money back and it will be only up to them to keep their value!

I'm sure they will fail again!

This is the only "not horrible" idea in the thread so far.

 Grin announcement coming soon.

wheatstone
Member
**
Offline Offline

Activity: 82
Merit: 10


View Profile
March 03, 2014, 07:33:09 PM
 #25

Imagine we're on block 20, and, gox lost their coins on block 15, and, in block 15-20 five transactions occurred. Gox sent money from their controlled address to an unknown one (#16), the unknown address sent money to another unknown address (#17), some random user sent money to his friend (#18), his friend send money back to the random user (#19) and I donated some money to the EFF (#20).

If we go ahead and imagine all the miners said "Right, fuck everything after block fifteen, let's start again", they'd go back to block fifteen, GOX would have their coins, and, they'd just need to regenerate the blocks from there on, however, since they know about the five transactions, they could just pack it all into the first block, minus the gox ones, so:-

#16 is invalid, as, we don't want to do it (It's where gox loses their money)
#17 is invalid because it relies on #16
#18 is still valid, so, drop that in the first block
#19 is still valid, so, also drop that in the first block
#20 is still valid, so, also drop that final one into the first block.

Aside from the issues pointed out by DeathAndTaxes, there's one huge hole in your premise. I've emphasized the part of your post where you've overlooked something. I am, of course, referring to mining rewards (fees and block rewards). Following your proposal would, aside from invalidating the chain, destroy 25*144 = 3600 btc for each day (plus fees). Every single transaction that includes even a satoshi of these 3600 btc / day would also become invalid.

Clearly, that would be the death of your scheme (one of many) right there, so another rule change is needed: The block rewards and fees would need to be inserted in the "gox block". The repercussions of that are not trivial, though.
Automatic
Full Member
***
Offline Offline

Activity: 238
Merit: 105


View Profile
March 03, 2014, 09:08:35 PM
Last edit: March 03, 2014, 09:45:07 PM by Automatic
 #26

Okay, here we go. Imagine this is our current blockchain, awarding people 25 bitcoins per block find (Obviously not included crypto/signatures/etc...), hashes are direct SHA256, we're also assuming that we don't need any proof of work, for simplicity:-

Block one:-
Code:
{"blockHeight":0, "previousBlock":null, "transactions:{"b87a202d39825d59599c49ada3bbd348d145b4b7647d8d313425d8470d55ad79":{"txin":null, "txout":{"AddressOne":25}}}}

Block two:-
Code:
{"blockHeight":1, "previousBlock":"0c37eb0acf8f90c791acaccbbef7440ebccdde5bacce130d45c19b0a4deb1fd6", "transactions":{"27a6669c6d94ed165a2b6693643cdb54d9fa8453b3f3d894196a1b7057b026ee":{"txid":null, "txout":{"AddressTwo":25}}}}

Now, block three (two, counting from zero), we're going to spend the funds we got in block one:-

Code:
{"blockHeight":2, "previousBlock":"2c568981679d63c320a5e2d00663405f7ac9b2bfc71feed393ef62d0618f965b", "transactions":{"1fd79a39081f9c7217159398945b3016130c2b9a832f4dd20cfe5cc5b8e33986":{"txin":null, "txout":{"AddressThree":25}}, "63b2b3b5c75d45158b937cc81a380920888acac6999d8e09d48f0a541b2296c7":{"txin":{"txid":"b87a202d39825d59599c49ada3bbd348d145b4b7647d8d313425d8470d55ad79", "vout":0}, "txout":"OurFirstTransactionAddress"}}}

Grand. Now, finally, block four, based on block three, we also make a payment using the funds we mined in block 2, and, the funds we just transferred in block three:-
Code:
{"blockHeight":3, "previousBlock":"84de63d74f216677a5dd8cfb2b7e09fa2a4634d902e4e808004d9c792e9b5fc9", "transactions":{"031b1bad349e4d559a42aa560444bc8317ba17e6446f2373de6aae6033a836f5":{"txin":null, "txout":{"AddressFour":25}}, "121678d5fd6e03f7ea94b86446159f64c745b7e89657ce84916e28c10d3e9554":{"txin":{"txid":"27a6669c6d94ed165a2b6693643cdb54d9fa8453b3f3d894196a1b7057b026ee", "vout":0}, "txout":{"OurSecondTransactionAddress":25}}, "f1ba1000853d7a001e32df0efa3d5ad013b8cc6f07514d3ff9107dd34a68c1c5":{"txin":{"txid":"63b2b3b5c75d45158b937cc81a380920888acac6999d8e09d48f0a541b2296c7", "vout":0}, "txout":{"OurThirdTransactionAddress":25}}}}

Grand, now what we have is a four-block long chain where:-
Block:-
#1 Generates 25 bitcoins to address "AddressOne"
#2 Generates 25 bitcoins to address "AddressTwo"
#3 Generates 25 bitcoins to address "AddressThree", and, spends the 25 bitcoins from "AddressOne" (Generated in Block #1)
#4 Generates 25 bitcoins to address "AdddressFour", spends the 25 bitcoins from "AddressTwo" (Generated in Block #2), and, spends the 25 bitcoins in address "OurFirstTransactionAddress" moved there by the first transaction in block #3.

Do we agree? If not, stop reading, as, everything from here on out depends on the above being true.

Now, imagine I'm 51% of the network (or, any part of the network that can generate blocks as such a speed that SOMETIME in the future, my blockchain will be longer than your block chain (You being 'legitimate' miners)), and, I dislike the fact that you spend block one's money in block three, and, I want to move it back. What do I do? I just start off back there and imagine it never happened.
So, let's ignore block three (onwards) ever happened, and, start back at block three.
Code:
{"blockHeight":2, "previousBlock":"2c568981679d63c320a5e2d00663405f7ac9b2bfc71feed393ef62d0618f965b", "transactions":{"1fd79a39081f9c7217159398945b3016130c2b9a832f4dd20cfe5cc5b8e33986":{"txin":null, "txout":{"AddressThree":25}}}

There we go, valid block, it generates 25 bitcoins and puts them in address "AddressThree", however, nobody will jump to me yet as I'm still not the longest chain. Let's continue, block four:-
Code:
{"blockHeight":3, "previousBlock":"bfa7ff7eef0d17ad52ff9e31016d13d0540cecc557ae4b07971011c5cd3c139b", "transactions":{"031b1bad349e4d559a42aa560444bc8317ba17e6446f2373de6aae6033a836f5":{"txin":null, "txout":{"AddressFour":25}}, "121678d5fd6e03f7ea94b86446159f64c745b7e89657ce84916e28c10d3e9554":{"txin":{"txid":"27a6669c6d94ed165a2b6693643cdb54d9fa8453b3f3d894196a1b7057b026ee", "vout":0}, "txout":{"OurSecondTransactionAddress":25}}}}

There we go, still a valid block, as, all we've done is remove any transaction that happened to now be void due to our previous changes, and, (If it were bitcoin), brute forced a nonce that hashed the block into the correct amount of leading zeros. However, still nobody will jump to us. Why? Although we're an equal length valid chain, peers are configured to stick to the first chain they see unless there's a larger one (Equal length doesn't count). So, finally, if we can beat the current chain in a race, we win, people accept us, so, block five:-
Code:
{"blockHeight":4, "previousBlock":"c925afc503f0a7b7d095cc6ed8fdec7eb794d6f440980bd40bd2293c2f44e0b7", "transactions":{"c6dc7af91f101b194b6117d453188cd5ce0a4030163d219039caa89bf608abdf":{"txin":null, "txout":{"AddressFive":25}}}}

There we go, our chain is now the longest, still valid, chain, while kicking out the previous blocks. Here's a few real-life examples (Granted, not that long):-
https://blockchain.info/orphaned-blocks

Here's a stackexchange post talking about the longest fork:-
https://bitcoin.stackexchange.com/questions/3343/what-is-the-longest-blockchain-fork-that-has-been-orphaned-to-date

All you'd need to do is cause a longer fork, and, bamb, everyone would jump, unless I'm really misunderstanding the entire bitcoin network.

Each clients will independently select the longest VALID chain using the internal rules of the client.  An invalid block can never be in the longest chain.  A client on the current fork would see ANY "the gox block" as invalid and it would also see any block built off that blocks as invalid as well.  It would never be the valid longest chain even if it had a billion more blocks than our current longest chain.  Miners aren't the only element of the security model in Bitcoin.  Each node independently verifies all data according to the rules in that node and discards data which it deems is invalid.

Point is, the blocks would be valid, the only difference is that it's selectively chosen not to include the MTGox transaction, and, any based on them. I'm not saying we take the currently block chain, and, rip the MTGox transaction out, as, that'd obviously be invalid, I'm saying we could generate a new blockchain, starting from where MTGox lost their bitcoins (Assuming they still know the private key to at-least one of the addresses it was originally in), and, build on that chain from there, copying the transactions over (But, still, regenerating the blocks from scratch).

Transactions would still be valid, as, they don't depend on the blocks, the blocks depend on the transaction. If you had enough power you could generate new blocks, with, valid hashes, that, exceed the length of the current chain, if not, explain why not. To me, it seems absolutely standard, if it weren't valid, then, what'd happen if two people generated blocks at the same time based on one previous block? In your situation where peers never jumped, not even if there's a longer chain, then, there'd forever be forks of bitcoins, happening every couple of hours, which, obviously there isn't (Well, there is, but, we jump to the longest one selected by the next miner who mines a valid block).

I'm also not talking about changing the source, no idea where you got that info. I'm just talking about generating a legitimate chain longer than the current chain we all use, where, we never put the transaction where GOX lost their money into any blocks.

Imagine we're on block 20, and, gox lost their coins on block 15, and, in block 15-20 five transactions occurred. Gox sent money from their controlled address to an unknown one (#16), the unknown address sent money to another unknown address (#17), some random user sent money to his friend (#18), his friend send money back to the random user (#19) and I donated some money to the EFF (#20).

If we go ahead and imagine all the miners said "Right, fuck everything after block fifteen, let's start again", they'd go back to block fifteen, GOX would have their coins, and, they'd just need to regenerate the blocks from there on, however, since they know about the five transactions, they could just pack it all into the first block, minus the gox ones, so:-

#16 is invalid, as, we don't want to do it (It's where gox loses their money)
#17 is invalid because it relies on #16
#18 is still valid, so, drop that in the first block
#19 is still valid, so, also drop that in the first block
#20 is still valid, so, also drop that final one into the first block.

Aside from the issues pointed out by DeathAndTaxes, there's one huge hole in your premise. I've emphasized the part of your post where you've overlooked something. I am, of course, referring to mining rewards (fees and block rewards). Following your proposal would, aside from invalidating the chain, destroy 25*144 = 3600 btc for each day (plus fees). Every single transaction that includes even a satoshi of these 3600 btc / day would also become invalid.

Clearly, that would be the death of your scheme (one of many) right there, so another rule change is needed: The block rewards and fees would need to be inserted in the "gox block". The repercussions of that are not trivial, though.

Obviously any transactions based on anything invalidated due to the swap (I.E. gox BTC, or, transactions based off miner rewards that are now invalidated) would also be invalidated.

Please ask for a signed message from my on-site Bitcoin address (Check my profile) before doing any offsite trades with me.
softtissue
Newbie
*
Offline Offline

Activity: 19
Merit: 0


View Profile
March 05, 2014, 09:41:01 AM
 #27

I really think someone should make a alt coin named gox coin with only 720.000 coins!

That way everyone who got goxxed can get their money back and it will be only up to them to keep their value!

I'm sure they will fail again!

This is the only "not horrible" idea in the thread so far.

 Grin announcement coming soon.

https://i.imgur.com/8kw6kSO.gif

eh,so funny...fail again,again,again...
Pages: « 1 [2]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!