Author

Topic: overflow incident (Read 327 times)

legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
May 06, 2021, 03:05:51 AM
#18
The above means that the original 74638 block was invalid because it did not follow consensus rules, but that defective software did not prevent nodes from accepting the block. This means that community agreement should not be necessary. 

Actually i agree, but since that means invalidating lots of block (which contain lots of transaction), it opens possibility of double-spend attack and there'll some people who disagree with simple fix which invalidate the blocks.
copper member
Activity: 2996
Merit: 2374
May 06, 2021, 01:08:41 AM
#16
if it happen just over not overflow , like over 50 bitcoin , and no body found it until over 200 block , this case how to cancel it
do we need to hard fork chain

IMO Hard fork isn't proper term since the goal is fix implementation bug, not change the rule. But if similar vulnerability is exploited, it depends on community agreement how to solve the problem, few possible option
1. Perform rollback
2. Create rule which allow the overflow on affected block height/hash
3. Create rule which invalidate affected UTXO

But it's very unlikely since there are many Bitcoin full node implementation, which makes such vulnerability exploitation will discovered quickly.
I would argue the overflow incident was the result of poorly coded software, not problems with the consensus rules for Bitcoin.

The above means that the original 74638 block was invalid because it did not follow consensus rules, but that defective software did not prevent nodes from accepting the block. This means that community agreement should not be necessary.

A similar incident in the future may result in less confidence in bitcoin software.
legendary
Activity: 3472
Merit: 4801
May 05, 2021, 07:39:02 AM
#15
The incident happened because on a 64 bit computer, when you add 9223372036854775808 plus 9223372036854775808 using signed integers the result is -9223372036854775807.
It is due to value type of the output amount field being a signed 64-bit integer (Int64) not the CPU architecture being 64-bit. You'll get the same overflow using Int64 on a 32-bit computer too.

Thanks.  That's what I meant to say, but clearly not what I wrote.  I fixed it now.
legendary
Activity: 3472
Merit: 10611
May 04, 2021, 09:44:00 PM
#14
The incident happened because on a 64 bit computer, when you add 9223372036854775808 plus 9223372036854775808 using signed integers the result is -9223372036854775807.
It is due to value type of the output amount field being a signed 64-bit integer (Int64) not the CPU architecture being 64-bit. You'll get the same overflow using Int64 on a 32-bit computer too.
legendary
Activity: 3472
Merit: 4801
May 04, 2021, 08:40:43 PM
#13

Thanks you DannyHamilton to help explain that overflow incident

incident can happen because code not check number of input right?

No.  The incident happened because when a computer uses a 64 bit signed integer to add 9223372036854775808 plus 9223372036854775808 the result is -9223372036854775807.

if it happen just over not overflow , like over 50 bitcoin , and no body found it until over 200 block , this case how to cancel it
do we need to hard fork chain

Won't happen.  Code is fixed.  Nodes will no longer accept invalid amounts of bitcoins in transactions
member
Activity: 406
Merit: 47
May 04, 2021, 08:15:19 PM
#12

Thanks you DannyHamilton to help explain that overflow incident

incident can happen because code not check number of input right?

if it happen just over not overflow , like over 50 bitcoin , and no body found it until over 200 block , this case how to cancel it
do we need to hard fork chain
 
legendary
Activity: 3472
Merit: 4801
May 04, 2021, 10:50:27 AM
#11
some question
This overflow incident happen by accident from bug of code bitcoin core or happen by human do this (hacker) or other way do by some wrong script/app wallet sent data to wrong?
Thanks

The original threads containing the discussion when the problem was first noticed are here:

Bitcoin Discussion subforum
https://bitcointalksearch.org/topic/strange-block-74638-822

Developer & Technical Discussion subforum
https://bitcointalksearch.org/topic/overflow-bug-serious-823

It seems that someone noticed a bug in the code and took advantage of that bug to intentionally create the "overflow" transaction. (It would be nearly impossible for someone to have "accidentally" created such a transaction, but they didn't "hack" anything.)

Then by 8:08:49 UTC users started to notice this transaction and commented about it in the Bitcoin Discussion subforum.

About an hour later at 9:04:11 UTC a developer reported in the Developer & Technical Discussion subforum the bug that allowed the transaction to happen.

All miners were quickly asked via forum posts and email lists to stop mining until a code fix was available so that the portion of the chain that would need to be replaced would be as short as possible. Many miners complied since they realized that any rewards they earned after the incident and before the fix would vanish and be useless once the fix was available. This slowed down the creation of new blocks extending this bad chain.

At 10:39:42 UTC, about an hour-and-a-half after the report in the Developer & Technical Discussion subforum, Gavin Andresen posted to the discussion thread a temporary code fix that anyone could apply to their own copies of the code and compile a fixed Bitcoin Core to use for mining and/or block verification.

20 minutes after that (10:59:099 UTC) Satoshi posted to the discussion thread the fix that he intended to merge into the master branch of the source code, which again anyone could apply to their own copies of the code and compile a fixed Bitcoin Core to use for mining and/or block verification.

40 minutes after that at 11:40:19 UTC Satoshi had merged the bug fix into the master branch of the source code for anyone to download and run.  Everyone was encouraged to use this new code and to either re-sync their entire blockchain from the beginning or, if they had the technical expertise to safely do so, just rewind their blockchain to a block earlier than the overflow and re-sync from there.

About an hour later (12:58:08 UTC) Satoshi released pre-compiled binaries (.exe files) for Windows for those users that didn't have the technical knowledge to rebuild their node from the official source code.

By 16:16:10 UTC (about 3 hours after the release of the pre-compiled binaries) Satoshi was convinced that the chain being built by the fixed code had more hash power than the chain still being extended by those that hadn't gotten around to updating their code yet. The fixed chain was growing faster and it became clear that it would eventually overtake the bad chain

10 hours later at 2:59:38 UTC the next morning Satoshi announced that the fixed chain had grown longer than the one with the overflow.  At this point even those nodes that had NOT upgraded to the fixed code would see the longer chain and switch over to it, abandoning the chain with the issue. All nodes would now be building on the new chain regardless.  As such, it was no longer necessary for anyone to re-sync their blockchain since it would happen automatically through the normal proof-of-work re-org process. The block with the overflow transaction was at height 74638, and the chain without it overtook that chain at approximately height 74689, meaning that the fork lasted a total of 51 blocks before everything re-organized onto the new chain.

From first notice to completely fixed with a larger proof-of-work chain, it was a total of 18 hours 51 minutes.
member
Activity: 189
Merit: 16
May 04, 2021, 06:51:58 AM
#10
some question
This overflow incident happen by accident from bug of code bitcoin core or happen by human do this (hacker) or other way do by some wrong script/app wallet sent data to wrong?
Thanks


It seems unlikely that some user bona fide assumed that he had 184,467,440,737.09551616 Bitcoins and just wanted to transfer them. More likely is that the transaction was crafted on purpose. Of course, we can only speculate as long as no one admits having sent the transaction.
member
Activity: 406
Merit: 47
May 04, 2021, 04:39:37 AM
#9
some question
This overflow incident happen by accident from bug of code bitcoin core or happen by human do this (hacker) or other way do by some wrong script/app wallet sent data to wrong?
Thanks
member
Activity: 189
Merit: 16
April 27, 2021, 12:17:26 AM
#8
about the overflow incident:

"The bad transaction no longer exists for people using the longest chain. Therefore, the bitcoins created by it do not exist either. While the transaction does not exist anymore, the 0.5 BTC that was consumed by it does. It appears to have come from a faucet and has not been used since.[7] "
https://en.bitcoin.it/wiki/Value_overflow_incident

does that mean we have 21m+0.5 bitcoin?

No. Look at the transaction in a block explorer. It has one 235,5 BTC input and two (0,5 BTC and 235,0 BTC) outputs. So, unless there were 21m+0,5 BTC before that transaction, this isn't the case afterwards, either.

how's that possible?
where did it go?

It came from 1eFysSL5XZkXc1rqEQxzXSBhAi1B658BB (Tx input) and went to 17TASsYPbdLrJo3UDxFfCMu5GXmxFwVZSW and 14i4JAaRjb6hRaUDzDRL3DfQRBeEhMjn7M (Tx outputs). It's the normal thing that happens for transactions. Since the transaction that caused new Bitcoins to be generated on the fork with the overflow bug was also valid on the chain that was continued until now, it had to be included.
jr. member
Activity: 36
Merit: 14
April 23, 2021, 08:12:11 AM
#7
I think you have a slight misunderstanding regarding this issue.

The actual transaction with the overflow is actually this [1]. It is a valid transaction and for every valid transaction, the inputs has to be mapped to another TXID and in this case, 237fe8348fc77ace11049931058abb034c99698c7fe99b1cc022b1365a705d39:0. There is no extra 0.5BTC that was caused by the overflow incident. The transaction in question generated 2 outputs of 90 million Bitcoins each and it was "reversed" subsequently, excluding that transaction and continuing on the correct chain which doesn't contain any TXes affected by the overflow bug. The Wiki is stating that the 0.5BTC used as the input in that transaction has since been left dormant[2] after the overflow transaction was reversed.

[1] 1d5e512a9723cbef373b970eb52f1e9598ad67e7408077a82fdac194b65333c9
[2] https://blockchair.com/bitcoin/address/17TASsYPbdLrJo3UDxFfCMu5GXmxFwVZSW



got it now~ thank u so much!
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
April 23, 2021, 07:29:16 AM
#6
I think you have a slight misunderstanding regarding this issue.

The actual transaction with the overflow is actually this [1]. It is a valid transaction and for every valid transaction, the inputs has to be mapped to another TXID and in this case, 237fe8348fc77ace11049931058abb034c99698c7fe99b1cc022b1365a705d39:0. There is no extra 0.5BTC that was caused by the overflow incident. The transaction in question generated 2 outputs of 90 million Bitcoins each and it was "reversed" subsequently, excluding that transaction and continuing on the correct chain which doesn't contain any TXes affected by the overflow bug. The Wiki is stating that the 0.5BTC used as the input in that transaction has since been left dormant[2] after the overflow transaction was reversed.

[1] 1d5e512a9723cbef373b970eb52f1e9598ad67e7408077a82fdac194b65333c9
[2] https://blockchair.com/bitcoin/address/17TASsYPbdLrJo3UDxFfCMu5GXmxFwVZSW
jr. member
Activity: 36
Merit: 14
April 23, 2021, 07:04:48 AM
#5
how's that possible?
where did it go?

As written in the linked article, the chain was forked.
This means that the problem doesn't "exist" on this blockchain.
The problem existed on an alternate blockchain until block 74691, then the correct blockchain/fork took over and the other blockchain/fork was dropped.

While the transaction does not exist anymore, the 0.5 BTC that was consumed by it does. It appears to have come from a faucet and has not been used since.[7] "
legendary
Activity: 3668
Merit: 6382
Looking for campaign manager? Contact icopress!
April 23, 2021, 07:00:07 AM
#4
how's that possible?
where did it go?

As written in the linked article, the chain was forked.
This means that the problem doesn't "exist" on this blockchain.
The problem existed on an alternate blockchain until block 74691, then the correct blockchain/fork took over and the other blockchain/fork was dropped.
jr. member
Activity: 36
Merit: 14
April 23, 2021, 06:55:10 AM
#3
about the overflow incident:

"The bad transaction no longer exists for people using the longest chain. Therefore, the bitcoins created by it do not exist either. While the transaction does not exist anymore, the 0.5 BTC that was consumed by it does. It appears to have come from a faucet and has not been used since.[7] "
https://en.bitcoin.it/wiki/Value_overflow_incident

does that mean we have 21m+0.5 bitcoin?

No. Look at the transaction in a block explorer. It has one 235,5 BTC input and two (0,5 BTC and 235,0 BTC) outputs. So, unless there were 21m+0,5 BTC before that transaction, this isn't the case afterwards, either.

how's that possible?
where did it go?
member
Activity: 189
Merit: 16
April 23, 2021, 06:18:03 AM
#2
about the overflow incident:

"The bad transaction no longer exists for people using the longest chain. Therefore, the bitcoins created by it do not exist either. While the transaction does not exist anymore, the 0.5 BTC that was consumed by it does. It appears to have come from a faucet and has not been used since.[7] "
https://en.bitcoin.it/wiki/Value_overflow_incident

does that mean we have 21m+0.5 bitcoin?

No. Look at the transaction in a block explorer. It has one 235,5 BTC input and two (0,5 BTC and 235,0 BTC) outputs. So, unless there were 21m+0,5 BTC before that transaction, this isn't the case afterwards, either.
jr. member
Activity: 36
Merit: 14
April 23, 2021, 05:44:09 AM
#1
about the overflow incident:

"The bad transaction no longer exists for people using the longest chain. Therefore, the bitcoins created by it do not exist either. While the transaction does not exist anymore, the 0.5 BTC that was consumed by it does. It appears to have come from a faucet and has not been used since.[7] "
https://en.bitcoin.it/wiki/Value_overflow_incident

does that mean we have 21m+0.5 bitcoin?
Jump to: